From f2f79afd3b329a6ce556f97f73931138e1235808 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Ruel Date: Tue, 20 Feb 2024 16:11:51 +0000 Subject: [PATCH] Update pinned dependencies This permits to use the stock google.golang.org/protobuf This add BugComponent to ResultDB. Change-Id: I9c17184a966943bc6fd919b44637effb7b7d5c1c Reviewed-on: https://fuchsia-review.googlesource.com/c/shac-project/shac/+/992852 Fuchsia-Auto-Submit: Oliver Newman Reviewed-by: Oliver Newman Commit-Queue: Auto-Submit Reviewed-by: David Fang --- go.mod | 37 +- go.sum | 69 +- .../google/go-cmp/cmp/cmpopts/equate.go | 49 +- .../google/go-cmp/cmp/cmpopts/ignore.go | 16 +- .../google/go-cmp/cmp/cmpopts/sort.go | 12 +- .../google/go-cmp/cmp/cmpopts/xform.go | 4 +- .../github.com/google/go-cmp/cmp/compare.go | 38 +- .../cmp/{export_unsafe.go => export.go} | 5 - .../google/go-cmp/cmp/export_panic.go | 16 - .../value/{pointer_unsafe.go => pointer.go} | 3 - .../cmp/internal/value/pointer_purego.go | 34 - .../github.com/google/go-cmp/cmp/options.go | 84 +- vendor/github.com/google/go-cmp/cmp/path.go | 46 +- .../google/go-cmp/cmp/report_reflect.go | 2 +- .../klauspost/compress/flate/deflate.go | 2 +- .../klauspost/compress/flate/inflate.go | 66 +- .../klauspost/compress/flate/inflate_gen.go | 34 +- .../klauspost/compress/gzip/gunzip.go | 5 + .../github.com/mattn/go-isatty/isatty_bsd.go | 3 +- .../mattn/go-isatty/isatty_others.go | 5 +- .../mattn/go-isatty/isatty_tcgets.go | 3 +- .../luci/resultdb/proto/v1/artifact.pb.go | 4 +- .../luci/resultdb/proto/v1/artifact.proto | 6 +- .../luci/resultdb/proto/v1/common.pb.go | 2 +- .../luci/resultdb/proto/v1/pb.discovery.go | 8510 +++++++-------- .../luci/resultdb/proto/v1/resultdb.pb.go | 2 +- .../luci/resultdb/proto/v1/test_result.pb.go | 223 +- .../luci/resultdb/proto/v1/test_result.proto | 22 + .../luci/resultdb/proto/v1/test_variant.pb.go | 2 +- .../resultdb/sink/proto/v1/location_tag.pb.go | 174 +- .../resultdb/sink/proto/v1/location_tag.proto | 34 +- .../resultdb/sink/proto/v1/pb.discovery.go | 5775 +++++----- vendor/go.starlark.net/starlark/eval.go | 7 +- vendor/go.starlark.net/starlark/hashtable.go | 52 + vendor/go.starlark.net/starlark/int.go | 6 + vendor/go.starlark.net/starlark/library.go | 4 +- vendor/go.starlark.net/starlark/value.go | 8 +- vendor/golang.org/x/net/context/go17.go | 1 - vendor/golang.org/x/net/context/go19.go | 1 - vendor/golang.org/x/net/context/pre_go17.go | 1 - vendor/golang.org/x/net/context/pre_go19.go | 1 - vendor/golang.org/x/net/http2/databuffer.go | 59 +- vendor/golang.org/x/net/http2/frame.go | 11 +- vendor/golang.org/x/net/http2/go111.go | 30 - vendor/golang.org/x/net/http2/go115.go | 27 - vendor/golang.org/x/net/http2/go118.go | 17 - vendor/golang.org/x/net/http2/not_go111.go | 21 - vendor/golang.org/x/net/http2/not_go115.go | 31 - vendor/golang.org/x/net/http2/not_go118.go | 17 - vendor/golang.org/x/net/http2/server.go | 24 +- vendor/golang.org/x/net/http2/transport.go | 33 +- vendor/golang.org/x/net/idna/go118.go | 1 - vendor/golang.org/x/net/idna/idna10.0.0.go | 1 - vendor/golang.org/x/net/idna/idna9.0.0.go | 1 - vendor/golang.org/x/net/idna/pre_go118.go | 1 - vendor/golang.org/x/net/idna/tables10.0.0.go | 1 - vendor/golang.org/x/net/idna/tables11.0.0.go | 1 - vendor/golang.org/x/net/idna/tables12.0.0.go | 1 - vendor/golang.org/x/net/idna/tables13.0.0.go | 1 - vendor/golang.org/x/net/idna/tables15.0.0.go | 1 - vendor/golang.org/x/net/idna/tables9.0.0.go | 1 - vendor/golang.org/x/net/idna/trie12.0.0.go | 1 - vendor/golang.org/x/net/idna/trie13.0.0.go | 1 - vendor/golang.org/x/sync/errgroup/errgroup.go | 3 + vendor/golang.org/x/sync/errgroup/go120.go | 1 - .../golang.org/x/sync/errgroup/pre_go120.go | 1 - vendor/golang.org/x/sys/execabs/execabs.go | 102 - .../golang.org/x/sys/execabs/execabs_go118.go | 18 - .../golang.org/x/sys/execabs/execabs_go119.go | 21 - vendor/golang.org/x/sys/unix/aliases.go | 2 - vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 1 - vendor/golang.org/x/sys/unix/asm_bsd_386.s | 2 - vendor/golang.org/x/sys/unix/asm_bsd_amd64.s | 2 - vendor/golang.org/x/sys/unix/asm_bsd_arm.s | 2 - vendor/golang.org/x/sys/unix/asm_bsd_arm64.s | 2 - vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s | 2 - .../golang.org/x/sys/unix/asm_bsd_riscv64.s | 2 - vendor/golang.org/x/sys/unix/asm_linux_386.s | 1 - .../golang.org/x/sys/unix/asm_linux_amd64.s | 1 - vendor/golang.org/x/sys/unix/asm_linux_arm.s | 1 - .../golang.org/x/sys/unix/asm_linux_arm64.s | 3 - .../golang.org/x/sys/unix/asm_linux_loong64.s | 3 - .../golang.org/x/sys/unix/asm_linux_mips64x.s | 3 - .../golang.org/x/sys/unix/asm_linux_mipsx.s | 3 - .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 3 - .../golang.org/x/sys/unix/asm_linux_riscv64.s | 2 - .../golang.org/x/sys/unix/asm_linux_s390x.s | 3 - .../x/sys/unix/asm_openbsd_mips64.s | 1 - .../golang.org/x/sys/unix/asm_solaris_amd64.s | 1 - vendor/golang.org/x/sys/unix/asm_zos_s390x.s | 3 - vendor/golang.org/x/sys/unix/cap_freebsd.go | 1 - vendor/golang.org/x/sys/unix/constants.go | 1 - vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 1 - vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 1 - vendor/golang.org/x/sys/unix/dev_zos.go | 1 - vendor/golang.org/x/sys/unix/dirent.go | 1 - vendor/golang.org/x/sys/unix/endian_big.go | 1 - vendor/golang.org/x/sys/unix/endian_little.go | 1 - vendor/golang.org/x/sys/unix/env_unix.go | 1 - vendor/golang.org/x/sys/unix/epoll_zos.go | 1 - vendor/golang.org/x/sys/unix/fcntl.go | 3 +- .../x/sys/unix/fcntl_linux_32bit.go | 1 - vendor/golang.org/x/sys/unix/fdset.go | 1 - vendor/golang.org/x/sys/unix/fstatfs_zos.go | 1 - vendor/golang.org/x/sys/unix/gccgo.go | 1 - vendor/golang.org/x/sys/unix/gccgo_c.c | 1 - .../x/sys/unix/gccgo_linux_amd64.go | 1 - vendor/golang.org/x/sys/unix/ifreq_linux.go | 1 - vendor/golang.org/x/sys/unix/ioctl_linux.go | 5 + vendor/golang.org/x/sys/unix/ioctl_signed.go | 1 - .../golang.org/x/sys/unix/ioctl_unsigned.go | 1 - vendor/golang.org/x/sys/unix/ioctl_zos.go | 1 - vendor/golang.org/x/sys/unix/mkerrors.sh | 43 +- vendor/golang.org/x/sys/unix/mmap_nomremap.go | 1 - vendor/golang.org/x/sys/unix/mremap.go | 1 - vendor/golang.org/x/sys/unix/pagesize_unix.go | 1 - .../golang.org/x/sys/unix/pledge_openbsd.go | 92 +- vendor/golang.org/x/sys/unix/ptrace_darwin.go | 1 - vendor/golang.org/x/sys/unix/ptrace_ios.go | 1 - vendor/golang.org/x/sys/unix/race.go | 1 - vendor/golang.org/x/sys/unix/race0.go | 1 - .../x/sys/unix/readdirent_getdents.go | 1 - .../x/sys/unix/readdirent_getdirentries.go | 1 - vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 1 - .../x/sys/unix/sockcmsg_unix_other.go | 1 - vendor/golang.org/x/sys/unix/syscall.go | 1 - vendor/golang.org/x/sys/unix/syscall_aix.go | 4 +- .../golang.org/x/sys/unix/syscall_aix_ppc.go | 1 - .../x/sys/unix/syscall_aix_ppc64.go | 1 - vendor/golang.org/x/sys/unix/syscall_bsd.go | 3 +- .../x/sys/unix/syscall_darwin_amd64.go | 1 - .../x/sys/unix/syscall_darwin_arm64.go | 1 - .../x/sys/unix/syscall_darwin_libSystem.go | 1 - .../x/sys/unix/syscall_dragonfly_amd64.go | 1 - .../x/sys/unix/syscall_freebsd_386.go | 1 - .../x/sys/unix/syscall_freebsd_amd64.go | 1 - .../x/sys/unix/syscall_freebsd_arm.go | 1 - .../x/sys/unix/syscall_freebsd_arm64.go | 1 - .../x/sys/unix/syscall_freebsd_riscv64.go | 1 - vendor/golang.org/x/sys/unix/syscall_hurd.go | 1 - .../golang.org/x/sys/unix/syscall_hurd_386.go | 1 - .../golang.org/x/sys/unix/syscall_illumos.go | 1 - vendor/golang.org/x/sys/unix/syscall_linux.go | 33 +- .../x/sys/unix/syscall_linux_386.go | 1 - .../x/sys/unix/syscall_linux_alarm.go | 2 - .../x/sys/unix/syscall_linux_amd64.go | 1 - .../x/sys/unix/syscall_linux_amd64_gc.go | 1 - .../x/sys/unix/syscall_linux_arm.go | 1 - .../x/sys/unix/syscall_linux_arm64.go | 1 - .../golang.org/x/sys/unix/syscall_linux_gc.go | 1 - .../x/sys/unix/syscall_linux_gc_386.go | 1 - .../x/sys/unix/syscall_linux_gc_arm.go | 1 - .../x/sys/unix/syscall_linux_gccgo_386.go | 1 - .../x/sys/unix/syscall_linux_gccgo_arm.go | 1 - .../x/sys/unix/syscall_linux_loong64.go | 1 - .../x/sys/unix/syscall_linux_mips64x.go | 2 - .../x/sys/unix/syscall_linux_mipsx.go | 2 - .../x/sys/unix/syscall_linux_ppc.go | 1 - .../x/sys/unix/syscall_linux_ppc64x.go | 2 - .../x/sys/unix/syscall_linux_riscv64.go | 1 - .../x/sys/unix/syscall_linux_s390x.go | 1 - .../x/sys/unix/syscall_linux_sparc64.go | 1 - .../x/sys/unix/syscall_netbsd_386.go | 1 - .../x/sys/unix/syscall_netbsd_amd64.go | 1 - .../x/sys/unix/syscall_netbsd_arm.go | 1 - .../x/sys/unix/syscall_netbsd_arm64.go | 1 - .../golang.org/x/sys/unix/syscall_openbsd.go | 28 +- .../x/sys/unix/syscall_openbsd_386.go | 1 - .../x/sys/unix/syscall_openbsd_amd64.go | 1 - .../x/sys/unix/syscall_openbsd_arm.go | 1 - .../x/sys/unix/syscall_openbsd_arm64.go | 1 - .../x/sys/unix/syscall_openbsd_libc.go | 1 - .../x/sys/unix/syscall_openbsd_ppc64.go | 1 - .../x/sys/unix/syscall_openbsd_riscv64.go | 1 - .../golang.org/x/sys/unix/syscall_solaris.go | 5 +- .../x/sys/unix/syscall_solaris_amd64.go | 1 - vendor/golang.org/x/sys/unix/syscall_unix.go | 1 - .../golang.org/x/sys/unix/syscall_unix_gc.go | 2 - .../x/sys/unix/syscall_unix_gc_ppc64x.go | 3 - .../x/sys/unix/syscall_zos_s390x.go | 3 +- vendor/golang.org/x/sys/unix/sysvshm_linux.go | 1 - vendor/golang.org/x/sys/unix/sysvshm_unix.go | 1 - .../x/sys/unix/sysvshm_unix_other.go | 1 - vendor/golang.org/x/sys/unix/timestruct.go | 1 - .../golang.org/x/sys/unix/unveil_openbsd.go | 41 +- vendor/golang.org/x/sys/unix/xattr_bsd.go | 1 - .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1 - .../x/sys/unix/zerrors_aix_ppc64.go | 1 - .../x/sys/unix/zerrors_darwin_amd64.go | 1 - .../x/sys/unix/zerrors_darwin_arm64.go | 1 - .../x/sys/unix/zerrors_dragonfly_amd64.go | 1 - .../x/sys/unix/zerrors_freebsd_386.go | 1 - .../x/sys/unix/zerrors_freebsd_amd64.go | 1 - .../x/sys/unix/zerrors_freebsd_arm.go | 1 - .../x/sys/unix/zerrors_freebsd_arm64.go | 1 - .../x/sys/unix/zerrors_freebsd_riscv64.go | 1 - vendor/golang.org/x/sys/unix/zerrors_linux.go | 104 +- .../x/sys/unix/zerrors_linux_386.go | 4 +- .../x/sys/unix/zerrors_linux_amd64.go | 4 +- .../x/sys/unix/zerrors_linux_arm.go | 4 +- .../x/sys/unix/zerrors_linux_arm64.go | 4 +- .../x/sys/unix/zerrors_linux_loong64.go | 5 +- .../x/sys/unix/zerrors_linux_mips.go | 4 +- .../x/sys/unix/zerrors_linux_mips64.go | 4 +- .../x/sys/unix/zerrors_linux_mips64le.go | 4 +- .../x/sys/unix/zerrors_linux_mipsle.go | 4 +- .../x/sys/unix/zerrors_linux_ppc.go | 4 +- .../x/sys/unix/zerrors_linux_ppc64.go | 4 +- .../x/sys/unix/zerrors_linux_ppc64le.go | 4 +- .../x/sys/unix/zerrors_linux_riscv64.go | 7 +- .../x/sys/unix/zerrors_linux_s390x.go | 4 +- .../x/sys/unix/zerrors_linux_sparc64.go | 4 +- .../x/sys/unix/zerrors_netbsd_386.go | 1 - .../x/sys/unix/zerrors_netbsd_amd64.go | 1 - .../x/sys/unix/zerrors_netbsd_arm.go | 1 - .../x/sys/unix/zerrors_netbsd_arm64.go | 1 - .../x/sys/unix/zerrors_openbsd_386.go | 1 - .../x/sys/unix/zerrors_openbsd_amd64.go | 1 - .../x/sys/unix/zerrors_openbsd_arm.go | 1 - .../x/sys/unix/zerrors_openbsd_arm64.go | 1 - .../x/sys/unix/zerrors_openbsd_mips64.go | 1 - .../x/sys/unix/zerrors_openbsd_ppc64.go | 1 - .../x/sys/unix/zerrors_openbsd_riscv64.go | 1 - .../x/sys/unix/zerrors_solaris_amd64.go | 1 - .../x/sys/unix/zerrors_zos_s390x.go | 1 - .../x/sys/unix/zptrace_armnn_linux.go | 2 - .../x/sys/unix/zptrace_mipsnn_linux.go | 2 - .../x/sys/unix/zptrace_mipsnnle_linux.go | 2 - .../x/sys/unix/zptrace_x86_linux.go | 2 - .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1 - .../x/sys/unix/zsyscall_aix_ppc64.go | 1 - .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1 - .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1 - .../x/sys/unix/zsyscall_darwin_amd64.go | 1 - .../x/sys/unix/zsyscall_darwin_arm64.go | 1 - .../x/sys/unix/zsyscall_dragonfly_amd64.go | 1 - .../x/sys/unix/zsyscall_freebsd_386.go | 1 - .../x/sys/unix/zsyscall_freebsd_amd64.go | 1 - .../x/sys/unix/zsyscall_freebsd_arm.go | 1 - .../x/sys/unix/zsyscall_freebsd_arm64.go | 1 - .../x/sys/unix/zsyscall_freebsd_riscv64.go | 1 - .../x/sys/unix/zsyscall_illumos_amd64.go | 1 - .../golang.org/x/sys/unix/zsyscall_linux.go | 26 +- .../x/sys/unix/zsyscall_linux_386.go | 1 - .../x/sys/unix/zsyscall_linux_amd64.go | 1 - .../x/sys/unix/zsyscall_linux_arm.go | 1 - .../x/sys/unix/zsyscall_linux_arm64.go | 1 - .../x/sys/unix/zsyscall_linux_loong64.go | 1 - .../x/sys/unix/zsyscall_linux_mips.go | 1 - .../x/sys/unix/zsyscall_linux_mips64.go | 1 - .../x/sys/unix/zsyscall_linux_mips64le.go | 1 - .../x/sys/unix/zsyscall_linux_mipsle.go | 1 - .../x/sys/unix/zsyscall_linux_ppc.go | 1 - .../x/sys/unix/zsyscall_linux_ppc64.go | 1 - .../x/sys/unix/zsyscall_linux_ppc64le.go | 1 - .../x/sys/unix/zsyscall_linux_riscv64.go | 1 - .../x/sys/unix/zsyscall_linux_s390x.go | 1 - .../x/sys/unix/zsyscall_linux_sparc64.go | 1 - .../x/sys/unix/zsyscall_netbsd_386.go | 1 - .../x/sys/unix/zsyscall_netbsd_amd64.go | 1 - .../x/sys/unix/zsyscall_netbsd_arm.go | 1 - .../x/sys/unix/zsyscall_netbsd_arm64.go | 1 - .../x/sys/unix/zsyscall_openbsd_386.go | 70 +- .../x/sys/unix/zsyscall_openbsd_386.s | 20 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 70 +- .../x/sys/unix/zsyscall_openbsd_amd64.s | 20 + .../x/sys/unix/zsyscall_openbsd_arm.go | 70 +- .../x/sys/unix/zsyscall_openbsd_arm.s | 20 + .../x/sys/unix/zsyscall_openbsd_arm64.go | 70 +- .../x/sys/unix/zsyscall_openbsd_arm64.s | 20 + .../x/sys/unix/zsyscall_openbsd_mips64.go | 70 +- .../x/sys/unix/zsyscall_openbsd_mips64.s | 20 + .../x/sys/unix/zsyscall_openbsd_ppc64.go | 70 +- .../x/sys/unix/zsyscall_openbsd_ppc64.s | 24 + .../x/sys/unix/zsyscall_openbsd_riscv64.go | 70 +- .../x/sys/unix/zsyscall_openbsd_riscv64.s | 20 + .../x/sys/unix/zsyscall_solaris_amd64.go | 1 - .../x/sys/unix/zsyscall_zos_s390x.go | 1 - .../x/sys/unix/zsysctl_openbsd_386.go | 1 - .../x/sys/unix/zsysctl_openbsd_amd64.go | 1 - .../x/sys/unix/zsysctl_openbsd_arm.go | 1 - .../x/sys/unix/zsysctl_openbsd_arm64.go | 1 - .../x/sys/unix/zsysctl_openbsd_mips64.go | 1 - .../x/sys/unix/zsysctl_openbsd_ppc64.go | 1 - .../x/sys/unix/zsysctl_openbsd_riscv64.go | 1 - .../x/sys/unix/zsysnum_darwin_amd64.go | 1 - .../x/sys/unix/zsysnum_darwin_arm64.go | 1 - .../x/sys/unix/zsysnum_dragonfly_amd64.go | 1 - .../x/sys/unix/zsysnum_freebsd_386.go | 1 - .../x/sys/unix/zsysnum_freebsd_amd64.go | 1 - .../x/sys/unix/zsysnum_freebsd_arm.go | 1 - .../x/sys/unix/zsysnum_freebsd_arm64.go | 1 - .../x/sys/unix/zsysnum_freebsd_riscv64.go | 1 - .../x/sys/unix/zsysnum_linux_386.go | 6 +- .../x/sys/unix/zsysnum_linux_amd64.go | 6 +- .../x/sys/unix/zsysnum_linux_arm.go | 6 +- .../x/sys/unix/zsysnum_linux_arm64.go | 6 +- .../x/sys/unix/zsysnum_linux_loong64.go | 6 +- .../x/sys/unix/zsysnum_linux_mips.go | 6 +- .../x/sys/unix/zsysnum_linux_mips64.go | 6 +- .../x/sys/unix/zsysnum_linux_mips64le.go | 6 +- .../x/sys/unix/zsysnum_linux_mipsle.go | 6 +- .../x/sys/unix/zsysnum_linux_ppc.go | 6 +- .../x/sys/unix/zsysnum_linux_ppc64.go | 6 +- .../x/sys/unix/zsysnum_linux_ppc64le.go | 6 +- .../x/sys/unix/zsysnum_linux_riscv64.go | 6 +- .../x/sys/unix/zsysnum_linux_s390x.go | 6 +- .../x/sys/unix/zsysnum_linux_sparc64.go | 6 +- .../x/sys/unix/zsysnum_netbsd_386.go | 1 - .../x/sys/unix/zsysnum_netbsd_amd64.go | 1 - .../x/sys/unix/zsysnum_netbsd_arm.go | 1 - .../x/sys/unix/zsysnum_netbsd_arm64.go | 1 - .../x/sys/unix/zsysnum_openbsd_386.go | 1 - .../x/sys/unix/zsysnum_openbsd_amd64.go | 1 - .../x/sys/unix/zsysnum_openbsd_arm.go | 1 - .../x/sys/unix/zsysnum_openbsd_arm64.go | 1 - .../x/sys/unix/zsysnum_openbsd_mips64.go | 1 - .../x/sys/unix/zsysnum_openbsd_ppc64.go | 1 - .../x/sys/unix/zsysnum_openbsd_riscv64.go | 1 - .../x/sys/unix/zsysnum_zos_s390x.go | 1 - .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 1 - .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 1 - .../x/sys/unix/ztypes_darwin_amd64.go | 1 - .../x/sys/unix/ztypes_darwin_arm64.go | 1 - .../x/sys/unix/ztypes_dragonfly_amd64.go | 1 - .../x/sys/unix/ztypes_freebsd_386.go | 1 - .../x/sys/unix/ztypes_freebsd_amd64.go | 1 - .../x/sys/unix/ztypes_freebsd_arm.go | 1 - .../x/sys/unix/ztypes_freebsd_arm64.go | 1 - .../x/sys/unix/ztypes_freebsd_riscv64.go | 1 - vendor/golang.org/x/sys/unix/ztypes_linux.go | 170 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 1 - .../x/sys/unix/ztypes_linux_amd64.go | 1 - .../golang.org/x/sys/unix/ztypes_linux_arm.go | 1 - .../x/sys/unix/ztypes_linux_arm64.go | 1 - .../x/sys/unix/ztypes_linux_loong64.go | 1 - .../x/sys/unix/ztypes_linux_mips.go | 1 - .../x/sys/unix/ztypes_linux_mips64.go | 1 - .../x/sys/unix/ztypes_linux_mips64le.go | 1 - .../x/sys/unix/ztypes_linux_mipsle.go | 1 - .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 1 - .../x/sys/unix/ztypes_linux_ppc64.go | 1 - .../x/sys/unix/ztypes_linux_ppc64le.go | 1 - .../x/sys/unix/ztypes_linux_riscv64.go | 1 - .../x/sys/unix/ztypes_linux_s390x.go | 1 - .../x/sys/unix/ztypes_linux_sparc64.go | 1 - .../x/sys/unix/ztypes_netbsd_386.go | 1 - .../x/sys/unix/ztypes_netbsd_amd64.go | 1 - .../x/sys/unix/ztypes_netbsd_arm.go | 1 - .../x/sys/unix/ztypes_netbsd_arm64.go | 1 - .../x/sys/unix/ztypes_openbsd_386.go | 1 - .../x/sys/unix/ztypes_openbsd_amd64.go | 1 - .../x/sys/unix/ztypes_openbsd_arm.go | 1 - .../x/sys/unix/ztypes_openbsd_arm64.go | 1 - .../x/sys/unix/ztypes_openbsd_mips64.go | 1 - .../x/sys/unix/ztypes_openbsd_ppc64.go | 1 - .../x/sys/unix/ztypes_openbsd_riscv64.go | 1 - .../x/sys/unix/ztypes_solaris_amd64.go | 1 - .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 1 - vendor/golang.org/x/sys/windows/aliases.go | 12 + .../golang.org/x/sys/windows/dll_windows.go | 416 + vendor/golang.org/x/sys/windows/empty.s | 8 + .../golang.org/x/sys/windows/env_windows.go | 57 + vendor/golang.org/x/sys/windows/eventlog.go | 20 + .../golang.org/x/sys/windows/exec_windows.go | 248 + .../x/sys/windows/memory_windows.go | 48 + vendor/golang.org/x/sys/windows/mkerrors.bash | 70 + .../x/sys/windows/mkknownfolderids.bash | 27 + vendor/golang.org/x/sys/windows/mksyscall.go | 9 + vendor/golang.org/x/sys/windows/race.go | 30 + vendor/golang.org/x/sys/windows/race0.go | 25 + .../x/sys/windows/security_windows.go | 1435 +++ vendor/golang.org/x/sys/windows/service.go | 257 + .../x/sys/windows/setupapi_windows.go | 1425 +++ vendor/golang.org/x/sys/windows/str.go | 22 + vendor/golang.org/x/sys/windows/syscall.go | 104 + .../x/sys/windows/syscall_windows.go | 1836 ++++ .../golang.org/x/sys/windows/types_windows.go | 3382 ++++++ .../x/sys/windows/types_windows_386.go | 35 + .../x/sys/windows/types_windows_amd64.go | 34 + .../x/sys/windows/types_windows_arm.go | 35 + .../x/sys/windows/types_windows_arm64.go | 34 + .../x/sys/windows/zerrors_windows.go | 9468 +++++++++++++++++ .../x/sys/windows/zknownfolderids_windows.go | 149 + .../x/sys/windows/zsyscall_windows.go | 4418 ++++++++ .../x/text/secure/bidirule/bidirule10.0.0.go | 1 - .../x/text/secure/bidirule/bidirule9.0.0.go | 1 - .../x/text/unicode/bidi/tables10.0.0.go | 1 - .../x/text/unicode/bidi/tables11.0.0.go | 1 - .../x/text/unicode/bidi/tables12.0.0.go | 1 - .../x/text/unicode/bidi/tables13.0.0.go | 1 - .../x/text/unicode/bidi/tables15.0.0.go | 1 - .../x/text/unicode/bidi/tables9.0.0.go | 1 - .../x/text/unicode/norm/tables10.0.0.go | 1 - .../x/text/unicode/norm/tables11.0.0.go | 1 - .../x/text/unicode/norm/tables12.0.0.go | 1 - .../x/text/unicode/norm/tables13.0.0.go | 1 - .../x/text/unicode/norm/tables15.0.0.go | 1 - .../x/text/unicode/norm/tables9.0.0.go | 1 - .../x/tools/go/analysis/diagnostic.go | 17 +- .../analysis/internal/analysisflags/flags.go | 33 +- .../go/analysis/internal/checker/checker.go | 26 +- .../go/analysis/unitchecker/unitchecker.go | 9 +- .../x/tools/go/analysis/validate.go | 2 + .../tools/go/internal/packagesdriver/sizes.go | 15 +- vendor/golang.org/x/tools/go/packages/doc.go | 44 +- .../x/tools/go/packages/external.go | 79 +- .../golang.org/x/tools/go/packages/golist.go | 111 +- .../x/tools/go/packages/golist_overlay.go | 492 - .../x/tools/go/packages/packages.go | 218 +- .../x/tools/go/types/objectpath/objectpath.go | 131 +- .../x/tools/internal/diff/lcs/git.sh | 6 +- .../golang.org/x/tools/internal/diff/ndiff.go | 18 +- .../x/tools/internal/diff/unified.go | 27 +- .../x/tools/internal/event/keys/util.go | 21 + .../x/tools/internal/facts/facts.go | 12 +- .../x/tools/internal/facts/imports.go | 14 +- .../x/tools/internal/gcimporter/iexport.go | 31 +- .../x/tools/internal/gcimporter/iimport.go | 46 +- .../x/tools/internal/gocommand/invoke.go | 27 +- .../internal/packagesinternal/packages.go | 8 - .../x/tools/internal/typeparams/common.go | 24 +- .../x/tools/internal/typeparams/coretype.go | 8 +- .../internal/typeparams/enabled_go117.go | 12 - .../internal/typeparams/enabled_go118.go | 15 - .../x/tools/internal/typeparams/normalize.go | 20 +- .../internal/typeparams/typeparams_go117.go | 197 - .../internal/typeparams/typeparams_go118.go | 151 - .../internal/typesinternal/objectpath.go | 24 - .../x/tools/internal/versions/gover.go | 172 + .../x/tools/internal/versions/types.go | 19 + .../x/tools/internal/versions/types_go121.go | 20 + .../x/tools/internal/versions/types_go122.go | 24 + .../x/tools/internal/versions/versions.go | 52 + .../googleapis/api/annotations/client.pb.go | 139 +- vendor/google.golang.org/grpc/README.md | 2 +- .../grpc/attributes/attributes.go | 4 +- .../grpc/balancer/balancer.go | 15 + ...r_conn_wrappers.go => balancer_wrapper.go} | 304 +- .../grpc_binarylog_v1/binarylog.pb.go | 2 +- vendor/google.golang.org/grpc/clientconn.go | 520 +- vendor/google.golang.org/grpc/codes/codes.go | 8 +- .../google.golang.org/grpc/credentials/tls.go | 75 +- vendor/google.golang.org/grpc/dialoptions.go | 51 +- .../grpc/encoding/encoding.go | 13 +- .../grpc/internal/backoff/backoff.go | 36 + .../grpc/internal/buffer/unbounded.go | 41 +- .../grpc/internal/channelz/funcs.go | 7 + .../grpc/internal/envconfig/envconfig.go | 3 - .../grpc/internal/envconfig/xds.go | 39 - .../grpc/internal/experimental.go | 28 + .../internal/grpcsync/callback_serializer.go | 51 +- .../grpc/internal/idle/idle.go | 175 +- .../grpc/internal/internal.go | 33 +- .../internal/resolver/dns/dns_resolver.go | 69 +- .../resolver/dns/internal/internal.go | 70 + .../grpc/internal/resolver/unix/unix.go | 4 + .../grpc/internal/status/status.go | 28 + .../grpc/internal/tcp_keepalive_others.go | 29 + .../grpc/internal/tcp_keepalive_unix.go | 54 + .../grpc/internal/tcp_keepalive_windows.go | 54 + .../grpc/internal/transport/controlbuf.go | 5 +- .../grpc/internal/transport/handler_server.go | 76 +- .../grpc/internal/transport/http2_client.go | 43 +- .../grpc/internal/transport/http2_server.go | 143 +- .../grpc/internal/transport/http_util.go | 18 +- .../grpc/internal/transport/proxy.go | 14 +- .../grpc/internal/transport/transport.go | 22 +- .../grpc/metadata/metadata.go | 31 +- vendor/google.golang.org/grpc/peer/peer.go | 2 + .../google.golang.org/grpc/picker_wrapper.go | 21 +- vendor/google.golang.org/grpc/pickfirst.go | 14 - .../grpc/resolver/dns/dns_resolver.go | 36 + vendor/google.golang.org/grpc/resolver/map.go | 113 + .../grpc/resolver/resolver.go | 20 +- .../grpc/resolver_conn_wrapper.go | 247 - .../grpc/resolver_wrapper.go | 197 + vendor/google.golang.org/grpc/rpc_util.go | 8 +- vendor/google.golang.org/grpc/server.go | 398 +- vendor/google.golang.org/grpc/stream.go | 4 +- vendor/google.golang.org/grpc/tap/tap.go | 6 + vendor/google.golang.org/grpc/version.go | 2 +- vendor/google.golang.org/grpc/vet.sh | 167 +- .../protobuf/encoding/protojson/decode.go | 12 + .../encoding/protojson/well_known_types.go | 55 +- .../protobuf/internal/descfmt/stringer.go | 183 +- .../protobuf/internal/filedesc/desc.go | 47 +- .../protobuf/internal/genid/descriptor_gen.go | 70 +- .../protobuf/internal/impl/codec_gen.go | 113 +- .../protobuf/internal/impl/legacy_message.go | 19 +- .../protobuf/internal/impl/message.go | 17 +- .../protobuf/internal/impl/pointer_reflect.go | 36 + .../protobuf/internal/impl/pointer_unsafe.go | 40 + ...ings_unsafe.go => strings_unsafe_go120.go} | 4 +- .../internal/strs/strings_unsafe_go121.go | 74 + .../protobuf/internal/version/version.go | 4 +- .../protobuf/reflect/protodesc/desc.go | 9 + .../protobuf/reflect/protodesc/desc_init.go | 24 + .../protobuf/reflect/protodesc/editions.go | 177 + .../reflect/protodesc/editions_defaults.binpb | 4 + .../protobuf/reflect/protodesc/proto.go | 2 +- .../protobuf/reflect/protoreflect/proto.go | 5 +- .../reflect/protoreflect/source_gen.go | 8 +- ...{value_unsafe.go => value_unsafe_go120.go} | 4 +- .../protoreflect/value_unsafe_go121.go | 87 + .../types/descriptorpb/descriptor.pb.go | 1996 ++-- vendor/modules.txt | 51 +- 507 files changed, 37304 insertions(+), 12330 deletions(-) rename vendor/github.com/google/go-cmp/cmp/{export_unsafe.go => export.go} (94%) delete mode 100644 vendor/github.com/google/go-cmp/cmp/export_panic.go rename vendor/github.com/google/go-cmp/cmp/internal/value/{pointer_unsafe.go => pointer.go} (95%) delete mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go delete mode 100644 vendor/golang.org/x/net/http2/go111.go delete mode 100644 vendor/golang.org/x/net/http2/go115.go delete mode 100644 vendor/golang.org/x/net/http2/go118.go delete mode 100644 vendor/golang.org/x/net/http2/not_go111.go delete mode 100644 vendor/golang.org/x/net/http2/not_go115.go delete mode 100644 vendor/golang.org/x/net/http2/not_go118.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs_go118.go delete mode 100644 vendor/golang.org/x/sys/execabs/execabs_go119.go create mode 100644 vendor/golang.org/x/sys/windows/aliases.go create mode 100644 vendor/golang.org/x/sys/windows/dll_windows.go create mode 100644 vendor/golang.org/x/sys/windows/empty.s create mode 100644 vendor/golang.org/x/sys/windows/env_windows.go create mode 100644 vendor/golang.org/x/sys/windows/eventlog.go create mode 100644 vendor/golang.org/x/sys/windows/exec_windows.go create mode 100644 vendor/golang.org/x/sys/windows/memory_windows.go create mode 100644 vendor/golang.org/x/sys/windows/mkerrors.bash create mode 100644 vendor/golang.org/x/sys/windows/mkknownfolderids.bash create mode 100644 vendor/golang.org/x/sys/windows/mksyscall.go create mode 100644 vendor/golang.org/x/sys/windows/race.go create mode 100644 vendor/golang.org/x/sys/windows/race0.go create mode 100644 vendor/golang.org/x/sys/windows/security_windows.go create mode 100644 vendor/golang.org/x/sys/windows/service.go create mode 100644 vendor/golang.org/x/sys/windows/setupapi_windows.go create mode 100644 vendor/golang.org/x/sys/windows/str.go create mode 100644 vendor/golang.org/x/sys/windows/syscall.go create mode 100644 vendor/golang.org/x/sys/windows/syscall_windows.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_386.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_amd64.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm64.go create mode 100644 vendor/golang.org/x/sys/windows/zerrors_windows.go create mode 100644 vendor/golang.org/x/sys/windows/zknownfolderids_windows.go create mode 100644 vendor/golang.org/x/sys/windows/zsyscall_windows.go create mode 100644 vendor/golang.org/x/tools/internal/event/keys/util.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go delete mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go delete mode 100644 vendor/golang.org/x/tools/internal/typesinternal/objectpath.go create mode 100644 vendor/golang.org/x/tools/internal/versions/gover.go create mode 100644 vendor/golang.org/x/tools/internal/versions/types.go create mode 100644 vendor/golang.org/x/tools/internal/versions/types_go121.go create mode 100644 vendor/golang.org/x/tools/internal/versions/types_go122.go create mode 100644 vendor/golang.org/x/tools/internal/versions/versions.go rename vendor/google.golang.org/grpc/{balancer_conn_wrappers.go => balancer_wrapper.go} (57%) create mode 100644 vendor/google.golang.org/grpc/internal/experimental.go create mode 100644 vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go create mode 100644 vendor/google.golang.org/grpc/internal/tcp_keepalive_others.go create mode 100644 vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go create mode 100644 vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go create mode 100644 vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go delete mode 100644 vendor/google.golang.org/grpc/resolver_conn_wrapper.go create mode 100644 vendor/google.golang.org/grpc/resolver_wrapper.go rename vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe.go => strings_unsafe_go120.go} (96%) create mode 100644 vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go create mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/editions.go create mode 100644 vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb rename vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe.go => value_unsafe_go120.go} (97%) create mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go diff --git a/go.mod b/go.mod index 72adf1a..5b7b7ea 100644 --- a/go.mod +++ b/go.mod @@ -18,20 +18,16 @@ go 1.21 require ( github.com/go-git/go-git v4.7.0+incompatible - github.com/google/go-cmp v0.5.9 + github.com/google/go-cmp v0.6.0 github.com/mattn/go-colorable v0.1.13 - github.com/mattn/go-isatty v0.0.19 + github.com/mattn/go-isatty v0.0.20 github.com/spf13/pflag v1.0.5 - go.chromium.org/luci v0.0.0-20231012044737-639b0ba8e396 - go.starlark.net v0.0.0-20230925163745-10651d5192ab - golang.org/x/mod v0.13.0 - golang.org/x/sync v0.4.0 - golang.org/x/tools v0.14.0 - // Pinned to a non-tagged version to get commit - // https://github.com/protocolbuffers/protobuf-go/commit/6352deccdb59bcc074db0ab49f4d8ba8f3cdb7ee - // TODO(olivernewman): Switch back to using a tagged version after the first - // release containing 6352deccdb59bcc074db0ab49f4d8ba8f3cdb7ee. - google.golang.org/protobuf v1.31.1-0.20230927161544-6352deccdb59 + go.chromium.org/luci v0.0.0-20240215232704-315be9a6c8b0 + go.starlark.net v0.0.0-20240123142251-f86470692795 + golang.org/x/mod v0.15.0 + golang.org/x/sync v0.6.0 + golang.org/x/tools v0.18.0 + google.golang.org/protobuf v1.32.0 ) require ( @@ -39,16 +35,17 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect - github.com/klauspost/compress v1.17.0 // indirect + github.com/klauspost/compress v1.17.6 // indirect github.com/kr/text v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/src-d/gcfg v1.4.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/genproto v0.0.0-20231009173412-8bfb1ae86b6c // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c // indirect - google.golang.org/grpc v1.58.3 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/grpc v1.61.1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect gopkg.in/src-d/go-git.v4 v4.13.1 // indirect diff --git a/go.sum b/go.sum index 08c3b1a..875e3a8 100644 --- a/go.sum +++ b/go.sum @@ -17,8 +17,8 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -29,11 +29,12 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= -github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -42,14 +43,16 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/smarty/assertions v1.15.1 h1:812oFiXI+G55vxsFf+8bIZ1ux30qtkdqzKbEFwyX3Tk= github.com/smarty/assertions v1.15.1/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= @@ -64,27 +67,27 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.chromium.org/luci v0.0.0-20231012044737-639b0ba8e396 h1:Mkm6j/Tfgmv6b23OC6aF7GgiFV8ieSIzLjmwTWNWr84= -go.chromium.org/luci v0.0.0-20231012044737-639b0ba8e396/go.mod h1:GGSuHJlnYhsASDay7s0fadZ8HxTtG4Yp4YfPwvaUIdc= -go.starlark.net v0.0.0-20230925163745-10651d5192ab h1:7QkXlIVjYdSsKKSGnM0jQdw/2w9W5qcFDGTc00zKqgI= -go.starlark.net v0.0.0-20230925163745-10651d5192ab/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= +go.chromium.org/luci v0.0.0-20240215232704-315be9a6c8b0 h1:dplpb5ESwFMv7SjX8AtnA/ypxRIIg+cpVKbvG8vtM3E= +go.chromium.org/luci v0.0.0-20240215232704-315be9a6c8b0/go.mod h1:wMhe+4MOId3YWB2dzChVWuOVrYYMOp/2/4VZgAtQ7gc= +go.starlark.net v0.0.0-20240123142251-f86470692795 h1:LmbG8Pq7KDGkglKVn8VpZOZj6vb9b8nKEGcg9l03epM= +go.starlark.net v0.0.0-20240123142251-f86470692795/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -94,36 +97,36 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20231009173412-8bfb1ae86b6c h1:ml3TAUoIIzQUtX88s/icpXCFW9lV5VwsuIuS1htNjKY= -google.golang.org/genproto v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:MugzuwC+GYOxyF0XUGQvsT97bOgWCV7MM1XMc5FZv8E= -google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c h1:0RtEmmHjemvUXloH7+RuBSIw7n+GEHMOMY1CkGYnWq4= -google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:Wth13BrWMRN/G+guBLupKa6fslcWZv14R0ZKDRkNfY8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c h1:jHkCUWkseRf+W+edG5hMzr/Uh1xkDREY4caybAq4dpY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= -google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= -google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9 h1:4++qSzdWBUy9/2x8L5KZgwZw+mjJZ2yDSCGMVM0YzRs= +google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:PVreiBMirk8ypES6aw9d4p6iiBNSIfZEBqr3UGoAi2E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 h1:hZB7eLIaYlW9qXRfCq/qDaPdbeY3757uARz5Vvfv+cY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:YUWgXUFRPfoYK1IHMuxH5K6nPEXSCzIMljnQ59lLRCk= +google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= +google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.1-0.20230927161544-6352deccdb59 h1:VEyoIMQ5ezAWTdg2i5ZPPmEgGs1HU6krWTttP6lOLBg= -google.golang.org/protobuf v1.31.1-0.20230927161544-6352deccdb59/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go index e54a76c..3d8d0cd 100644 --- a/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go @@ -7,6 +7,7 @@ package cmpopts import ( "errors" + "fmt" "math" "reflect" "time" @@ -16,10 +17,10 @@ import ( func equateAlways(_, _ interface{}) bool { return true } -// EquateEmpty returns a Comparer option that determines all maps and slices +// EquateEmpty returns a [cmp.Comparer] option that determines all maps and slices // with a length of zero to be equal, regardless of whether they are nil. // -// EquateEmpty can be used in conjunction with SortSlices and SortMaps. +// EquateEmpty can be used in conjunction with [SortSlices] and [SortMaps]. func EquateEmpty() cmp.Option { return cmp.FilterValues(isEmpty, cmp.Comparer(equateAlways)) } @@ -31,7 +32,7 @@ func isEmpty(x, y interface{}) bool { (vx.Len() == 0 && vy.Len() == 0) } -// EquateApprox returns a Comparer option that determines float32 or float64 +// EquateApprox returns a [cmp.Comparer] option that determines float32 or float64 // values to be equal if they are within a relative fraction or absolute margin. // This option is not used when either x or y is NaN or infinite. // @@ -45,7 +46,7 @@ func isEmpty(x, y interface{}) bool { // // |x-y| ≤ max(fraction*min(|x|, |y|), margin) // -// EquateApprox can be used in conjunction with EquateNaNs. +// EquateApprox can be used in conjunction with [EquateNaNs]. func EquateApprox(fraction, margin float64) cmp.Option { if margin < 0 || fraction < 0 || math.IsNaN(margin) || math.IsNaN(fraction) { panic("margin or fraction must be a non-negative number") @@ -73,10 +74,10 @@ func (a approximator) compareF32(x, y float32) bool { return a.compareF64(float64(x), float64(y)) } -// EquateNaNs returns a Comparer option that determines float32 and float64 +// EquateNaNs returns a [cmp.Comparer] option that determines float32 and float64 // NaN values to be equal. // -// EquateNaNs can be used in conjunction with EquateApprox. +// EquateNaNs can be used in conjunction with [EquateApprox]. func EquateNaNs() cmp.Option { return cmp.Options{ cmp.FilterValues(areNaNsF64s, cmp.Comparer(equateAlways)), @@ -91,8 +92,8 @@ func areNaNsF32s(x, y float32) bool { return areNaNsF64s(float64(x), float64(y)) } -// EquateApproxTime returns a Comparer option that determines two non-zero -// time.Time values to be equal if they are within some margin of one another. +// EquateApproxTime returns a [cmp.Comparer] option that determines two non-zero +// [time.Time] values to be equal if they are within some margin of one another. // If both times have a monotonic clock reading, then the monotonic time // difference will be used. The margin must be non-negative. func EquateApproxTime(margin time.Duration) cmp.Option { @@ -131,8 +132,8 @@ type anyError struct{} func (anyError) Error() string { return "any error" } func (anyError) Is(err error) bool { return err != nil } -// EquateErrors returns a Comparer option that determines errors to be equal -// if errors.Is reports them to match. The AnyError error can be used to +// EquateErrors returns a [cmp.Comparer] option that determines errors to be equal +// if [errors.Is] reports them to match. The [AnyError] error can be used to // match any non-nil error. func EquateErrors() cmp.Option { return cmp.FilterValues(areConcreteErrors, cmp.Comparer(compareErrors)) @@ -154,3 +155,31 @@ func compareErrors(x, y interface{}) bool { ye := y.(error) return errors.Is(xe, ye) || errors.Is(ye, xe) } + +// EquateComparable returns a [cmp.Option] that determines equality +// of comparable types by directly comparing them using the == operator in Go. +// The types to compare are specified by passing a value of that type. +// This option should only be used on types that are documented as being +// safe for direct == comparison. For example, [net/netip.Addr] is documented +// as being semantically safe to use with ==, while [time.Time] is documented +// to discourage the use of == on time values. +func EquateComparable(typs ...interface{}) cmp.Option { + types := make(typesFilter) + for _, typ := range typs { + switch t := reflect.TypeOf(typ); { + case !t.Comparable(): + panic(fmt.Sprintf("%T is not a comparable Go type", typ)) + case types[t]: + panic(fmt.Sprintf("%T is already specified", typ)) + default: + types[t] = true + } + } + return cmp.FilterPath(types.filter, cmp.Comparer(equateAny)) +} + +type typesFilter map[reflect.Type]bool + +func (tf typesFilter) filter(p cmp.Path) bool { return tf[p.Last().Type()] } + +func equateAny(x, y interface{}) bool { return x == y } diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/ignore.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/ignore.go index 80c6061..fb84d11 100644 --- a/vendor/github.com/google/go-cmp/cmp/cmpopts/ignore.go +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/ignore.go @@ -14,7 +14,7 @@ import ( "github.com/google/go-cmp/cmp/internal/function" ) -// IgnoreFields returns an Option that ignores fields of the +// IgnoreFields returns an [cmp.Option] that ignores fields of the // given names on a single struct type. It respects the names of exported fields // that are forwarded due to struct embedding. // The struct type is specified by passing in a value of that type. @@ -26,7 +26,7 @@ func IgnoreFields(typ interface{}, names ...string) cmp.Option { return cmp.FilterPath(sf.filter, cmp.Ignore()) } -// IgnoreTypes returns an Option that ignores all values assignable to +// IgnoreTypes returns an [cmp.Option] that ignores all values assignable to // certain types, which are specified by passing in a value of each type. func IgnoreTypes(typs ...interface{}) cmp.Option { tf := newTypeFilter(typs...) @@ -59,10 +59,10 @@ func (tf typeFilter) filter(p cmp.Path) bool { return false } -// IgnoreInterfaces returns an Option that ignores all values or references of +// IgnoreInterfaces returns an [cmp.Option] that ignores all values or references of // values assignable to certain interface types. These interfaces are specified // by passing in an anonymous struct with the interface types embedded in it. -// For example, to ignore sync.Locker, pass in struct{sync.Locker}{}. +// For example, to ignore [sync.Locker], pass in struct{sync.Locker}{}. func IgnoreInterfaces(ifaces interface{}) cmp.Option { tf := newIfaceFilter(ifaces) return cmp.FilterPath(tf.filter, cmp.Ignore()) @@ -107,7 +107,7 @@ func (tf ifaceFilter) filter(p cmp.Path) bool { return false } -// IgnoreUnexported returns an Option that only ignores the immediate unexported +// IgnoreUnexported returns an [cmp.Option] that only ignores the immediate unexported // fields of a struct, including anonymous fields of unexported types. // In particular, unexported fields within the struct's exported fields // of struct types, including anonymous fields, will not be ignored unless the @@ -115,7 +115,7 @@ func (tf ifaceFilter) filter(p cmp.Path) bool { // // Avoid ignoring unexported fields of a type which you do not control (i.e. a // type from another repository), as changes to the implementation of such types -// may change how the comparison behaves. Prefer a custom Comparer instead. +// may change how the comparison behaves. Prefer a custom [cmp.Comparer] instead. func IgnoreUnexported(typs ...interface{}) cmp.Option { ux := newUnexportedFilter(typs...) return cmp.FilterPath(ux.filter, cmp.Ignore()) @@ -148,7 +148,7 @@ func isExported(id string) bool { return unicode.IsUpper(r) } -// IgnoreSliceElements returns an Option that ignores elements of []V. +// IgnoreSliceElements returns an [cmp.Option] that ignores elements of []V. // The discard function must be of the form "func(T) bool" which is used to // ignore slice elements of type V, where V is assignable to T. // Elements are ignored if the function reports true. @@ -176,7 +176,7 @@ func IgnoreSliceElements(discardFunc interface{}) cmp.Option { }, cmp.Ignore()) } -// IgnoreMapEntries returns an Option that ignores entries of map[K]V. +// IgnoreMapEntries returns an [cmp.Option] that ignores entries of map[K]V. // The discard function must be of the form "func(T, R) bool" which is used to // ignore map entries of type K and V, where K and V are assignable to T and R. // Entries are ignored if the function reports true. diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go index 0eb2a75..c6d09da 100644 --- a/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go @@ -13,7 +13,7 @@ import ( "github.com/google/go-cmp/cmp/internal/function" ) -// SortSlices returns a Transformer option that sorts all []V. +// SortSlices returns a [cmp.Transformer] option that sorts all []V. // The less function must be of the form "func(T, T) bool" which is used to // sort any slice with element type V that is assignable to T. // @@ -25,7 +25,7 @@ import ( // The less function does not have to be "total". That is, if !less(x, y) and // !less(y, x) for two elements x and y, their relative order is maintained. // -// SortSlices can be used in conjunction with EquateEmpty. +// SortSlices can be used in conjunction with [EquateEmpty]. func SortSlices(lessFunc interface{}) cmp.Option { vf := reflect.ValueOf(lessFunc) if !function.IsType(vf.Type(), function.Less) || vf.IsNil() { @@ -82,13 +82,13 @@ func (ss sliceSorter) less(v reflect.Value, i, j int) bool { return ss.fnc.Call([]reflect.Value{vx, vy})[0].Bool() } -// SortMaps returns a Transformer option that flattens map[K]V types to be a +// SortMaps returns a [cmp.Transformer] option that flattens map[K]V types to be a // sorted []struct{K, V}. The less function must be of the form // "func(T, T) bool" which is used to sort any map with key K that is // assignable to T. // -// Flattening the map into a slice has the property that cmp.Equal is able to -// use Comparers on K or the K.Equal method if it exists. +// Flattening the map into a slice has the property that [cmp.Equal] is able to +// use [cmp.Comparer] options on K or the K.Equal method if it exists. // // The less function must be: // - Deterministic: less(x, y) == less(x, y) @@ -96,7 +96,7 @@ func (ss sliceSorter) less(v reflect.Value, i, j int) bool { // - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) // - Total: if x != y, then either less(x, y) or less(y, x) // -// SortMaps can be used in conjunction with EquateEmpty. +// SortMaps can be used in conjunction with [EquateEmpty]. func SortMaps(lessFunc interface{}) cmp.Option { vf := reflect.ValueOf(lessFunc) if !function.IsType(vf.Type(), function.Less) || vf.IsNil() { diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/xform.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/xform.go index 8812443..25b4bd0 100644 --- a/vendor/github.com/google/go-cmp/cmp/cmpopts/xform.go +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/xform.go @@ -19,7 +19,7 @@ func (xf xformFilter) filter(p cmp.Path) bool { return true } -// AcyclicTransformer returns a Transformer with a filter applied that ensures +// AcyclicTransformer returns a [cmp.Transformer] with a filter applied that ensures // that the transformer cannot be recursively applied upon its own output. // // An example use case is a transformer that splits a string by lines: @@ -28,7 +28,7 @@ func (xf xformFilter) filter(p cmp.Path) bool { // return strings.Split(s, "\n") // }) // -// Had this been an unfiltered Transformer instead, this would result in an +// Had this been an unfiltered [cmp.Transformer] instead, this would result in an // infinite cycle converting a string to []string to [][]string and so on. func AcyclicTransformer(name string, xformFunc interface{}) cmp.Option { xf := xformFilter{cmp.Transformer(name, xformFunc)} diff --git a/vendor/github.com/google/go-cmp/cmp/compare.go b/vendor/github.com/google/go-cmp/cmp/compare.go index 087320d..0f5b8a4 100644 --- a/vendor/github.com/google/go-cmp/cmp/compare.go +++ b/vendor/github.com/google/go-cmp/cmp/compare.go @@ -5,7 +5,7 @@ // Package cmp determines equality of values. // // This package is intended to be a more powerful and safer alternative to -// reflect.DeepEqual for comparing whether two values are semantically equal. +// [reflect.DeepEqual] for comparing whether two values are semantically equal. // It is intended to only be used in tests, as performance is not a goal and // it may panic if it cannot compare the values. Its propensity towards // panicking means that its unsuitable for production environments where a @@ -18,16 +18,17 @@ // For example, an equality function may report floats as equal so long as // they are within some tolerance of each other. // -// - Types with an Equal method may use that method to determine equality. -// This allows package authors to determine the equality operation -// for the types that they define. +// - Types with an Equal method (e.g., [time.Time.Equal]) may use that method +// to determine equality. This allows package authors to determine +// the equality operation for the types that they define. // // - If no custom equality functions are used and no Equal method is defined, // equality is determined by recursively comparing the primitive kinds on -// both values, much like reflect.DeepEqual. Unlike reflect.DeepEqual, +// both values, much like [reflect.DeepEqual]. Unlike [reflect.DeepEqual], // unexported fields are not compared by default; they result in panics -// unless suppressed by using an Ignore option (see cmpopts.IgnoreUnexported) -// or explicitly compared using the Exporter option. +// unless suppressed by using an [Ignore] option +// (see [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported]) +// or explicitly compared using the [Exporter] option. package cmp import ( @@ -45,14 +46,14 @@ import ( // Equal reports whether x and y are equal by recursively applying the // following rules in the given order to x and y and all of their sub-values: // -// - Let S be the set of all Ignore, Transformer, and Comparer options that +// - Let S be the set of all [Ignore], [Transformer], and [Comparer] options that // remain after applying all path filters, value filters, and type filters. -// If at least one Ignore exists in S, then the comparison is ignored. -// If the number of Transformer and Comparer options in S is non-zero, +// If at least one [Ignore] exists in S, then the comparison is ignored. +// If the number of [Transformer] and [Comparer] options in S is non-zero, // then Equal panics because it is ambiguous which option to use. -// If S contains a single Transformer, then use that to transform +// If S contains a single [Transformer], then use that to transform // the current values and recursively call Equal on the output values. -// If S contains a single Comparer, then use that to compare the current values. +// If S contains a single [Comparer], then use that to compare the current values. // Otherwise, evaluation proceeds to the next rule. // // - If the values have an Equal method of the form "(T) Equal(T) bool" or @@ -66,21 +67,22 @@ import ( // Functions are only equal if they are both nil, otherwise they are unequal. // // Structs are equal if recursively calling Equal on all fields report equal. -// If a struct contains unexported fields, Equal panics unless an Ignore option -// (e.g., cmpopts.IgnoreUnexported) ignores that field or the Exporter option -// explicitly permits comparing the unexported field. +// If a struct contains unexported fields, Equal panics unless an [Ignore] option +// (e.g., [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported]) ignores that field +// or the [Exporter] option explicitly permits comparing the unexported field. // // Slices are equal if they are both nil or both non-nil, where recursively // calling Equal on all non-ignored slice or array elements report equal. // Empty non-nil slices and nil slices are not equal; to equate empty slices, -// consider using cmpopts.EquateEmpty. +// consider using [github.com/google/go-cmp/cmp/cmpopts.EquateEmpty]. // // Maps are equal if they are both nil or both non-nil, where recursively // calling Equal on all non-ignored map entries report equal. // Map keys are equal according to the == operator. -// To use custom comparisons for map keys, consider using cmpopts.SortMaps. +// To use custom comparisons for map keys, consider using +// [github.com/google/go-cmp/cmp/cmpopts.SortMaps]. // Empty non-nil maps and nil maps are not equal; to equate empty maps, -// consider using cmpopts.EquateEmpty. +// consider using [github.com/google/go-cmp/cmp/cmpopts.EquateEmpty]. // // Pointers and interfaces are equal if they are both nil or both non-nil, // where they have the same underlying concrete type and recursively diff --git a/vendor/github.com/google/go-cmp/cmp/export_unsafe.go b/vendor/github.com/google/go-cmp/cmp/export.go similarity index 94% rename from vendor/github.com/google/go-cmp/cmp/export_unsafe.go rename to vendor/github.com/google/go-cmp/cmp/export.go index e2c0f74..29f82fe 100644 --- a/vendor/github.com/google/go-cmp/cmp/export_unsafe.go +++ b/vendor/github.com/google/go-cmp/cmp/export.go @@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego -// +build !purego - package cmp import ( @@ -12,8 +9,6 @@ import ( "unsafe" ) -const supportExporters = true - // retrieveUnexportedField uses unsafe to forcibly retrieve any field from // a struct such that the value has read-write permissions. // diff --git a/vendor/github.com/google/go-cmp/cmp/export_panic.go b/vendor/github.com/google/go-cmp/cmp/export_panic.go deleted file mode 100644 index ae851fe..0000000 --- a/vendor/github.com/google/go-cmp/cmp/export_panic.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017, The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build purego -// +build purego - -package cmp - -import "reflect" - -const supportExporters = false - -func retrieveUnexportedField(reflect.Value, reflect.StructField, bool) reflect.Value { - panic("no support for forcibly accessing unexported fields") -} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go similarity index 95% rename from vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go rename to vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go index 16e6860..e5dfff6 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go @@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego -// +build !purego - package value import ( diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go deleted file mode 100644 index 1a71bfc..0000000 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018, The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build purego -// +build purego - -package value - -import "reflect" - -// Pointer is an opaque typed pointer and is guaranteed to be comparable. -type Pointer struct { - p uintptr - t reflect.Type -} - -// PointerOf returns a Pointer from v, which must be a -// reflect.Ptr, reflect.Slice, or reflect.Map. -func PointerOf(v reflect.Value) Pointer { - // NOTE: Storing a pointer as an uintptr is technically incorrect as it - // assumes that the GC implementation does not use a moving collector. - return Pointer{v.Pointer(), v.Type()} -} - -// IsNil reports whether the pointer is nil. -func (p Pointer) IsNil() bool { - return p.p == 0 -} - -// Uintptr returns the pointer as a uintptr. -func (p Pointer) Uintptr() uintptr { - return p.p -} diff --git a/vendor/github.com/google/go-cmp/cmp/options.go b/vendor/github.com/google/go-cmp/cmp/options.go index 1f9ca9c..754496f 100644 --- a/vendor/github.com/google/go-cmp/cmp/options.go +++ b/vendor/github.com/google/go-cmp/cmp/options.go @@ -13,15 +13,15 @@ import ( "github.com/google/go-cmp/cmp/internal/function" ) -// Option configures for specific behavior of Equal and Diff. In particular, -// the fundamental Option functions (Ignore, Transformer, and Comparer), +// Option configures for specific behavior of [Equal] and [Diff]. In particular, +// the fundamental Option functions ([Ignore], [Transformer], and [Comparer]), // configure how equality is determined. // -// The fundamental options may be composed with filters (FilterPath and -// FilterValues) to control the scope over which they are applied. +// The fundamental options may be composed with filters ([FilterPath] and +// [FilterValues]) to control the scope over which they are applied. // -// The cmp/cmpopts package provides helper functions for creating options that -// may be used with Equal and Diff. +// The [github.com/google/go-cmp/cmp/cmpopts] package provides helper functions +// for creating options that may be used with [Equal] and [Diff]. type Option interface { // filter applies all filters and returns the option that remains. // Each option may only read s.curPath and call s.callTTBFunc. @@ -56,9 +56,9 @@ type core struct{} func (core) isCore() {} -// Options is a list of Option values that also satisfies the Option interface. +// Options is a list of [Option] values that also satisfies the [Option] interface. // Helper comparison packages may return an Options value when packing multiple -// Option values into a single Option. When this package processes an Options, +// [Option] values into a single [Option]. When this package processes an Options, // it will be implicitly expanded into a flat list. // // Applying a filter on an Options is equivalent to applying that same filter @@ -105,16 +105,16 @@ func (opts Options) String() string { return fmt.Sprintf("Options{%s}", strings.Join(ss, ", ")) } -// FilterPath returns a new Option where opt is only evaluated if filter f -// returns true for the current Path in the value tree. +// FilterPath returns a new [Option] where opt is only evaluated if filter f +// returns true for the current [Path] in the value tree. // // This filter is called even if a slice element or map entry is missing and // provides an opportunity to ignore such cases. The filter function must be // symmetric such that the filter result is identical regardless of whether the // missing value is from x or y. // -// The option passed in may be an Ignore, Transformer, Comparer, Options, or -// a previously filtered Option. +// The option passed in may be an [Ignore], [Transformer], [Comparer], [Options], or +// a previously filtered [Option]. func FilterPath(f func(Path) bool, opt Option) Option { if f == nil { panic("invalid path filter function") @@ -142,7 +142,7 @@ func (f pathFilter) String() string { return fmt.Sprintf("FilterPath(%s, %v)", function.NameOf(reflect.ValueOf(f.fnc)), f.opt) } -// FilterValues returns a new Option where opt is only evaluated if filter f, +// FilterValues returns a new [Option] where opt is only evaluated if filter f, // which is a function of the form "func(T, T) bool", returns true for the // current pair of values being compared. If either value is invalid or // the type of the values is not assignable to T, then this filter implicitly @@ -154,8 +154,8 @@ func (f pathFilter) String() string { // If T is an interface, it is possible that f is called with two values with // different concrete types that both implement T. // -// The option passed in may be an Ignore, Transformer, Comparer, Options, or -// a previously filtered Option. +// The option passed in may be an [Ignore], [Transformer], [Comparer], [Options], or +// a previously filtered [Option]. func FilterValues(f interface{}, opt Option) Option { v := reflect.ValueOf(f) if !function.IsType(v.Type(), function.ValueFilter) || v.IsNil() { @@ -192,9 +192,9 @@ func (f valuesFilter) String() string { return fmt.Sprintf("FilterValues(%s, %v)", function.NameOf(f.fnc), f.opt) } -// Ignore is an Option that causes all comparisons to be ignored. -// This value is intended to be combined with FilterPath or FilterValues. -// It is an error to pass an unfiltered Ignore option to Equal. +// Ignore is an [Option] that causes all comparisons to be ignored. +// This value is intended to be combined with [FilterPath] or [FilterValues]. +// It is an error to pass an unfiltered Ignore option to [Equal]. func Ignore() Option { return ignore{} } type ignore struct{ core } @@ -234,6 +234,8 @@ func (validator) apply(s *state, vx, vy reflect.Value) { name = fmt.Sprintf("%q.%v", t.PkgPath(), t.Name()) // e.g., "path/to/package".MyType if _, ok := reflect.New(t).Interface().(error); ok { help = "consider using cmpopts.EquateErrors to compare error values" + } else if t.Comparable() { + help = "consider using cmpopts.EquateComparable to compare comparable Go types" } } else { // Unnamed type with unexported fields. Derive PkgPath from field. @@ -254,7 +256,7 @@ const identRx = `[_\p{L}][_\p{L}\p{N}]*` var identsRx = regexp.MustCompile(`^` + identRx + `(\.` + identRx + `)*$`) -// Transformer returns an Option that applies a transformation function that +// Transformer returns an [Option] that applies a transformation function that // converts values of a certain type into that of another. // // The transformer f must be a function "func(T) R" that converts values of @@ -265,13 +267,14 @@ var identsRx = regexp.MustCompile(`^` + identRx + `(\.` + identRx + `)*$`) // same transform to the output of itself (e.g., in the case where the // input and output types are the same), an implicit filter is added such that // a transformer is applicable only if that exact transformer is not already -// in the tail of the Path since the last non-Transform step. +// in the tail of the [Path] since the last non-[Transform] step. // For situations where the implicit filter is still insufficient, -// consider using cmpopts.AcyclicTransformer, which adds a filter -// to prevent the transformer from being recursively applied upon itself. +// consider using [github.com/google/go-cmp/cmp/cmpopts.AcyclicTransformer], +// which adds a filter to prevent the transformer from +// being recursively applied upon itself. // -// The name is a user provided label that is used as the Transform.Name in the -// transformation PathStep (and eventually shown in the Diff output). +// The name is a user provided label that is used as the [Transform.Name] in the +// transformation [PathStep] (and eventually shown in the [Diff] output). // The name must be a valid identifier or qualified identifier in Go syntax. // If empty, an arbitrary name is used. func Transformer(name string, f interface{}) Option { @@ -329,7 +332,7 @@ func (tr transformer) String() string { return fmt.Sprintf("Transformer(%s, %s)", tr.name, function.NameOf(tr.fnc)) } -// Comparer returns an Option that determines whether two values are equal +// Comparer returns an [Option] that determines whether two values are equal // to each other. // // The comparer f must be a function "func(T, T) bool" and is implicitly @@ -377,35 +380,32 @@ func (cm comparer) String() string { return fmt.Sprintf("Comparer(%s)", function.NameOf(cm.fnc)) } -// Exporter returns an Option that specifies whether Equal is allowed to +// Exporter returns an [Option] that specifies whether [Equal] is allowed to // introspect into the unexported fields of certain struct types. // // Users of this option must understand that comparing on unexported fields // from external packages is not safe since changes in the internal -// implementation of some external package may cause the result of Equal +// implementation of some external package may cause the result of [Equal] // to unexpectedly change. However, it may be valid to use this option on types // defined in an internal package where the semantic meaning of an unexported // field is in the control of the user. // -// In many cases, a custom Comparer should be used instead that defines +// In many cases, a custom [Comparer] should be used instead that defines // equality as a function of the public API of a type rather than the underlying // unexported implementation. // -// For example, the reflect.Type documentation defines equality to be determined +// For example, the [reflect.Type] documentation defines equality to be determined // by the == operator on the interface (essentially performing a shallow pointer -// comparison) and most attempts to compare *regexp.Regexp types are interested +// comparison) and most attempts to compare *[regexp.Regexp] types are interested // in only checking that the regular expression strings are equal. -// Both of these are accomplished using Comparers: +// Both of these are accomplished using [Comparer] options: // // Comparer(func(x, y reflect.Type) bool { return x == y }) // Comparer(func(x, y *regexp.Regexp) bool { return x.String() == y.String() }) // -// In other cases, the cmpopts.IgnoreUnexported option can be used to ignore -// all unexported fields on specified struct types. +// In other cases, the [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported] +// option can be used to ignore all unexported fields on specified struct types. func Exporter(f func(reflect.Type) bool) Option { - if !supportExporters { - panic("Exporter is not supported on purego builds") - } return exporter(f) } @@ -415,10 +415,10 @@ func (exporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableO panic("not implemented") } -// AllowUnexported returns an Options that allows Equal to forcibly introspect +// AllowUnexported returns an [Option] that allows [Equal] to forcibly introspect // unexported fields of the specified struct types. // -// See Exporter for the proper use of this option. +// See [Exporter] for the proper use of this option. func AllowUnexported(types ...interface{}) Option { m := make(map[reflect.Type]bool) for _, typ := range types { @@ -432,7 +432,7 @@ func AllowUnexported(types ...interface{}) Option { } // Result represents the comparison result for a single node and -// is provided by cmp when calling Report (see Reporter). +// is provided by cmp when calling Report (see [Reporter]). type Result struct { _ [0]func() // Make Result incomparable flags resultFlags @@ -445,7 +445,7 @@ func (r Result) Equal() bool { } // ByIgnore reports whether the node is equal because it was ignored. -// This never reports true if Equal reports false. +// This never reports true if [Result.Equal] reports false. func (r Result) ByIgnore() bool { return r.flags&reportByIgnore != 0 } @@ -455,7 +455,7 @@ func (r Result) ByMethod() bool { return r.flags&reportByMethod != 0 } -// ByFunc reports whether a Comparer function determined equality. +// ByFunc reports whether a [Comparer] function determined equality. func (r Result) ByFunc() bool { return r.flags&reportByFunc != 0 } @@ -478,7 +478,7 @@ const ( reportByCycle ) -// Reporter is an Option that can be passed to Equal. When Equal traverses +// Reporter is an [Option] that can be passed to [Equal]. When [Equal] traverses // the value trees, it calls PushStep as it descends into each node in the // tree and PopStep as it ascend out of the node. The leaves of the tree are // either compared (determined to be equal or not equal) or ignored and reported diff --git a/vendor/github.com/google/go-cmp/cmp/path.go b/vendor/github.com/google/go-cmp/cmp/path.go index a0a5885..c3c1456 100644 --- a/vendor/github.com/google/go-cmp/cmp/path.go +++ b/vendor/github.com/google/go-cmp/cmp/path.go @@ -14,9 +14,9 @@ import ( "github.com/google/go-cmp/cmp/internal/value" ) -// Path is a list of PathSteps describing the sequence of operations to get +// Path is a list of [PathStep] describing the sequence of operations to get // from some root type to the current position in the value tree. -// The first Path element is always an operation-less PathStep that exists +// The first Path element is always an operation-less [PathStep] that exists // simply to identify the initial type. // // When traversing structs with embedded structs, the embedded struct will @@ -29,8 +29,13 @@ type Path []PathStep // a value's tree structure. Users of this package never need to implement // these types as values of this type will be returned by this package. // -// Implementations of this interface are -// StructField, SliceIndex, MapIndex, Indirect, TypeAssertion, and Transform. +// Implementations of this interface: +// - [StructField] +// - [SliceIndex] +// - [MapIndex] +// - [Indirect] +// - [TypeAssertion] +// - [Transform] type PathStep interface { String() string @@ -70,8 +75,9 @@ func (pa *Path) pop() { *pa = (*pa)[:len(*pa)-1] } -// Last returns the last PathStep in the Path. -// If the path is empty, this returns a non-nil PathStep that reports a nil Type. +// Last returns the last [PathStep] in the Path. +// If the path is empty, this returns a non-nil [PathStep] +// that reports a nil [PathStep.Type]. func (pa Path) Last() PathStep { return pa.Index(-1) } @@ -79,7 +85,8 @@ func (pa Path) Last() PathStep { // Index returns the ith step in the Path and supports negative indexing. // A negative index starts counting from the tail of the Path such that -1 // refers to the last step, -2 refers to the second-to-last step, and so on. -// If index is invalid, this returns a non-nil PathStep that reports a nil Type. +// If index is invalid, this returns a non-nil [PathStep] +// that reports a nil [PathStep.Type]. func (pa Path) Index(i int) PathStep { if i < 0 { i = len(pa) + i @@ -168,7 +175,8 @@ func (ps pathStep) String() string { return fmt.Sprintf("{%s}", s) } -// StructField represents a struct field access on a field called Name. +// StructField is a [PathStep] that represents a struct field access +// on a field called [StructField.Name]. type StructField struct{ *structField } type structField struct { pathStep @@ -204,10 +212,11 @@ func (sf StructField) String() string { return fmt.Sprintf(".%s", sf.name) } func (sf StructField) Name() string { return sf.name } // Index is the index of the field in the parent struct type. -// See reflect.Type.Field. +// See [reflect.Type.Field]. func (sf StructField) Index() int { return sf.idx } -// SliceIndex is an index operation on a slice or array at some index Key. +// SliceIndex is a [PathStep] that represents an index operation on +// a slice or array at some index [SliceIndex.Key]. type SliceIndex struct{ *sliceIndex } type sliceIndex struct { pathStep @@ -247,12 +256,12 @@ func (si SliceIndex) Key() int { // all of the indexes to be shifted. If an index is -1, then that // indicates that the element does not exist in the associated slice. // -// Key is guaranteed to return -1 if and only if the indexes returned -// by SplitKeys are not the same. SplitKeys will never return -1 for +// [SliceIndex.Key] is guaranteed to return -1 if and only if the indexes +// returned by SplitKeys are not the same. SplitKeys will never return -1 for // both indexes. func (si SliceIndex) SplitKeys() (ix, iy int) { return si.xkey, si.ykey } -// MapIndex is an index operation on a map at some index Key. +// MapIndex is a [PathStep] that represents an index operation on a map at some index Key. type MapIndex struct{ *mapIndex } type mapIndex struct { pathStep @@ -266,7 +275,7 @@ func (mi MapIndex) String() string { return fmt.Sprintf("[%#v]", // Key is the value of the map key. func (mi MapIndex) Key() reflect.Value { return mi.key } -// Indirect represents pointer indirection on the parent type. +// Indirect is a [PathStep] that represents pointer indirection on the parent type. type Indirect struct{ *indirect } type indirect struct { pathStep @@ -276,7 +285,7 @@ func (in Indirect) Type() reflect.Type { return in.typ } func (in Indirect) Values() (vx, vy reflect.Value) { return in.vx, in.vy } func (in Indirect) String() string { return "*" } -// TypeAssertion represents a type assertion on an interface. +// TypeAssertion is a [PathStep] that represents a type assertion on an interface. type TypeAssertion struct{ *typeAssertion } type typeAssertion struct { pathStep @@ -286,7 +295,8 @@ func (ta TypeAssertion) Type() reflect.Type { return ta.typ } func (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy } func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", value.TypeString(ta.typ, false)) } -// Transform is a transformation from the parent type to the current type. +// Transform is a [PathStep] that represents a transformation +// from the parent type to the current type. type Transform struct{ *transform } type transform struct { pathStep @@ -297,13 +307,13 @@ func (tf Transform) Type() reflect.Type { return tf.typ } func (tf Transform) Values() (vx, vy reflect.Value) { return tf.vx, tf.vy } func (tf Transform) String() string { return fmt.Sprintf("%s()", tf.trans.name) } -// Name is the name of the Transformer. +// Name is the name of the [Transformer]. func (tf Transform) Name() string { return tf.trans.name } // Func is the function pointer to the transformer function. func (tf Transform) Func() reflect.Value { return tf.trans.fnc } -// Option returns the originally constructed Transformer option. +// Option returns the originally constructed [Transformer] option. // The == operator can be used to detect the exact option used. func (tf Transform) Option() Option { return tf.trans } diff --git a/vendor/github.com/google/go-cmp/cmp/report_reflect.go b/vendor/github.com/google/go-cmp/cmp/report_reflect.go index 2ab41fa..e39f422 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_reflect.go +++ b/vendor/github.com/google/go-cmp/cmp/report_reflect.go @@ -199,7 +199,7 @@ func (opts formatOptions) FormatValue(v reflect.Value, parentKind reflect.Kind, break } sf := t.Field(i) - if supportExporters && !isExported(sf.Name) { + if !isExported(sf.Name) { vv = retrieveUnexportedField(v, sf, true) } s := opts.WithTypeMode(autoType).FormatValue(vv, t.Kind(), ptrs) diff --git a/vendor/github.com/klauspost/compress/flate/deflate.go b/vendor/github.com/klauspost/compress/flate/deflate.go index de912e1..66d1657 100644 --- a/vendor/github.com/klauspost/compress/flate/deflate.go +++ b/vendor/github.com/klauspost/compress/flate/deflate.go @@ -212,7 +212,7 @@ func (d *compressor) writeBlockSkip(tok *tokens, index int, eof bool) error { // Should only be used after a start/reset. func (d *compressor) fillWindow(b []byte) { // Do not fill window if we are in store-only or huffman mode. - if d.level <= 0 { + if d.level <= 0 && d.level > -MinCustomWindowSize { return } if d.fast != nil { diff --git a/vendor/github.com/klauspost/compress/flate/inflate.go b/vendor/github.com/klauspost/compress/flate/inflate.go index 414c0be..2f410d6 100644 --- a/vendor/github.com/klauspost/compress/flate/inflate.go +++ b/vendor/github.com/klauspost/compress/flate/inflate.go @@ -120,8 +120,9 @@ func (h *huffmanDecoder) init(lengths []int) bool { const sanity = false if h.chunks == nil { - h.chunks = &[huffmanNumChunks]uint16{} + h.chunks = new([huffmanNumChunks]uint16) } + if h.maxRead != 0 { *h = huffmanDecoder{chunks: h.chunks, links: h.links} } @@ -175,6 +176,7 @@ func (h *huffmanDecoder) init(lengths []int) bool { } h.maxRead = min + chunks := h.chunks[:] for i := range chunks { chunks[i] = 0 @@ -202,8 +204,7 @@ func (h *huffmanDecoder) init(lengths []int) bool { if cap(h.links[off]) < numLinks { h.links[off] = make([]uint16, numLinks) } else { - links := h.links[off][:0] - h.links[off] = links[:numLinks] + h.links[off] = h.links[off][:numLinks] } } } else { @@ -277,7 +278,7 @@ func (h *huffmanDecoder) init(lengths []int) bool { return true } -// The actual read interface needed by NewReader. +// Reader is the actual read interface needed by NewReader. // If the passed in io.Reader does not also have ReadByte, // the NewReader will introduce its own buffering. type Reader interface { @@ -285,6 +286,18 @@ type Reader interface { io.ByteReader } +type step uint8 + +const ( + copyData step = iota + 1 + nextBlock + huffmanBytesBuffer + huffmanBytesReader + huffmanBufioReader + huffmanStringsReader + huffmanGenericReader +) + // Decompress state. type decompressor struct { // Input source. @@ -303,7 +316,7 @@ type decompressor struct { // Next step in the decompression, // and decompression state. - step func(*decompressor) + step step stepState int err error toRead []byte @@ -342,7 +355,7 @@ func (f *decompressor) nextBlock() { // compressed, fixed Huffman tables f.hl = &fixedHuffmanDecoder f.hd = nil - f.huffmanBlockDecoder()() + f.huffmanBlockDecoder() if debugDecode { fmt.Println("predefinied huffman block") } @@ -353,7 +366,7 @@ func (f *decompressor) nextBlock() { } f.hl = &f.h1 f.hd = &f.h2 - f.huffmanBlockDecoder()() + f.huffmanBlockDecoder() if debugDecode { fmt.Println("dynamic huffman block") } @@ -379,14 +392,16 @@ func (f *decompressor) Read(b []byte) (int, error) { if f.err != nil { return 0, f.err } - f.step(f) + + f.doStep() + if f.err != nil && len(f.toRead) == 0 { f.toRead = f.dict.readFlush() // Flush what's left in case of error } } } -// Support the io.WriteTo interface for io.Copy and friends. +// WriteTo implements the io.WriteTo interface for io.Copy and friends. func (f *decompressor) WriteTo(w io.Writer) (int64, error) { total := int64(0) flushed := false @@ -410,7 +425,7 @@ func (f *decompressor) WriteTo(w io.Writer) (int64, error) { return total, f.err } if f.err == nil { - f.step(f) + f.doStep() } if len(f.toRead) == 0 && f.err != nil && !flushed { f.toRead = f.dict.readFlush() // Flush what's left in case of error @@ -631,7 +646,7 @@ func (f *decompressor) copyData() { if f.dict.availWrite() == 0 || f.copyLen > 0 { f.toRead = f.dict.readFlush() - f.step = (*decompressor).copyData + f.step = copyData return } f.finishBlock() @@ -644,7 +659,28 @@ func (f *decompressor) finishBlock() { } f.err = io.EOF } - f.step = (*decompressor).nextBlock + f.step = nextBlock +} + +func (f *decompressor) doStep() { + switch f.step { + case copyData: + f.copyData() + case nextBlock: + f.nextBlock() + case huffmanBytesBuffer: + f.huffmanBytesBuffer() + case huffmanBytesReader: + f.huffmanBytesReader() + case huffmanBufioReader: + f.huffmanBufioReader() + case huffmanStringsReader: + f.huffmanStringsReader() + case huffmanGenericReader: + f.huffmanGenericReader() + default: + panic("BUG: unexpected step state") + } } // noEOF returns err, unless err == io.EOF, in which case it returns io.ErrUnexpectedEOF. @@ -747,7 +783,7 @@ func (f *decompressor) Reset(r io.Reader, dict []byte) error { h1: f.h1, h2: f.h2, dict: f.dict, - step: (*decompressor).nextBlock, + step: nextBlock, } f.dict.init(maxMatchOffset, dict) return nil @@ -768,7 +804,7 @@ func NewReader(r io.Reader) io.ReadCloser { f.r = makeReader(r) f.bits = new([maxNumLit + maxNumDist]int) f.codebits = new([numCodes]int) - f.step = (*decompressor).nextBlock + f.step = nextBlock f.dict.init(maxMatchOffset, nil) return &f } @@ -787,7 +823,7 @@ func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser { f.r = makeReader(r) f.bits = new([maxNumLit + maxNumDist]int) f.codebits = new([numCodes]int) - f.step = (*decompressor).nextBlock + f.step = nextBlock f.dict.init(maxMatchOffset, dict) return &f } diff --git a/vendor/github.com/klauspost/compress/flate/inflate_gen.go b/vendor/github.com/klauspost/compress/flate/inflate_gen.go index 61342b6..2b2f993 100644 --- a/vendor/github.com/klauspost/compress/flate/inflate_gen.go +++ b/vendor/github.com/klauspost/compress/flate/inflate_gen.go @@ -85,7 +85,7 @@ readLiteral: dict.writeByte(byte(v)) if dict.availWrite() == 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanBytesBuffer + f.step = huffmanBytesBuffer f.stepState = stateInit f.b, f.nb = fb, fnb return @@ -251,7 +251,7 @@ copyHistory: if dict.availWrite() == 0 || f.copyLen > 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanBytesBuffer // We need to continue this work + f.step = huffmanBytesBuffer // We need to continue this work f.stepState = stateDict f.b, f.nb = fb, fnb return @@ -336,7 +336,7 @@ readLiteral: dict.writeByte(byte(v)) if dict.availWrite() == 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanBytesReader + f.step = huffmanBytesReader f.stepState = stateInit f.b, f.nb = fb, fnb return @@ -502,7 +502,7 @@ copyHistory: if dict.availWrite() == 0 || f.copyLen > 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanBytesReader // We need to continue this work + f.step = huffmanBytesReader // We need to continue this work f.stepState = stateDict f.b, f.nb = fb, fnb return @@ -587,7 +587,7 @@ readLiteral: dict.writeByte(byte(v)) if dict.availWrite() == 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanBufioReader + f.step = huffmanBufioReader f.stepState = stateInit f.b, f.nb = fb, fnb return @@ -753,7 +753,7 @@ copyHistory: if dict.availWrite() == 0 || f.copyLen > 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanBufioReader // We need to continue this work + f.step = huffmanBufioReader // We need to continue this work f.stepState = stateDict f.b, f.nb = fb, fnb return @@ -838,7 +838,7 @@ readLiteral: dict.writeByte(byte(v)) if dict.availWrite() == 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanStringsReader + f.step = huffmanStringsReader f.stepState = stateInit f.b, f.nb = fb, fnb return @@ -1004,7 +1004,7 @@ copyHistory: if dict.availWrite() == 0 || f.copyLen > 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanStringsReader // We need to continue this work + f.step = huffmanStringsReader // We need to continue this work f.stepState = stateDict f.b, f.nb = fb, fnb return @@ -1089,7 +1089,7 @@ readLiteral: dict.writeByte(byte(v)) if dict.availWrite() == 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanGenericReader + f.step = huffmanGenericReader f.stepState = stateInit f.b, f.nb = fb, fnb return @@ -1255,7 +1255,7 @@ copyHistory: if dict.availWrite() == 0 || f.copyLen > 0 { f.toRead = dict.readFlush() - f.step = (*decompressor).huffmanGenericReader // We need to continue this work + f.step = huffmanGenericReader // We need to continue this work f.stepState = stateDict f.b, f.nb = fb, fnb return @@ -1265,19 +1265,19 @@ copyHistory: // Not reached } -func (f *decompressor) huffmanBlockDecoder() func() { +func (f *decompressor) huffmanBlockDecoder() { switch f.r.(type) { case *bytes.Buffer: - return f.huffmanBytesBuffer + f.huffmanBytesBuffer() case *bytes.Reader: - return f.huffmanBytesReader + f.huffmanBytesReader() case *bufio.Reader: - return f.huffmanBufioReader + f.huffmanBufioReader() case *strings.Reader: - return f.huffmanStringsReader + f.huffmanStringsReader() case Reader: - return f.huffmanGenericReader + f.huffmanGenericReader() default: - return f.huffmanGenericReader + f.huffmanGenericReader() } } diff --git a/vendor/github.com/klauspost/compress/gzip/gunzip.go b/vendor/github.com/klauspost/compress/gzip/gunzip.go index dc2362a..00a0a2c 100644 --- a/vendor/github.com/klauspost/compress/gzip/gunzip.go +++ b/vendor/github.com/klauspost/compress/gzip/gunzip.go @@ -238,6 +238,11 @@ func (z *Reader) readHeader() (hdr Header, err error) { } } + // Reserved FLG bits must be zero. + if flg>>5 != 0 { + return hdr, ErrHeader + } + z.digest = 0 if z.decompressor == nil { z.decompressor = flate.NewReader(z.r) diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go index d569c0c..d0ea68f 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_bsd.go +++ b/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -1,6 +1,7 @@ -//go:build (darwin || freebsd || openbsd || netbsd || dragonfly || hurd) && !appengine +//go:build (darwin || freebsd || openbsd || netbsd || dragonfly || hurd) && !appengine && !tinygo // +build darwin freebsd openbsd netbsd dragonfly hurd // +build !appengine +// +build !tinygo package isatty diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go index 3150322..7402e06 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_others.go +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -1,5 +1,6 @@ -//go:build appengine || js || nacl || wasm -// +build appengine js nacl wasm +//go:build (appengine || js || nacl || tinygo || wasm) && !windows +// +build appengine js nacl tinygo wasm +// +build !windows package isatty diff --git a/vendor/github.com/mattn/go-isatty/isatty_tcgets.go b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go index 6778765..0337d8c 100644 --- a/vendor/github.com/mattn/go-isatty/isatty_tcgets.go +++ b/vendor/github.com/mattn/go-isatty/isatty_tcgets.go @@ -1,6 +1,7 @@ -//go:build (linux || aix || zos) && !appengine +//go:build (linux || aix || zos) && !appengine && !tinygo // +build linux aix zos // +build !appengine +// +build !tinygo package isatty diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.pb.go b/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.pb.go index 2b62ab4..0dcc4fb 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.pb.go +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.pb.go @@ -77,13 +77,15 @@ type Artifact struct { // Size of the file. // Can be used in UI to decide between displaying the artifact inline or only // showing a link if it is too large. + // If you are using the gcs_uri, this field is not verified, but only treated as a hint. SizeBytes int64 `protobuf:"varint,6,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` // Contents of the artifact. // This is INPUT_ONLY, and taken by BatchCreateArtifacts(). // All getter RPCs, such as ListArtifacts(), do not populate values into // the field in the response. + // If specified, `gcs_uri` must be empty. Contents []byte `protobuf:"bytes,7,opt,name=contents,proto3" json:"contents,omitempty"` - // The GCS URI of the artifact if it's stored in GCS. + // The GCS URI of the artifact if it's stored in GCS. If specified, `contents` must be empty. GcsUri string `protobuf:"bytes,8,opt,name=gcs_uri,json=gcsUri,proto3" json:"gcs_uri,omitempty"` } diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.proto b/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.proto index b391306..54cbcba 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.proto +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/artifact.proto @@ -44,7 +44,7 @@ message Artifact { // A local identifier of the artifact, unique within the parent resource. // MAY have slashes, but MUST NOT start with a slash. // SHOULD not use backslashes. - // Regex: ^[[:word:]]([[:print:]]{0,254}[[:word:]])?$ + // Regex: ^(?:[[:word:]]|\.)([\p{L}\p{M}\p{N}\p{P}\p{S}\p{Zs}]{0,254}[[:word:]])?$ string artifact_id = 2; // A signed short-lived URL to fetch the contents of the artifact. @@ -62,14 +62,16 @@ message Artifact { // Size of the file. // Can be used in UI to decide between displaying the artifact inline or only // showing a link if it is too large. + // If you are using the gcs_uri, this field is not verified, but only treated as a hint. int64 size_bytes = 6; // Contents of the artifact. // This is INPUT_ONLY, and taken by BatchCreateArtifacts(). // All getter RPCs, such as ListArtifacts(), do not populate values into // the field in the response. + // If specified, `gcs_uri` must be empty. bytes contents = 7 [ (google.api.field_behavior) = INPUT_ONLY ]; - // The GCS URI of the artifact if it's stored in GCS. + // The GCS URI of the artifact if it's stored in GCS. If specified, `contents` must be empty. string gcs_uri = 8; } diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/common.pb.go b/vendor/go.chromium.org/luci/resultdb/proto/v1/common.pb.go index ffe0c1d..2a74aa7 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/common.pb.go +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/common.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v3.21.12 +// protoc v3.21.7 // source: go.chromium.org/luci/resultdb/proto/v1/common.proto package resultpb diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/pb.discovery.go b/vendor/go.chromium.org/luci/resultdb/proto/v1/pb.discovery.go index 0582d01..53aa0fe 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/pb.discovery.go +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/pb.discovery.go @@ -15,4222 +15,4334 @@ func init() { 8, 0, 0, 0, 0, 0, 0, 255, 228, 253, 125, 116, 100, 87, 117, 32, 138, 235, 126, 85, 149, 142, 190, 74, 71, 178, 173, 174, 110, 187, 79, 87, 119, 91, 31, 93, 170, 238, 150, 191, 112, 55, - 198, 163, 150, 202, 237, 50, 106, 73, 41, 73, 152, 38, 11, 203, - 87, 85, 71, 210, 117, 87, 221, 91, 220, 123, 171, 101, 121, 200, - 36, 3, 3, 51, 192, 226, 199, 152, 216, 152, 31, 33, 241, 132, - 64, 2, 100, 189, 144, 9, 12, 47, 76, 178, 146, 73, 178, 102, - 241, 50, 129, 100, 72, 66, 94, 66, 230, 173, 121, 139, 48, 243, - 8, 249, 226, 99, 8, 36, 132, 225, 173, 189, 207, 199, 189, 85, - 82, 219, 205, 135, 51, 127, 60, 47, 175, 213, 218, 167, 206, 217, - 247, 156, 125, 246, 217, 103, 239, 125, 246, 217, 135, 252, 254, 91, - 44, 194, 118, 130, 96, 167, 201, 207, 182, 195, 32, 14, 182, 58, - 219, 103, 27, 60, 170, 135, 94, 59, 14, 194, 50, 150, 209, 17, - 81, 163, 172, 106, 20, 175, 144, 209, 135, 188, 38, 95, 212, 21, - 215, 120, 76, 95, 70, 236, 109, 175, 201, 39, 12, 102, 77, 13, - 204, 157, 42, 247, 52, 42, 119, 183, 88, 133, 226, 26, 182, 40, - 126, 193, 38, 99, 135, 252, 74, 41, 177, 125, 183, 5, 24, 141, - 169, 254, 26, 254, 77, 39, 72, 182, 237, 214, 175, 185, 59, 124, - 194, 196, 98, 5, 210, 59, 8, 105, 240, 54, 247, 27, 220, 175, - 239, 79, 88, 204, 154, 234, 175, 165, 74, 232, 25, 50, 218, 238, - 108, 53, 189, 250, 102, 170, 26, 97, 214, 148, 83, 203, 139, 31, - 22, 147, 202, 147, 100, 100, 143, 187, 215, 210, 85, 7, 176, 234, - 48, 20, 167, 42, 46, 144, 193, 22, 143, 34, 119, 135, 111, 198, - 251, 109, 62, 97, 227, 232, 217, 129, 209, 247, 142, 124, 64, 182, - 90, 223, 111, 115, 58, 79, 250, 185, 223, 105, 9, 12, 206, 13, - 232, 87, 241, 59, 173, 94, 44, 57, 104, 38, 81, 100, 35, 30, - 94, 247, 234, 124, 34, 131, 8, 38, 15, 32, 88, 19, 191, 247, - 226, 80, 237, 232, 2, 233, 231, 79, 198, 220, 143, 188, 192, 159, - 200, 34, 146, 211, 135, 204, 34, 111, 54, 122, 81, 36, 237, 232, - 189, 36, 27, 180, 99, 47, 240, 163, 137, 28, 51, 166, 6, 230, - 142, 29, 202, 8, 43, 162, 78, 77, 85, 166, 85, 146, 143, 130, - 78, 88, 231, 155, 245, 160, 193, 55, 61, 127, 59, 152, 232, 71, - 4, 199, 15, 14, 4, 43, 46, 4, 13, 94, 245, 183, 131, 218, - 112, 212, 5, 211, 91, 73, 38, 218, 247, 99, 247, 201, 137, 65, - 228, 16, 9, 21, 63, 145, 33, 35, 55, 195, 98, 23, 137, 179, - 13, 163, 156, 48, 191, 27, 26, 136, 54, 221, 68, 204, 124, 143, - 68, 156, 39, 3, 62, 143, 98, 222, 16, 28, 97, 221, 36, 79, - 17, 209, 232, 32, 75, 217, 223, 19, 75, 189, 154, 140, 232, 46, - 109, 134, 174, 191, 163, 120, 243, 236, 139, 245, 164, 92, 81, 237, - 106, 208, 172, 54, 204, 187, 96, 186, 72, 72, 224, 243, 96, 123, - 179, 193, 235, 205, 137, 220, 13, 168, 180, 2, 85, 14, 80, 41, - 16, 165, 245, 38, 189, 63, 97, 181, 236, 13, 56, 229, 138, 88, - 100, 7, 184, 109, 131, 12, 135, 28, 248, 158, 55, 228, 200, 250, - 177, 19, 229, 23, 29, 89, 77, 54, 19, 3, 27, 10, 211, 32, - 61, 73, 116, 193, 38, 178, 21, 65, 41, 52, 168, 10, 151, 221, - 22, 47, 60, 69, 134, 187, 201, 67, 199, 137, 19, 197, 110, 24, - 35, 23, 58, 53, 1, 208, 60, 177, 184, 223, 64, 41, 231, 212, - 224, 79, 250, 79, 146, 1, 91, 56, 224, 59, 15, 206, 104, 23, - 230, 222, 113, 23, 238, 35, 67, 93, 3, 184, 217, 79, 23, 95, - 79, 110, 57, 20, 53, 125, 53, 25, 239, 248, 158, 31, 243, 176, - 29, 114, 224, 88, 241, 169, 137, 255, 39, 123, 3, 158, 219, 72, - 215, 22, 88, 106, 99, 157, 131, 133, 51, 253, 185, 47, 102, 243, - 63, 246, 99, 63, 246, 99, 102, 241, 55, 50, 100, 252, 176, 53, - 115, 232, 242, 189, 149, 100, 252, 78, 107, 139, 135, 72, 36, 167, - 38, 33, 58, 79, 156, 166, 187, 197, 155, 19, 54, 51, 166, 134, - 231, 206, 220, 212, 170, 44, 47, 65, 147, 154, 104, 73, 95, 65, - 108, 41, 162, 1, 195, 204, 205, 97, 128, 181, 84, 195, 118, 244, - 40, 233, 135, 127, 5, 111, 100, 176, 207, 57, 40, 0, 190, 160, - 5, 146, 195, 101, 210, 224, 106, 107, 211, 48, 48, 86, 131, 111, - 187, 157, 102, 188, 121, 221, 109, 118, 56, 50, 124, 127, 109, 80, - 22, 190, 10, 202, 232, 113, 50, 32, 86, 149, 231, 55, 248, 147, - 40, 61, 157, 154, 88, 104, 85, 40, 129, 207, 63, 17, 5, 190, - 98, 77, 252, 4, 20, 224, 231, 239, 235, 21, 220, 183, 31, 62, - 188, 3, 107, 105, 146, 140, 96, 141, 187, 228, 212, 187, 205, 137, - 81, 102, 76, 229, 106, 195, 162, 120, 69, 150, 22, 63, 110, 18, - 27, 5, 203, 8, 25, 88, 191, 186, 90, 217, 92, 92, 217, 184, - 180, 84, 201, 27, 116, 152, 16, 44, 120, 104, 105, 101, 126, 61, - 111, 106, 184, 186, 188, 126, 239, 221, 121, 75, 55, 216, 16, 5, - 118, 186, 194, 93, 115, 121, 135, 230, 201, 160, 64, 80, 125, 117, - 101, 241, 222, 187, 243, 153, 238, 146, 187, 230, 242, 89, 58, 68, - 250, 177, 228, 210, 202, 202, 82, 62, 167, 113, 174, 173, 215, 170, - 203, 151, 243, 253, 26, 231, 229, 218, 202, 198, 106, 158, 104, 12, - 87, 42, 107, 107, 243, 151, 43, 249, 1, 93, 227, 210, 213, 245, - 202, 90, 126, 176, 171, 91, 119, 205, 229, 135, 244, 39, 42, 203, - 27, 87, 242, 195, 116, 148, 12, 137, 79, 168, 78, 140, 244, 20, - 221, 123, 119, 62, 159, 116, 68, 96, 25, 237, 42, 184, 247, 238, - 60, 45, 46, 16, 7, 217, 144, 82, 50, 188, 52, 127, 169, 178, - 180, 185, 178, 186, 94, 93, 89, 158, 95, 202, 27, 73, 89, 173, - 242, 67, 27, 213, 90, 101, 49, 111, 166, 203, 86, 43, 243, 235, - 149, 197, 188, 85, 172, 147, 241, 195, 4, 234, 161, 75, 40, 197, - 11, 230, 13, 120, 1, 113, 245, 242, 66, 241, 207, 76, 50, 118, - 200, 166, 114, 232, 71, 30, 36, 142, 224, 101, 177, 205, 78, 31, - 186, 59, 33, 103, 31, 216, 106, 177, 93, 90, 213, 176, 110, 160, - 106, 0, 138, 3, 12, 251, 218, 3, 194, 95, 236, 143, 247, 222, - 204, 254, 136, 101, 223, 221, 38, 224, 28, 178, 9, 92, 36, 163, - 7, 16, 221, 180, 48, 126, 163, 65, 38, 110, 68, 156, 23, 17, - 137, 102, 151, 72, 188, 216, 75, 193, 19, 55, 158, 132, 3, 115, - 253, 115, 6, 185, 245, 112, 149, 242, 208, 62, 188, 130, 100, 90, - 60, 222, 13, 148, 90, 117, 112, 239, 186, 130, 63, 247, 78, 182, - 108, 149, 222, 237, 173, 27, 233, 133, 162, 55, 7, 122, 250, 22, - 147, 220, 114, 40, 242, 67, 59, 122, 59, 33, 158, 223, 238, 196, - 66, 117, 18, 146, 184, 31, 75, 80, 120, 129, 148, 237, 196, 250, - 119, 11, 127, 39, 162, 8, 43, 188, 44, 233, 168, 141, 29, 189, - 227, 6, 35, 61, 192, 152, 231, 72, 190, 222, 244, 184, 31, 111, - 70, 113, 200, 221, 150, 231, 239, 224, 86, 147, 187, 224, 108, 187, - 205, 136, 215, 70, 196, 207, 107, 234, 87, 104, 129, 12, 20, 166, - 90, 100, 186, 90, 136, 159, 117, 139, 226, 211, 253, 100, 32, 165, - 128, 211, 19, 100, 240, 9, 247, 186, 187, 169, 140, 42, 65, 137, - 1, 40, 91, 149, 134, 213, 57, 50, 142, 85, 130, 78, 204, 195, - 205, 122, 211, 141, 34, 36, 90, 14, 171, 82, 248, 109, 5, 126, - 90, 80, 191, 208, 123, 200, 24, 182, 104, 117, 154, 177, 215, 110, - 242, 77, 48, 243, 34, 220, 114, 116, 207, 70, 161, 198, 21, 89, - 1, 122, 20, 209, 69, 114, 59, 54, 219, 225, 62, 15, 221, 152, - 111, 242, 215, 117, 220, 102, 180, 233, 250, 141, 205, 93, 55, 218, - 157, 24, 7, 4, 151, 204, 9, 163, 118, 4, 42, 94, 150, 245, - 42, 88, 109, 222, 111, 60, 236, 70, 187, 244, 2, 185, 21, 177, - 68, 113, 232, 249, 59, 155, 245, 93, 94, 191, 182, 217, 137, 183, - 95, 54, 113, 52, 253, 125, 236, 225, 26, 214, 89, 128, 42, 27, - 241, 246, 203, 232, 26, 25, 132, 201, 104, 121, 79, 241, 205, 237, - 32, 196, 61, 116, 248, 16, 209, 148, 162, 96, 121, 69, 54, 184, - 18, 52, 248, 5, 103, 109, 181, 82, 89, 172, 13, 40, 44, 15, - 5, 33, 48, 212, 78, 160, 9, 60, 32, 24, 106, 39, 80, 228, - 189, 135, 140, 213, 235, 98, 204, 94, 125, 83, 26, 99, 209, 68, - 190, 139, 88, 245, 250, 101, 81, 65, 242, 120, 68, 239, 39, 183, - 36, 196, 74, 55, 28, 61, 48, 202, 222, 166, 247, 144, 177, 246, - 254, 193, 134, 180, 235, 139, 237, 253, 222, 102, 247, 145, 241, 246, - 110, 251, 96, 187, 153, 116, 59, 218, 222, 109, 247, 54, 60, 141, - 150, 121, 200, 235, 110, 204, 27, 19, 183, 165, 171, 167, 126, 160, - 101, 146, 175, 215, 55, 185, 239, 110, 53, 249, 166, 27, 114, 223, - 141, 38, 142, 99, 101, 59, 14, 59, 188, 54, 92, 175, 87, 240, - 199, 121, 252, 141, 206, 144, 209, 96, 235, 137, 186, 224, 200, 205, - 118, 200, 183, 189, 39, 39, 78, 33, 121, 71, 224, 7, 228, 199, - 85, 44, 166, 211, 36, 95, 143, 118, 221, 176, 141, 34, 57, 106, - 187, 117, 62, 113, 90, 84, 21, 229, 203, 170, 24, 86, 68, 180, - 231, 109, 199, 10, 227, 164, 88, 17, 88, 38, 177, 77, 145, 60, - 80, 162, 235, 195, 83, 88, 109, 184, 189, 219, 78, 127, 247, 36, - 25, 130, 154, 201, 71, 167, 133, 226, 214, 222, 77, 125, 241, 110, - 114, 43, 84, 106, 241, 216, 109, 184, 177, 155, 170, 93, 194, 218, - 64, 246, 43, 242, 199, 174, 126, 134, 157, 173, 125, 205, 88, 179, - 162, 159, 80, 166, 88, 235, 37, 83, 206, 139, 23, 200, 96, 154, - 239, 105, 63, 17, 156, 159, 55, 64, 9, 90, 88, 89, 4, 245, - 229, 53, 149, 188, 9, 106, 212, 82, 117, 189, 178, 89, 219, 88, - 94, 175, 94, 169, 228, 173, 148, 98, 255, 136, 157, 187, 51, 63, - 9, 90, 195, 112, 183, 165, 70, 95, 78, 110, 83, 110, 149, 136, - 199, 155, 123, 94, 136, 11, 178, 229, 138, 205, 81, 243, 207, 184, - 172, 181, 198, 227, 71, 189, 16, 150, 91, 203, 141, 233, 18, 57, - 238, 7, 155, 81, 236, 250, 13, 55, 108, 108, 38, 14, 173, 77, - 183, 94, 231, 81, 20, 136, 141, 80, 99, 57, 230, 7, 107, 178, - 114, 178, 67, 204, 203, 170, 61, 236, 107, 221, 136, 125, 143, 146, - 254, 150, 219, 222, 228, 126, 28, 238, 163, 126, 158, 171, 229, 90, - 110, 187, 2, 240, 63, 138, 153, 244, 136, 157, 179, 243, 206, 35, - 118, 206, 201, 103, 30, 177, 115, 153, 124, 246, 17, 59, 151, 203, - 247, 63, 98, 231, 250, 243, 164, 248, 78, 155, 12, 166, 53, 120, - 48, 136, 234, 184, 135, 25, 40, 229, 78, 190, 160, 190, 95, 94, - 128, 205, 237, 66, 70, 168, 203, 53, 209, 18, 20, 11, 96, 63, - 46, 212, 147, 92, 77, 66, 244, 50, 201, 60, 17, 33, 238, 12, - 226, 62, 204, 27, 152, 194, 253, 200, 26, 34, 239, 127, 100, 109, - 115, 121, 165, 118, 101, 126, 169, 38, 155, 211, 35, 196, 110, 186, - 79, 237, 119, 111, 131, 88, 68, 203, 100, 164, 227, 95, 231, 161, - 183, 237, 241, 198, 38, 214, 26, 73, 215, 26, 78, 126, 93, 130, - 250, 55, 57, 141, 71, 136, 189, 199, 221, 107, 221, 155, 21, 22, - 189, 132, 203, 233, 44, 113, 144, 190, 148, 16, 73, 225, 124, 31, - 205, 17, 123, 97, 165, 6, 75, 42, 79, 6, 69, 233, 230, 106, - 181, 178, 80, 201, 155, 197, 123, 72, 70, 16, 13, 150, 155, 38, - 91, 190, 79, 130, 18, 135, 161, 126, 221, 184, 114, 169, 82, 203, - 155, 7, 152, 165, 24, 145, 193, 180, 38, 255, 143, 99, 206, 255, - 7, 131, 12, 164, 52, 115, 80, 169, 220, 102, 51, 216, 219, 116, - 155, 158, 27, 73, 86, 34, 88, 52, 15, 37, 55, 59, 117, 255, - 72, 139, 204, 201, 103, 138, 63, 101, 144, 124, 175, 106, 220, 211, - 77, 227, 127, 101, 55, 139, 239, 53, 200, 112, 183, 62, 220, 211, - 189, 19, 255, 75, 187, 247, 127, 155, 100, 168, 75, 11, 190, 217, - 222, 189, 142, 140, 122, 13, 222, 106, 7, 49, 247, 235, 251, 155, - 77, 126, 157, 55, 39, 138, 40, 100, 14, 186, 37, 187, 190, 80, - 174, 38, 237, 150, 160, 217, 133, 177, 234, 98, 229, 202, 234, 202, - 122, 101, 121, 225, 234, 230, 198, 242, 43, 151, 87, 30, 93, 174, - 229, 189, 158, 106, 47, 225, 178, 95, 37, 249, 222, 78, 209, 219, - 200, 97, 221, 202, 247, 209, 49, 50, 178, 188, 178, 185, 86, 93, - 172, 108, 86, 30, 122, 168, 178, 176, 190, 38, 60, 39, 186, 246, - 122, 215, 2, 47, 190, 199, 34, 99, 135, 244, 132, 206, 75, 155, - 71, 152, 97, 179, 55, 211, 251, 50, 104, 29, 171, 110, 24, 75, - 19, 105, 154, 0, 149, 252, 24, 132, 107, 40, 61, 82, 194, 16, - 26, 73, 202, 133, 83, 170, 68, 104, 59, 136, 188, 216, 187, 206, - 55, 61, 95, 185, 175, 192, 48, 178, 107, 121, 245, 75, 213, 143, - 117, 109, 159, 239, 184, 61, 181, 65, 248, 91, 181, 188, 250, 69, - 215, 62, 65, 6, 27, 65, 7, 180, 69, 81, 15, 246, 26, 163, - 54, 32, 202, 116, 21, 105, 7, 36, 126, 179, 193, 218, 128, 40, - 19, 85, 38, 201, 136, 187, 179, 19, 2, 114, 133, 72, 88, 54, - 195, 186, 24, 43, 22, 30, 33, 57, 69, 7, 216, 236, 129, 18, - 155, 109, 97, 174, 155, 83, 253, 181, 156, 175, 126, 60, 65, 6, - 189, 104, 51, 57, 6, 48, 153, 57, 149, 171, 13, 120, 145, 118, - 161, 22, 127, 206, 36, 195, 221, 199, 24, 116, 145, 228, 154, 65, - 221, 69, 214, 18, 103, 104, 83, 47, 114, 242, 81, 94, 146, 245, - 107, 186, 101, 225, 119, 13, 146, 83, 197, 244, 86, 98, 183, 221, - 120, 23, 209, 57, 151, 204, 188, 81, 67, 24, 202, 163, 182, 235, - 35, 11, 200, 114, 128, 97, 94, 155, 220, 109, 160, 217, 20, 180, - 90, 220, 143, 35, 53, 175, 178, 124, 65, 22, 211, 51, 100, 52, - 14, 93, 175, 217, 85, 215, 198, 186, 121, 245, 131, 174, 124, 129, - 28, 81, 120, 27, 60, 118, 235, 187, 188, 145, 52, 202, 160, 123, - 228, 54, 89, 97, 81, 254, 174, 218, 22, 63, 99, 144, 81, 101, - 232, 53, 52, 177, 174, 16, 226, 250, 126, 16, 167, 201, 117, 144, - 149, 15, 180, 43, 207, 235, 70, 181, 20, 130, 66, 139, 144, 228, - 151, 27, 146, 237, 56, 25, 144, 103, 84, 120, 208, 41, 92, 3, - 68, 20, 129, 69, 72, 199, 137, 179, 197, 119, 60, 95, 122, 158, - 5, 160, 28, 56, 182, 118, 224, 92, 250, 103, 100, 172, 30, 180, - 122, 187, 123, 41, 223, 227, 158, 136, 30, 54, 94, 51, 43, 43, - 237, 4, 77, 215, 223, 41, 7, 225, 78, 114, 80, 11, 26, 82, - 148, 58, 174, 109, 111, 125, 211, 48, 222, 103, 90, 151, 87, 47, - 125, 216, 44, 92, 22, 13, 87, 21, 49, 106, 124, 187, 201, 235, - 48, 192, 71, 254, 244, 211, 38, 201, 82, 103, 178, 239, 221, 89, - 131, 124, 120, 132, 24, 131, 212, 154, 236, 163, 115, 191, 49, 200, - 176, 122, 61, 104, 178, 75, 157, 237, 109, 30, 70, 108, 150, 9, - 68, 147, 17, 3, 251, 131, 161, 112, 168, 239, 186, 254, 14, 103, - 66, 35, 39, 108, 33, 104, 239, 135, 222, 206, 110, 204, 230, 206, - 157, 123, 153, 108, 192, 170, 126, 189, 204, 216, 124, 179, 201, 240, - 183, 136, 41, 15, 88, 153, 176, 221, 56, 110, 71, 23, 206, 158, - 109, 128, 204, 11, 218, 60, 140, 20, 53, 234, 65, 75, 140, 176, - 30, 52, 103, 183, 68, 39, 206, 18, 194, 106, 188, 225, 193, 178, - 221, 234, 192, 16, 152, 235, 55, 88, 39, 226, 204, 243, 153, 152, - 0, 44, 217, 242, 124, 55, 220, 199, 126, 69, 37, 182, 231, 197, - 187, 44, 8, 241, 223, 160, 19, 19, 214, 10, 26, 222, 182, 39, - 22, 71, 137, 185, 33, 103, 109, 30, 182, 188, 56, 230, 13, 214, - 14, 131, 235, 94, 131, 55, 88, 188, 235, 198, 44, 222, 133, 209, - 129, 6, 226, 249, 59, 172, 30, 248, 13, 15, 55, 17, 104, 68, - 88, 139, 199, 23, 8, 97, 240, 223, 76, 79, 199, 34, 22, 108, - 171, 30, 213, 131, 6, 103, 173, 78, 20, 179, 144, 199, 174, 231, - 35, 86, 119, 43, 184, 14, 63, 73, 138, 17, 230, 7, 177, 87, - 231, 37, 22, 239, 122, 17, 107, 122, 81, 12, 24, 210, 95, 244, - 27, 61, 221, 105, 120, 81, 189, 233, 122, 45, 30, 150, 111, 212, - 9, 207, 79, 211, 66, 117, 162, 29, 6, 141, 78, 157, 39, 253, - 32, 73, 71, 190, 175, 126, 16, 38, 71, 215, 8, 234, 29, 88, - 183, 174, 154, 164, 179, 65, 200, 130, 120, 151, 135, 172, 229, 198, - 60, 244, 220, 102, 148, 144, 26, 39, 40, 222, 229, 132, 165, 123, - 175, 7, 181, 204, 61, 108, 9, 136, 65, 184, 66, 135, 210, 188, - 229, 7, 201, 111, 72, 119, 47, 142, 96, 68, 190, 64, 21, 132, - 17, 107, 185, 251, 108, 139, 3, 167, 52, 88, 28, 48, 238, 55, - 130, 48, 226, 192, 20, 237, 48, 104, 5, 49, 103, 130, 38, 113, - 196, 26, 60, 244, 174, 243, 6, 219, 14, 131, 22, 17, 84, 136, - 130, 237, 120, 15, 216, 68, 114, 16, 139, 218, 188, 14, 28, 196, - 218, 161, 7, 140, 21, 2, 239, 248, 130, 139, 162, 8, 251, 78, - 216, 250, 195, 213, 53, 182, 182, 242, 208, 250, 163, 243, 181, 10, - 171, 174, 177, 213, 218, 202, 171, 170, 139, 149, 69, 118, 233, 42, - 91, 127, 184, 194, 22, 86, 86, 175, 214, 170, 151, 31, 94, 103, - 15, 175, 44, 45, 86, 106, 107, 108, 126, 121, 145, 45, 172, 44, - 175, 215, 170, 151, 54, 214, 87, 106, 107, 132, 21, 231, 215, 88, - 117, 173, 136, 191, 204, 47, 95, 101, 149, 87, 175, 214, 42, 107, - 107, 108, 165, 198, 170, 87, 86, 151, 170, 149, 69, 246, 232, 124, - 173, 54, 191, 188, 94, 173, 172, 149, 88, 117, 121, 97, 105, 99, - 177, 186, 124, 185, 196, 46, 109, 172, 179, 229, 149, 117, 194, 150, - 170, 87, 170, 235, 149, 69, 182, 190, 82, 194, 207, 30, 108, 199, - 86, 30, 98, 87, 42, 181, 133, 135, 231, 151, 215, 231, 47, 85, - 151, 170, 235, 87, 241, 131, 15, 85, 215, 151, 225, 99, 15, 173, - 212, 8, 155, 103, 171, 243, 181, 245, 234, 194, 198, 210, 124, 141, - 173, 110, 212, 86, 87, 214, 42, 12, 70, 182, 88, 93, 91, 88, - 154, 175, 94, 169, 44, 150, 89, 117, 153, 45, 175, 176, 202, 171, - 42, 203, 235, 108, 237, 225, 249, 165, 165, 238, 129, 18, 182, 242, - 232, 114, 165, 6, 189, 79, 15, 147, 93, 170, 176, 165, 234, 252, - 165, 165, 10, 124, 10, 199, 185, 88, 173, 85, 22, 214, 97, 64, - 201, 95, 11, 213, 197, 202, 242, 250, 252, 82, 137, 176, 181, 213, - 202, 66, 117, 126, 169, 196, 42, 175, 174, 92, 89, 93, 154, 175, - 93, 45, 73, 164, 107, 149, 31, 218, 168, 44, 175, 87, 231, 151, - 216, 226, 252, 149, 249, 203, 149, 53, 54, 245, 98, 84, 89, 173, - 173, 44, 108, 212, 42, 87, 160, 215, 43, 15, 177, 181, 141, 75, - 107, 235, 213, 245, 141, 245, 10, 187, 188, 178, 178, 136, 196, 94, - 171, 212, 94, 85, 93, 168, 172, 93, 100, 75, 43, 107, 72, 176, - 141, 181, 74, 137, 176, 197, 249, 245, 121, 252, 244, 106, 109, 229, - 161, 234, 250, 218, 69, 248, 251, 210, 198, 90, 21, 9, 87, 93, - 94, 175, 212, 106, 27, 120, 74, 51, 205, 30, 94, 121, 180, 242, - 170, 74, 141, 45, 204, 111, 172, 85, 22, 145, 194, 43, 203, 48, - 90, 224, 149, 202, 74, 237, 42, 160, 5, 58, 224, 12, 148, 216, - 163, 15, 87, 214, 31, 174, 212, 128, 168, 72, 173, 121, 32, 3, - 152, 116, 11, 235, 233, 106, 43, 53, 182, 190, 82, 91, 39, 169, - 113, 178, 229, 202, 229, 165, 234, 229, 202, 242, 66, 5, 126, 94, - 1, 52, 143, 86, 215, 42, 211, 108, 190, 86, 93, 131, 10, 85, - 252, 48, 123, 116, 254, 42, 91, 217, 192, 81, 195, 68, 109, 172, - 85, 136, 248, 59, 197, 186, 37, 156, 79, 86, 125, 136, 205, 47, - 190, 170, 10, 61, 151, 181, 87, 87, 214, 214, 170, 146, 93, 144, - 108, 11, 15, 75, 154, 151, 201, 220, 159, 154, 108, 190, 19, 239, - 6, 225, 5, 118, 141, 251, 113, 224, 255, 147, 68, 176, 179, 169, - 87, 98, 17, 123, 149, 27, 54, 220, 105, 194, 216, 37, 23, 86, - 102, 224, 179, 32, 244, 118, 60, 223, 109, 30, 220, 128, 26, 60, - 242, 118, 124, 182, 181, 79, 24, 91, 115, 253, 39, 220, 125, 118, - 121, 151, 183, 220, 61, 55, 46, 177, 71, 248, 246, 54, 91, 228, - 46, 136, 115, 191, 33, 36, 77, 132, 139, 112, 151, 51, 233, 27, - 138, 132, 112, 242, 34, 6, 219, 54, 19, 251, 229, 150, 144, 130, - 13, 190, 237, 249, 82, 192, 109, 7, 29, 191, 1, 117, 197, 142, - 140, 181, 163, 50, 44, 128, 235, 110, 211, 107, 164, 139, 89, 221, - 245, 65, 174, 196, 161, 235, 71, 77, 208, 48, 88, 195, 11, 121, - 61, 110, 238, 131, 152, 113, 217, 33, 225, 76, 68, 75, 17, 215, - 223, 151, 50, 209, 243, 197, 22, 10, 194, 114, 138, 151, 119, 202, - 186, 78, 40, 212, 33, 16, 105, 204, 107, 181, 131, 48, 142, 166, - 203, 132, 228, 136, 97, 82, 107, 186, 111, 2, 254, 202, 81, 235, - 76, 223, 34, 233, 39, 102, 110, 64, 252, 41, 10, 75, 125, 37, - 44, 52, 196, 159, 162, 112, 182, 239, 60, 22, 202, 63, 69, 97, - 185, 239, 62, 44, 60, 45, 254, 20, 133, 103, 251, 78, 96, 225, - 41, 241, 167, 40, 60, 215, 119, 28, 11, 143, 139, 63, 69, 225, - 221, 125, 199, 200, 143, 18, 51, 215, 143, 127, 22, 98, 214, 27, - 58, 38, 54, 158, 45, 206, 148, 63, 188, 1, 251, 17, 136, 81, - 222, 96, 91, 188, 238, 194, 22, 30, 106, 197, 100, 118, 11, 216, - 129, 48, 183, 185, 19, 132, 94, 188, 219, 138, 88, 35, 240, 39, - 99, 182, 23, 132, 215, 88, 163, 3, 74, 59, 219, 10, 130, 56, - 138, 67, 183, 221, 246, 252, 157, 50, 33, 79, 16, 211, 238, 163, - 246, 203, 250, 46, 24, 133, 199, 112, 222, 149, 250, 192, 234, 65, - 171, 237, 53, 121, 136, 211, 37, 142, 104, 14, 204, 205, 26, 143, - 113, 203, 112, 61, 31, 176, 3, 83, 136, 190, 19, 193, 0, 204, - 139, 89, 219, 13, 35, 96, 5, 66, 136, 101, 247, 25, 212, 122, - 89, 238, 8, 25, 32, 182, 221, 103, 246, 81, 235, 126, 115, 138, - 12, 18, 7, 0, 27, 32, 162, 160, 12, 181, 238, 31, 184, 67, - 65, 6, 181, 238, 63, 126, 82, 65, 22, 181, 238, 191, 115, 146, - 156, 37, 166, 109, 80, 251, 129, 190, 215, 24, 133, 147, 108, 81, - 178, 102, 196, 92, 236, 123, 147, 199, 60, 205, 118, 178, 7, 134, - 65, 173, 7, 114, 71, 201, 253, 196, 182, 13, 232, 193, 43, 204, - 163, 197, 146, 96, 76, 216, 11, 75, 44, 228, 77, 52, 149, 128, - 25, 195, 32, 136, 83, 74, 73, 28, 114, 46, 122, 104, 96, 127, - 95, 97, 106, 200, 161, 214, 43, 6, 70, 21, 100, 80, 235, 21, - 244, 86, 5, 89, 212, 122, 197, 145, 2, 153, 193, 79, 26, 212, - 122, 208, 188, 163, 120, 59, 67, 150, 45, 110, 7, 65, 177, 132, - 255, 148, 183, 220, 176, 88, 98, 60, 174, 151, 21, 86, 195, 134, - 202, 26, 114, 168, 245, 160, 254, 6, 12, 228, 65, 122, 68, 65, - 22, 181, 30, 60, 118, 59, 185, 27, 191, 97, 82, 235, 146, 121, - 162, 48, 201, 150, 213, 238, 46, 167, 3, 23, 3, 176, 207, 126, - 178, 168, 245, 215, 76, 27, 154, 105, 200, 161, 214, 37, 253, 53, - 232, 246, 37, 122, 76, 65, 22, 181, 46, 29, 103, 228, 135, 240, - 107, 22, 181, 22, 205, 169, 194, 34, 195, 72, 9, 241, 61, 96, - 5, 17, 24, 152, 124, 84, 246, 65, 42, 59, 58, 12, 80, 232, - 75, 168, 82, 233, 174, 88, 54, 224, 212, 144, 67, 173, 197, 129, - 188, 130, 12, 106, 45, 142, 22, 21, 4, 95, 63, 61, 73, 158, - 194, 174, 216, 212, 186, 108, 222, 89, 104, 245, 118, 101, 143, 187, - 215, 110, 174, 35, 101, 194, 30, 10, 66, 169, 42, 205, 162, 194, - 14, 146, 181, 229, 237, 132, 66, 212, 4, 126, 115, 191, 204, 22, - 3, 208, 249, 64, 55, 210, 125, 182, 241, 227, 26, 114, 168, 117, - 89, 247, 217, 54, 168, 117, 121, 148, 41, 200, 162, 214, 229, 147, - 167, 201, 189, 216, 103, 135, 90, 143, 152, 165, 194, 52, 106, 251, - 113, 208, 158, 69, 191, 76, 151, 116, 77, 203, 96, 253, 61, 199, - 134, 134, 26, 202, 80, 235, 145, 129, 130, 130, 12, 106, 61, 114, - 116, 82, 65, 22, 181, 30, 153, 57, 131, 171, 206, 48, 51, 212, - 122, 165, 57, 43, 127, 202, 216, 0, 41, 36, 25, 248, 77, 174, - 58, 195, 204, 24, 212, 122, 229, 241, 41, 5, 89, 212, 122, 229, - 153, 146, 68, 146, 165, 214, 146, 89, 150, 63, 101, 109, 128, 20, - 146, 108, 134, 90, 75, 3, 39, 20, 100, 80, 107, 169, 56, 173, - 32, 139, 90, 75, 165, 89, 137, 36, 71, 173, 43, 26, 73, 206, - 6, 72, 33, 201, 101, 168, 117, 101, 224, 184, 130, 12, 106, 93, - 97, 10, 73, 206, 162, 214, 21, 141, 164, 159, 90, 43, 230, 73, - 249, 83, 191, 13, 144, 66, 210, 159, 161, 214, 202, 128, 90, 134, - 253, 6, 181, 86, 110, 83, 131, 235, 183, 168, 181, 114, 162, 72, - 254, 135, 129, 88, 8, 181, 54, 204, 179, 133, 255, 110, 176, 117, - 65, 104, 222, 108, 40, 209, 22, 49, 21, 156, 211, 181, 231, 184, - 91, 176, 215, 0, 11, 233, 253, 55, 101, 187, 148, 9, 187, 26, - 116, 80, 135, 142, 220, 109, 222, 220, 103, 33, 111, 129, 245, 130, - 19, 201, 253, 216, 11, 185, 252, 140, 218, 182, 118, 221, 176, 5, - 98, 52, 236, 248, 177, 215, 226, 132, 109, 119, 252, 186, 248, 176, - 23, 239, 43, 86, 78, 182, 137, 136, 205, 206, 98, 81, 186, 87, - 94, 196, 124, 206, 27, 168, 24, 52, 247, 113, 231, 151, 118, 34, - 152, 22, 44, 14, 130, 102, 164, 89, 136, 216, 48, 108, 13, 101, - 168, 181, 49, 160, 36, 10, 49, 168, 181, 81, 152, 81, 144, 69, - 173, 141, 217, 50, 121, 45, 82, 107, 128, 90, 87, 205, 59, 10, - 171, 184, 99, 136, 8, 81, 189, 232, 83, 2, 87, 252, 220, 105, - 203, 101, 135, 254, 33, 180, 2, 89, 17, 171, 205, 21, 81, 241, - 16, 192, 93, 69, 221, 173, 1, 27, 240, 107, 200, 161, 214, 85, - 45, 136, 6, 12, 106, 93, 165, 19, 10, 178, 168, 117, 245, 232, - 237, 100, 146, 152, 182, 73, 237, 215, 246, 253, 136, 81, 56, 218, - 181, 21, 72, 61, 134, 129, 189, 47, 183, 0, 144, 101, 175, 205, - 221, 134, 252, 99, 194, 22, 240, 152, 121, 20, 241, 153, 40, 212, - 31, 147, 95, 54, 81, 168, 63, 38, 191, 108, 162, 80, 127, 76, - 10, 117, 19, 133, 250, 99, 71, 10, 18, 137, 65, 173, 199, 205, - 25, 249, 19, 72, 237, 199, 53, 18, 35, 67, 173, 199, 37, 39, - 155, 40, 181, 31, 103, 167, 21, 100, 81, 235, 241, 169, 105, 137, - 196, 164, 150, 43, 151, 131, 137, 194, 216, 213, 72, 96, 209, 186, - 26, 9, 124, 206, 149, 203, 193, 68, 97, 236, 202, 229, 128, 64, - 221, 60, 35, 127, 2, 49, 90, 215, 72, 172, 12, 181, 234, 82, - 68, 152, 40, 70, 235, 71, 239, 84, 16, 180, 155, 158, 145, 72, - 108, 106, 53, 164, 136, 48, 81, 174, 53, 52, 18, 59, 67, 173, - 134, 20, 17, 38, 202, 181, 134, 20, 17, 38, 202, 181, 198, 153, - 18, 25, 4, 36, 86, 31, 181, 183, 205, 107, 150, 248, 205, 2, - 234, 109, 147, 9, 114, 148, 100, 0, 2, 178, 239, 216, 183, 23, - 7, 193, 26, 109, 118, 34, 15, 133, 255, 48, 201, 138, 31, 109, - 248, 117, 48, 129, 29, 106, 237, 12, 209, 4, 54, 168, 181, 51, - 54, 145, 192, 22, 181, 118, 142, 30, 211, 200, 13, 106, 237, 218, - 71, 139, 131, 172, 242, 228, 65, 228, 48, 61, 187, 41, 228, 176, - 173, 238, 166, 144, 195, 20, 237, 142, 221, 154, 192, 22, 181, 118, - 143, 20, 200, 144, 68, 110, 82, 235, 9, 251, 172, 254, 25, 136, - 245, 68, 10, 29, 76, 213, 19, 67, 197, 4, 54, 168, 245, 196, - 201, 153, 4, 182, 168, 245, 196, 108, 89, 82, 218, 161, 86, 83, - 207, 57, 72, 244, 166, 166, 52, 72, 244, 166, 92, 142, 38, 74, - 244, 102, 65, 205, 57, 72, 244, 166, 158, 243, 12, 181, 124, 243, - 172, 252, 9, 36, 186, 175, 145, 128, 68, 247, 53, 227, 128, 68, - 247, 153, 226, 83, 144, 232, 190, 238, 73, 150, 90, 109, 83, 177, - 3, 72, 244, 182, 70, 2, 18, 189, 173, 123, 2, 18, 189, 93, - 56, 161, 32, 139, 90, 237, 83, 167, 201, 135, 13, 156, 116, 131, - 218, 29, 243, 73, 171, 240, 19, 6, 195, 184, 44, 16, 11, 202, - 117, 197, 98, 119, 135, 137, 232, 169, 168, 204, 106, 135, 148, 162, - 184, 132, 125, 85, 185, 29, 64, 124, 161, 144, 140, 88, 16, 50, - 237, 21, 102, 24, 122, 166, 183, 240, 200, 109, 105, 131, 37, 133, - 88, 86, 106, 185, 251, 232, 40, 98, 193, 117, 30, 54, 221, 182, - 20, 51, 166, 5, 19, 221, 33, 183, 73, 174, 65, 101, 240, 250, - 13, 88, 82, 168, 123, 215, 245, 52, 11, 133, 239, 186, 230, 26, - 161, 242, 93, 215, 44, 41, 148, 190, 235, 154, 37, 81, 237, 219, - 187, 1, 75, 10, 61, 111, 47, 133, 28, 88, 114, 47, 133, 28, - 122, 186, 167, 89, 82, 104, 123, 123, 90, 248, 228, 168, 181, 111, - 150, 228, 124, 192, 54, 186, 175, 103, 14, 182, 209, 253, 129, 9, - 5, 25, 212, 218, 63, 50, 169, 32, 139, 90, 251, 51, 103, 200, - 27, 112, 230, 96, 31, 125, 189, 121, 186, 208, 73, 232, 39, 118, - 39, 116, 16, 149, 216, 222, 174, 87, 223, 61, 100, 126, 212, 244, - 28, 54, 21, 96, 254, 237, 120, 215, 185, 47, 60, 80, 208, 88, - 108, 74, 60, 225, 137, 192, 175, 43, 149, 198, 196, 237, 251, 245, - 186, 243, 253, 14, 181, 94, 175, 197, 47, 108, 223, 175, 167, 138, - 147, 97, 251, 126, 125, 241, 20, 25, 32, 32, 117, 156, 31, 237, - 123, 179, 97, 160, 112, 7, 177, 246, 163, 185, 219, 201, 10, 177, - 109, 203, 236, 163, 246, 63, 55, 204, 11, 133, 121, 97, 219, 128, - 41, 18, 178, 40, 14, 66, 174, 54, 117, 180, 81, 26, 1, 143, - 192, 84, 10, 121, 61, 216, 241, 189, 167, 56, 219, 229, 33, 47, - 179, 53, 206, 181, 98, 58, 68, 28, 64, 104, 35, 70, 13, 102, - 0, 28, 184, 67, 129, 6, 128, 199, 239, 82, 160, 5, 224, 189, - 247, 147, 215, 64, 199, 28, 106, 191, 201, 48, 143, 20, 174, 176, - 5, 140, 68, 139, 208, 178, 66, 53, 143, 179, 122, 39, 138, 131, - 86, 210, 39, 63, 97, 118, 169, 196, 122, 81, 194, 226, 233, 126, - 129, 176, 181, 156, 62, 64, 62, 52, 33, 62, 236, 64, 63, 222, - 100, 12, 141, 42, 208, 4, 240, 150, 9, 114, 23, 1, 105, 158, - 121, 139, 209, 247, 87, 134, 81, 56, 221, 181, 81, 38, 186, 136, - 231, 39, 251, 102, 153, 144, 1, 98, 217, 96, 103, 189, 197, 200, - 29, 35, 195, 196, 182, 109, 187, 143, 102, 222, 106, 152, 31, 50, - 44, 252, 128, 13, 102, 157, 253, 86, 35, 59, 64, 214, 72, 198, - 22, 150, 157, 253, 118, 195, 30, 47, 44, 176, 115, 160, 145, 232, - 217, 6, 3, 150, 135, 97, 16, 70, 101, 194, 86, 194, 6, 152, - 241, 17, 219, 227, 94, 40, 126, 219, 245, 96, 114, 188, 186, 219, - 4, 35, 62, 10, 124, 208, 85, 70, 72, 86, 32, 53, 16, 235, - 72, 82, 96, 66, 1, 29, 35, 195, 242, 179, 6, 181, 255, 127, - 134, 61, 166, 43, 24, 162, 96, 56, 41, 48, 161, 96, 148, 146, - 61, 217, 194, 164, 246, 211, 134, 61, 86, 216, 97, 203, 65, 204, - 94, 227, 237, 188, 198, 221, 97, 220, 7, 13, 174, 81, 102, 108, - 89, 30, 155, 105, 1, 21, 187, 215, 56, 59, 127, 142, 109, 237, - 199, 60, 42, 51, 182, 17, 113, 150, 10, 56, 102, 222, 54, 97, - 234, 172, 45, 173, 240, 52, 189, 107, 188, 185, 159, 26, 12, 244, - 245, 233, 116, 215, 68, 87, 70, 169, 30, 140, 69, 237, 119, 26, - 246, 184, 174, 0, 178, 245, 157, 233, 225, 91, 38, 20, 208, 49, - 61, 24, 155, 218, 207, 254, 192, 6, 115, 215, 220, 205, 15, 6, - 216, 227, 217, 244, 96, 64, 25, 123, 54, 61, 24, 135, 218, 239, - 50, 236, 91, 116, 5, 199, 192, 130, 124, 82, 96, 66, 193, 216, - 184, 110, 145, 161, 246, 115, 233, 22, 25, 3, 11, 146, 22, 25, - 19, 10, 82, 45, 178, 212, 126, 183, 97, 83, 93, 33, 107, 96, - 193, 80, 82, 96, 66, 65, 126, 84, 183, 200, 81, 251, 255, 159, - 38, 113, 206, 192, 130, 132, 196, 57, 19, 10, 232, 24, 249, 188, - 33, 155, 244, 83, 251, 167, 128, 179, 63, 99, 176, 117, 119, 103, - 182, 193, 155, 94, 203, 3, 237, 86, 31, 120, 150, 9, 187, 28, - 6, 157, 54, 170, 156, 192, 222, 201, 9, 60, 170, 187, 32, 63, - 19, 165, 216, 243, 133, 202, 124, 87, 153, 61, 28, 236, 241, 235, - 60, 44, 9, 55, 222, 93, 4, 12, 214, 38, 215, 39, 2, 17, - 139, 118, 131, 78, 179, 193, 162, 216, 107, 54, 65, 136, 186, 91, - 77, 244, 82, 160, 92, 67, 241, 187, 131, 31, 222, 67, 219, 2, - 77, 2, 248, 34, 97, 113, 200, 221, 88, 254, 40, 229, 181, 27, - 177, 142, 127, 205, 15, 246, 124, 89, 146, 154, 206, 126, 3, 7, - 153, 76, 103, 191, 9, 5, 163, 99, 100, 86, 82, 129, 80, 251, - 121, 195, 190, 181, 120, 59, 91, 226, 254, 78, 188, 123, 56, 29, - 116, 123, 98, 96, 253, 100, 238, 136, 9, 5, 99, 183, 144, 147, - 18, 225, 0, 181, 223, 7, 100, 29, 99, 203, 124, 15, 136, 114, - 157, 135, 184, 211, 207, 165, 208, 12, 24, 88, 43, 233, 215, 128, - 9, 5, 163, 137, 0, 24, 164, 246, 207, 164, 153, 102, 208, 192, - 130, 100, 66, 7, 77, 40, 160, 9, 211, 12, 81, 251, 253, 105, - 145, 49, 100, 96, 65, 194, 52, 67, 38, 20, 228, 19, 86, 30, - 166, 246, 7, 12, 251, 54, 93, 97, 216, 192, 130, 209, 164, 192, - 132, 130, 241, 91, 117, 139, 17, 106, 255, 108, 186, 197, 136, 129, - 5, 73, 139, 17, 19, 10, 198, 111, 37, 147, 178, 69, 158, 218, - 63, 103, 216, 183, 20, 111, 131, 53, 25, 117, 45, 101, 225, 184, - 83, 45, 243, 6, 214, 76, 6, 152, 55, 161, 128, 142, 107, 84, - 163, 212, 254, 224, 77, 161, 26, 53, 176, 102, 130, 106, 212, 132, - 2, 164, 21, 8, 125, 131, 102, 126, 222, 48, 127, 81, 11, 125, - 16, 174, 63, 111, 100, 7, 201, 12, 126, 9, 244, 39, 251, 127, - 51, 236, 219, 10, 133, 27, 10, 125, 245, 49, 84, 151, 160, 50, - 77, 10, 76, 40, 184, 69, 17, 13, 20, 38, 251, 23, 18, 162, - 161, 14, 4, 5, 73, 11, 144, 229, 191, 144, 110, 97, 82, 251, - 35, 233, 22, 128, 226, 35, 233, 22, 162, 198, 45, 183, 226, 158, - 105, 67, 127, 127, 201, 48, 143, 138, 225, 224, 206, 254, 75, 106, - 103, 183, 65, 191, 179, 127, 201, 24, 24, 85, 160, 1, 32, 189, - 85, 129, 22, 128, 71, 10, 18, 147, 65, 237, 143, 26, 230, 49, - 249, 163, 97, 35, 168, 48, 25, 14, 128, 3, 121, 5, 98, 229, - 209, 219, 20, 104, 1, 88, 56, 42, 49, 153, 212, 254, 88, 210, - 39, 144, 232, 31, 75, 48, 129, 76, 252, 88, 130, 9, 62, 251, - 49, 99, 84, 245, 9, 54, 140, 143, 65, 159, 222, 107, 32, 42, - 139, 218, 191, 12, 250, 198, 219, 13, 86, 221, 102, 250, 238, 20, - 76, 77, 196, 99, 121, 86, 233, 115, 222, 80, 26, 93, 196, 227, - 50, 131, 186, 91, 1, 30, 45, 122, 242, 220, 82, 181, 36, 40, - 252, 147, 182, 218, 63, 237, 163, 154, 175, 111, 239, 148, 88, 250, - 238, 15, 40, 238, 201, 221, 160, 178, 26, 139, 101, 99, 247, 52, - 152, 1, 112, 96, 68, 129, 6, 128, 249, 113, 5, 226, 88, 110, - 155, 32, 255, 187, 137, 67, 179, 169, 253, 235, 134, 201, 10, 31, - 52, 209, 89, 167, 108, 124, 232, 45, 247, 59, 45, 236, 114, 36, - 123, 233, 69, 93, 103, 160, 240, 55, 250, 2, 112, 164, 234, 23, - 194, 240, 190, 72, 36, 78, 85, 93, 54, 89, 158, 44, 129, 98, - 232, 69, 108, 187, 211, 108, 238, 207, 190, 174, 227, 54, 49, 28, - 178, 204, 216, 74, 188, 203, 195, 61, 47, 226, 37, 182, 112, 230, - 204, 44, 236, 134, 44, 170, 7, 109, 207, 223, 33, 44, 236, 52, - 229, 46, 169, 206, 77, 183, 61, 121, 248, 139, 251, 193, 148, 87, - 230, 101, 182, 237, 133, 145, 240, 29, 137, 107, 167, 162, 199, 74, - 251, 130, 126, 147, 100, 84, 72, 116, 55, 172, 239, 242, 6, 140, - 137, 251, 73, 61, 212, 105, 185, 31, 151, 88, 224, 51, 216, 114, - 2, 44, 12, 131, 32, 38, 76, 135, 66, 79, 107, 170, 219, 130, - 114, 26, 116, 0, 212, 76, 14, 219, 248, 175, 27, 84, 113, 159, - 109, 1, 120, 199, 113, 242, 207, 144, 232, 14, 181, 127, 203, 48, - 143, 23, 218, 72, 243, 68, 61, 125, 97, 58, 179, 45, 238, 249, - 59, 76, 222, 198, 3, 242, 85, 129, 172, 4, 196, 67, 208, 188, - 46, 118, 192, 196, 114, 112, 125, 159, 135, 176, 57, 105, 174, 211, - 125, 119, 108, 236, 128, 6, 177, 63, 186, 239, 160, 80, 252, 150, - 65, 11, 10, 180, 0, 188, 253, 14, 242, 180, 224, 152, 12, 181, - 127, 219, 48, 79, 21, 222, 32, 56, 198, 239, 180, 120, 232, 213, - 21, 163, 104, 71, 95, 151, 55, 47, 230, 79, 138, 131, 127, 30, - 233, 83, 121, 57, 50, 84, 134, 164, 171, 120, 43, 8, 154, 220, - 5, 58, 20, 227, 176, 195, 139, 192, 240, 69, 12, 190, 43, 202, - 26, 34, 98, 170, 247, 59, 242, 254, 161, 248, 12, 252, 130, 54, - 193, 20, 44, 70, 30, 213, 221, 182, 32, 141, 235, 239, 179, 61, - 119, 127, 90, 125, 12, 84, 181, 30, 68, 11, 186, 190, 232, 150, - 136, 27, 193, 154, 236, 21, 15, 176, 243, 115, 47, 67, 30, 146, - 149, 52, 61, 51, 54, 210, 68, 131, 14, 128, 154, 158, 160, 110, - 253, 182, 65, 143, 43, 208, 2, 176, 120, 146, 252, 11, 33, 92, - 178, 212, 254, 180, 97, 158, 40, 92, 135, 85, 132, 34, 1, 12, - 189, 72, 186, 35, 27, 28, 253, 129, 46, 195, 11, 148, 106, 134, - 211, 39, 69, 251, 109, 62, 25, 177, 228, 34, 51, 17, 206, 119, - 150, 118, 191, 122, 194, 127, 7, 186, 170, 160, 187, 27, 139, 22, - 122, 8, 89, 27, 187, 161, 65, 7, 64, 45, 31, 65, 255, 251, - 180, 49, 170, 196, 114, 214, 2, 240, 56, 35, 127, 47, 134, 144, - 163, 246, 31, 192, 16, 254, 194, 96, 143, 172, 173, 44, 167, 56, - 87, 245, 160, 140, 86, 35, 18, 85, 74, 77, 48, 120, 15, 156, - 144, 149, 165, 36, 33, 176, 228, 67, 182, 235, 138, 170, 46, 43, - 234, 27, 163, 69, 105, 217, 193, 50, 77, 240, 151, 228, 152, 240, - 167, 201, 72, 124, 137, 176, 61, 169, 222, 129, 0, 41, 167, 165, - 141, 23, 79, 130, 54, 217, 232, 212, 101, 168, 133, 136, 41, 1, - 84, 147, 145, 232, 255, 214, 62, 144, 249, 58, 15, 99, 148, 70, - 94, 12, 34, 161, 238, 182, 120, 115, 193, 141, 146, 181, 148, 179, - 113, 240, 26, 116, 0, 212, 115, 15, 106, 240, 31, 36, 114, 32, - 103, 1, 120, 7, 147, 91, 84, 63, 181, 63, 107, 152, 167, 228, - 143, 253, 54, 130, 10, 83, 127, 6, 192, 1, 181, 187, 129, 38, - 249, 89, 99, 66, 113, 81, 191, 5, 96, 241, 36, 249, 104, 63, - 162, 34, 212, 254, 75, 195, 60, 93, 120, 127, 63, 146, 48, 236, - 240, 68, 152, 184, 82, 47, 102, 69, 229, 125, 47, 150, 217, 163, - 32, 253, 244, 47, 154, 77, 84, 13, 32, 17, 104, 187, 110, 253, - 90, 196, 196, 186, 173, 115, 6, 234, 104, 216, 104, 242, 72, 158, - 132, 65, 35, 233, 14, 22, 8, 123, 174, 224, 162, 40, 75, 250, - 34, 26, 168, 205, 110, 139, 55, 3, 96, 224, 64, 115, 119, 28, - 16, 22, 121, 59, 40, 49, 2, 22, 52, 27, 170, 123, 117, 105, - 230, 227, 36, 235, 222, 32, 114, 140, 244, 71, 197, 168, 155, 219, - 64, 48, 202, 53, 19, 49, 161, 157, 187, 64, 138, 98, 180, 239, - 199, 187, 60, 246, 234, 69, 241, 123, 73, 134, 20, 29, 232, 159, - 23, 71, 44, 10, 154, 24, 104, 133, 43, 103, 138, 187, 245, 93, - 213, 37, 61, 68, 209, 104, 135, 199, 17, 182, 128, 15, 233, 79, - 136, 47, 76, 151, 217, 154, 42, 145, 157, 138, 24, 127, 210, 139, - 226, 228, 228, 76, 157, 68, 160, 91, 71, 116, 169, 33, 14, 198, - 212, 53, 52, 148, 95, 243, 171, 213, 195, 144, 105, 253, 33, 108, - 240, 16, 44, 135, 237, 24, 100, 127, 179, 201, 138, 33, 119, 155, - 114, 164, 24, 145, 144, 222, 229, 133, 185, 82, 58, 48, 107, 202, - 137, 83, 7, 99, 71, 124, 56, 226, 45, 215, 135, 17, 137, 152, - 187, 18, 76, 20, 204, 129, 31, 248, 179, 33, 111, 115, 180, 201, - 186, 241, 50, 183, 185, 231, 238, 203, 57, 210, 179, 166, 141, 51, - 88, 81, 104, 127, 17, 16, 115, 30, 88, 117, 66, 232, 233, 79, - 53, 120, 236, 122, 77, 224, 180, 189, 93, 174, 67, 176, 80, 50, - 236, 133, 65, 204, 83, 252, 12, 59, 133, 31, 196, 120, 80, 226, - 69, 42, 46, 162, 19, 241, 237, 78, 19, 153, 35, 12, 58, 126, - 99, 54, 14, 61, 60, 175, 79, 157, 175, 139, 3, 22, 36, 75, - 61, 240, 35, 47, 194, 32, 104, 182, 199, 9, 202, 225, 3, 99, - 234, 157, 92, 230, 54, 163, 160, 196, 248, 117, 14, 83, 25, 116, - 118, 118, 165, 182, 3, 115, 23, 242, 215, 117, 188, 144, 131, 221, - 24, 28, 160, 195, 186, 92, 158, 28, 195, 185, 220, 102, 115, 95, - 158, 171, 186, 126, 172, 163, 18, 226, 196, 217, 86, 119, 253, 73, - 88, 147, 188, 217, 100, 222, 182, 246, 51, 121, 233, 179, 153, 32, - 100, 174, 143, 154, 91, 137, 69, 1, 244, 4, 89, 67, 206, 132, - 154, 79, 210, 59, 8, 96, 12, 52, 149, 231, 122, 248, 58, 82, - 92, 8, 98, 88, 172, 145, 166, 187, 83, 74, 119, 111, 159, 185, - 205, 144, 187, 141, 125, 61, 141, 36, 65, 130, 74, 224, 227, 221, - 183, 197, 31, 215, 178, 147, 216, 40, 181, 52, 232, 0, 168, 53, - 87, 48, 117, 255, 210, 200, 43, 137, 71, 44, 0, 139, 167, 72, - 145, 128, 182, 149, 249, 178, 209, 247, 53, 195, 40, 140, 119, 185, - 222, 212, 104, 6, 136, 101, 131, 30, 243, 101, 35, 119, 12, 133, - 173, 3, 54, 202, 87, 148, 61, 224, 160, 141, 242, 21, 245, 105, - 7, 109, 148, 175, 40, 177, 237, 160, 141, 242, 21, 101, 163, 56, - 104, 163, 124, 69, 217, 40, 14, 24, 11, 95, 85, 98, 219, 65, - 27, 229, 171, 9, 38, 35, 3, 160, 20, 219, 14, 218, 40, 95, - 85, 98, 219, 65, 27, 229, 171, 32, 182, 39, 137, 105, 103, 104, - 230, 111, 141, 190, 127, 109, 26, 133, 35, 233, 65, 248, 137, 230, - 45, 71, 2, 26, 196, 223, 26, 57, 97, 217, 100, 96, 36, 223, - 80, 35, 201, 224, 72, 190, 161, 190, 159, 193, 145, 124, 67, 141, - 36, 131, 35, 249, 134, 26, 73, 6, 71, 242, 13, 53, 146, 12, - 140, 228, 239, 12, 179, 44, 127, 132, 145, 252, 93, 130, 9, 70, - 242, 119, 198, 192, 73, 5, 98, 229, 83, 211, 10, 180, 0, 44, - 205, 74, 76, 38, 181, 191, 101, 152, 170, 46, 152, 21, 223, 74, - 48, 129, 206, 248, 45, 99, 64, 117, 2, 62, 251, 45, 227, 182, - 59, 20, 104, 1, 120, 162, 72, 62, 2, 10, 102, 198, 234, 163, - 153, 55, 154, 230, 155, 77, 171, 240, 83, 230, 33, 71, 31, 74, - 225, 20, 94, 180, 212, 33, 133, 116, 171, 29, 118, 240, 193, 253, - 56, 244, 122, 78, 57, 128, 200, 135, 30, 113, 244, 156, 112, 176, - 101, 16, 53, 50, 28, 87, 172, 216, 134, 23, 197, 158, 95, 143, - 133, 230, 240, 130, 185, 89, 196, 39, 221, 24, 183, 83, 104, 173, - 14, 68, 88, 212, 169, 239, 170, 159, 80, 96, 185, 237, 118, 24, - 180, 67, 207, 141, 197, 25, 183, 212, 150, 177, 199, 242, 148, 219, - 243, 227, 187, 230, 8, 107, 4, 45, 215, 243, 229, 50, 202, 88, - 48, 199, 111, 52, 201, 81, 114, 140, 100, 0, 4, 6, 249, 23, - 230, 129, 243, 23, 176, 221, 51, 226, 72, 16, 126, 30, 76, 10, - 28, 40, 24, 162, 73, 129, 1, 5, 99, 19, 73, 129, 5, 5, - 71, 143, 233, 47, 24, 212, 126, 147, 137, 135, 48, 135, 125, 1, - 24, 233, 77, 233, 47, 128, 225, 254, 166, 244, 23, 12, 68, 48, - 118, 107, 82, 96, 65, 193, 145, 130, 56, 253, 202, 0, 79, 188, - 205, 52, 207, 29, 126, 250, 117, 67, 22, 232, 254, 161, 151, 21, - 8, 232, 116, 184, 182, 228, 239, 189, 236, 192, 64, 127, 118, 69, - 116, 202, 13, 89, 131, 164, 120, 67, 48, 48, 24, 224, 111, 51, - 53, 183, 131, 1, 254, 54, 115, 224, 152, 2, 13, 0, 111, 63, - 163, 64, 28, 89, 249, 44, 105, 226, 56, 109, 106, 191, 195, 52, - 79, 21, 30, 75, 62, 151, 244, 240, 134, 39, 70, 33, 23, 26, - 237, 161, 135, 66, 228, 176, 83, 33, 241, 113, 91, 124, 78, 131, - 14, 128, 90, 86, 128, 209, 250, 14, 83, 26, 42, 25, 52, 90, - 223, 97, 22, 79, 146, 243, 196, 180, 179, 52, 243, 227, 102, 223, - 187, 205, 222, 248, 48, 209, 79, 117, 214, 33, 68, 151, 148, 90, - 96, 52, 252, 184, 153, 19, 202, 110, 22, 152, 242, 25, 83, 74, - 173, 44, 50, 225, 51, 170, 39, 89, 100, 193, 103, 84, 79, 178, - 200, 128, 207, 152, 82, 106, 101, 145, 253, 158, 49, 165, 212, 202, - 2, 243, 61, 107, 74, 31, 81, 22, 153, 237, 217, 4, 19, 176, - 218, 179, 166, 180, 92, 178, 200, 104, 207, 154, 210, 71, 148, 69, - 54, 123, 214, 148, 62, 162, 44, 72, 173, 231, 76, 115, 74, 254, - 8, 147, 241, 92, 130, 9, 253, 230, 230, 128, 234, 49, 124, 246, - 57, 243, 216, 73, 5, 90, 0, 222, 57, 73, 78, 17, 211, 206, - 209, 204, 79, 152, 125, 255, 198, 52, 10, 183, 118, 81, 71, 94, - 78, 151, 4, 1, 99, 224, 39, 204, 220, 29, 248, 241, 28, 16, - 228, 189, 138, 32, 57, 36, 200, 123, 213, 199, 115, 72, 144, 247, - 42, 130, 228, 144, 32, 239, 85, 4, 201, 33, 65, 222, 171, 8, - 146, 131, 158, 253, 164, 105, 150, 228, 143, 64, 144, 159, 76, 48, - 129, 24, 255, 73, 115, 128, 41, 16, 43, 159, 152, 84, 160, 5, - 224, 204, 25, 137, 201, 164, 246, 243, 166, 121, 167, 252, 17, 8, - 242, 124, 130, 9, 8, 242, 188, 57, 112, 68, 129, 6, 128, 133, - 19, 10, 180, 0, 60, 117, 154, 156, 35, 166, 221, 79, 51, 63, - 99, 246, 253, 91, 211, 40, 20, 123, 98, 72, 226, 221, 160, 33, - 44, 218, 110, 226, 128, 125, 243, 51, 102, 238, 118, 236, 72, 63, - 16, 231, 253, 138, 56, 253, 72, 156, 247, 171, 142, 244, 35, 113, - 222, 175, 136, 211, 143, 196, 121, 191, 34, 78, 63, 18, 231, 253, - 64, 156, 231, 12, 68, 101, 80, 251, 131, 166, 121, 162, 240, 175, - 12, 86, 245, 49, 246, 210, 111, 168, 48, 76, 244, 171, 224, 42, - 67, 131, 153, 71, 194, 73, 116, 168, 71, 101, 207, 221, 103, 110, - 68, 216, 161, 233, 149, 180, 147, 165, 196, 182, 58, 177, 186, 233, - 176, 13, 58, 107, 112, 48, 118, 70, 116, 20, 38, 234, 131, 201, - 168, 128, 115, 63, 152, 140, 202, 192, 126, 211, 99, 10, 180, 0, - 60, 206, 36, 125, 76, 106, 127, 200, 52, 139, 242, 71, 152, 168, - 15, 37, 152, 76, 7, 64, 141, 9, 40, 240, 33, 147, 222, 174, - 64, 11, 64, 118, 66, 98, 178, 168, 253, 243, 166, 121, 90, 254, - 8, 178, 236, 231, 19, 76, 32, 203, 126, 222, 28, 152, 80, 160, - 1, 224, 17, 166, 64, 108, 123, 242, 20, 169, 32, 38, 155, 218, - 191, 96, 154, 247, 21, 238, 99, 85, 117, 253, 46, 2, 77, 85, - 88, 111, 76, 228, 6, 1, 99, 69, 100, 219, 80, 229, 42, 62, - 90, 125, 211, 22, 120, 52, 232, 0, 40, 181, 194, 126, 20, 82, - 191, 96, 230, 85, 23, 64, 72, 253, 2, 116, 65, 130, 57, 0, - 79, 223, 171, 192, 44, 128, 231, 238, 145, 29, 116, 168, 253, 139, - 135, 117, 80, 100, 39, 57, 216, 65, 89, 222, 219, 65, 199, 70, - 60, 26, 68, 180, 186, 131, 160, 118, 254, 98, 210, 65, 199, 2, - 80, 119, 208, 201, 1, 168, 59, 232, 100, 1, 60, 119, 15, 249, - 200, 48, 49, 109, 66, 51, 127, 104, 246, 253, 158, 101, 204, 45, - 179, 7, 190, 255, 255, 8, 147, 119, 78, 201, 220, 127, 30, 98, - 21, 48, 94, 117, 228, 91, 18, 17, 41, 110, 2, 193, 230, 177, - 235, 94, 215, 54, 85, 84, 100, 110, 44, 238, 192, 165, 87, 6, - 97, 79, 160, 61, 161, 111, 169, 69, 169, 205, 73, 152, 4, 120, - 221, 40, 14, 96, 19, 82, 166, 107, 131, 69, 77, 111, 103, 55, - 110, 238, 179, 134, 183, 189, 205, 67, 238, 199, 176, 79, 129, 41, - 234, 238, 43, 111, 22, 219, 245, 192, 198, 223, 70, 75, 172, 33, - 85, 174, 150, 235, 123, 237, 78, 19, 141, 67, 237, 46, 82, 19, - 2, 218, 153, 138, 0, 0, 68, 135, 71, 0, 184, 209, 129, 8, - 0, 206, 102, 36, 105, 82, 184, 228, 40, 83, 117, 213, 142, 187, - 207, 113, 215, 149, 94, 4, 17, 136, 141, 86, 164, 7, 235, 61, - 10, 122, 172, 52, 84, 18, 48, 52, 34, 241, 112, 42, 101, 163, - 85, 102, 172, 234, 71, 49, 119, 27, 194, 0, 198, 0, 10, 248, - 1, 93, 148, 202, 166, 243, 187, 58, 153, 120, 176, 235, 110, 179, - 201, 27, 236, 176, 139, 192, 229, 180, 195, 15, 229, 15, 206, 167, - 22, 95, 242, 220, 161, 30, 6, 81, 132, 174, 129, 131, 36, 96, - 143, 114, 225, 21, 23, 166, 157, 198, 22, 7, 172, 29, 136, 89, - 16, 222, 185, 20, 141, 246, 208, 139, 206, 217, 86, 199, 107, 54, - 152, 155, 114, 101, 148, 128, 84, 130, 59, 218, 129, 231, 199, 248, - 81, 156, 195, 72, 116, 109, 139, 115, 159, 8, 186, 137, 243, 220, - 40, 192, 58, 41, 236, 32, 140, 145, 236, 48, 213, 250, 222, 170, - 62, 118, 71, 94, 233, 158, 109, 121, 213, 170, 190, 27, 68, 28, - 93, 62, 226, 162, 88, 116, 129, 176, 25, 180, 242, 85, 69, 209, - 51, 244, 16, 170, 80, 26, 180, 23, 116, 220, 6, 76, 113, 147, - 131, 90, 222, 148, 151, 245, 88, 16, 18, 198, 88, 16, 238, 184, - 190, 247, 148, 188, 191, 23, 132, 226, 88, 238, 201, 54, 15, 61, - 60, 98, 110, 170, 111, 148, 144, 144, 50, 248, 71, 118, 249, 158, - 115, 231, 206, 157, 3, 44, 241, 110, 136, 222, 130, 251, 225, 63, - 229, 204, 151, 39, 15, 251, 65, 71, 220, 19, 139, 58, 161, 92, - 8, 80, 212, 208, 161, 210, 98, 26, 152, 156, 89, 68, 141, 189, - 208, 162, 75, 246, 160, 252, 2, 163, 222, 146, 113, 229, 209, 174, - 36, 63, 14, 95, 132, 154, 99, 188, 171, 198, 6, 95, 242, 124, - 21, 222, 29, 163, 53, 18, 123, 160, 153, 242, 217, 150, 235, 201, - 89, 221, 234, 108, 207, 238, 52, 131, 45, 183, 57, 171, 103, 112, - 54, 228, 59, 94, 20, 135, 251, 169, 235, 55, 56, 248, 64, 105, - 168, 169, 80, 52, 29, 208, 182, 230, 181, 218, 205, 125, 117, 65, - 15, 134, 142, 23, 229, 158, 224, 245, 88, 168, 186, 120, 73, 5, - 240, 172, 108, 65, 161, 119, 157, 207, 46, 176, 118, 179, 179, 227, - 249, 211, 56, 148, 174, 38, 123, 124, 43, 242, 98, 206, 166, 188, - 109, 230, 94, 119, 189, 166, 187, 213, 228, 211, 50, 228, 55, 228, - 147, 17, 243, 3, 64, 134, 39, 120, 64, 246, 39, 219, 77, 148, - 71, 193, 30, 146, 29, 214, 154, 143, 191, 72, 202, 183, 202, 108, - 35, 234, 160, 199, 6, 126, 71, 246, 193, 198, 129, 143, 180, 234, - 29, 82, 25, 3, 152, 69, 140, 18, 24, 24, 252, 192, 60, 201, - 75, 162, 128, 40, 240, 83, 52, 193, 110, 137, 233, 221, 218, 103, - 237, 78, 28, 75, 239, 149, 20, 23, 81, 103, 107, 182, 43, 150, - 9, 79, 49, 196, 138, 80, 203, 59, 18, 183, 90, 88, 176, 45, - 216, 14, 175, 71, 70, 146, 105, 221, 86, 187, 201, 97, 113, 176, - 239, 246, 50, 44, 32, 17, 165, 39, 3, 37, 166, 228, 73, 160, - 23, 177, 184, 19, 130, 176, 237, 196, 114, 43, 16, 242, 3, 100, - 2, 76, 135, 210, 253, 52, 35, 70, 60, 102, 157, 182, 228, 12, - 183, 19, 7, 45, 55, 246, 234, 72, 97, 55, 194, 139, 87, 210, - 235, 175, 120, 68, 40, 141, 196, 160, 246, 31, 154, 185, 49, 17, - 123, 78, 64, 107, 252, 156, 105, 158, 44, 252, 55, 131, 173, 241, - 88, 184, 19, 31, 113, 175, 187, 76, 102, 39, 2, 105, 21, 130, - 226, 225, 70, 17, 143, 82, 251, 147, 60, 2, 240, 34, 229, 21, - 148, 29, 35, 172, 221, 116, 235, 184, 7, 94, 218, 87, 231, 76, - 165, 84, 120, 182, 66, 12, 75, 55, 226, 13, 161, 253, 41, 63, - 65, 176, 29, 131, 132, 243, 252, 148, 105, 175, 93, 103, 93, 237, - 181, 159, 205, 15, 194, 22, 14, 27, 79, 81, 5, 91, 108, 185, - 245, 107, 123, 110, 216, 136, 148, 229, 47, 53, 86, 161, 128, 16, - 212, 142, 63, 167, 244, 17, 130, 218, 241, 231, 148, 246, 71, 80, - 59, 254, 156, 73, 239, 80, 160, 5, 224, 137, 34, 249, 138, 137, - 36, 51, 168, 253, 121, 211, 60, 83, 248, 188, 201, 22, 2, 63, - 14, 131, 230, 193, 211, 199, 189, 208, 109, 183, 121, 40, 72, 137, - 196, 75, 147, 78, 94, 127, 45, 247, 196, 171, 187, 177, 172, 138, - 164, 84, 30, 72, 185, 213, 247, 52, 152, 4, 132, 113, 162, 83, - 79, 77, 43, 75, 1, 20, 238, 61, 14, 8, 34, 244, 67, 39, - 183, 58, 82, 187, 132, 216, 247, 245, 182, 217, 221, 147, 234, 54, - 59, 36, 11, 156, 116, 227, 128, 36, 80, 71, 193, 176, 245, 224, - 169, 37, 186, 154, 21, 143, 168, 195, 33, 210, 117, 241, 78, 241, - 173, 60, 115, 246, 252, 200, 107, 200, 189, 86, 236, 26, 138, 100, - 152, 173, 78, 32, 211, 243, 5, 122, 255, 231, 147, 249, 2, 189, - 255, 243, 201, 124, 25, 56, 35, 244, 78, 5, 90, 0, 78, 207, - 144, 159, 181, 112, 190, 76, 106, 127, 201, 52, 47, 22, 158, 179, - 96, 100, 34, 77, 153, 26, 129, 102, 119, 212, 159, 228, 20, 225, - 205, 243, 102, 51, 117, 142, 192, 34, 222, 118, 241, 207, 50, 80, - 70, 220, 48, 19, 242, 0, 116, 196, 132, 196, 82, 178, 148, 164, - 67, 25, 183, 104, 185, 112, 15, 37, 57, 145, 206, 116, 182, 190, - 219, 193, 195, 108, 208, 167, 212, 121, 60, 104, 28, 126, 16, 207, - 28, 78, 54, 69, 47, 164, 148, 56, 112, 199, 152, 216, 195, 82, - 254, 149, 89, 18, 224, 117, 160, 173, 248, 146, 10, 236, 34, 41, - 70, 141, 131, 46, 246, 123, 49, 190, 75, 179, 29, 185, 41, 190, - 147, 119, 138, 196, 188, 129, 53, 244, 165, 100, 146, 193, 246, 248, - 146, 50, 18, 8, 154, 100, 95, 50, 243, 39, 21, 104, 1, 120, - 231, 148, 2, 115, 0, 78, 95, 80, 96, 22, 192, 187, 239, 39, - 211, 200, 1, 22, 181, 255, 202, 52, 43, 133, 163, 66, 225, 147, - 130, 177, 17, 112, 60, 115, 216, 21, 161, 72, 162, 37, 88, 115, - 127, 149, 116, 194, 114, 0, 212, 157, 0, 107, 238, 175, 204, 252, - 172, 2, 17, 241, 185, 57, 5, 230, 0, 188, 107, 17, 131, 130, - 0, 196, 159, 239, 94, 32, 255, 93, 8, 14, 155, 218, 95, 55, - 205, 87, 20, 254, 79, 83, 30, 92, 235, 147, 190, 20, 39, 206, - 189, 48, 43, 106, 61, 159, 160, 58, 180, 39, 188, 223, 79, 214, - 185, 24, 19, 232, 150, 120, 84, 228, 130, 218, 29, 243, 86, 27, - 117, 164, 150, 43, 44, 12, 185, 51, 184, 120, 8, 181, 177, 254, - 208, 236, 203, 8, 158, 213, 179, 136, 191, 174, 131, 39, 132, 104, - 123, 139, 152, 1, 121, 50, 72, 152, 76, 241, 150, 186, 239, 41, - 58, 213, 8, 180, 174, 92, 38, 9, 131, 185, 169, 248, 97, 169, - 202, 9, 230, 114, 235, 208, 205, 40, 249, 120, 247, 183, 35, 117, - 22, 37, 231, 103, 215, 133, 170, 140, 111, 111, 131, 74, 34, 7, - 151, 104, 156, 248, 237, 38, 104, 41, 242, 206, 146, 158, 67, 91, - 16, 90, 131, 14, 128, 122, 14, 193, 28, 254, 186, 153, 87, 210, - 2, 204, 225, 175, 155, 211, 103, 20, 152, 3, 176, 244, 128, 2, - 179, 0, 222, 247, 114, 178, 4, 51, 104, 247, 209, 204, 223, 153, - 230, 255, 52, 173, 194, 203, 153, 206, 81, 162, 5, 159, 60, 67, - 59, 236, 202, 172, 178, 208, 34, 239, 41, 221, 79, 140, 92, 254, - 59, 51, 59, 70, 22, 129, 95, 68, 228, 242, 223, 155, 246, 112, - 241, 110, 141, 60, 185, 77, 138, 205, 1, 161, 52, 165, 74, 32, - 88, 60, 183, 169, 180, 106, 225, 75, 38, 50, 84, 249, 239, 77, - 187, 63, 41, 48, 161, 96, 112, 136, 92, 150, 223, 49, 168, 253, - 15, 166, 77, 11, 25, 113, 225, 179, 120, 22, 163, 111, 147, 60, - 35, 43, 237, 8, 24, 65, 135, 128, 74, 185, 36, 22, 186, 10, - 214, 36, 50, 198, 249, 31, 76, 25, 176, 72, 100, 140, 243, 63, - 152, 249, 81, 253, 41, 147, 218, 223, 54, 237, 91, 138, 247, 165, - 135, 212, 0, 195, 1, 56, 76, 114, 214, 146, 23, 115, 157, 166, - 162, 103, 74, 21, 102, 232, 244, 183, 77, 25, 198, 73, 100, 204, - 242, 183, 205, 177, 113, 116, 202, 16, 144, 22, 223, 49, 205, 139, - 114, 222, 28, 27, 65, 197, 2, 78, 6, 64, 121, 196, 68, 208, - 225, 240, 29, 115, 226, 148, 2, 45, 0, 39, 149, 44, 113, 114, - 0, 106, 89, 226, 100, 1, 188, 251, 126, 242, 121, 177, 138, 51, - 212, 126, 179, 101, 22, 11, 127, 96, 38, 26, 211, 229, 160, 71, - 95, 138, 226, 16, 115, 83, 124, 55, 250, 82, 117, 155, 5, 34, - 167, 73, 233, 0, 82, 185, 121, 166, 83, 93, 116, 231, 244, 64, - 125, 116, 22, 99, 70, 182, 220, 136, 167, 117, 17, 173, 112, 225, - 81, 41, 107, 187, 241, 110, 137, 121, 219, 58, 155, 71, 89, 52, - 77, 197, 122, 164, 91, 69, 177, 27, 11, 38, 56, 168, 43, 72, - 52, 120, 232, 114, 56, 150, 222, 190, 116, 53, 86, 119, 15, 181, - 180, 208, 43, 56, 99, 35, 145, 53, 232, 0, 168, 247, 251, 140, - 1, 160, 244, 243, 17, 12, 15, 122, 179, 117, 252, 4, 249, 67, - 27, 39, 40, 75, 237, 103, 45, 243, 98, 225, 63, 218, 108, 77, - 4, 45, 203, 204, 167, 106, 43, 142, 186, 61, 45, 158, 47, 118, - 241, 166, 235, 239, 116, 220, 29, 254, 32, 99, 69, 153, 9, 181, - 168, 155, 136, 248, 67, 60, 215, 85, 169, 68, 64, 84, 250, 251, - 176, 30, 99, 175, 14, 170, 58, 171, 173, 46, 176, 104, 63, 138, - 209, 103, 177, 142, 7, 189, 97, 250, 75, 120, 243, 153, 19, 134, - 26, 105, 183, 152, 143, 14, 116, 131, 77, 233, 180, 3, 13, 145, - 202, 197, 109, 74, 139, 45, 154, 46, 19, 118, 185, 119, 80, 123, - 92, 186, 79, 208, 40, 186, 230, 249, 232, 53, 86, 234, 135, 252, - 18, 8, 214, 36, 0, 28, 79, 250, 220, 176, 185, 175, 66, 158, - 209, 219, 211, 155, 141, 137, 28, 242, 49, 65, 141, 61, 17, 1, - 32, 66, 40, 82, 161, 230, 158, 207, 182, 221, 235, 1, 134, 78, - 137, 149, 46, 59, 78, 132, 105, 222, 189, 157, 165, 41, 42, 204, - 208, 27, 147, 52, 228, 219, 65, 200, 75, 68, 138, 36, 29, 199, - 22, 48, 140, 122, 43, 51, 182, 130, 151, 103, 27, 92, 26, 238, - 194, 6, 143, 96, 255, 56, 192, 6, 34, 166, 157, 160, 249, 234, - 213, 189, 24, 140, 8, 60, 181, 231, 45, 17, 126, 208, 73, 54, - 149, 172, 141, 108, 165, 65, 7, 64, 189, 169, 100, 13, 0, 181, - 118, 146, 181, 0, 212, 218, 73, 54, 7, 160, 150, 40, 89, 228, - 208, 187, 239, 151, 146, 43, 71, 237, 119, 89, 166, 218, 113, 114, - 54, 130, 234, 59, 57, 7, 64, 253, 157, 156, 1, 96, 254, 180, - 2, 45, 0, 167, 102, 20, 136, 168, 206, 188, 92, 129, 89, 0, - 239, 189, 40, 191, 211, 79, 237, 231, 44, 45, 33, 251, 109, 4, - 213, 119, 250, 29, 0, 245, 119, 250, 13, 0, 245, 120, 250, 45, - 0, 245, 120, 250, 115, 0, 234, 241, 244, 103, 1, 212, 227, 33, - 212, 126, 183, 101, 170, 78, 16, 27, 65, 245, 29, 226, 0, 168, - 191, 3, 230, 232, 187, 173, 188, 146, 196, 196, 2, 112, 114, 90, - 129, 57, 0, 103, 84, 151, 73, 22, 192, 123, 46, 144, 175, 9, - 219, 117, 128, 218, 63, 101, 153, 115, 133, 47, 24, 172, 26, 117, - 37, 10, 81, 140, 248, 32, 97, 226, 201, 31, 96, 193, 64, 200, - 175, 216, 13, 119, 120, 12, 82, 55, 222, 14, 194, 150, 12, 180, - 130, 189, 155, 183, 188, 24, 234, 39, 23, 38, 180, 207, 150, 8, - 101, 255, 58, 15, 247, 81, 95, 76, 43, 176, 232, 208, 242, 98, - 45, 164, 213, 150, 221, 220, 103, 222, 142, 31, 132, 188, 113, 81, - 85, 135, 246, 132, 53, 185, 27, 197, 233, 96, 51, 188, 46, 161, - 118, 114, 252, 146, 26, 130, 80, 195, 154, 41, 211, 117, 192, 198, - 81, 107, 208, 1, 80, 211, 115, 192, 0, 48, 95, 80, 160, 5, - 224, 237, 199, 21, 152, 3, 144, 157, 87, 96, 22, 192, 51, 231, - 200, 143, 34, 57, 7, 169, 253, 62, 203, 188, 175, 240, 58, 38, - 178, 53, 71, 42, 120, 8, 15, 159, 48, 117, 179, 54, 93, 101, - 146, 144, 195, 242, 180, 72, 175, 42, 58, 1, 57, 134, 148, 137, - 220, 42, 59, 7, 244, 37, 64, 182, 112, 230, 140, 30, 218, 160, - 141, 61, 208, 160, 3, 160, 30, 218, 160, 1, 160, 60, 37, 32, - 230, 160, 5, 224, 73, 181, 18, 6, 115, 0, 222, 121, 175, 2, - 179, 0, 158, 191, 135, 188, 83, 176, 202, 16, 181, 127, 206, 50, - 167, 11, 111, 76, 185, 57, 2, 229, 9, 99, 117, 105, 8, 137, - 140, 208, 82, 112, 120, 8, 163, 3, 15, 45, 33, 48, 118, 83, - 77, 200, 97, 3, 234, 217, 227, 203, 66, 98, 137, 216, 38, 37, - 171, 244, 112, 135, 108, 236, 148, 6, 29, 0, 245, 38, 55, 100, - 0, 72, 213, 10, 28, 178, 0, 188, 115, 138, 84, 113, 60, 195, - 212, 254, 176, 101, 78, 21, 46, 50, 157, 87, 26, 201, 121, 160, - 79, 23, 213, 103, 35, 21, 159, 45, 55, 118, 221, 141, 97, 27, - 113, 105, 208, 1, 80, 119, 99, 216, 0, 144, 22, 21, 104, 1, - 120, 122, 82, 132, 54, 19, 115, 132, 218, 191, 104, 137, 208, 230, - 196, 219, 195, 214, 246, 188, 237, 56, 189, 183, 225, 210, 192, 27, - 95, 7, 253, 64, 160, 247, 45, 168, 32, 81, 12, 250, 8, 57, - 168, 68, 192, 250, 147, 229, 73, 161, 235, 119, 252, 6, 15, 163, - 122, 16, 114, 157, 64, 78, 196, 151, 4, 106, 210, 84, 204, 119, - 116, 54, 218, 111, 109, 5, 205, 136, 40, 99, 83, 70, 110, 198, - 137, 105, 17, 137, 201, 21, 234, 79, 73, 132, 100, 97, 23, 181, - 23, 95, 198, 221, 138, 99, 7, 242, 66, 159, 209, 95, 81, 4, - 28, 177, 145, 38, 26, 116, 0, 212, 244, 28, 49, 0, 212, 190, - 165, 17, 11, 192, 19, 39, 49, 204, 157, 152, 121, 106, 127, 12, - 166, 181, 157, 112, 105, 123, 183, 125, 179, 220, 9, 85, 15, 48, - 0, 57, 132, 43, 23, 229, 60, 121, 17, 3, 11, 113, 95, 247, - 61, 111, 99, 7, 52, 232, 0, 168, 251, 158, 55, 0, 212, 188, - 144, 183, 0, 60, 61, 73, 126, 77, 172, 177, 81, 106, 127, 194, - 50, 79, 23, 62, 98, 160, 57, 145, 162, 55, 58, 18, 68, 230, - 65, 157, 246, 13, 89, 54, 216, 62, 188, 211, 186, 139, 36, 233, - 227, 129, 89, 212, 63, 117, 43, 172, 168, 110, 166, 195, 152, 97, - 97, 0, 51, 196, 60, 108, 37, 185, 130, 116, 39, 244, 224, 71, - 109, 28, 128, 6, 29, 0, 245, 224, 71, 13, 0, 169, 18, 165, - 163, 22, 128, 197, 83, 228, 63, 137, 193, 83, 106, 255, 154, 101, - 150, 11, 191, 242, 125, 12, 94, 229, 145, 215, 84, 32, 7, 103, - 234, 69, 169, 144, 120, 220, 210, 132, 32, 154, 18, 55, 65, 8, - 106, 227, 96, 52, 232, 0, 168, 9, 65, 13, 0, 169, 210, 5, - 168, 5, 224, 153, 89, 242, 155, 130, 16, 99, 212, 254, 45, 144, - 8, 31, 125, 49, 66, 168, 249, 10, 182, 89, 216, 217, 218, 255, - 62, 152, 64, 70, 91, 126, 79, 108, 128, 159, 238, 21, 137, 99, - 54, 14, 66, 131, 14, 128, 154, 0, 99, 6, 128, 122, 9, 143, - 89, 0, 158, 56, 73, 94, 143, 227, 31, 167, 246, 255, 97, 153, - 23, 10, 254, 247, 116, 235, 155, 232, 35, 137, 238, 132, 140, 106, - 223, 45, 174, 168, 179, 102, 117, 70, 145, 190, 34, 78, 204, 113, - 27, 63, 175, 193, 12, 128, 3, 170, 171, 227, 6, 128, 242, 138, - 56, 49, 199, 45, 0, 239, 189, 159, 252, 75, 131, 88, 54, 104, - 102, 159, 178, 204, 35, 133, 167, 190, 239, 59, 226, 223, 251, 40, - 80, 131, 116, 250, 160, 39, 242, 66, 57, 193, 11, 229, 159, 178, - 228, 133, 114, 130, 23, 202, 63, 101, 221, 50, 33, 142, 51, 250, - 169, 253, 187, 150, 57, 44, 26, 246, 247, 1, 52, 48, 36, 106, - 246, 67, 195, 52, 104, 74, 112, 144, 152, 246, 0, 205, 124, 198, - 234, 251, 113, 219, 64, 52, 160, 54, 125, 198, 202, 221, 74, 254, - 216, 33, 182, 61, 96, 246, 81, 251, 11, 150, 249, 138, 194, 111, - 59, 32, 136, 209, 16, 72, 29, 102, 37, 113, 246, 231, 149, 7, - 3, 106, 165, 111, 190, 110, 119, 221, 82, 82, 142, 173, 212, 174, - 131, 53, 244, 49, 197, 44, 232, 140, 110, 236, 109, 121, 152, 109, - 71, 187, 183, 122, 176, 19, 137, 190, 204, 240, 120, 76, 94, 201, - 77, 14, 56, 61, 161, 83, 37, 105, 234, 196, 61, 246, 11, 140, - 85, 227, 201, 136, 53, 121, 20, 17, 198, 183, 183, 189, 186, 135, - 247, 182, 118, 65, 163, 227, 123, 60, 100, 219, 220, 141, 59, 33, + 198, 163, 150, 202, 237, 50, 106, 169, 83, 146, 48, 38, 11, 203, + 87, 85, 167, 164, 235, 174, 186, 183, 184, 247, 86, 203, 242, 144, + 73, 6, 6, 102, 128, 197, 143, 49, 177, 49, 63, 66, 226, 9, + 129, 9, 144, 245, 66, 38, 48, 188, 48, 201, 74, 38, 201, 154, + 197, 99, 6, 146, 33, 9, 121, 9, 153, 183, 230, 45, 194, 204, + 35, 228, 139, 143, 33, 144, 16, 134, 183, 246, 62, 31, 247, 86, + 73, 109, 155, 15, 103, 254, 120, 94, 94, 171, 181, 79, 157, 179, + 239, 57, 251, 236, 179, 207, 222, 251, 236, 179, 15, 249, 189, 183, + 88, 132, 237, 4, 193, 78, 139, 159, 237, 132, 65, 28, 108, 119, + 155, 103, 27, 60, 170, 135, 94, 39, 14, 194, 50, 150, 209, 49, + 81, 163, 172, 106, 20, 175, 144, 241, 7, 188, 22, 95, 214, 21, + 215, 121, 76, 95, 70, 236, 166, 215, 226, 83, 6, 179, 102, 134, + 22, 78, 149, 251, 26, 149, 123, 91, 92, 133, 226, 26, 182, 40, + 126, 209, 38, 19, 135, 252, 74, 41, 177, 125, 183, 13, 24, 141, + 153, 193, 26, 254, 77, 167, 72, 182, 227, 214, 175, 185, 59, 124, + 202, 196, 98, 5, 210, 219, 8, 105, 240, 14, 247, 27, 220, 175, + 239, 79, 89, 204, 154, 25, 172, 165, 74, 232, 25, 50, 222, 233, + 110, 183, 188, 250, 86, 170, 26, 97, 214, 140, 83, 203, 139, 31, + 150, 147, 202, 211, 100, 108, 143, 187, 215, 210, 85, 135, 176, 234, + 40, 20, 167, 42, 46, 145, 225, 54, 143, 34, 119, 135, 111, 197, + 251, 29, 62, 101, 227, 232, 217, 129, 209, 247, 143, 124, 72, 182, + 218, 216, 239, 112, 186, 72, 6, 185, 223, 109, 11, 12, 206, 13, + 232, 87, 241, 187, 237, 126, 44, 57, 104, 38, 81, 100, 35, 30, + 94, 247, 234, 124, 42, 131, 8, 166, 15, 32, 88, 23, 191, 247, + 227, 80, 237, 232, 18, 25, 228, 79, 196, 220, 143, 188, 192, 159, + 202, 34, 146, 211, 135, 204, 34, 111, 53, 250, 81, 36, 237, 232, + 221, 36, 27, 116, 98, 47, 240, 163, 169, 28, 51, 102, 134, 22, + 142, 29, 202, 8, 107, 162, 78, 77, 85, 166, 85, 146, 143, 130, + 110, 88, 231, 91, 245, 160, 193, 183, 60, 191, 25, 76, 13, 34, + 130, 227, 7, 7, 130, 21, 151, 130, 6, 175, 250, 205, 160, 54, + 26, 245, 192, 244, 102, 146, 137, 246, 253, 216, 125, 98, 106, 24, + 57, 68, 66, 197, 79, 100, 200, 216, 139, 97, 177, 139, 196, 105, + 194, 40, 167, 204, 239, 133, 6, 162, 77, 47, 17, 51, 223, 39, + 17, 23, 201, 144, 207, 163, 152, 55, 4, 71, 88, 47, 146, 167, + 136, 104, 116, 144, 165, 236, 239, 139, 165, 94, 77, 198, 116, 151, + 182, 66, 215, 223, 81, 188, 121, 246, 133, 122, 82, 174, 168, 118, + 53, 104, 86, 27, 229, 61, 48, 93, 38, 36, 240, 121, 208, 220, + 106, 240, 122, 107, 42, 119, 3, 42, 173, 65, 149, 3, 84, 10, + 68, 105, 189, 69, 239, 77, 88, 45, 123, 3, 78, 185, 34, 22, + 217, 1, 110, 219, 36, 163, 33, 7, 190, 231, 13, 57, 178, 65, + 236, 68, 249, 5, 71, 86, 147, 205, 196, 192, 70, 194, 52, 72, + 79, 18, 93, 176, 133, 108, 69, 80, 10, 13, 171, 194, 85, 183, + 205, 11, 79, 146, 209, 94, 242, 208, 73, 226, 68, 177, 27, 198, + 200, 133, 78, 77, 0, 52, 79, 44, 238, 55, 80, 202, 57, 53, + 248, 147, 254, 163, 100, 192, 22, 14, 248, 246, 131, 51, 218, 131, + 185, 127, 220, 133, 123, 200, 72, 207, 0, 94, 236, 167, 139, 175, + 39, 55, 29, 138, 154, 190, 154, 76, 118, 125, 207, 143, 121, 216, + 9, 57, 112, 172, 248, 212, 212, 255, 147, 189, 1, 207, 109, 166, + 107, 11, 44, 181, 137, 238, 193, 194, 185, 193, 220, 151, 178, 249, + 159, 248, 137, 159, 248, 9, 179, 248, 155, 25, 50, 121, 216, 154, + 57, 116, 249, 222, 76, 50, 126, 183, 189, 205, 67, 36, 146, 83, + 147, 16, 93, 36, 78, 203, 221, 230, 173, 41, 155, 25, 51, 163, + 11, 103, 94, 212, 170, 44, 175, 64, 147, 154, 104, 73, 95, 65, + 108, 41, 162, 1, 195, 220, 139, 195, 0, 107, 169, 134, 237, 232, + 81, 50, 8, 255, 10, 222, 200, 96, 159, 115, 80, 0, 124, 65, + 11, 36, 135, 203, 164, 193, 213, 214, 166, 97, 96, 172, 6, 111, + 186, 221, 86, 188, 117, 221, 109, 117, 57, 50, 252, 96, 109, 88, + 22, 190, 10, 202, 232, 113, 50, 36, 86, 149, 231, 55, 248, 19, + 40, 61, 157, 154, 88, 104, 85, 40, 129, 207, 63, 30, 5, 190, + 98, 77, 252, 4, 20, 224, 231, 239, 233, 23, 220, 183, 30, 62, + 188, 3, 107, 105, 154, 140, 97, 141, 59, 228, 212, 187, 173, 169, + 113, 102, 204, 228, 106, 163, 162, 120, 77, 150, 22, 63, 110, 18, + 27, 5, 203, 24, 25, 218, 120, 228, 106, 101, 107, 121, 109, 243, + 210, 74, 37, 111, 208, 81, 66, 176, 224, 129, 149, 181, 197, 141, + 188, 169, 225, 234, 234, 198, 221, 119, 230, 45, 221, 96, 83, 20, + 216, 233, 10, 119, 44, 228, 29, 154, 39, 195, 2, 65, 245, 213, + 149, 229, 187, 239, 204, 103, 122, 75, 238, 88, 200, 103, 233, 8, + 25, 196, 146, 75, 107, 107, 43, 249, 156, 198, 185, 190, 81, 171, + 174, 94, 206, 15, 106, 156, 151, 107, 107, 155, 87, 243, 68, 99, + 184, 82, 89, 95, 95, 188, 92, 201, 15, 233, 26, 151, 30, 217, + 168, 172, 231, 135, 123, 186, 117, 199, 66, 126, 68, 127, 162, 178, + 186, 121, 37, 63, 74, 199, 201, 136, 248, 132, 234, 196, 88, 95, + 209, 221, 119, 230, 243, 73, 71, 4, 150, 241, 158, 130, 187, 239, + 204, 211, 226, 18, 113, 144, 13, 41, 37, 163, 43, 139, 151, 42, + 43, 91, 107, 87, 55, 170, 107, 171, 139, 43, 121, 35, 41, 171, + 85, 126, 100, 179, 90, 171, 44, 231, 205, 116, 217, 213, 202, 226, + 70, 101, 57, 111, 21, 235, 100, 242, 48, 129, 122, 232, 18, 74, + 241, 130, 121, 3, 94, 64, 92, 253, 188, 80, 252, 83, 147, 76, + 28, 178, 169, 28, 250, 145, 251, 137, 35, 120, 89, 108, 179, 179, + 135, 238, 78, 200, 217, 7, 182, 90, 108, 151, 86, 53, 172, 27, + 168, 26, 128, 226, 0, 195, 190, 246, 128, 240, 23, 251, 227, 221, + 47, 102, 127, 196, 178, 239, 109, 19, 112, 14, 217, 4, 46, 146, + 241, 3, 136, 94, 180, 48, 126, 163, 65, 166, 110, 68, 156, 23, + 16, 137, 102, 143, 72, 188, 216, 79, 193, 19, 55, 158, 132, 3, + 115, 253, 243, 6, 185, 249, 112, 149, 242, 208, 62, 188, 130, 100, + 218, 60, 222, 13, 148, 90, 117, 112, 239, 186, 130, 63, 247, 79, + 182, 108, 149, 222, 237, 173, 27, 233, 133, 162, 55, 7, 122, 250, + 22, 147, 220, 116, 40, 242, 67, 59, 122, 43, 33, 158, 223, 233, + 198, 66, 117, 18, 146, 120, 16, 75, 80, 120, 129, 148, 237, 198, + 250, 119, 11, 127, 39, 162, 8, 43, 188, 44, 233, 168, 141, 29, + 189, 237, 6, 35, 61, 192, 152, 231, 72, 190, 222, 242, 184, 31, + 111, 69, 113, 200, 221, 182, 231, 239, 224, 86, 147, 187, 224, 52, + 221, 86, 196, 107, 99, 226, 231, 117, 245, 43, 180, 64, 6, 10, + 83, 45, 50, 61, 45, 196, 207, 186, 69, 241, 169, 65, 50, 148, + 82, 192, 233, 9, 50, 252, 184, 123, 221, 221, 82, 70, 149, 160, + 196, 16, 148, 93, 149, 134, 213, 57, 50, 137, 85, 130, 110, 204, + 195, 173, 122, 203, 141, 34, 36, 90, 14, 171, 82, 248, 109, 13, + 126, 90, 82, 191, 208, 187, 200, 4, 182, 104, 119, 91, 177, 215, + 105, 241, 45, 48, 243, 34, 220, 114, 116, 207, 198, 161, 198, 21, + 89, 1, 122, 20, 209, 101, 114, 43, 54, 219, 225, 62, 15, 221, + 152, 111, 241, 215, 117, 221, 86, 180, 229, 250, 141, 173, 93, 55, + 218, 157, 154, 4, 4, 151, 204, 41, 163, 118, 4, 42, 94, 150, + 245, 42, 88, 109, 209, 111, 60, 232, 70, 187, 244, 2, 185, 25, + 177, 68, 113, 232, 249, 59, 91, 245, 93, 94, 191, 182, 213, 141, + 155, 47, 155, 58, 154, 254, 62, 246, 112, 29, 235, 44, 65, 149, + 205, 184, 249, 50, 186, 78, 134, 97, 50, 218, 222, 147, 124, 171, + 25, 132, 184, 135, 142, 30, 34, 154, 82, 20, 44, 175, 201, 6, + 87, 130, 6, 191, 224, 172, 95, 173, 84, 150, 107, 67, 10, 203, + 3, 65, 8, 12, 181, 19, 104, 2, 15, 9, 134, 218, 9, 20, + 121, 239, 34, 19, 245, 186, 24, 179, 87, 223, 146, 198, 88, 52, + 149, 239, 33, 86, 189, 126, 89, 84, 144, 60, 30, 209, 123, 201, + 77, 9, 177, 210, 13, 199, 15, 140, 178, 191, 233, 93, 100, 162, + 179, 127, 176, 33, 237, 249, 98, 103, 191, 191, 217, 61, 100, 178, + 179, 219, 57, 216, 110, 46, 221, 142, 118, 118, 59, 253, 13, 79, + 163, 101, 30, 242, 186, 27, 243, 198, 212, 45, 233, 234, 169, 31, + 104, 153, 228, 235, 245, 45, 238, 187, 219, 45, 190, 229, 134, 220, + 119, 163, 169, 227, 88, 217, 142, 195, 46, 175, 141, 214, 235, 21, + 252, 113, 17, 127, 163, 115, 100, 60, 216, 126, 188, 46, 56, 114, + 171, 19, 242, 166, 247, 196, 212, 41, 36, 239, 24, 252, 128, 252, + 120, 21, 139, 233, 44, 201, 215, 163, 93, 55, 236, 160, 72, 142, + 58, 110, 157, 79, 157, 22, 85, 69, 249, 170, 42, 134, 21, 17, + 237, 121, 205, 88, 97, 156, 22, 43, 2, 203, 36, 182, 25, 146, + 7, 74, 244, 124, 120, 6, 171, 141, 118, 118, 59, 233, 239, 158, + 36, 35, 80, 51, 249, 232, 172, 80, 220, 58, 187, 169, 47, 222, + 73, 110, 134, 74, 109, 30, 187, 13, 55, 118, 83, 181, 75, 88, + 27, 200, 126, 69, 254, 216, 211, 207, 176, 187, 189, 175, 25, 107, + 94, 244, 19, 202, 20, 107, 189, 100, 202, 121, 241, 2, 25, 78, + 243, 61, 29, 36, 130, 243, 243, 6, 40, 65, 75, 107, 203, 160, + 190, 188, 166, 146, 55, 65, 141, 90, 169, 110, 84, 182, 106, 155, + 171, 27, 213, 43, 149, 188, 149, 82, 236, 31, 178, 115, 183, 231, + 167, 65, 107, 24, 237, 181, 212, 232, 203, 201, 45, 202, 173, 18, + 241, 120, 107, 207, 11, 113, 65, 182, 93, 177, 57, 106, 254, 153, + 148, 181, 214, 121, 252, 176, 23, 194, 114, 107, 187, 49, 93, 33, + 199, 253, 96, 43, 138, 93, 191, 225, 134, 141, 173, 196, 161, 181, + 229, 214, 235, 60, 138, 2, 177, 17, 106, 44, 199, 252, 96, 93, + 86, 78, 118, 136, 69, 89, 181, 143, 125, 173, 27, 177, 239, 81, + 50, 216, 118, 59, 91, 220, 143, 195, 125, 212, 207, 115, 181, 92, + 219, 237, 84, 0, 254, 7, 49, 147, 30, 178, 115, 118, 222, 121, + 200, 206, 57, 249, 204, 67, 118, 46, 147, 207, 62, 100, 231, 114, + 249, 193, 135, 236, 220, 96, 158, 20, 223, 105, 147, 225, 180, 6, + 15, 6, 81, 29, 247, 48, 3, 165, 220, 201, 231, 213, 247, 203, + 75, 176, 185, 93, 200, 8, 117, 185, 38, 90, 130, 98, 1, 236, + 199, 133, 122, 146, 171, 73, 136, 94, 38, 153, 199, 35, 196, 157, + 65, 220, 135, 121, 3, 83, 184, 31, 90, 71, 228, 131, 15, 173, + 111, 173, 174, 213, 174, 44, 174, 212, 100, 115, 122, 132, 216, 45, + 247, 201, 253, 222, 109, 16, 139, 104, 153, 140, 117, 253, 235, 60, + 244, 154, 30, 111, 108, 97, 173, 177, 116, 173, 209, 228, 215, 21, + 168, 255, 34, 167, 241, 8, 177, 247, 184, 123, 173, 119, 179, 194, + 162, 151, 112, 57, 157, 37, 14, 210, 151, 18, 34, 41, 156, 31, + 160, 57, 98, 47, 173, 213, 96, 73, 229, 201, 176, 40, 221, 186, + 90, 173, 44, 85, 242, 102, 241, 46, 146, 17, 68, 131, 229, 166, + 201, 150, 31, 144, 160, 196, 97, 168, 95, 55, 175, 92, 170, 212, + 242, 230, 1, 102, 41, 70, 100, 56, 173, 201, 255, 195, 152, 243, + 255, 222, 32, 67, 41, 205, 28, 84, 42, 183, 213, 10, 246, 182, + 220, 150, 231, 70, 146, 149, 8, 22, 45, 66, 201, 139, 157, 186, + 127, 160, 69, 230, 228, 51, 197, 159, 49, 72, 190, 95, 53, 238, + 235, 166, 241, 191, 178, 155, 197, 247, 26, 100, 180, 87, 31, 238, + 235, 222, 137, 255, 165, 221, 251, 191, 77, 50, 210, 163, 5, 191, + 216, 222, 189, 142, 140, 123, 13, 222, 238, 4, 49, 247, 235, 251, + 91, 45, 126, 157, 183, 166, 138, 40, 100, 14, 186, 37, 123, 190, + 80, 174, 38, 237, 86, 160, 217, 133, 137, 234, 114, 229, 202, 213, + 181, 141, 202, 234, 210, 35, 91, 155, 171, 175, 92, 93, 123, 120, + 181, 150, 247, 250, 170, 189, 132, 203, 254, 42, 201, 247, 119, 138, + 222, 66, 14, 235, 86, 126, 128, 78, 144, 177, 213, 181, 173, 245, + 234, 114, 101, 171, 242, 192, 3, 149, 165, 141, 117, 225, 57, 209, + 181, 55, 122, 22, 120, 241, 61, 22, 153, 56, 164, 39, 116, 81, + 218, 60, 194, 12, 155, 127, 49, 189, 47, 131, 214, 113, 213, 13, + 99, 105, 34, 205, 18, 160, 146, 31, 131, 112, 13, 165, 71, 74, + 24, 66, 99, 73, 185, 112, 74, 149, 8, 237, 4, 145, 23, 123, + 215, 249, 150, 231, 43, 247, 21, 24, 70, 118, 45, 175, 126, 169, + 250, 177, 174, 237, 243, 29, 183, 175, 54, 8, 127, 171, 150, 87, + 191, 232, 218, 39, 200, 112, 35, 232, 130, 182, 40, 234, 193, 94, + 99, 212, 134, 68, 153, 174, 34, 237, 128, 196, 111, 54, 92, 27, + 18, 101, 162, 202, 52, 25, 115, 119, 118, 66, 64, 174, 16, 9, + 203, 102, 84, 23, 99, 197, 194, 67, 36, 167, 232, 0, 155, 61, + 80, 98, 171, 35, 204, 117, 115, 102, 176, 150, 243, 213, 143, 39, + 200, 176, 23, 109, 37, 199, 0, 38, 51, 103, 114, 181, 33, 47, + 210, 46, 212, 226, 207, 155, 100, 180, 247, 24, 131, 46, 147, 92, + 43, 168, 187, 200, 90, 226, 12, 109, 230, 5, 78, 62, 202, 43, + 178, 126, 77, 183, 44, 252, 142, 65, 114, 170, 152, 222, 76, 236, + 142, 27, 239, 34, 58, 231, 146, 153, 55, 106, 8, 67, 121, 212, + 113, 125, 100, 1, 89, 14, 48, 204, 107, 139, 187, 13, 52, 155, + 130, 118, 155, 251, 113, 164, 230, 85, 150, 47, 201, 98, 122, 134, + 140, 199, 161, 235, 181, 122, 234, 218, 88, 55, 175, 126, 208, 149, + 47, 144, 35, 10, 111, 131, 199, 110, 125, 151, 55, 146, 70, 25, + 116, 143, 220, 34, 43, 44, 203, 223, 85, 219, 226, 103, 13, 50, + 174, 12, 189, 134, 38, 214, 21, 66, 92, 223, 15, 226, 52, 185, + 14, 178, 242, 129, 118, 229, 69, 221, 168, 150, 66, 80, 104, 19, + 146, 252, 114, 67, 178, 29, 39, 67, 242, 140, 10, 15, 58, 133, + 107, 128, 136, 34, 176, 8, 233, 36, 113, 182, 249, 142, 231, 75, + 207, 179, 0, 148, 3, 199, 214, 14, 156, 75, 255, 132, 76, 212, + 131, 118, 127, 119, 47, 229, 251, 220, 19, 209, 131, 198, 107, 230, + 101, 165, 157, 160, 229, 250, 59, 229, 32, 220, 73, 14, 106, 65, + 67, 138, 82, 199, 181, 157, 237, 111, 25, 198, 251, 76, 235, 242, + 213, 75, 31, 54, 11, 151, 69, 195, 171, 138, 24, 53, 222, 108, + 241, 58, 12, 240, 161, 63, 249, 140, 73, 178, 212, 153, 30, 120, + 119, 214, 32, 31, 30, 35, 198, 48, 181, 166, 7, 232, 194, 111, + 14, 51, 172, 94, 15, 90, 236, 82, 183, 217, 228, 97, 196, 230, + 153, 64, 52, 29, 49, 176, 63, 24, 10, 135, 250, 174, 235, 239, + 112, 38, 52, 114, 194, 150, 130, 206, 126, 232, 237, 236, 198, 108, + 225, 220, 185, 151, 201, 6, 172, 234, 215, 203, 140, 45, 182, 90, + 12, 127, 139, 152, 242, 128, 149, 9, 219, 141, 227, 78, 116, 225, + 236, 217, 6, 200, 188, 160, 195, 195, 72, 81, 163, 30, 180, 197, + 8, 235, 65, 107, 126, 91, 116, 226, 44, 33, 172, 198, 27, 30, + 44, 219, 237, 46, 12, 129, 185, 126, 131, 117, 35, 206, 60, 159, + 137, 9, 192, 146, 109, 207, 119, 195, 125, 236, 87, 84, 98, 123, + 94, 188, 203, 130, 16, 255, 13, 186, 49, 97, 237, 160, 225, 53, + 61, 177, 56, 74, 204, 13, 57, 235, 240, 176, 237, 197, 49, 111, + 176, 78, 24, 92, 247, 26, 188, 193, 226, 93, 55, 102, 241, 46, + 140, 14, 52, 16, 207, 223, 97, 245, 192, 111, 120, 184, 137, 64, + 35, 194, 218, 60, 190, 64, 8, 131, 255, 230, 250, 58, 22, 177, + 160, 169, 122, 84, 15, 26, 156, 181, 187, 81, 204, 66, 30, 187, + 158, 143, 88, 221, 237, 224, 58, 252, 36, 41, 70, 152, 31, 196, + 94, 157, 151, 88, 188, 235, 69, 172, 229, 69, 49, 96, 72, 127, + 209, 111, 244, 117, 167, 225, 69, 245, 150, 235, 181, 121, 88, 190, + 81, 39, 60, 63, 77, 11, 213, 137, 78, 24, 52, 186, 117, 158, + 244, 131, 36, 29, 249, 129, 250, 65, 152, 28, 93, 35, 168, 119, + 97, 221, 186, 106, 146, 206, 6, 33, 11, 226, 93, 30, 178, 182, + 27, 243, 208, 115, 91, 81, 66, 106, 156, 160, 120, 151, 19, 150, + 238, 189, 30, 212, 42, 247, 176, 37, 32, 6, 225, 10, 29, 74, + 243, 150, 31, 36, 191, 33, 221, 189, 56, 130, 17, 249, 2, 85, + 16, 70, 172, 237, 238, 179, 109, 14, 156, 210, 96, 113, 192, 184, + 223, 8, 194, 136, 3, 83, 116, 194, 160, 29, 196, 156, 9, 154, + 196, 17, 107, 240, 208, 187, 206, 27, 172, 25, 6, 109, 34, 168, + 16, 5, 205, 120, 15, 216, 68, 114, 16, 139, 58, 188, 14, 28, + 196, 58, 161, 7, 140, 21, 2, 239, 248, 130, 139, 162, 8, 251, + 78, 216, 198, 131, 213, 117, 182, 190, 246, 192, 198, 195, 139, 181, + 10, 171, 174, 179, 171, 181, 181, 87, 85, 151, 43, 203, 236, 210, + 35, 108, 227, 193, 10, 91, 90, 187, 250, 72, 173, 122, 249, 193, + 13, 246, 224, 218, 202, 114, 165, 182, 206, 22, 87, 151, 217, 210, + 218, 234, 70, 173, 122, 105, 115, 99, 173, 182, 78, 88, 113, 113, + 157, 85, 215, 139, 248, 203, 226, 234, 35, 172, 242, 234, 171, 181, + 202, 250, 58, 91, 171, 177, 234, 149, 171, 43, 213, 202, 50, 123, + 120, 177, 86, 91, 92, 221, 168, 86, 214, 75, 172, 186, 186, 180, + 178, 185, 92, 93, 189, 92, 98, 151, 54, 55, 216, 234, 218, 6, + 97, 43, 213, 43, 213, 141, 202, 50, 219, 88, 43, 225, 103, 15, + 182, 99, 107, 15, 176, 43, 149, 218, 210, 131, 139, 171, 27, 139, + 151, 170, 43, 213, 141, 71, 240, 131, 15, 84, 55, 86, 225, 99, + 15, 172, 213, 8, 91, 100, 87, 23, 107, 27, 213, 165, 205, 149, + 197, 26, 187, 186, 89, 187, 186, 182, 94, 97, 48, 178, 229, 234, + 250, 210, 202, 98, 245, 74, 101, 185, 204, 170, 171, 108, 117, 141, + 85, 94, 85, 89, 221, 96, 235, 15, 46, 174, 172, 244, 14, 148, + 176, 181, 135, 87, 43, 53, 232, 125, 122, 152, 236, 82, 133, 173, + 84, 23, 47, 173, 84, 224, 83, 56, 206, 229, 106, 173, 178, 180, + 1, 3, 74, 254, 90, 170, 46, 87, 86, 55, 22, 87, 74, 132, + 173, 95, 173, 44, 85, 23, 87, 74, 172, 242, 234, 202, 149, 171, + 43, 139, 181, 71, 74, 18, 233, 122, 229, 71, 54, 43, 171, 27, + 213, 197, 21, 182, 188, 120, 101, 241, 114, 101, 157, 205, 188, 16, + 85, 174, 214, 214, 150, 54, 107, 149, 43, 208, 235, 181, 7, 216, + 250, 230, 165, 245, 141, 234, 198, 230, 70, 133, 93, 94, 91, 91, + 70, 98, 175, 87, 106, 175, 170, 46, 85, 214, 47, 178, 149, 181, + 117, 36, 216, 230, 122, 165, 68, 216, 242, 226, 198, 34, 126, 250, + 106, 109, 237, 129, 234, 198, 250, 69, 248, 251, 210, 230, 122, 21, + 9, 87, 93, 221, 168, 212, 106, 155, 120, 74, 51, 203, 30, 92, + 123, 184, 242, 170, 74, 141, 45, 45, 110, 174, 87, 150, 145, 194, + 107, 171, 48, 90, 224, 149, 202, 90, 237, 17, 64, 11, 116, 192, + 25, 40, 177, 135, 31, 172, 108, 60, 88, 169, 1, 81, 145, 90, + 139, 64, 6, 48, 233, 150, 54, 210, 213, 214, 106, 108, 99, 173, + 182, 65, 82, 227, 100, 171, 149, 203, 43, 213, 203, 149, 213, 165, + 10, 252, 188, 6, 104, 30, 174, 174, 87, 102, 217, 98, 173, 186, + 14, 21, 170, 248, 97, 246, 240, 226, 35, 108, 109, 19, 71, 13, + 19, 181, 185, 94, 33, 226, 239, 20, 235, 150, 112, 62, 89, 245, + 1, 182, 184, 252, 170, 42, 244, 92, 214, 190, 186, 182, 190, 94, + 149, 236, 130, 100, 91, 122, 80, 210, 188, 76, 22, 254, 196, 100, + 139, 221, 120, 55, 8, 47, 176, 107, 220, 143, 3, 255, 31, 37, + 130, 157, 205, 188, 18, 139, 216, 171, 220, 176, 225, 206, 18, 198, + 46, 185, 176, 50, 3, 159, 5, 161, 183, 227, 249, 110, 235, 224, + 6, 212, 224, 145, 183, 227, 179, 237, 125, 194, 216, 186, 235, 63, + 238, 238, 179, 203, 187, 188, 237, 238, 185, 113, 137, 61, 196, 155, + 77, 182, 204, 93, 16, 231, 126, 67, 72, 154, 8, 23, 225, 46, + 103, 210, 55, 20, 9, 225, 228, 69, 12, 182, 109, 38, 246, 203, + 109, 33, 5, 27, 188, 233, 249, 82, 192, 53, 131, 174, 223, 128, + 186, 98, 71, 198, 218, 81, 25, 22, 192, 117, 183, 229, 53, 210, + 197, 172, 238, 250, 32, 87, 226, 208, 245, 163, 22, 104, 24, 172, + 225, 133, 188, 30, 183, 246, 65, 204, 184, 236, 144, 112, 38, 162, + 165, 136, 235, 239, 75, 153, 232, 249, 98, 11, 5, 97, 57, 195, + 203, 59, 101, 93, 39, 20, 234, 16, 136, 52, 230, 181, 59, 65, + 24, 71, 179, 101, 66, 114, 196, 48, 169, 53, 59, 48, 5, 127, + 229, 168, 117, 102, 96, 153, 12, 18, 51, 55, 36, 254, 20, 133, + 165, 129, 18, 22, 26, 226, 79, 81, 56, 63, 112, 30, 11, 229, + 159, 162, 176, 60, 112, 15, 22, 158, 22, 127, 138, 194, 179, 3, + 39, 176, 240, 148, 248, 83, 20, 158, 27, 56, 142, 133, 199, 197, + 159, 162, 240, 206, 129, 99, 228, 199, 137, 153, 27, 196, 63, 11, + 49, 235, 15, 29, 19, 27, 207, 54, 103, 202, 31, 222, 128, 253, + 8, 196, 40, 111, 176, 109, 94, 119, 97, 11, 15, 181, 98, 50, + 191, 13, 236, 64, 152, 219, 218, 9, 66, 47, 222, 109, 71, 172, + 17, 248, 211, 49, 219, 11, 194, 107, 172, 209, 5, 165, 157, 109, + 7, 65, 28, 197, 161, 219, 233, 120, 254, 78, 153, 144, 199, 137, + 105, 15, 80, 251, 101, 3, 23, 140, 194, 163, 56, 239, 74, 125, + 96, 245, 160, 221, 241, 90, 60, 196, 233, 18, 71, 52, 7, 230, + 102, 157, 199, 184, 101, 184, 158, 15, 216, 129, 41, 68, 223, 137, + 96, 0, 230, 197, 172, 227, 134, 17, 176, 2, 33, 196, 178, 7, + 12, 106, 189, 44, 119, 132, 12, 17, 219, 30, 48, 7, 168, 117, + 175, 57, 67, 134, 137, 3, 128, 13, 16, 81, 80, 134, 90, 247, + 14, 221, 166, 32, 131, 90, 247, 30, 63, 169, 32, 139, 90, 247, + 222, 62, 77, 206, 18, 211, 54, 168, 125, 223, 192, 107, 140, 194, + 73, 182, 44, 89, 51, 98, 46, 246, 189, 197, 99, 158, 102, 59, + 217, 3, 195, 160, 214, 125, 185, 163, 228, 94, 98, 219, 6, 244, + 224, 21, 230, 209, 98, 73, 48, 38, 236, 133, 37, 22, 242, 22, + 154, 74, 192, 140, 97, 16, 196, 41, 165, 36, 14, 57, 23, 61, + 52, 176, 191, 175, 48, 53, 228, 80, 235, 21, 67, 227, 10, 50, + 168, 245, 10, 122, 179, 130, 44, 106, 189, 226, 72, 129, 204, 225, + 39, 13, 106, 221, 111, 222, 86, 188, 149, 33, 203, 22, 155, 65, + 80, 44, 225, 63, 229, 109, 55, 44, 150, 24, 143, 235, 101, 133, + 213, 176, 161, 178, 134, 28, 106, 221, 175, 191, 1, 3, 185, 159, + 30, 81, 144, 69, 173, 251, 143, 221, 74, 238, 196, 111, 152, 212, + 186, 100, 158, 40, 76, 179, 85, 181, 187, 203, 233, 192, 197, 0, + 236, 179, 159, 44, 106, 253, 53, 211, 134, 102, 26, 114, 168, 117, + 73, 127, 13, 186, 125, 137, 30, 83, 144, 69, 173, 75, 199, 25, + 249, 17, 252, 154, 69, 173, 101, 115, 166, 176, 204, 48, 82, 66, + 124, 15, 88, 65, 4, 6, 38, 31, 149, 125, 144, 202, 142, 14, + 3, 20, 250, 18, 170, 84, 186, 43, 150, 13, 56, 53, 228, 80, + 107, 121, 40, 175, 32, 131, 90, 203, 227, 69, 5, 193, 215, 79, + 79, 147, 39, 177, 43, 54, 181, 46, 155, 183, 23, 218, 253, 93, + 217, 227, 238, 181, 23, 215, 145, 50, 97, 15, 4, 161, 84, 149, + 230, 81, 97, 7, 201, 218, 246, 118, 66, 33, 106, 2, 191, 181, + 95, 102, 203, 1, 232, 124, 160, 27, 233, 62, 219, 248, 113, 13, + 57, 212, 186, 172, 251, 108, 27, 212, 186, 60, 206, 20, 100, 81, + 235, 242, 201, 211, 228, 110, 236, 179, 67, 173, 135, 204, 82, 97, + 22, 181, 253, 56, 232, 204, 163, 95, 166, 71, 186, 166, 101, 176, + 254, 158, 99, 67, 67, 13, 101, 168, 245, 208, 80, 65, 65, 6, + 181, 30, 58, 58, 173, 32, 139, 90, 15, 205, 157, 193, 85, 103, + 152, 25, 106, 189, 210, 156, 151, 63, 101, 108, 128, 20, 146, 12, + 252, 38, 87, 157, 97, 102, 12, 106, 189, 242, 248, 140, 130, 44, + 106, 189, 242, 76, 73, 34, 201, 82, 107, 197, 44, 203, 159, 178, + 54, 64, 10, 73, 54, 67, 173, 149, 161, 19, 10, 50, 168, 181, + 82, 156, 85, 144, 69, 173, 149, 210, 188, 68, 146, 163, 214, 21, + 141, 36, 103, 3, 164, 144, 228, 50, 212, 186, 50, 116, 92, 65, + 6, 181, 174, 48, 133, 36, 103, 81, 235, 138, 70, 50, 72, 173, + 53, 243, 164, 252, 105, 208, 6, 72, 33, 25, 204, 80, 107, 109, + 72, 45, 195, 65, 131, 90, 107, 183, 168, 193, 13, 90, 212, 90, + 59, 81, 36, 255, 195, 64, 44, 132, 90, 155, 230, 217, 194, 127, + 55, 216, 134, 32, 52, 111, 53, 148, 104, 139, 152, 10, 206, 233, + 217, 115, 220, 109, 216, 107, 128, 133, 244, 254, 155, 178, 93, 202, + 132, 61, 18, 116, 81, 135, 142, 220, 38, 111, 237, 179, 144, 183, + 193, 122, 193, 137, 228, 126, 236, 133, 92, 126, 70, 109, 91, 187, + 110, 216, 6, 49, 26, 118, 253, 216, 107, 115, 194, 154, 93, 191, + 46, 62, 236, 197, 251, 138, 149, 147, 109, 34, 98, 243, 243, 88, + 148, 238, 149, 23, 49, 159, 243, 6, 42, 6, 173, 125, 220, 249, + 165, 157, 8, 166, 5, 139, 131, 160, 21, 105, 22, 34, 54, 12, + 91, 67, 25, 106, 109, 14, 41, 137, 66, 12, 106, 109, 22, 230, + 20, 100, 81, 107, 115, 190, 76, 94, 139, 212, 26, 162, 214, 35, + 230, 109, 133, 171, 184, 99, 136, 8, 81, 189, 232, 83, 2, 87, + 252, 220, 237, 200, 101, 135, 254, 33, 180, 2, 89, 17, 171, 45, + 20, 81, 241, 16, 192, 29, 69, 221, 173, 33, 27, 240, 107, 200, + 161, 214, 35, 90, 16, 13, 25, 212, 122, 132, 78, 41, 200, 162, + 214, 35, 71, 111, 37, 211, 196, 180, 77, 106, 191, 118, 224, 199, + 140, 194, 209, 158, 173, 64, 234, 49, 12, 236, 125, 185, 5, 128, + 44, 123, 109, 238, 22, 228, 31, 19, 182, 128, 71, 205, 163, 136, + 207, 68, 161, 254, 168, 252, 178, 137, 66, 253, 81, 249, 101, 19, + 133, 250, 163, 82, 168, 155, 40, 212, 31, 61, 82, 144, 72, 12, + 106, 61, 102, 206, 201, 159, 64, 106, 63, 166, 145, 24, 25, 106, + 61, 38, 57, 217, 68, 169, 253, 24, 59, 173, 32, 139, 90, 143, + 205, 204, 74, 36, 38, 181, 92, 185, 28, 76, 20, 198, 174, 70, + 2, 139, 214, 213, 72, 224, 115, 174, 92, 14, 38, 10, 99, 87, + 46, 7, 4, 234, 230, 25, 249, 19, 136, 209, 186, 70, 98, 101, + 168, 85, 151, 34, 194, 68, 49, 90, 63, 122, 187, 130, 160, 221, + 236, 156, 68, 98, 83, 171, 33, 69, 132, 137, 114, 173, 161, 145, + 216, 25, 106, 53, 164, 136, 48, 81, 174, 53, 164, 136, 48, 81, + 174, 53, 206, 148, 200, 48, 32, 177, 6, 168, 221, 52, 175, 89, + 226, 55, 11, 168, 215, 36, 83, 228, 40, 201, 0, 4, 100, 223, + 177, 111, 45, 14, 131, 53, 218, 234, 70, 30, 10, 255, 81, 146, + 21, 63, 218, 240, 235, 112, 2, 59, 212, 218, 25, 161, 9, 108, + 80, 107, 103, 98, 42, 129, 45, 106, 237, 28, 61, 166, 145, 27, + 212, 218, 181, 143, 22, 135, 89, 229, 137, 131, 200, 97, 122, 118, + 83, 200, 97, 91, 221, 77, 33, 135, 41, 218, 157, 184, 57, 129, + 45, 106, 237, 30, 41, 144, 17, 137, 220, 164, 214, 227, 246, 89, + 253, 51, 16, 235, 241, 20, 58, 152, 170, 199, 71, 138, 9, 108, + 80, 235, 241, 147, 115, 9, 108, 81, 235, 241, 249, 178, 164, 180, + 67, 173, 150, 158, 115, 144, 232, 45, 77, 105, 144, 232, 45, 185, + 28, 77, 148, 232, 173, 130, 154, 115, 144, 232, 45, 61, 231, 25, + 106, 249, 230, 89, 249, 19, 72, 116, 95, 35, 1, 137, 238, 107, + 198, 1, 137, 238, 51, 197, 167, 32, 209, 125, 221, 147, 44, 181, + 58, 166, 98, 7, 144, 232, 29, 141, 4, 36, 122, 71, 247, 4, + 36, 122, 167, 112, 66, 65, 22, 181, 58, 167, 78, 147, 15, 27, + 56, 233, 6, 181, 187, 230, 19, 86, 225, 167, 12, 134, 113, 89, + 32, 22, 148, 235, 138, 197, 238, 14, 19, 209, 83, 81, 153, 213, + 14, 41, 69, 113, 9, 251, 170, 114, 59, 128, 248, 66, 33, 25, + 177, 32, 100, 218, 43, 204, 48, 244, 76, 111, 225, 145, 219, 214, + 6, 75, 10, 177, 172, 212, 118, 247, 209, 81, 196, 130, 235, 60, + 108, 185, 29, 41, 102, 76, 11, 38, 186, 75, 110, 145, 92, 131, + 202, 224, 245, 27, 176, 164, 80, 247, 174, 235, 105, 22, 10, 223, + 117, 205, 53, 66, 229, 187, 174, 89, 82, 40, 125, 215, 53, 75, + 162, 218, 183, 119, 3, 150, 20, 122, 222, 94, 10, 57, 176, 228, + 94, 10, 57, 244, 116, 79, 179, 164, 208, 246, 246, 180, 240, 201, + 81, 107, 223, 44, 201, 249, 128, 109, 116, 95, 207, 28, 108, 163, + 251, 67, 83, 10, 50, 168, 181, 127, 100, 90, 65, 22, 181, 246, + 231, 206, 144, 55, 224, 204, 193, 62, 250, 122, 243, 116, 161, 155, + 208, 79, 236, 78, 232, 32, 42, 177, 189, 93, 175, 190, 123, 200, + 252, 168, 233, 57, 108, 42, 192, 252, 219, 241, 174, 115, 95, 120, + 160, 160, 177, 216, 148, 120, 194, 19, 129, 95, 87, 42, 141, 137, + 219, 247, 235, 117, 231, 7, 29, 106, 189, 94, 139, 95, 216, 190, + 95, 79, 21, 39, 195, 246, 253, 250, 226, 41, 50, 68, 64, 234, + 56, 63, 62, 240, 102, 195, 64, 225, 14, 98, 237, 199, 115, 183, + 146, 53, 98, 219, 150, 57, 64, 237, 127, 106, 152, 23, 10, 139, + 194, 182, 1, 83, 36, 100, 81, 28, 132, 92, 109, 234, 104, 163, + 52, 2, 30, 129, 169, 20, 242, 122, 176, 227, 123, 79, 114, 182, + 203, 67, 94, 102, 235, 156, 107, 197, 116, 132, 56, 128, 208, 70, + 140, 26, 204, 0, 56, 116, 155, 2, 13, 0, 143, 223, 161, 64, + 11, 192, 187, 239, 37, 175, 129, 142, 57, 212, 126, 147, 97, 30, + 41, 92, 97, 75, 24, 137, 22, 161, 101, 133, 106, 30, 103, 245, + 110, 20, 7, 237, 164, 79, 126, 194, 236, 82, 137, 245, 162, 132, + 197, 211, 253, 2, 97, 107, 57, 3, 128, 124, 100, 74, 124, 216, + 129, 126, 188, 201, 24, 25, 87, 160, 9, 224, 77, 83, 228, 14, + 2, 210, 60, 243, 22, 99, 224, 47, 13, 163, 112, 186, 103, 163, + 76, 116, 17, 207, 79, 246, 205, 50, 33, 67, 196, 178, 193, 206, + 122, 139, 145, 59, 70, 70, 137, 109, 219, 246, 0, 205, 188, 213, + 48, 63, 100, 88, 248, 1, 27, 204, 58, 251, 173, 70, 118, 136, + 172, 147, 140, 45, 44, 59, 251, 237, 134, 61, 89, 88, 98, 231, + 64, 35, 209, 179, 13, 6, 44, 15, 195, 32, 140, 202, 132, 173, + 133, 13, 48, 227, 35, 182, 199, 189, 80, 252, 182, 235, 193, 228, + 120, 117, 183, 5, 70, 124, 20, 248, 160, 171, 140, 145, 172, 64, + 106, 32, 214, 177, 164, 192, 132, 2, 58, 65, 70, 229, 103, 13, + 106, 255, 255, 12, 123, 66, 87, 48, 68, 193, 104, 82, 96, 66, + 193, 56, 37, 123, 178, 133, 73, 237, 167, 12, 123, 162, 176, 195, + 86, 131, 152, 189, 198, 219, 121, 141, 187, 195, 184, 15, 26, 92, + 163, 204, 216, 170, 60, 54, 211, 2, 42, 118, 175, 113, 118, 254, + 28, 219, 222, 143, 121, 84, 102, 108, 51, 226, 44, 21, 112, 204, + 188, 38, 97, 234, 172, 45, 173, 240, 180, 188, 107, 188, 181, 159, + 26, 12, 244, 245, 169, 116, 215, 68, 87, 198, 169, 30, 140, 69, + 237, 119, 26, 246, 164, 174, 0, 178, 245, 157, 233, 225, 91, 38, + 20, 208, 9, 61, 24, 155, 218, 207, 252, 208, 6, 115, 199, 194, + 139, 31, 12, 176, 199, 51, 233, 193, 128, 50, 246, 76, 122, 48, + 14, 181, 223, 101, 216, 55, 233, 10, 142, 129, 5, 249, 164, 192, + 132, 130, 137, 73, 221, 34, 67, 237, 103, 211, 45, 50, 6, 22, + 36, 45, 50, 38, 20, 164, 90, 100, 169, 253, 110, 195, 166, 186, + 66, 214, 192, 130, 145, 164, 192, 132, 130, 252, 184, 110, 145, 163, + 246, 255, 63, 77, 226, 156, 129, 5, 9, 137, 115, 38, 20, 208, + 9, 242, 5, 67, 54, 25, 164, 246, 207, 0, 103, 127, 214, 96, + 27, 238, 206, 124, 131, 183, 188, 182, 7, 218, 173, 62, 240, 44, + 19, 118, 57, 12, 186, 29, 84, 57, 129, 189, 147, 19, 120, 84, + 119, 65, 126, 38, 74, 177, 231, 11, 149, 249, 142, 50, 123, 48, + 216, 227, 215, 121, 88, 18, 110, 188, 59, 8, 24, 172, 45, 174, + 79, 4, 34, 22, 237, 6, 221, 86, 131, 69, 177, 215, 106, 129, + 16, 117, 183, 91, 232, 165, 64, 185, 134, 226, 119, 7, 63, 188, + 135, 182, 5, 154, 4, 240, 69, 194, 226, 144, 187, 177, 252, 81, + 202, 107, 55, 98, 93, 255, 154, 31, 236, 249, 178, 36, 53, 157, + 131, 6, 14, 50, 153, 206, 65, 19, 10, 198, 39, 200, 188, 164, + 2, 161, 246, 115, 134, 125, 115, 241, 86, 182, 194, 253, 157, 120, + 247, 112, 58, 232, 246, 196, 192, 250, 201, 220, 17, 19, 10, 38, + 110, 34, 39, 37, 194, 33, 106, 191, 15, 200, 58, 193, 86, 249, + 30, 16, 229, 58, 15, 113, 167, 95, 72, 161, 25, 50, 176, 86, + 210, 175, 33, 19, 10, 198, 19, 1, 48, 76, 237, 159, 75, 51, + 205, 176, 129, 5, 201, 132, 14, 155, 80, 64, 19, 166, 25, 161, + 246, 251, 211, 34, 99, 196, 192, 130, 132, 105, 70, 76, 40, 200, + 39, 172, 60, 74, 237, 15, 24, 246, 45, 186, 194, 168, 129, 5, + 227, 73, 129, 9, 5, 147, 55, 235, 22, 99, 212, 254, 215, 233, + 22, 99, 6, 22, 36, 45, 198, 76, 40, 152, 188, 153, 76, 203, + 22, 121, 106, 255, 188, 97, 223, 84, 188, 5, 214, 100, 212, 179, + 148, 133, 227, 78, 181, 204, 27, 88, 51, 25, 96, 222, 132, 2, + 58, 169, 81, 141, 83, 251, 131, 47, 10, 213, 184, 129, 53, 19, + 84, 227, 38, 20, 32, 173, 64, 232, 27, 52, 243, 11, 134, 249, + 75, 90, 232, 131, 112, 253, 5, 35, 59, 76, 230, 240, 75, 160, + 63, 217, 255, 155, 97, 223, 82, 40, 220, 80, 232, 171, 143, 161, + 186, 4, 149, 105, 82, 96, 66, 193, 77, 138, 104, 160, 48, 217, + 191, 152, 16, 13, 117, 32, 40, 72, 90, 128, 44, 255, 197, 116, + 11, 147, 218, 31, 73, 183, 0, 20, 31, 73, 183, 16, 53, 110, + 186, 25, 247, 76, 27, 250, 251, 203, 134, 121, 84, 12, 7, 119, + 246, 95, 86, 59, 187, 13, 250, 157, 253, 203, 198, 208, 184, 2, + 13, 0, 233, 205, 10, 180, 0, 60, 82, 144, 152, 12, 106, 127, + 212, 48, 143, 201, 31, 13, 27, 65, 133, 201, 112, 0, 28, 202, + 43, 16, 43, 143, 223, 162, 64, 11, 192, 194, 81, 137, 201, 164, + 246, 199, 146, 62, 129, 68, 255, 88, 130, 9, 100, 226, 199, 18, + 76, 240, 217, 143, 25, 227, 170, 79, 176, 97, 124, 12, 250, 244, + 94, 3, 81, 89, 212, 254, 21, 208, 55, 222, 110, 176, 106, 147, + 233, 187, 83, 48, 53, 17, 143, 229, 89, 165, 207, 121, 67, 105, + 116, 17, 143, 203, 12, 234, 110, 7, 120, 180, 232, 201, 115, 75, + 213, 146, 160, 240, 79, 218, 106, 255, 180, 143, 106, 190, 190, 189, + 83, 98, 233, 187, 63, 160, 184, 39, 119, 131, 202, 106, 44, 150, + 141, 221, 211, 96, 6, 192, 161, 49, 5, 26, 0, 230, 39, 21, + 136, 99, 185, 101, 138, 252, 239, 38, 14, 205, 166, 246, 111, 24, + 38, 43, 124, 208, 68, 103, 157, 178, 241, 161, 183, 220, 239, 182, + 177, 203, 145, 236, 165, 23, 245, 156, 129, 194, 223, 232, 11, 192, + 145, 170, 95, 8, 195, 251, 34, 145, 56, 85, 117, 217, 116, 121, + 186, 4, 138, 161, 23, 177, 102, 183, 213, 218, 159, 127, 93, 215, + 109, 97, 56, 100, 153, 177, 181, 120, 151, 135, 123, 94, 196, 75, + 108, 233, 204, 153, 121, 216, 13, 89, 84, 15, 58, 158, 191, 67, + 88, 216, 109, 201, 93, 82, 157, 155, 54, 61, 121, 248, 139, 251, + 193, 140, 87, 230, 101, 214, 244, 194, 72, 248, 142, 196, 181, 83, + 209, 99, 165, 125, 65, 191, 73, 50, 42, 36, 186, 27, 214, 119, + 121, 3, 198, 196, 253, 164, 30, 234, 180, 220, 143, 75, 44, 240, + 25, 108, 57, 1, 22, 134, 65, 16, 19, 166, 67, 161, 103, 53, + 213, 109, 65, 57, 13, 58, 0, 106, 38, 135, 109, 252, 55, 12, + 170, 184, 207, 182, 0, 188, 237, 56, 249, 39, 72, 116, 135, 218, + 191, 109, 152, 199, 11, 29, 164, 121, 162, 158, 62, 63, 157, 217, + 54, 247, 252, 29, 38, 111, 227, 1, 249, 170, 64, 86, 2, 226, + 33, 104, 93, 23, 59, 96, 98, 57, 184, 190, 207, 67, 216, 156, + 52, 215, 233, 190, 59, 54, 118, 64, 131, 216, 31, 221, 119, 80, + 40, 126, 219, 160, 5, 5, 90, 0, 222, 122, 27, 121, 74, 112, + 76, 134, 218, 159, 50, 204, 83, 133, 55, 8, 142, 241, 187, 109, + 30, 122, 117, 197, 40, 218, 209, 215, 227, 205, 139, 249, 19, 226, + 224, 159, 71, 250, 84, 94, 142, 12, 149, 33, 233, 42, 222, 14, + 130, 22, 119, 129, 14, 197, 56, 236, 242, 34, 48, 124, 17, 131, + 239, 138, 178, 134, 136, 152, 234, 255, 142, 188, 127, 40, 62, 3, + 191, 160, 77, 48, 3, 139, 145, 71, 117, 183, 35, 72, 227, 250, + 251, 108, 207, 221, 159, 85, 31, 3, 85, 173, 15, 209, 146, 174, + 47, 186, 37, 226, 70, 176, 38, 123, 197, 125, 236, 252, 194, 203, + 144, 135, 100, 37, 77, 207, 140, 141, 52, 209, 160, 3, 160, 166, + 39, 168, 91, 159, 50, 232, 113, 5, 90, 0, 22, 79, 146, 127, + 38, 132, 75, 150, 218, 159, 49, 204, 19, 133, 235, 176, 138, 80, + 36, 128, 161, 23, 73, 119, 100, 131, 163, 63, 208, 101, 120, 129, + 82, 205, 112, 250, 164, 104, 191, 195, 167, 35, 150, 92, 100, 38, + 194, 249, 206, 210, 238, 87, 79, 248, 239, 64, 87, 21, 116, 119, + 99, 209, 66, 15, 33, 107, 99, 55, 52, 232, 0, 168, 229, 35, + 232, 127, 159, 49, 198, 149, 88, 206, 90, 0, 30, 103, 228, 239, + 196, 16, 114, 212, 254, 125, 24, 194, 159, 27, 236, 161, 245, 181, + 213, 20, 231, 170, 30, 148, 209, 106, 68, 162, 74, 169, 9, 6, + 239, 129, 19, 178, 178, 148, 36, 4, 150, 124, 200, 118, 93, 81, + 213, 101, 69, 125, 99, 180, 40, 45, 59, 88, 166, 9, 254, 146, + 28, 19, 254, 52, 29, 137, 47, 17, 182, 39, 213, 59, 16, 32, + 229, 180, 180, 241, 226, 105, 208, 38, 27, 221, 186, 12, 181, 16, + 49, 37, 128, 106, 58, 18, 253, 223, 222, 7, 50, 95, 231, 97, + 140, 210, 200, 139, 65, 36, 212, 221, 54, 111, 45, 185, 81, 178, + 150, 114, 54, 14, 94, 131, 14, 128, 122, 238, 65, 13, 254, 253, + 68, 14, 228, 44, 0, 111, 99, 114, 139, 26, 164, 246, 231, 12, + 243, 148, 252, 113, 208, 70, 80, 97, 26, 204, 0, 56, 164, 118, + 55, 208, 36, 63, 103, 76, 41, 46, 26, 180, 0, 44, 158, 36, + 31, 29, 68, 84, 132, 218, 127, 97, 152, 167, 11, 239, 31, 68, + 18, 134, 93, 158, 8, 19, 87, 234, 197, 172, 168, 188, 239, 197, + 50, 123, 24, 164, 159, 254, 69, 179, 137, 170, 1, 36, 2, 109, + 215, 173, 95, 139, 152, 88, 183, 117, 206, 64, 29, 13, 27, 45, + 30, 201, 147, 48, 104, 36, 221, 193, 2, 97, 223, 21, 92, 20, + 101, 73, 95, 68, 3, 181, 217, 109, 243, 86, 0, 12, 28, 104, + 238, 142, 3, 194, 34, 111, 7, 37, 70, 192, 130, 86, 67, 117, + 175, 46, 205, 124, 156, 100, 221, 27, 68, 142, 145, 254, 168, 24, + 245, 114, 27, 8, 70, 185, 102, 34, 38, 180, 115, 23, 72, 81, + 140, 246, 253, 120, 151, 199, 94, 189, 40, 126, 47, 201, 144, 162, + 3, 253, 243, 226, 136, 69, 65, 11, 3, 173, 112, 229, 204, 112, + 183, 190, 171, 186, 164, 135, 40, 26, 237, 240, 56, 194, 22, 240, + 33, 253, 9, 241, 133, 217, 50, 91, 87, 37, 178, 83, 17, 227, + 79, 120, 81, 156, 156, 156, 169, 147, 8, 116, 235, 136, 46, 53, + 196, 193, 152, 186, 134, 134, 242, 107, 241, 106, 245, 48, 100, 90, + 127, 8, 27, 60, 4, 203, 161, 25, 131, 236, 111, 181, 88, 49, + 228, 110, 75, 142, 20, 35, 18, 210, 187, 188, 48, 87, 74, 7, + 102, 77, 57, 113, 234, 96, 236, 136, 15, 71, 188, 237, 250, 48, + 34, 17, 115, 87, 130, 137, 130, 57, 240, 3, 127, 62, 228, 29, + 142, 54, 89, 47, 94, 230, 182, 246, 220, 125, 57, 71, 122, 214, + 180, 113, 6, 43, 10, 237, 47, 2, 98, 206, 3, 171, 78, 8, + 61, 253, 169, 6, 143, 93, 175, 5, 156, 182, 183, 203, 117, 8, + 22, 74, 134, 189, 48, 136, 121, 138, 159, 97, 167, 240, 131, 24, + 15, 74, 188, 72, 197, 69, 116, 35, 222, 236, 182, 144, 57, 194, + 160, 235, 55, 230, 227, 208, 195, 243, 250, 212, 249, 186, 56, 96, + 65, 178, 212, 3, 63, 242, 34, 12, 130, 102, 123, 156, 160, 28, + 62, 48, 166, 254, 201, 101, 110, 43, 10, 74, 140, 95, 231, 48, + 149, 65, 119, 103, 87, 106, 59, 48, 119, 33, 127, 93, 215, 11, + 57, 216, 141, 193, 1, 58, 108, 200, 229, 201, 49, 156, 203, 109, + 181, 246, 229, 185, 170, 235, 199, 58, 42, 33, 78, 156, 109, 117, + 215, 159, 134, 53, 201, 91, 45, 230, 53, 181, 159, 201, 75, 159, + 205, 4, 33, 115, 125, 212, 220, 74, 44, 10, 160, 39, 200, 26, + 114, 38, 212, 124, 146, 254, 65, 0, 99, 160, 169, 188, 208, 199, + 215, 145, 226, 66, 16, 195, 98, 141, 180, 220, 157, 82, 186, 123, + 251, 204, 109, 133, 220, 109, 236, 235, 105, 36, 9, 18, 84, 2, + 31, 235, 189, 45, 254, 152, 150, 157, 196, 70, 169, 165, 65, 7, + 64, 173, 185, 130, 169, 251, 23, 70, 94, 73, 60, 98, 1, 88, + 60, 69, 138, 4, 180, 173, 204, 87, 140, 129, 175, 27, 70, 97, + 178, 199, 245, 166, 70, 51, 68, 44, 27, 244, 152, 175, 24, 185, + 99, 40, 108, 29, 176, 81, 190, 170, 236, 1, 7, 109, 148, 175, + 170, 79, 59, 104, 163, 124, 85, 137, 109, 7, 109, 148, 175, 42, + 27, 197, 65, 27, 229, 171, 202, 70, 113, 192, 88, 248, 154, 18, + 219, 14, 218, 40, 95, 75, 48, 25, 25, 0, 165, 216, 118, 208, + 70, 249, 154, 18, 219, 14, 218, 40, 95, 3, 177, 61, 77, 76, + 59, 67, 51, 127, 99, 12, 252, 75, 211, 40, 28, 73, 15, 194, + 79, 52, 111, 57, 18, 208, 32, 254, 198, 200, 9, 203, 38, 3, + 35, 249, 166, 26, 73, 6, 71, 242, 77, 245, 253, 12, 142, 228, + 155, 106, 36, 25, 28, 201, 55, 213, 72, 50, 56, 146, 111, 170, + 145, 100, 96, 36, 127, 107, 152, 101, 249, 35, 140, 228, 111, 19, + 76, 48, 146, 191, 53, 134, 78, 42, 16, 43, 159, 154, 85, 160, + 5, 96, 105, 94, 98, 50, 169, 253, 109, 195, 84, 117, 193, 172, + 248, 118, 130, 9, 116, 198, 111, 27, 67, 170, 19, 240, 217, 111, + 27, 183, 220, 166, 64, 11, 192, 19, 69, 242, 17, 80, 48, 51, + 214, 0, 205, 188, 209, 52, 223, 108, 90, 133, 159, 49, 15, 57, + 250, 80, 10, 167, 240, 162, 165, 14, 41, 164, 91, 237, 176, 131, + 15, 238, 199, 161, 215, 119, 202, 1, 68, 62, 244, 136, 163, 239, + 132, 131, 173, 130, 168, 145, 225, 184, 98, 197, 54, 188, 40, 246, + 252, 122, 44, 52, 135, 231, 205, 205, 34, 62, 233, 198, 184, 157, + 66, 107, 117, 32, 194, 162, 110, 125, 87, 253, 132, 2, 203, 237, + 116, 194, 160, 19, 122, 110, 44, 206, 184, 165, 182, 140, 61, 150, + 167, 220, 158, 31, 223, 177, 64, 88, 35, 104, 187, 158, 47, 151, + 81, 198, 130, 57, 126, 163, 73, 142, 146, 99, 36, 3, 32, 48, + 200, 63, 51, 15, 156, 191, 128, 237, 158, 17, 71, 130, 240, 243, + 112, 82, 224, 64, 193, 8, 77, 10, 12, 40, 152, 152, 74, 10, + 44, 40, 56, 122, 76, 127, 193, 160, 246, 155, 76, 60, 132, 57, + 236, 11, 192, 72, 111, 74, 127, 1, 12, 247, 55, 165, 191, 96, + 32, 130, 137, 155, 147, 2, 11, 10, 142, 20, 196, 233, 87, 6, + 120, 226, 109, 166, 121, 238, 240, 211, 175, 27, 178, 64, 239, 15, + 253, 172, 64, 64, 167, 195, 181, 37, 127, 239, 103, 7, 6, 250, + 179, 43, 162, 83, 110, 200, 26, 36, 197, 27, 130, 129, 193, 0, + 127, 155, 169, 185, 29, 12, 240, 183, 153, 67, 199, 20, 104, 0, + 120, 235, 25, 5, 226, 200, 202, 103, 73, 11, 199, 105, 83, 251, + 29, 166, 121, 170, 240, 104, 242, 185, 164, 135, 55, 60, 49, 10, + 185, 208, 104, 15, 61, 20, 34, 135, 157, 10, 137, 143, 219, 226, + 115, 26, 116, 0, 212, 178, 2, 140, 214, 119, 152, 210, 80, 201, + 160, 209, 250, 14, 179, 120, 146, 156, 39, 166, 157, 165, 153, 159, + 52, 7, 222, 109, 246, 199, 135, 137, 126, 170, 179, 14, 33, 186, + 164, 212, 2, 163, 225, 39, 205, 156, 80, 118, 179, 192, 148, 79, + 155, 82, 106, 101, 145, 9, 159, 86, 61, 201, 34, 11, 62, 173, + 122, 146, 69, 6, 124, 218, 148, 82, 43, 139, 236, 247, 180, 41, + 165, 86, 22, 152, 239, 25, 83, 250, 136, 178, 200, 108, 207, 36, + 152, 128, 213, 158, 49, 165, 229, 146, 69, 70, 123, 198, 148, 62, + 162, 44, 178, 217, 51, 166, 244, 17, 101, 65, 106, 61, 107, 154, + 51, 242, 71, 152, 140, 103, 19, 76, 232, 55, 55, 135, 84, 143, + 225, 179, 207, 154, 199, 78, 42, 208, 2, 240, 246, 105, 114, 138, + 152, 118, 142, 102, 126, 202, 28, 248, 87, 166, 81, 184, 185, 135, + 58, 242, 114, 186, 36, 8, 24, 3, 63, 101, 230, 110, 195, 143, + 231, 128, 32, 239, 85, 4, 201, 33, 65, 222, 171, 62, 158, 67, + 130, 188, 87, 17, 36, 135, 4, 121, 175, 34, 72, 14, 9, 242, + 94, 69, 144, 28, 244, 236, 167, 77, 179, 36, 127, 4, 130, 252, + 116, 130, 9, 196, 248, 79, 155, 67, 76, 129, 88, 249, 196, 180, + 2, 45, 0, 231, 206, 72, 76, 38, 181, 159, 51, 205, 219, 229, + 143, 64, 144, 231, 18, 76, 64, 144, 231, 204, 161, 35, 10, 52, + 0, 44, 156, 80, 160, 5, 224, 169, 211, 228, 28, 49, 237, 65, + 154, 249, 57, 115, 224, 223, 152, 70, 161, 216, 23, 67, 18, 239, + 6, 13, 97, 209, 246, 18, 7, 236, 155, 159, 51, 115, 183, 98, + 71, 6, 129, 56, 239, 87, 196, 25, 68, 226, 188, 95, 117, 100, + 16, 137, 243, 126, 69, 156, 65, 36, 206, 251, 21, 113, 6, 145, + 56, 239, 7, 226, 60, 107, 32, 42, 131, 218, 31, 52, 205, 19, + 133, 127, 97, 176, 170, 143, 177, 151, 126, 67, 133, 97, 162, 95, + 5, 87, 25, 26, 204, 60, 18, 78, 162, 67, 61, 42, 123, 238, + 62, 115, 35, 194, 14, 77, 175, 164, 157, 44, 37, 182, 221, 141, + 213, 77, 135, 38, 232, 172, 193, 193, 216, 25, 209, 81, 152, 168, + 15, 38, 163, 2, 206, 253, 96, 50, 42, 3, 251, 77, 143, 41, + 208, 2, 240, 56, 147, 244, 49, 169, 253, 33, 211, 44, 202, 31, + 97, 162, 62, 148, 96, 50, 29, 0, 53, 38, 160, 192, 135, 76, + 122, 171, 2, 45, 0, 217, 9, 137, 201, 162, 246, 47, 152, 230, + 105, 249, 35, 200, 178, 95, 72, 48, 129, 44, 251, 5, 115, 104, + 74, 129, 6, 128, 71, 152, 2, 177, 237, 201, 83, 164, 130, 152, + 108, 106, 255, 162, 105, 222, 83, 184, 135, 85, 213, 245, 187, 8, + 52, 85, 97, 189, 49, 145, 27, 4, 140, 21, 145, 109, 67, 149, + 171, 248, 104, 245, 77, 91, 224, 209, 160, 3, 160, 212, 10, 7, + 81, 72, 253, 162, 153, 87, 93, 0, 33, 245, 139, 208, 5, 9, + 230, 0, 60, 125, 183, 2, 179, 0, 158, 187, 75, 118, 208, 161, + 246, 47, 29, 214, 65, 145, 157, 228, 96, 7, 101, 121, 127, 7, + 29, 27, 241, 104, 16, 209, 234, 14, 130, 218, 249, 75, 73, 7, + 29, 11, 64, 221, 65, 39, 7, 160, 238, 160, 147, 5, 240, 220, + 93, 228, 35, 163, 196, 180, 9, 205, 252, 129, 57, 240, 187, 150, + 177, 176, 202, 238, 251, 193, 255, 35, 76, 222, 57, 37, 11, 255, + 121, 132, 85, 192, 120, 213, 145, 111, 73, 68, 164, 184, 9, 4, + 155, 199, 174, 123, 93, 219, 84, 81, 145, 185, 177, 184, 3, 151, + 94, 25, 132, 61, 142, 246, 132, 190, 165, 22, 165, 54, 39, 97, + 18, 224, 117, 163, 56, 128, 77, 72, 153, 174, 13, 22, 181, 188, + 157, 221, 184, 181, 207, 26, 94, 179, 201, 67, 238, 199, 176, 79, + 129, 41, 234, 238, 43, 111, 22, 219, 245, 192, 198, 111, 162, 37, + 214, 144, 42, 87, 219, 245, 189, 78, 183, 133, 198, 161, 118, 23, + 169, 9, 1, 237, 76, 69, 0, 0, 162, 195, 35, 0, 220, 232, + 64, 4, 0, 103, 115, 146, 52, 41, 92, 114, 148, 169, 186, 106, + 199, 221, 231, 184, 235, 74, 47, 130, 8, 196, 70, 43, 210, 131, + 245, 30, 5, 125, 86, 26, 42, 9, 24, 26, 145, 120, 56, 149, + 178, 209, 46, 51, 86, 245, 163, 152, 187, 13, 97, 0, 99, 0, + 5, 252, 128, 46, 74, 101, 211, 249, 61, 157, 76, 60, 216, 117, + 183, 213, 226, 13, 118, 216, 69, 224, 114, 218, 225, 135, 242, 7, + 231, 83, 139, 47, 121, 238, 80, 15, 131, 40, 66, 215, 192, 65, + 18, 176, 135, 185, 240, 138, 11, 211, 78, 99, 139, 3, 214, 9, + 196, 44, 8, 239, 92, 138, 70, 123, 232, 69, 231, 108, 187, 235, + 181, 26, 204, 77, 185, 50, 74, 64, 42, 193, 29, 157, 192, 243, + 99, 252, 40, 206, 97, 36, 186, 182, 205, 185, 79, 4, 221, 196, + 121, 110, 20, 96, 157, 20, 118, 16, 198, 72, 118, 152, 106, 125, + 111, 85, 31, 187, 35, 175, 244, 206, 182, 188, 106, 85, 223, 13, + 34, 142, 46, 31, 113, 81, 44, 186, 64, 216, 28, 90, 249, 170, + 162, 232, 25, 122, 8, 85, 40, 13, 218, 11, 58, 110, 3, 166, + 184, 197, 65, 45, 111, 201, 203, 122, 44, 8, 9, 99, 44, 8, + 119, 92, 223, 123, 82, 222, 223, 11, 66, 113, 44, 247, 68, 135, + 135, 30, 30, 49, 183, 212, 55, 74, 72, 72, 25, 252, 35, 187, + 124, 215, 185, 115, 231, 206, 1, 150, 120, 55, 68, 111, 193, 189, + 240, 159, 114, 230, 203, 147, 135, 253, 160, 43, 238, 137, 69, 221, + 80, 46, 4, 40, 106, 232, 80, 105, 49, 13, 76, 206, 44, 162, + 198, 94, 104, 209, 37, 123, 80, 126, 158, 81, 111, 203, 184, 242, + 104, 87, 146, 31, 135, 47, 66, 205, 49, 222, 85, 99, 131, 47, + 121, 190, 10, 239, 142, 209, 26, 137, 61, 208, 76, 249, 124, 219, + 245, 228, 172, 110, 119, 155, 243, 59, 173, 96, 219, 109, 205, 235, + 25, 156, 15, 249, 142, 23, 197, 225, 126, 234, 250, 13, 14, 62, + 80, 26, 106, 42, 20, 77, 7, 180, 173, 123, 237, 78, 107, 95, + 93, 208, 131, 161, 227, 69, 185, 199, 121, 61, 22, 170, 46, 94, + 82, 1, 60, 107, 219, 80, 232, 93, 231, 243, 75, 172, 211, 234, + 238, 120, 254, 44, 14, 165, 167, 201, 30, 223, 142, 188, 152, 179, + 25, 175, 201, 220, 235, 174, 215, 114, 183, 91, 124, 86, 134, 252, + 134, 124, 58, 98, 126, 0, 200, 240, 4, 15, 200, 254, 68, 167, + 133, 242, 40, 216, 67, 178, 195, 90, 243, 241, 23, 73, 249, 118, + 153, 109, 70, 93, 244, 216, 192, 239, 200, 62, 216, 56, 240, 145, + 86, 253, 67, 42, 99, 0, 179, 136, 81, 2, 3, 131, 31, 152, + 39, 121, 73, 20, 16, 5, 126, 138, 38, 216, 45, 49, 189, 219, + 251, 172, 211, 141, 99, 233, 189, 146, 226, 34, 234, 110, 207, 247, + 196, 50, 225, 41, 134, 88, 17, 106, 121, 71, 226, 86, 11, 11, + 154, 130, 237, 240, 122, 100, 36, 153, 214, 109, 119, 90, 28, 22, + 7, 251, 94, 47, 195, 2, 18, 81, 122, 50, 80, 98, 74, 158, + 4, 122, 17, 139, 187, 33, 8, 219, 110, 44, 183, 2, 33, 63, + 64, 38, 192, 116, 40, 221, 79, 51, 98, 196, 99, 214, 237, 72, + 206, 112, 187, 113, 208, 118, 99, 175, 142, 20, 118, 35, 188, 120, + 37, 189, 254, 138, 71, 132, 210, 72, 12, 106, 255, 129, 153, 155, + 16, 177, 231, 4, 180, 198, 207, 155, 230, 201, 194, 127, 51, 216, + 58, 143, 133, 59, 241, 33, 247, 186, 203, 100, 118, 34, 144, 86, + 33, 40, 30, 110, 20, 241, 40, 181, 63, 201, 35, 0, 47, 82, + 94, 65, 217, 49, 194, 58, 45, 183, 142, 123, 224, 165, 125, 117, + 206, 84, 74, 133, 103, 43, 196, 176, 116, 35, 222, 16, 218, 159, + 242, 19, 4, 205, 24, 36, 156, 231, 167, 76, 123, 237, 58, 235, + 105, 175, 253, 108, 126, 16, 182, 113, 216, 120, 138, 42, 216, 98, + 219, 173, 95, 219, 115, 195, 70, 164, 44, 127, 169, 177, 10, 5, + 132, 160, 118, 252, 121, 165, 143, 16, 212, 142, 63, 175, 180, 63, + 130, 218, 241, 231, 77, 122, 155, 2, 45, 0, 79, 20, 201, 87, + 77, 36, 153, 65, 237, 47, 152, 230, 153, 194, 23, 76, 182, 20, + 248, 113, 24, 180, 14, 158, 62, 238, 133, 110, 167, 195, 67, 65, + 74, 36, 94, 154, 116, 242, 250, 107, 185, 47, 94, 221, 141, 101, + 85, 36, 165, 242, 64, 202, 173, 190, 175, 193, 52, 32, 140, 19, + 157, 122, 102, 86, 89, 10, 160, 112, 239, 113, 64, 16, 161, 31, + 58, 185, 213, 145, 218, 37, 196, 190, 175, 183, 205, 222, 158, 84, + 155, 236, 144, 44, 112, 210, 141, 3, 146, 64, 29, 5, 195, 214, + 131, 167, 150, 232, 106, 86, 60, 162, 14, 135, 72, 207, 197, 59, + 197, 183, 242, 204, 217, 243, 35, 175, 33, 247, 90, 177, 107, 40, + 146, 97, 182, 58, 129, 76, 207, 23, 232, 253, 95, 72, 230, 11, + 244, 254, 47, 36, 243, 101, 224, 140, 208, 219, 21, 104, 1, 56, + 59, 71, 254, 181, 133, 243, 101, 82, 251, 203, 166, 121, 177, 240, + 172, 5, 35, 19, 105, 202, 212, 8, 52, 187, 163, 254, 36, 167, + 8, 111, 158, 183, 90, 169, 115, 4, 22, 241, 142, 139, 127, 150, + 129, 50, 226, 134, 153, 144, 7, 160, 35, 38, 36, 150, 146, 165, + 36, 29, 202, 184, 69, 203, 133, 123, 40, 201, 137, 116, 166, 179, + 141, 221, 46, 30, 102, 131, 62, 165, 206, 227, 65, 227, 240, 131, + 120, 238, 112, 178, 41, 122, 33, 165, 196, 129, 59, 198, 196, 30, + 150, 242, 175, 204, 146, 0, 175, 3, 109, 197, 151, 84, 96, 23, + 73, 49, 106, 28, 244, 176, 223, 11, 241, 93, 154, 237, 200, 139, + 226, 59, 121, 167, 72, 204, 27, 88, 67, 95, 78, 38, 25, 108, + 143, 47, 43, 35, 129, 160, 73, 246, 101, 51, 127, 82, 129, 22, + 128, 183, 207, 40, 48, 7, 224, 236, 5, 5, 102, 1, 188, 243, + 94, 50, 139, 28, 96, 81, 251, 47, 77, 179, 82, 56, 42, 20, + 62, 41, 24, 27, 1, 199, 51, 135, 93, 17, 138, 36, 90, 130, + 53, 247, 151, 73, 39, 44, 7, 64, 221, 9, 176, 230, 254, 210, + 204, 207, 43, 16, 17, 159, 91, 80, 96, 14, 192, 59, 150, 49, + 40, 8, 64, 252, 249, 206, 37, 242, 223, 133, 224, 176, 169, 253, + 13, 211, 124, 69, 225, 255, 52, 229, 193, 181, 62, 233, 75, 113, + 226, 194, 243, 179, 162, 214, 243, 9, 170, 67, 123, 194, 251, 253, + 68, 157, 139, 49, 129, 110, 137, 71, 69, 46, 168, 221, 49, 111, + 119, 80, 71, 106, 187, 194, 194, 144, 59, 131, 139, 135, 80, 155, + 27, 15, 204, 191, 140, 224, 89, 61, 139, 248, 235, 186, 120, 66, + 136, 182, 183, 136, 25, 144, 39, 131, 132, 201, 20, 111, 169, 251, + 158, 162, 83, 141, 64, 235, 202, 101, 146, 48, 152, 155, 138, 31, + 150, 170, 156, 96, 46, 183, 14, 221, 140, 146, 143, 247, 126, 59, + 82, 103, 81, 114, 126, 118, 93, 168, 202, 120, 179, 9, 42, 137, + 28, 92, 162, 113, 226, 183, 91, 160, 165, 200, 59, 75, 122, 14, + 109, 65, 104, 13, 58, 0, 234, 57, 4, 115, 248, 27, 102, 94, + 73, 11, 48, 135, 191, 97, 206, 158, 81, 96, 14, 192, 210, 125, + 10, 204, 2, 120, 207, 203, 201, 10, 204, 160, 61, 64, 51, 127, + 107, 154, 255, 211, 180, 10, 47, 103, 58, 71, 137, 22, 124, 242, + 12, 237, 176, 43, 179, 202, 66, 139, 188, 39, 117, 63, 49, 114, + 249, 111, 205, 236, 4, 89, 6, 126, 17, 145, 203, 127, 103, 218, + 163, 197, 59, 53, 242, 228, 54, 41, 54, 7, 132, 210, 148, 42, + 129, 96, 241, 220, 150, 210, 170, 133, 47, 153, 200, 80, 229, 191, + 51, 237, 193, 164, 192, 132, 130, 225, 17, 114, 89, 126, 199, 160, + 246, 223, 155, 54, 45, 100, 196, 133, 207, 226, 89, 140, 190, 77, + 242, 140, 172, 117, 34, 96, 4, 29, 2, 42, 229, 146, 88, 232, + 42, 88, 147, 200, 24, 231, 191, 55, 101, 192, 34, 145, 49, 206, + 127, 111, 230, 199, 245, 167, 76, 106, 127, 199, 180, 111, 42, 222, + 147, 30, 82, 3, 12, 7, 224, 48, 201, 89, 43, 94, 204, 117, + 154, 138, 190, 41, 85, 152, 161, 211, 223, 49, 101, 24, 39, 145, + 49, 203, 223, 49, 39, 38, 209, 41, 67, 64, 90, 124, 215, 52, + 47, 202, 121, 115, 108, 4, 21, 11, 56, 25, 0, 229, 17, 19, + 65, 135, 195, 119, 205, 169, 83, 10, 180, 0, 156, 86, 178, 196, + 201, 1, 168, 101, 137, 147, 5, 240, 206, 123, 201, 23, 196, 42, + 206, 80, 251, 205, 150, 89, 44, 252, 190, 153, 104, 76, 151, 131, + 62, 125, 41, 138, 67, 204, 77, 241, 189, 232, 75, 213, 38, 11, + 68, 78, 147, 210, 1, 164, 114, 243, 76, 167, 186, 232, 205, 233, + 129, 250, 232, 60, 198, 140, 108, 187, 17, 79, 235, 34, 90, 225, + 194, 163, 82, 214, 113, 227, 221, 18, 243, 154, 58, 155, 71, 89, + 52, 77, 197, 122, 164, 91, 69, 177, 27, 11, 38, 56, 168, 43, + 72, 52, 120, 232, 114, 56, 150, 254, 190, 244, 52, 86, 119, 15, + 181, 180, 208, 43, 56, 99, 35, 145, 53, 232, 0, 168, 247, 251, + 140, 1, 160, 244, 243, 17, 12, 15, 122, 179, 117, 252, 4, 249, + 3, 27, 39, 40, 75, 237, 103, 44, 243, 98, 225, 63, 216, 108, + 93, 4, 45, 203, 204, 167, 106, 43, 142, 122, 61, 45, 158, 47, + 118, 241, 150, 235, 239, 116, 221, 29, 126, 63, 99, 69, 153, 9, + 181, 168, 155, 136, 248, 67, 60, 215, 85, 169, 68, 64, 84, 250, + 251, 176, 30, 99, 175, 14, 170, 58, 171, 93, 93, 98, 209, 126, + 20, 163, 207, 98, 3, 15, 122, 195, 244, 151, 240, 230, 51, 39, + 12, 53, 210, 94, 49, 31, 29, 232, 6, 155, 209, 105, 7, 26, + 34, 149, 139, 219, 146, 22, 91, 52, 91, 38, 236, 114, 255, 160, + 246, 184, 116, 159, 160, 81, 116, 205, 243, 209, 107, 172, 212, 15, + 249, 37, 16, 172, 73, 0, 56, 158, 244, 185, 97, 107, 95, 133, + 60, 163, 183, 167, 63, 27, 19, 57, 228, 99, 130, 26, 123, 34, + 2, 64, 132, 80, 164, 66, 205, 61, 159, 53, 221, 235, 1, 134, + 78, 137, 149, 46, 59, 78, 132, 105, 222, 187, 157, 165, 41, 42, + 204, 208, 27, 147, 52, 228, 205, 32, 228, 37, 34, 69, 146, 142, + 99, 11, 24, 70, 189, 149, 25, 91, 195, 203, 179, 13, 46, 13, + 119, 97, 131, 71, 176, 127, 28, 96, 3, 17, 211, 78, 208, 124, + 245, 234, 94, 12, 70, 4, 158, 218, 243, 182, 8, 63, 232, 38, + 155, 74, 214, 70, 182, 210, 160, 3, 160, 222, 84, 178, 6, 128, + 90, 59, 201, 90, 0, 106, 237, 36, 155, 3, 80, 75, 148, 44, + 114, 232, 157, 247, 74, 201, 149, 163, 246, 187, 44, 83, 237, 56, + 57, 27, 65, 245, 157, 156, 3, 160, 254, 78, 206, 0, 48, 127, + 90, 129, 22, 128, 51, 115, 10, 68, 84, 103, 94, 174, 192, 44, + 128, 119, 95, 148, 223, 25, 164, 246, 179, 150, 150, 144, 131, 54, + 130, 234, 59, 131, 14, 128, 250, 59, 131, 6, 128, 122, 60, 131, + 22, 128, 122, 60, 131, 57, 0, 245, 120, 6, 179, 0, 234, 241, + 16, 106, 191, 219, 50, 85, 39, 136, 141, 160, 250, 14, 113, 0, + 212, 223, 1, 115, 244, 221, 86, 94, 73, 98, 98, 1, 56, 61, + 171, 192, 28, 128, 115, 170, 203, 36, 11, 224, 93, 23, 200, 215, + 133, 237, 58, 68, 237, 159, 177, 204, 133, 194, 23, 13, 86, 141, + 122, 18, 133, 40, 70, 188, 159, 48, 241, 228, 15, 176, 96, 32, + 228, 87, 236, 134, 59, 60, 6, 169, 27, 55, 131, 176, 45, 3, + 173, 96, 239, 230, 109, 47, 134, 250, 201, 133, 9, 237, 179, 37, + 66, 217, 191, 206, 195, 125, 212, 23, 211, 10, 44, 58, 180, 188, + 88, 11, 105, 181, 101, 183, 246, 153, 183, 227, 7, 33, 111, 92, + 84, 213, 161, 61, 97, 45, 238, 70, 113, 58, 216, 12, 175, 75, + 168, 157, 28, 191, 164, 134, 32, 212, 176, 86, 202, 116, 29, 178, + 113, 212, 26, 116, 0, 212, 244, 28, 50, 0, 204, 23, 20, 104, + 1, 120, 235, 113, 5, 230, 0, 100, 231, 21, 152, 5, 240, 204, + 57, 242, 227, 72, 206, 97, 106, 191, 207, 50, 239, 41, 188, 142, + 137, 108, 205, 145, 10, 30, 194, 195, 39, 76, 221, 172, 77, 87, + 153, 36, 228, 176, 60, 45, 210, 171, 138, 78, 64, 142, 33, 101, + 34, 183, 202, 206, 1, 125, 9, 144, 45, 157, 57, 163, 135, 54, + 108, 99, 15, 52, 232, 0, 168, 135, 54, 108, 0, 40, 79, 9, + 136, 57, 108, 1, 120, 82, 173, 132, 225, 28, 128, 183, 223, 173, + 192, 44, 128, 231, 239, 34, 239, 20, 172, 50, 66, 237, 159, 183, + 204, 217, 194, 27, 83, 110, 142, 64, 121, 194, 88, 93, 26, 66, + 34, 35, 180, 20, 28, 30, 194, 232, 192, 67, 75, 8, 140, 221, + 84, 19, 114, 216, 128, 250, 246, 248, 178, 144, 88, 34, 182, 73, + 201, 42, 61, 220, 17, 27, 59, 165, 65, 7, 64, 189, 201, 141, + 24, 0, 82, 181, 2, 71, 44, 0, 111, 159, 33, 85, 28, 207, + 40, 181, 63, 108, 153, 51, 133, 139, 76, 231, 149, 70, 114, 30, + 232, 211, 69, 245, 217, 72, 197, 103, 203, 141, 93, 119, 99, 212, + 70, 92, 26, 116, 0, 212, 221, 24, 53, 0, 164, 69, 5, 90, + 0, 158, 158, 22, 161, 205, 196, 28, 163, 246, 47, 89, 34, 180, + 57, 241, 246, 176, 245, 61, 175, 25, 167, 247, 54, 92, 26, 120, + 227, 235, 160, 31, 8, 244, 190, 37, 21, 36, 138, 65, 31, 33, + 7, 149, 8, 88, 127, 186, 60, 45, 116, 253, 174, 223, 224, 97, + 84, 15, 66, 174, 19, 200, 137, 248, 146, 64, 77, 154, 138, 249, + 142, 206, 70, 251, 237, 237, 160, 21, 17, 101, 108, 202, 200, 205, + 56, 49, 45, 34, 49, 185, 66, 253, 41, 137, 144, 44, 236, 162, + 246, 226, 203, 184, 91, 113, 236, 64, 158, 239, 51, 250, 43, 138, + 128, 99, 54, 210, 68, 131, 14, 128, 154, 158, 99, 6, 128, 218, + 183, 52, 102, 1, 120, 226, 36, 134, 185, 19, 51, 79, 237, 143, + 193, 180, 118, 18, 46, 237, 236, 118, 94, 44, 119, 66, 213, 3, + 12, 64, 14, 225, 202, 101, 57, 79, 94, 196, 192, 66, 220, 215, + 125, 207, 219, 216, 1, 13, 58, 0, 234, 190, 231, 13, 0, 53, + 47, 228, 45, 0, 79, 79, 147, 95, 23, 107, 108, 156, 218, 159, + 176, 204, 211, 133, 143, 24, 104, 78, 164, 232, 141, 142, 4, 145, + 121, 80, 167, 125, 67, 150, 13, 154, 135, 119, 90, 119, 145, 36, + 125, 60, 48, 139, 250, 167, 94, 133, 21, 213, 205, 116, 24, 51, + 44, 12, 96, 134, 152, 135, 237, 36, 87, 144, 238, 132, 30, 252, + 184, 141, 3, 208, 160, 3, 160, 30, 252, 184, 1, 32, 85, 162, + 116, 220, 2, 176, 120, 138, 252, 71, 49, 120, 74, 237, 95, 183, + 204, 114, 225, 87, 127, 128, 193, 171, 60, 242, 154, 10, 228, 224, + 76, 189, 32, 21, 18, 143, 91, 154, 16, 68, 83, 226, 69, 16, + 130, 218, 56, 24, 13, 58, 0, 106, 66, 80, 3, 64, 170, 116, + 1, 106, 1, 120, 102, 158, 252, 150, 32, 196, 4, 181, 127, 27, + 36, 194, 71, 95, 136, 16, 106, 190, 130, 38, 11, 187, 219, 251, + 63, 0, 19, 200, 104, 203, 239, 139, 13, 240, 211, 253, 34, 113, + 194, 198, 65, 104, 208, 1, 80, 19, 96, 194, 0, 80, 47, 225, + 9, 11, 192, 19, 39, 201, 235, 113, 252, 147, 212, 254, 63, 44, + 243, 66, 193, 255, 190, 110, 125, 19, 125, 36, 209, 155, 144, 81, + 237, 187, 197, 53, 117, 214, 172, 206, 40, 210, 87, 196, 137, 57, + 105, 227, 231, 53, 152, 1, 112, 72, 117, 117, 210, 0, 80, 94, + 17, 39, 230, 164, 5, 224, 221, 247, 146, 127, 110, 16, 203, 6, + 205, 236, 211, 150, 121, 164, 240, 228, 15, 124, 71, 252, 251, 31, + 5, 106, 144, 206, 0, 244, 68, 94, 40, 39, 120, 161, 252, 211, + 150, 188, 80, 78, 240, 66, 249, 167, 173, 155, 166, 196, 113, 198, + 32, 181, 127, 199, 50, 71, 69, 195, 193, 1, 128, 134, 70, 68, + 205, 65, 104, 152, 6, 77, 9, 14, 19, 211, 30, 162, 153, 207, + 90, 3, 63, 105, 27, 136, 6, 212, 166, 207, 90, 185, 155, 201, + 31, 57, 196, 182, 135, 204, 1, 106, 127, 209, 50, 95, 81, 248, + 148, 3, 130, 24, 13, 129, 212, 97, 86, 18, 103, 127, 94, 121, + 48, 160, 86, 250, 230, 107, 179, 231, 150, 146, 114, 108, 165, 118, + 29, 172, 161, 143, 41, 230, 65, 103, 116, 99, 111, 219, 195, 108, + 59, 218, 189, 213, 135, 157, 72, 244, 101, 134, 199, 99, 242, 74, + 110, 114, 192, 233, 9, 157, 42, 73, 83, 39, 238, 177, 95, 96, + 172, 26, 79, 71, 172, 197, 163, 136, 48, 222, 108, 122, 117, 15, + 239, 109, 237, 130, 70, 199, 247, 120, 200, 154, 220, 141, 187, 33, 143, 132, 203, 26, 166, 18, 182, 90, 212, 100, 49, 64, 185, 209, - 147, 154, 79, 199, 207, 43, 135, 46, 127, 210, 197, 36, 122, 93, - 199, 199, 76, 87, 127, 40, 8, 216, 63, 21, 233, 65, 229, 186, - 189, 193, 43, 17, 236, 1, 164, 246, 69, 81, 55, 197, 99, 119, - 195, 4, 180, 220, 39, 241, 151, 31, 233, 142, 49, 229, 169, 211, + 151, 154, 79, 199, 207, 43, 135, 46, 127, 194, 197, 36, 122, 61, + 199, 199, 76, 87, 127, 32, 8, 216, 63, 22, 233, 65, 229, 186, + 189, 193, 43, 17, 236, 62, 164, 246, 69, 81, 55, 197, 99, 119, + 194, 4, 180, 221, 39, 240, 151, 31, 235, 141, 49, 229, 169, 211, 126, 208, 217, 197, 97, 57, 144, 65, 117, 79, 132, 102, 95, 76, - 17, 52, 146, 145, 127, 88, 53, 61, 85, 4, 111, 48, 117, 115, + 17, 52, 146, 145, 127, 88, 53, 61, 85, 4, 111, 48, 245, 114, 55, 90, 165, 24, 249, 164, 198, 13, 70, 45, 26, 168, 74, 7, - 190, 40, 114, 170, 161, 46, 161, 34, 26, 182, 100, 252, 105, 36, - 206, 3, 34, 180, 20, 122, 99, 255, 241, 147, 151, 116, 116, 184, + 190, 40, 114, 170, 161, 46, 161, 34, 26, 182, 101, 252, 105, 36, + 206, 3, 34, 180, 20, 250, 99, 255, 241, 147, 151, 116, 116, 184, 180, 9, 212, 241, 157, 16, 106, 34, 226, 36, 222, 195, 51, 224, - 56, 244, 234, 58, 167, 45, 206, 62, 247, 183, 131, 176, 46, 237, - 249, 248, 176, 68, 122, 82, 64, 12, 224, 201, 215, 23, 148, 128, - 24, 192, 147, 175, 47, 40, 29, 123, 0, 93, 135, 95, 176, 242, - 147, 10, 180, 0, 156, 57, 163, 192, 28, 128, 210, 55, 58, 96, - 246, 101, 1, 188, 239, 229, 228, 47, 12, 92, 52, 6, 181, 255, - 220, 50, 31, 42, 252, 23, 131, 45, 138, 115, 34, 161, 193, 164, - 60, 15, 210, 11, 164, 30, 248, 96, 197, 70, 234, 32, 161, 200, - 212, 35, 31, 42, 126, 179, 238, 250, 152, 22, 118, 187, 233, 213, - 99, 117, 61, 82, 120, 148, 21, 38, 21, 167, 161, 110, 111, 161, - 20, 114, 49, 217, 20, 107, 129, 194, 169, 147, 167, 73, 69, 72, - 174, 91, 238, 70, 30, 15, 47, 50, 159, 239, 73, 39, 132, 88, - 76, 238, 245, 192, 83, 236, 34, 207, 84, 82, 157, 44, 106, 58, - 26, 54, 142, 86, 131, 14, 128, 154, 142, 6, 210, 34, 127, 86, - 129, 22, 128, 115, 119, 41, 48, 7, 224, 221, 21, 5, 102, 1, - 124, 112, 145, 252, 181, 160, 163, 73, 237, 191, 177, 204, 243, 133, - 255, 154, 152, 181, 138, 189, 95, 50, 203, 54, 181, 134, 190, 75, - 115, 86, 90, 179, 228, 166, 205, 217, 20, 219, 139, 241, 155, 54, - 14, 88, 131, 14, 128, 154, 148, 192, 86, 127, 163, 44, 218, 1, - 60, 247, 249, 27, 235, 246, 59, 20, 152, 3, 240, 248, 57, 5, - 102, 1, 156, 57, 43, 132, 122, 63, 181, 191, 98, 153, 99, 184, - 55, 12, 192, 222, 240, 21, 107, 96, 80, 212, 196, 189, 33, 13, - 154, 18, 20, 117, 241, 199, 97, 217, 133, 126, 163, 7, 52, 37, - 40, 234, 34, 52, 74, 229, 143, 166, 209, 13, 170, 95, 255, 77, - 6, 231, 214, 162, 246, 191, 178, 205, 59, 10, 79, 103, 64, 147, - 209, 55, 116, 212, 252, 138, 149, 223, 125, 154, 159, 210, 15, 221, - 54, 198, 229, 239, 11, 81, 36, 231, 141, 64, 185, 186, 198, 165, - 174, 43, 233, 18, 33, 134, 25, 148, 188, 252, 149, 124, 127, 125, - 191, 205, 75, 12, 211, 226, 195, 159, 175, 128, 242, 77, 177, 162, - 30, 96, 231, 47, 146, 68, 105, 105, 164, 175, 88, 53, 131, 224, - 90, 132, 169, 55, 20, 58, 217, 225, 43, 110, 27, 131, 59, 241, - 177, 28, 37, 225, 211, 82, 94, 61, 172, 211, 45, 215, 147, 26, - 110, 147, 201, 110, 177, 107, 124, 95, 118, 226, 64, 21, 221, 97, - 105, 152, 61, 192, 230, 100, 181, 31, 17, 255, 104, 161, 218, 221, - 161, 158, 209, 17, 86, 237, 201, 106, 129, 193, 116, 187, 65, 16, - 9, 65, 154, 114, 83, 136, 121, 81, 221, 127, 0, 85, 0, 189, - 66, 182, 58, 49, 106, 212, 204, 101, 190, 200, 80, 2, 115, 227, - 117, 45, 67, 237, 199, 141, 3, 182, 11, 26, 3, 252, 118, 141, - 239, 139, 139, 237, 50, 16, 95, 16, 60, 117, 176, 54, 191, 90, + 56, 244, 234, 58, 167, 45, 206, 62, 247, 155, 65, 88, 151, 246, + 124, 124, 88, 34, 61, 41, 32, 134, 240, 228, 235, 139, 74, 64, + 12, 225, 201, 215, 23, 149, 142, 61, 132, 174, 195, 47, 90, 249, + 105, 5, 90, 0, 206, 157, 81, 96, 14, 64, 233, 27, 29, 50, + 7, 178, 0, 222, 243, 114, 242, 231, 6, 46, 26, 131, 218, 127, + 102, 153, 15, 20, 254, 139, 193, 150, 197, 57, 145, 208, 96, 82, + 158, 7, 233, 5, 82, 15, 124, 176, 98, 35, 117, 144, 80, 100, + 234, 145, 15, 21, 191, 89, 119, 125, 76, 11, 219, 108, 121, 245, + 88, 93, 143, 20, 30, 101, 133, 73, 197, 105, 168, 219, 91, 40, + 133, 92, 76, 54, 197, 218, 160, 112, 234, 228, 105, 82, 17, 146, + 235, 150, 187, 145, 199, 195, 139, 204, 231, 123, 210, 9, 33, 22, + 147, 123, 61, 240, 20, 187, 200, 51, 149, 84, 39, 139, 154, 142, + 134, 141, 163, 213, 160, 3, 160, 166, 163, 129, 180, 200, 159, 85, + 160, 5, 224, 194, 29, 10, 204, 1, 120, 103, 69, 129, 89, 0, + 239, 95, 38, 127, 37, 232, 104, 82, 251, 175, 45, 243, 124, 225, + 191, 38, 102, 173, 98, 239, 151, 204, 178, 77, 173, 161, 239, 209, + 156, 149, 214, 44, 121, 209, 230, 108, 138, 237, 197, 248, 77, 27, + 7, 172, 65, 7, 64, 77, 74, 96, 171, 191, 86, 22, 237, 16, + 158, 251, 252, 181, 117, 235, 109, 10, 204, 1, 120, 252, 156, 2, + 179, 0, 206, 157, 21, 66, 125, 144, 218, 95, 181, 204, 9, 220, + 27, 134, 96, 111, 248, 170, 53, 52, 44, 106, 226, 222, 144, 6, + 77, 9, 138, 186, 248, 227, 168, 236, 194, 160, 209, 7, 154, 18, + 20, 117, 17, 26, 167, 242, 71, 211, 232, 5, 213, 175, 255, 42, + 131, 115, 107, 81, 251, 95, 216, 230, 109, 133, 167, 50, 160, 201, + 232, 27, 58, 106, 126, 197, 202, 239, 61, 205, 79, 233, 135, 110, + 7, 227, 242, 247, 133, 40, 146, 243, 70, 160, 92, 93, 227, 82, + 215, 149, 116, 137, 16, 195, 12, 74, 94, 254, 74, 190, 191, 177, + 223, 225, 37, 134, 105, 241, 225, 207, 87, 64, 249, 150, 88, 81, + 247, 177, 243, 23, 73, 162, 180, 52, 210, 87, 172, 90, 65, 112, + 45, 194, 212, 27, 10, 157, 236, 240, 21, 183, 131, 193, 157, 248, + 88, 142, 146, 240, 105, 41, 175, 30, 214, 233, 149, 235, 73, 13, + 183, 197, 100, 183, 216, 53, 190, 47, 59, 113, 160, 138, 238, 176, + 52, 204, 238, 99, 11, 178, 218, 143, 137, 127, 180, 80, 237, 237, + 80, 223, 232, 8, 171, 246, 101, 181, 192, 96, 186, 221, 32, 136, + 132, 32, 77, 185, 41, 196, 188, 168, 238, 223, 135, 42, 128, 94, + 33, 219, 221, 24, 53, 106, 230, 50, 95, 100, 40, 129, 185, 241, + 122, 150, 161, 246, 227, 198, 1, 219, 5, 141, 1, 126, 187, 198, + 247, 197, 197, 118, 25, 136, 47, 8, 158, 58, 88, 91, 188, 90, 69, 237, 10, 239, 58, 28, 200, 193, 129, 199, 104, 42, 232, 6, - 115, 171, 186, 17, 97, 222, 118, 114, 23, 83, 172, 192, 195, 239, - 151, 225, 213, 140, 149, 245, 202, 5, 149, 65, 82, 58, 59, 181, - 42, 221, 147, 65, 151, 205, 139, 16, 4, 165, 246, 32, 87, 137, - 140, 123, 68, 217, 198, 226, 154, 170, 68, 32, 101, 168, 10, 14, - 243, 90, 93, 110, 85, 225, 253, 150, 22, 138, 218, 152, 100, 52, - 91, 178, 65, 89, 54, 46, 17, 13, 58, 0, 106, 105, 96, 25, - 0, 230, 143, 40, 16, 215, 211, 177, 219, 201, 41, 185, 222, 223, - 106, 155, 67, 197, 219, 240, 12, 188, 233, 197, 160, 93, 200, 51, - 178, 173, 38, 39, 114, 193, 90, 80, 77, 175, 124, 192, 152, 6, - 77, 9, 30, 151, 24, 223, 6, 24, 41, 98, 244, 93, 63, 216, - 116, 163, 77, 192, 172, 144, 217, 80, 67, 183, 182, 141, 110, 208, - 148, 224, 10, 46, 126, 155, 218, 239, 176, 127, 112, 9, 161, 6, - 196, 229, 132, 132, 86, 118, 6, 192, 1, 37, 27, 241, 114, 130, - 125, 92, 237, 58, 120, 57, 193, 150, 9, 161, 6, 28, 106, 191, - 211, 126, 105, 18, 66, 13, 128, 254, 254, 78, 91, 234, 239, 3, - 168, 191, 191, 211, 150, 250, 251, 0, 234, 239, 239, 180, 111, 153, - 64, 53, 124, 144, 102, 158, 181, 251, 190, 37, 213, 240, 65, 131, - 218, 207, 218, 185, 113, 242, 51, 38, 177, 237, 65, 80, 195, 223, - 99, 155, 229, 194, 51, 38, 82, 12, 159, 174, 74, 152, 85, 157, - 177, 97, 0, 215, 153, 51, 189, 231, 230, 82, 95, 119, 147, 0, - 90, 114, 131, 11, 245, 50, 100, 115, 215, 245, 129, 252, 58, 158, - 104, 15, 152, 185, 204, 180, 45, 163, 142, 41, 136, 38, 204, 22, - 111, 6, 123, 74, 243, 232, 182, 71, 247, 121, 156, 44, 223, 36, - 224, 33, 104, 115, 245, 238, 1, 244, 6, 246, 78, 206, 102, 103, - 89, 20, 132, 225, 126, 137, 237, 241, 201, 102, 147, 161, 132, 15, - 196, 197, 167, 6, 199, 203, 145, 24, 232, 218, 1, 21, 93, 157, - 212, 156, 16, 179, 62, 136, 26, 221, 123, 20, 19, 12, 98, 86, - 176, 247, 216, 242, 54, 199, 32, 106, 116, 239, 177, 101, 158, 142, - 65, 212, 232, 222, 99, 31, 41, 40, 48, 7, 224, 209, 89, 5, - 102, 1, 188, 179, 132, 73, 87, 6, 237, 62, 154, 249, 9, 219, - 124, 159, 45, 146, 174, 12, 226, 121, 245, 79, 216, 89, 88, 27, - 25, 0, 97, 126, 126, 210, 182, 71, 10, 35, 218, 79, 209, 194, - 236, 163, 120, 70, 59, 40, 143, 162, 127, 210, 182, 83, 5, 38, - 20, 12, 13, 99, 136, 196, 160, 56, 138, 126, 222, 150, 7, 200, - 131, 242, 68, 249, 121, 219, 206, 37, 5, 38, 20, 12, 12, 234, - 22, 38, 181, 127, 218, 150, 105, 118, 6, 229, 193, 240, 79, 219, - 242, 96, 120, 80, 30, 12, 255, 180, 61, 54, 78, 62, 39, 184, - 200, 160, 246, 7, 109, 243, 104, 225, 119, 76, 185, 238, 240, 254, - 179, 156, 46, 121, 102, 47, 163, 130, 196, 197, 87, 37, 60, 219, - 161, 215, 194, 103, 110, 148, 62, 136, 1, 166, 40, 74, 152, 43, + 115, 171, 186, 17, 97, 94, 51, 185, 139, 41, 86, 224, 225, 247, + 203, 240, 106, 198, 218, 70, 229, 130, 202, 32, 41, 157, 157, 90, + 149, 238, 203, 160, 203, 22, 69, 8, 130, 82, 123, 144, 171, 68, + 198, 61, 162, 108, 99, 113, 77, 85, 34, 144, 50, 84, 5, 135, + 121, 237, 30, 183, 170, 240, 126, 75, 11, 69, 109, 76, 50, 154, + 45, 217, 160, 44, 27, 151, 136, 6, 29, 0, 181, 52, 176, 12, + 0, 243, 71, 20, 136, 235, 233, 216, 173, 228, 148, 92, 239, 111, + 181, 205, 145, 226, 45, 120, 6, 222, 242, 98, 208, 46, 228, 25, + 217, 118, 139, 19, 185, 96, 45, 168, 166, 87, 62, 96, 76, 131, + 166, 4, 143, 75, 140, 111, 3, 140, 20, 49, 250, 174, 31, 108, + 185, 209, 22, 96, 86, 200, 108, 168, 161, 91, 219, 70, 47, 104, + 74, 112, 13, 23, 191, 77, 237, 119, 216, 63, 188, 132, 80, 67, + 226, 114, 66, 66, 43, 59, 3, 224, 144, 146, 141, 120, 57, 193, + 62, 174, 118, 29, 188, 156, 96, 203, 132, 80, 67, 14, 181, 223, + 105, 191, 52, 9, 161, 134, 64, 127, 127, 167, 45, 245, 247, 33, + 212, 223, 223, 105, 75, 253, 125, 8, 245, 247, 119, 218, 55, 77, + 161, 26, 62, 76, 51, 207, 216, 3, 223, 150, 106, 248, 176, 65, + 237, 103, 236, 220, 36, 249, 57, 147, 216, 246, 48, 168, 225, 239, + 177, 205, 114, 225, 105, 19, 41, 134, 79, 87, 37, 204, 170, 206, + 216, 48, 128, 235, 204, 153, 254, 115, 115, 169, 175, 187, 73, 0, + 45, 185, 193, 133, 122, 25, 178, 185, 235, 250, 64, 126, 29, 79, + 180, 7, 204, 92, 102, 218, 150, 81, 199, 20, 68, 19, 102, 155, + 183, 130, 61, 165, 121, 244, 218, 163, 251, 60, 78, 150, 111, 18, + 240, 16, 116, 184, 122, 247, 0, 122, 3, 123, 39, 103, 243, 243, + 44, 10, 194, 112, 191, 196, 246, 248, 116, 171, 197, 80, 194, 7, + 226, 226, 83, 131, 227, 229, 72, 12, 116, 237, 130, 138, 174, 78, + 106, 78, 136, 89, 31, 70, 141, 238, 61, 138, 9, 134, 49, 43, + 216, 123, 108, 121, 155, 99, 24, 53, 186, 247, 216, 50, 79, 199, + 48, 106, 116, 239, 177, 143, 20, 20, 152, 3, 240, 232, 188, 2, + 179, 0, 222, 94, 194, 164, 43, 195, 246, 0, 205, 252, 148, 109, + 190, 207, 22, 73, 87, 134, 241, 188, 250, 167, 236, 44, 172, 141, + 12, 128, 48, 63, 63, 109, 219, 99, 133, 49, 237, 167, 104, 99, + 246, 81, 60, 163, 29, 150, 71, 209, 63, 109, 219, 169, 2, 19, + 10, 70, 70, 49, 68, 98, 88, 28, 69, 63, 103, 203, 3, 228, + 97, 121, 162, 252, 156, 109, 231, 146, 2, 19, 10, 134, 134, 117, + 11, 147, 218, 63, 107, 203, 52, 59, 195, 242, 96, 248, 103, 109, + 121, 48, 60, 44, 15, 134, 127, 214, 158, 152, 36, 159, 23, 92, + 100, 80, 251, 131, 182, 121, 180, 240, 159, 76, 185, 238, 240, 254, + 179, 156, 46, 121, 102, 47, 163, 130, 196, 197, 87, 37, 60, 59, + 161, 215, 198, 103, 110, 148, 62, 136, 1, 166, 40, 74, 152, 43, 44, 36, 109, 76, 29, 96, 45, 49, 223, 96, 217, 148, 89, 205, 149, 59, 189, 235, 107, 236, 96, 123, 236, 133, 158, 138, 78, 196, 76, 132, 42, 227, 73, 18, 89, 196, 5, 3, 149, 210, 87, 218, 220, 48, 116, 247, 209, 37, 34, 178, 107, 225, 30, 160, 131, 111, - 155, 189, 57, 145, 182, 154, 193, 86, 153, 85, 213, 77, 243, 146, + 91, 253, 57, 145, 182, 91, 193, 118, 153, 85, 213, 77, 243, 146, 16, 207, 234, 200, 11, 36, 115, 44, 242, 149, 227, 101, 114, 60, 69, 147, 1, 104, 168, 10, 203, 227, 59, 65, 180, 84, 230, 30, - 193, 49, 120, 33, 35, 97, 62, 188, 144, 161, 164, 245, 160, 184, + 193, 49, 120, 33, 35, 97, 62, 188, 144, 161, 164, 245, 176, 184, 144, 97, 231, 21, 243, 225, 133, 12, 96, 190, 247, 56, 56, 49, - 38, 181, 255, 157, 109, 222, 85, 120, 155, 131, 19, 35, 94, 142, - 211, 209, 57, 210, 81, 195, 147, 152, 196, 53, 84, 71, 4, 133, + 38, 181, 255, 173, 109, 222, 81, 120, 155, 131, 19, 35, 94, 142, + 211, 209, 57, 210, 81, 195, 147, 152, 196, 117, 84, 71, 4, 133, 180, 59, 75, 198, 138, 7, 50, 11, 130, 188, 205, 158, 222, 149, - 192, 234, 214, 175, 133, 224, 224, 161, 221, 189, 119, 179, 45, 92, - 89, 49, 223, 9, 221, 38, 210, 126, 219, 123, 82, 165, 67, 33, - 108, 202, 243, 227, 123, 239, 46, 177, 142, 252, 55, 146, 255, 98, - 37, 44, 144, 127, 77, 151, 25, 155, 79, 165, 176, 83, 3, 209, - 207, 185, 17, 145, 145, 72, 242, 7, 78, 88, 122, 60, 34, 218, - 70, 217, 60, 72, 245, 136, 53, 3, 145, 49, 0, 244, 102, 15, - 35, 105, 68, 208, 15, 240, 235, 174, 219, 6, 49, 178, 39, 242, - 17, 52, 65, 221, 72, 18, 69, 200, 12, 12, 210, 43, 204, 182, - 155, 129, 80, 187, 69, 64, 121, 242, 217, 50, 97, 107, 40, 208, - 246, 225, 87, 253, 214, 156, 182, 6, 228, 32, 208, 44, 237, 178, - 227, 120, 35, 221, 121, 121, 119, 129, 104, 37, 33, 245, 91, 81, - 132, 158, 22, 85, 206, 27, 12, 78, 224, 187, 238, 117, 47, 8, - 83, 247, 42, 80, 112, 136, 185, 34, 76, 63, 137, 135, 87, 63, - 187, 244, 31, 157, 45, 59, 22, 206, 136, 46, 153, 171, 239, 0, - 7, 114, 178, 211, 167, 230, 34, 160, 78, 132, 213, 186, 13, 244, - 249, 139, 112, 232, 157, 32, 216, 41, 183, 220, 120, 183, 92, 5, - 62, 208, 106, 200, 32, 26, 37, 255, 46, 97, 108, 51, 3, 160, - 116, 1, 14, 162, 204, 249, 119, 54, 157, 80, 160, 5, 224, 209, - 99, 10, 204, 1, 120, 251, 156, 2, 179, 0, 78, 157, 151, 82, - 213, 160, 153, 143, 219, 230, 175, 107, 169, 10, 139, 228, 227, 118, - 118, 8, 147, 102, 13, 138, 84, 86, 191, 108, 219, 180, 112, 155, - 116, 160, 166, 78, 185, 197, 93, 40, 33, 232, 68, 30, 171, 95, - 78, 132, 167, 200, 99, 245, 203, 118, 126, 148, 76, 75, 84, 6, - 181, 127, 5, 80, 29, 65, 84, 7, 120, 46, 74, 33, 51, 68, - 221, 4, 25, 8, 222, 95, 73, 35, 51, 169, 253, 107, 135, 34, - 75, 34, 140, 85, 91, 248, 240, 175, 165, 145, 137, 198, 249, 81, - 242, 71, 72, 4, 32, 216, 159, 217, 230, 153, 194, 39, 135, 85, - 140, 70, 234, 242, 196, 150, 54, 65, 154, 238, 83, 94, 115, 255, - 65, 198, 150, 220, 167, 246, 213, 145, 162, 62, 81, 148, 26, 200, - 44, 144, 69, 165, 106, 21, 215, 2, 90, 220, 245, 101, 238, 139, - 61, 21, 92, 39, 226, 74, 83, 150, 22, 222, 231, 193, 157, 94, - 124, 173, 36, 36, 136, 135, 89, 128, 100, 189, 201, 40, 201, 142, - 131, 66, 81, 94, 39, 149, 253, 219, 234, 196, 74, 17, 22, 138, - 156, 136, 38, 17, 114, 89, 120, 235, 36, 223, 119, 97, 149, 242, - 181, 30, 139, 136, 248, 4, 31, 118, 86, 166, 126, 194, 44, 77, - 194, 35, 162, 220, 111, 50, 70, 26, 134, 239, 226, 221, 31, 24, - 109, 143, 141, 224, 134, 156, 109, 135, 156, 11, 111, 59, 90, 54, - 58, 23, 4, 106, 68, 132, 113, 119, 135, 135, 96, 229, 55, 129, - 170, 234, 106, 78, 119, 166, 18, 125, 13, 71, 235, 123, 234, 206, - 140, 14, 244, 35, 122, 239, 232, 114, 242, 131, 161, 20, 117, 118, - 118, 120, 164, 210, 143, 116, 121, 164, 92, 124, 99, 4, 84, 39, - 143, 139, 164, 61, 46, 218, 82, 128, 167, 171, 63, 93, 217, 106, - 48, 83, 103, 16, 74, 183, 104, 106, 105, 111, 5, 193, 181, 107, - 156, 139, 252, 87, 193, 117, 30, 238, 194, 92, 196, 251, 109, 105, - 61, 203, 124, 228, 93, 209, 108, 222, 1, 1, 162, 66, 65, 153, - 43, 130, 13, 227, 212, 11, 2, 126, 204, 195, 109, 121, 94, 227, - 250, 93, 231, 20, 65, 3, 12, 90, 183, 217, 84, 49, 176, 152, - 138, 5, 29, 169, 44, 228, 45, 55, 117, 23, 178, 204, 216, 67, - 157, 16, 166, 1, 244, 6, 96, 181, 144, 187, 141, 217, 200, 221, - 230, 58, 189, 58, 73, 125, 204, 75, 247, 39, 245, 104, 130, 232, - 240, 69, 140, 187, 137, 85, 68, 158, 250, 24, 96, 67, 97, 12, - 99, 23, 238, 46, 125, 109, 66, 124, 16, 217, 185, 222, 9, 197, - 125, 50, 220, 115, 154, 34, 37, 73, 55, 66, 96, 122, 207, 239, - 112, 34, 238, 157, 96, 78, 14, 198, 85, 246, 96, 201, 150, 101, - 210, 117, 215, 191, 215, 90, 61, 104, 91, 227, 147, 222, 58, 197, - 135, 210, 170, 196, 245, 33, 130, 91, 217, 83, 251, 221, 23, 52, - 68, 84, 188, 23, 149, 112, 72, 192, 22, 213, 168, 42, 214, 173, - 247, 20, 111, 76, 77, 43, 69, 171, 107, 117, 19, 252, 118, 200, - 227, 78, 40, 25, 18, 147, 141, 72, 59, 185, 123, 41, 238, 186, - 17, 195, 55, 160, 112, 9, 116, 245, 44, 229, 182, 247, 57, 12, - 216, 13, 247, 245, 101, 132, 64, 5, 186, 29, 130, 19, 45, 7, - 121, 153, 44, 16, 49, 126, 98, 125, 123, 190, 72, 56, 35, 183, - 41, 124, 226, 11, 179, 83, 1, 97, 74, 32, 231, 185, 171, 53, - 194, 118, 39, 108, 7, 34, 250, 2, 8, 67, 212, 202, 0, 117, - 195, 239, 221, 27, 165, 195, 20, 201, 29, 189, 32, 189, 137, 246, - 97, 235, 236, 45, 177, 124, 79, 192, 139, 211, 20, 87, 71, 9, - 169, 104, 172, 212, 220, 40, 105, 217, 221, 13, 68, 45, 95, 255, - 154, 17, 55, 24, 102, 100, 55, 60, 124, 72, 174, 171, 43, 232, - 106, 156, 193, 128, 229, 25, 242, 66, 213, 186, 101, 147, 146, 103, - 34, 131, 77, 151, 3, 109, 23, 116, 225, 45, 206, 125, 73, 113, - 116, 231, 99, 163, 185, 115, 115, 231, 75, 130, 195, 228, 106, 103, - 245, 32, 12, 121, 61, 246, 1, 45, 126, 60, 82, 220, 36, 226, - 146, 241, 114, 171, 124, 189, 38, 77, 125, 100, 10, 224, 176, 38, - 202, 154, 128, 213, 67, 55, 218, 21, 23, 99, 65, 141, 20, 138, - 25, 152, 168, 226, 253, 161, 52, 54, 47, 130, 157, 202, 79, 109, - 59, 172, 211, 14, 252, 100, 69, 177, 245, 149, 197, 149, 169, 173, - 179, 115, 231, 207, 223, 127, 238, 222, 243, 231, 239, 154, 190, 192, - 100, 64, 142, 120, 206, 72, 219, 23, 56, 22, 157, 63, 85, 232, - 26, 150, 141, 27, 171, 6, 29, 0, 181, 62, 110, 25, 0, 202, - 204, 134, 131, 232, 61, 249, 51, 251, 54, 165, 197, 88, 57, 0, - 143, 204, 40, 48, 11, 224, 169, 105, 242, 17, 3, 183, 108, 155, - 218, 95, 180, 205, 251, 10, 255, 198, 96, 61, 207, 55, 127, 119, - 4, 149, 241, 65, 42, 246, 174, 251, 38, 33, 134, 203, 32, 78, - 212, 164, 197, 103, 234, 250, 117, 137, 118, 24, 236, 122, 91, 210, - 38, 11, 66, 181, 134, 92, 95, 152, 211, 42, 105, 179, 24, 128, - 45, 122, 172, 65, 7, 64, 77, 11, 219, 0, 80, 230, 202, 25, - 68, 239, 200, 23, 237, 226, 41, 5, 230, 0, 148, 151, 142, 7, - 49, 12, 252, 139, 246, 185, 123, 200, 23, 5, 45, 28, 106, 255, - 181, 109, 158, 47, 252, 73, 58, 242, 12, 182, 169, 151, 204, 65, - 175, 142, 70, 162, 239, 205, 61, 47, 211, 58, 222, 84, 180, 89, - 23, 67, 57, 54, 14, 85, 131, 56, 114, 77, 68, 199, 0, 48, - 175, 220, 9, 142, 5, 160, 116, 206, 15, 98, 32, 245, 95, 219, - 210, 57, 63, 136, 129, 212, 127, 109, 207, 156, 37, 15, 34, 13, - 51, 212, 254, 138, 109, 150, 10, 231, 191, 251, 55, 111, 4, 190, - 140, 141, 24, 52, 232, 0, 168, 187, 150, 49, 0, 212, 188, 158, - 177, 0, 188, 237, 136, 2, 115, 0, 22, 206, 40, 48, 11, 224, - 233, 25, 116, 212, 13, 130, 194, 254, 245, 31, 160, 163, 110, 16, - 131, 71, 191, 158, 116, 53, 155, 1, 112, 64, 209, 41, 107, 0, - 40, 29, 117, 131, 24, 60, 250, 117, 229, 168, 27, 116, 168, 253, - 205, 151, 200, 81, 55, 232, 244, 1, 114, 233, 168, 27, 68, 71, - 221, 55, 149, 163, 110, 16, 29, 117, 223, 180, 111, 153, 32, 199, - 160, 31, 253, 212, 254, 123, 219, 28, 42, 142, 200, 183, 100, 26, - 236, 9, 212, 187, 5, 166, 254, 62, 248, 89, 58, 62, 7, 241, - 116, 37, 13, 154, 18, 28, 36, 166, 61, 68, 51, 223, 182, 251, - 222, 232, 8, 151, 223, 144, 65, 237, 111, 219, 185, 113, 164, 252, - 16, 216, 62, 223, 249, 1, 82, 126, 8, 189, 99, 223, 81, 148, - 31, 66, 239, 216, 119, 20, 229, 135, 208, 130, 250, 142, 162, 252, - 16, 122, 199, 190, 163, 40, 63, 228, 80, 251, 13, 206, 75, 67, - 249, 33, 160, 252, 27, 28, 73, 249, 33, 164, 252, 27, 28, 73, - 249, 33, 164, 252, 27, 28, 233, 34, 29, 166, 153, 55, 57, 125, - 239, 150, 244, 26, 54, 168, 253, 38, 39, 55, 70, 30, 39, 182, - 61, 12, 244, 122, 139, 99, 178, 66, 77, 196, 41, 116, 7, 219, - 168, 176, 5, 124, 144, 157, 181, 196, 195, 107, 137, 59, 84, 60, - 126, 129, 143, 116, 197, 201, 77, 30, 162, 242, 139, 98, 95, 134, - 145, 128, 111, 113, 76, 13, 58, 0, 202, 85, 54, 140, 4, 124, - 139, 147, 63, 170, 64, 11, 192, 59, 142, 147, 255, 102, 96, 247, - 12, 106, 191, 195, 49, 207, 23, 254, 40, 145, 147, 50, 107, 208, - 75, 120, 142, 41, 174, 222, 189, 180, 82, 18, 143, 243, 53, 141, - 12, 27, 199, 169, 65, 7, 64, 77, 35, 3, 169, 32, 133, 228, - 48, 122, 193, 222, 225, 72, 33, 57, 140, 135, 193, 239, 112, 164, - 144, 28, 198, 195, 224, 119, 56, 51, 103, 241, 252, 97, 184, 159, - 218, 79, 59, 47, 112, 254, 48, 12, 235, 238, 105, 71, 46, 180, - 97, 92, 119, 105, 208, 148, 224, 10, 206, 134, 73, 237, 103, 156, - 31, 220, 226, 26, 70, 39, 201, 51, 201, 184, 65, 164, 63, 227, - 12, 168, 145, 193, 236, 63, 227, 200, 197, 53, 140, 78, 146, 103, - 28, 185, 184, 134, 29, 106, 63, 247, 18, 45, 174, 97, 88, 92, - 207, 169, 197, 53, 140, 139, 235, 57, 181, 184, 134, 113, 113, 61, - 167, 22, 215, 8, 205, 188, 199, 233, 251, 89, 185, 184, 70, 12, - 106, 191, 199, 201, 77, 144, 111, 0, 251, 142, 192, 234, 122, 30, - 216, 247, 139, 61, 236, 43, 12, 227, 151, 156, 137, 197, 119, 94, - 234, 243, 248, 84, 122, 47, 57, 177, 35, 184, 232, 159, 87, 19, - 59, 130, 139, 254, 121, 197, 208, 35, 184, 232, 159, 87, 12, 61, - 130, 139, 254, 121, 197, 208, 35, 120, 166, 240, 188, 98, 232, 17, - 60, 83, 120, 30, 24, 122, 5, 73, 106, 80, 251, 125, 63, 64, - 30, 28, 193, 181, 247, 190, 164, 171, 70, 6, 192, 1, 213, 25, - 3, 191, 39, 121, 112, 4, 215, 222, 251, 20, 15, 142, 56, 212, - 254, 192, 75, 196, 131, 35, 192, 131, 31, 80, 60, 56, 130, 60, - 248, 1, 197, 131, 35, 200, 131, 31, 80, 60, 152, 167, 153, 15, - 58, 125, 255, 94, 242, 96, 222, 160, 246, 7, 157, 220, 173, 228, - 79, 44, 98, 219, 121, 224, 193, 143, 58, 230, 92, 58, 26, 36, - 185, 81, 252, 18, 50, 160, 252, 200, 75, 205, 125, 234, 46, 78, - 153, 204, 125, 209, 64, 103, 194, 5, 38, 242, 69, 233, 252, 31, - 231, 117, 226, 143, 187, 230, 84, 174, 169, 36, 185, 191, 126, 228, - 92, 171, 142, 181, 213, 5, 194, 24, 219, 14, 221, 22, 223, 11, - 194, 107, 101, 198, 30, 229, 204, 109, 7, 205, 96, 7, 56, 9, - 223, 122, 9, 220, 176, 33, 13, 237, 40, 245, 40, 73, 192, 130, - 78, 24, 241, 230, 117, 30, 201, 83, 126, 198, 246, 184, 184, 90, - 165, 146, 118, 10, 95, 21, 94, 18, 194, 116, 188, 91, 120, 37, - 9, 170, 53, 120, 221, 147, 222, 38, 117, 182, 167, 94, 197, 5, - 68, 242, 97, 92, 201, 186, 121, 92, 101, 31, 85, 172, 155, 199, - 85, 246, 81, 181, 202, 242, 184, 202, 62, 170, 86, 89, 30, 87, - 217, 71, 29, 121, 149, 35, 143, 171, 236, 163, 142, 188, 202, 145, - 199, 85, 246, 81, 231, 204, 57, 92, 101, 121, 88, 101, 31, 255, - 1, 174, 178, 60, 174, 178, 143, 39, 93, 133, 85, 246, 113, 181, - 202, 242, 184, 202, 62, 174, 86, 89, 30, 87, 217, 199, 213, 42, - 203, 59, 212, 254, 196, 75, 180, 202, 242, 176, 202, 62, 161, 86, - 89, 30, 87, 217, 39, 212, 42, 203, 227, 42, 251, 132, 90, 101, - 163, 52, 243, 171, 78, 223, 159, 200, 85, 54, 106, 80, 251, 87, - 157, 220, 45, 228, 143, 96, 149, 141, 194, 42, 251, 36, 172, 178, - 255, 146, 142, 185, 66, 151, 222, 75, 28, 114, 5, 223, 120, 233, - 35, 174, 228, 189, 221, 255, 175, 45, 177, 81, 92, 98, 159, 84, - 124, 59, 138, 75, 236, 147, 106, 137, 141, 226, 18, 251, 164, 90, - 98, 163, 184, 196, 62, 169, 150, 216, 40, 46, 177, 79, 170, 37, - 54, 138, 75, 236, 147, 176, 196, 190, 12, 202, 193, 168, 221, 71, - 51, 159, 114, 204, 255, 236, 88, 221, 129, 122, 210, 15, 220, 224, - 179, 226, 226, 250, 44, 58, 227, 167, 130, 80, 120, 103, 61, 159, - 61, 188, 190, 190, 10, 107, 178, 233, 250, 117, 62, 45, 38, 191, - 193, 91, 237, 32, 230, 62, 76, 107, 16, 50, 95, 184, 208, 30, - 20, 117, 241, 113, 101, 188, 9, 217, 235, 109, 75, 60, 172, 151, - 43, 235, 192, 28, 91, 226, 206, 185, 187, 141, 57, 184, 113, 218, - 69, 72, 239, 234, 70, 234, 247, 228, 115, 218, 225, 171, 78, 49, - 122, 142, 229, 86, 87, 214, 214, 21, 49, 241, 252, 255, 83, 78, - 246, 54, 60, 138, 31, 21, 231, 255, 159, 118, 236, 99, 120, 202, - 51, 42, 143, 251, 63, 237, 200, 87, 80, 70, 229, 113, 255, 167, - 157, 194, 81, 114, 74, 182, 48, 168, 253, 187, 142, 61, 81, 28, - 23, 193, 65, 60, 74, 245, 133, 232, 102, 134, 168, 54, 150, 20, - 152, 80, 112, 235, 109, 228, 62, 137, 199, 164, 246, 239, 57, 246, - 88, 113, 50, 77, 58, 145, 71, 80, 165, 101, 195, 68, 25, 98, - 14, 162, 4, 53, 244, 224, 247, 28, 249, 140, 207, 168, 140, 22, - 248, 61, 7, 95, 139, 2, 65, 96, 208, 204, 103, 28, 243, 247, - 157, 59, 229, 172, 131, 224, 251, 76, 194, 64, 32, 248, 62, 227, - 200, 12, 151, 163, 216, 209, 207, 56, 199, 102, 21, 104, 1, 40, - 243, 65, 140, 162, 106, 255, 251, 78, 230, 180, 2, 179, 0, 142, - 158, 66, 25, 61, 10, 223, 253, 236, 15, 80, 70, 143, 162, 54, - 254, 217, 164, 171, 160, 141, 127, 86, 201, 232, 81, 28, 248, 103, - 149, 140, 30, 69, 109, 252, 179, 74, 70, 143, 58, 212, 254, 227, - 151, 72, 70, 143, 130, 140, 254, 99, 37, 163, 71, 81, 70, 255, - 177, 146, 209, 163, 40, 163, 255, 24, 100, 244, 219, 44, 98, 218, - 148, 102, 62, 239, 244, 253, 173, 99, 20, 254, 193, 100, 243, 218, - 171, 171, 207, 206, 65, 42, 184, 218, 194, 77, 200, 166, 207, 111, - 52, 149, 164, 151, 81, 196, 120, 187, 237, 54, 119, 197, 21, 107, - 53, 10, 153, 85, 77, 228, 247, 86, 55, 179, 117, 84, 218, 133, - 11, 171, 50, 55, 157, 72, 67, 147, 206, 88, 28, 4, 77, 149, - 237, 50, 146, 178, 13, 29, 190, 152, 206, 13, 58, 184, 152, 74, - 77, 143, 247, 5, 163, 114, 215, 205, 229, 158, 46, 120, 126, 87, + 192, 234, 214, 175, 133, 224, 224, 161, 221, 221, 119, 178, 109, 92, + 89, 49, 223, 9, 221, 22, 210, 190, 233, 61, 161, 210, 161, 16, + 54, 227, 249, 241, 221, 119, 150, 88, 87, 254, 27, 201, 127, 177, + 18, 22, 200, 191, 102, 203, 140, 45, 166, 82, 216, 169, 129, 232, + 231, 220, 136, 200, 72, 36, 249, 3, 39, 44, 61, 30, 17, 109, + 163, 108, 30, 164, 122, 196, 90, 129, 200, 24, 0, 122, 179, 135, + 145, 52, 34, 232, 7, 248, 117, 215, 237, 128, 24, 217, 19, 249, + 8, 90, 160, 110, 36, 137, 34, 100, 6, 6, 233, 21, 102, 205, + 86, 32, 212, 110, 17, 80, 158, 124, 182, 76, 216, 58, 10, 180, + 125, 248, 85, 191, 53, 167, 173, 1, 57, 8, 52, 75, 123, 236, + 56, 222, 72, 119, 94, 222, 93, 32, 90, 73, 72, 253, 86, 20, + 161, 167, 69, 149, 243, 6, 131, 19, 248, 174, 123, 221, 11, 194, + 212, 189, 10, 20, 28, 98, 174, 8, 211, 79, 226, 225, 213, 207, + 30, 253, 71, 103, 203, 142, 133, 51, 162, 71, 230, 234, 59, 192, + 129, 156, 236, 244, 169, 185, 8, 168, 19, 97, 181, 110, 3, 125, + 254, 34, 28, 122, 39, 8, 118, 202, 109, 55, 222, 45, 87, 129, + 15, 180, 26, 50, 140, 70, 201, 191, 77, 24, 219, 204, 0, 40, + 93, 128, 195, 40, 115, 254, 173, 77, 167, 20, 104, 1, 120, 244, + 152, 2, 115, 0, 222, 186, 160, 192, 44, 128, 51, 231, 165, 84, + 53, 104, 230, 227, 182, 249, 27, 90, 170, 194, 34, 249, 184, 157, + 29, 193, 164, 89, 195, 34, 149, 213, 175, 216, 54, 45, 220, 34, + 29, 168, 169, 83, 110, 113, 23, 74, 8, 58, 145, 199, 234, 87, + 18, 225, 41, 242, 88, 253, 138, 157, 31, 39, 179, 18, 149, 65, + 237, 95, 5, 84, 71, 16, 213, 1, 158, 139, 82, 200, 12, 81, + 55, 65, 6, 130, 247, 87, 211, 200, 76, 106, 255, 250, 161, 200, + 146, 8, 99, 213, 22, 62, 252, 235, 105, 100, 162, 113, 126, 156, + 252, 33, 18, 1, 8, 246, 167, 182, 121, 166, 240, 201, 81, 21, + 163, 145, 186, 60, 177, 173, 77, 144, 150, 251, 164, 215, 218, 191, + 159, 177, 21, 247, 201, 125, 117, 164, 168, 79, 20, 165, 6, 50, + 15, 100, 81, 169, 90, 197, 181, 128, 54, 119, 125, 153, 251, 98, + 79, 5, 215, 137, 184, 210, 148, 165, 133, 247, 121, 112, 167, 23, + 95, 43, 9, 9, 226, 97, 22, 32, 89, 111, 58, 74, 178, 227, + 160, 80, 148, 215, 73, 101, 255, 182, 187, 177, 82, 132, 133, 34, + 39, 162, 73, 132, 92, 22, 222, 58, 201, 247, 61, 88, 165, 124, + 173, 199, 34, 34, 62, 193, 135, 157, 149, 169, 159, 48, 75, 147, + 240, 136, 40, 247, 155, 140, 145, 134, 225, 187, 120, 247, 7, 70, + 219, 103, 35, 184, 33, 103, 205, 144, 115, 225, 109, 71, 203, 70, + 231, 130, 64, 141, 136, 48, 238, 238, 240, 16, 172, 252, 22, 80, + 85, 93, 205, 233, 205, 84, 162, 175, 225, 104, 125, 79, 221, 153, + 209, 129, 126, 68, 239, 29, 61, 78, 126, 48, 148, 162, 238, 206, + 14, 143, 84, 250, 145, 30, 143, 148, 139, 111, 140, 128, 234, 228, + 113, 145, 180, 199, 69, 91, 10, 240, 244, 244, 167, 39, 91, 13, + 102, 234, 12, 66, 233, 22, 77, 45, 237, 237, 32, 184, 118, 141, + 115, 145, 255, 42, 184, 206, 195, 93, 152, 139, 120, 191, 35, 173, + 103, 153, 143, 188, 39, 154, 205, 59, 32, 64, 84, 40, 40, 115, + 69, 176, 97, 156, 122, 65, 192, 143, 121, 216, 148, 231, 53, 174, + 223, 115, 78, 17, 52, 192, 160, 117, 91, 45, 21, 3, 139, 169, + 88, 208, 145, 202, 66, 222, 118, 83, 119, 33, 203, 140, 61, 208, + 13, 97, 26, 64, 111, 0, 86, 11, 185, 219, 152, 143, 220, 38, + 215, 233, 213, 73, 234, 99, 94, 186, 63, 169, 71, 19, 68, 135, + 47, 98, 220, 77, 172, 34, 242, 212, 199, 0, 27, 10, 99, 24, + 187, 112, 119, 233, 107, 19, 226, 131, 200, 206, 245, 110, 40, 238, + 147, 225, 158, 211, 18, 41, 73, 122, 17, 2, 211, 123, 126, 151, + 19, 113, 239, 4, 115, 114, 48, 174, 178, 7, 75, 182, 44, 147, + 158, 187, 254, 253, 214, 234, 65, 219, 26, 159, 244, 214, 41, 62, + 148, 86, 37, 174, 15, 17, 220, 202, 158, 220, 239, 189, 160, 33, + 162, 226, 189, 168, 132, 67, 2, 182, 168, 70, 85, 177, 110, 189, + 39, 121, 99, 102, 86, 41, 90, 61, 171, 155, 224, 183, 67, 30, + 119, 67, 201, 144, 152, 108, 68, 218, 201, 189, 75, 113, 215, 141, + 24, 190, 1, 133, 75, 160, 167, 103, 41, 183, 189, 207, 97, 192, + 110, 184, 175, 47, 35, 4, 42, 208, 237, 16, 156, 104, 57, 200, + 203, 100, 129, 136, 241, 19, 235, 219, 243, 69, 194, 25, 185, 77, + 225, 19, 95, 152, 157, 10, 8, 83, 2, 57, 207, 93, 173, 17, + 118, 186, 97, 39, 16, 209, 23, 64, 24, 162, 86, 6, 168, 27, + 126, 255, 222, 40, 29, 166, 72, 238, 232, 121, 233, 77, 180, 15, + 91, 103, 111, 137, 229, 123, 2, 94, 156, 166, 184, 58, 74, 72, + 69, 99, 165, 230, 70, 73, 203, 222, 110, 32, 106, 249, 250, 215, + 156, 184, 193, 48, 39, 187, 225, 225, 67, 114, 61, 93, 65, 87, + 227, 28, 6, 44, 207, 145, 231, 171, 214, 43, 155, 148, 60, 19, + 25, 108, 122, 28, 104, 187, 160, 11, 111, 115, 238, 75, 138, 163, + 59, 31, 27, 45, 156, 91, 56, 95, 18, 28, 38, 87, 59, 171, + 7, 97, 200, 235, 177, 15, 104, 241, 227, 145, 226, 38, 17, 151, + 140, 151, 91, 229, 235, 53, 105, 234, 35, 83, 0, 135, 181, 80, + 214, 4, 172, 30, 186, 209, 174, 184, 24, 11, 106, 164, 80, 204, + 192, 68, 21, 239, 15, 165, 177, 121, 17, 236, 84, 126, 106, 219, + 97, 221, 78, 224, 39, 43, 138, 109, 172, 45, 175, 205, 108, 159, + 93, 56, 127, 254, 222, 115, 119, 159, 63, 127, 199, 236, 5, 38, + 3, 114, 196, 115, 70, 218, 190, 192, 177, 232, 252, 169, 66, 215, + 176, 108, 220, 88, 53, 232, 0, 168, 245, 113, 203, 0, 80, 102, + 54, 28, 70, 239, 201, 159, 218, 183, 40, 45, 198, 202, 1, 120, + 100, 78, 129, 89, 0, 79, 205, 146, 143, 24, 184, 101, 219, 212, + 254, 146, 109, 222, 83, 248, 87, 6, 235, 123, 190, 249, 123, 35, + 168, 140, 15, 82, 177, 119, 189, 55, 9, 49, 92, 6, 113, 162, + 38, 45, 62, 83, 215, 175, 75, 116, 194, 96, 215, 219, 150, 54, + 89, 16, 170, 53, 228, 250, 194, 156, 86, 73, 155, 197, 0, 108, + 209, 99, 13, 58, 0, 106, 90, 216, 6, 128, 50, 87, 206, 48, + 122, 71, 190, 100, 23, 79, 41, 48, 7, 160, 188, 116, 60, 140, + 97, 224, 95, 178, 207, 221, 69, 190, 36, 104, 225, 80, 251, 175, + 108, 243, 124, 225, 143, 211, 145, 103, 176, 77, 189, 100, 14, 122, + 117, 52, 18, 125, 127, 238, 121, 153, 214, 241, 69, 69, 155, 245, + 48, 148, 99, 227, 80, 53, 136, 35, 215, 68, 116, 12, 0, 243, + 202, 157, 224, 88, 0, 74, 231, 252, 48, 6, 82, 255, 149, 45, + 157, 243, 195, 24, 72, 253, 87, 246, 220, 89, 114, 63, 210, 48, + 67, 237, 175, 218, 102, 169, 112, 254, 123, 127, 243, 70, 224, 203, + 216, 136, 65, 131, 14, 128, 186, 107, 25, 3, 64, 205, 235, 25, + 11, 192, 91, 142, 40, 48, 7, 96, 225, 140, 2, 179, 0, 158, + 158, 67, 71, 221, 48, 40, 236, 223, 248, 33, 58, 234, 134, 49, + 120, 244, 27, 73, 87, 179, 25, 0, 135, 20, 157, 178, 6, 128, + 210, 81, 55, 140, 193, 163, 223, 80, 142, 186, 97, 135, 218, 223, + 122, 137, 28, 117, 195, 206, 0, 32, 151, 142, 186, 97, 116, 212, + 125, 75, 57, 234, 134, 209, 81, 247, 45, 251, 166, 41, 114, 12, + 250, 49, 72, 237, 191, 179, 205, 145, 226, 152, 124, 75, 166, 193, + 30, 71, 189, 91, 96, 26, 28, 128, 159, 165, 227, 115, 24, 79, + 87, 210, 160, 41, 193, 97, 98, 218, 35, 52, 243, 29, 123, 224, + 141, 142, 112, 249, 141, 24, 212, 254, 142, 157, 155, 68, 202, 143, + 128, 237, 243, 221, 31, 34, 229, 71, 208, 59, 246, 93, 69, 249, + 17, 244, 142, 125, 87, 81, 126, 4, 45, 168, 239, 42, 202, 143, + 160, 119, 236, 187, 138, 242, 35, 14, 181, 223, 224, 188, 52, 148, + 31, 1, 202, 191, 193, 145, 148, 31, 65, 202, 191, 193, 145, 148, + 31, 65, 202, 191, 193, 145, 46, 210, 81, 154, 121, 147, 51, 240, + 110, 73, 175, 81, 131, 218, 111, 114, 114, 19, 228, 49, 98, 219, + 163, 64, 175, 183, 56, 38, 43, 212, 68, 156, 66, 111, 176, 141, + 10, 91, 192, 7, 217, 89, 91, 60, 188, 150, 184, 67, 197, 227, + 23, 248, 72, 87, 156, 220, 228, 33, 42, 191, 40, 246, 101, 20, + 9, 248, 22, 199, 212, 160, 3, 160, 92, 101, 163, 72, 192, 183, + 56, 249, 163, 10, 180, 0, 188, 237, 56, 249, 111, 6, 118, 207, + 160, 246, 59, 28, 243, 124, 225, 15, 19, 57, 41, 179, 6, 189, + 132, 231, 152, 226, 234, 221, 75, 43, 37, 241, 56, 95, 211, 200, + 176, 113, 156, 26, 116, 0, 212, 52, 50, 144, 10, 82, 72, 142, + 162, 23, 236, 29, 142, 20, 146, 163, 120, 24, 252, 14, 71, 10, + 201, 81, 60, 12, 126, 135, 51, 119, 22, 207, 31, 70, 7, 169, + 253, 148, 243, 60, 231, 15, 163, 176, 238, 158, 114, 228, 66, 27, + 197, 117, 151, 6, 77, 9, 174, 225, 108, 152, 212, 126, 218, 249, + 225, 45, 174, 81, 116, 146, 60, 157, 140, 27, 68, 250, 211, 206, + 144, 26, 25, 204, 254, 211, 142, 92, 92, 163, 232, 36, 121, 218, + 145, 139, 107, 212, 161, 246, 179, 47, 209, 226, 26, 133, 197, 245, + 172, 90, 92, 163, 184, 184, 158, 85, 139, 107, 20, 23, 215, 179, + 106, 113, 141, 209, 204, 123, 156, 129, 127, 45, 23, 215, 152, 65, + 237, 247, 56, 185, 41, 242, 77, 96, 223, 49, 88, 93, 207, 1, + 251, 126, 169, 143, 125, 133, 97, 252, 146, 51, 177, 248, 206, 75, + 125, 30, 159, 74, 239, 37, 39, 118, 12, 23, 253, 115, 106, 98, + 199, 112, 209, 63, 167, 24, 122, 12, 23, 253, 115, 138, 161, 199, + 112, 209, 63, 167, 24, 122, 12, 207, 20, 158, 83, 12, 61, 134, + 103, 10, 207, 1, 67, 175, 33, 73, 13, 106, 191, 239, 135, 200, + 131, 99, 184, 246, 222, 151, 116, 213, 200, 0, 56, 164, 58, 99, + 224, 247, 36, 15, 142, 225, 218, 123, 159, 226, 193, 49, 135, 218, + 31, 120, 137, 120, 112, 12, 120, 240, 3, 138, 7, 199, 144, 7, + 63, 160, 120, 112, 12, 121, 240, 3, 138, 7, 243, 52, 243, 65, + 103, 224, 223, 73, 30, 204, 27, 212, 254, 160, 147, 187, 153, 252, + 177, 69, 108, 59, 15, 60, 248, 81, 199, 92, 72, 71, 131, 36, + 55, 138, 95, 66, 6, 148, 31, 121, 169, 185, 79, 221, 197, 41, + 147, 133, 47, 25, 232, 76, 184, 192, 68, 190, 40, 157, 255, 227, + 188, 78, 252, 113, 199, 130, 202, 53, 149, 36, 247, 215, 143, 156, + 107, 213, 177, 118, 117, 137, 48, 198, 154, 161, 219, 230, 123, 65, + 120, 173, 204, 216, 195, 156, 185, 157, 160, 21, 236, 0, 39, 225, + 91, 47, 129, 27, 54, 164, 161, 29, 165, 30, 37, 9, 88, 208, + 13, 35, 222, 186, 206, 35, 121, 202, 207, 216, 30, 23, 87, 171, + 84, 210, 78, 225, 171, 194, 75, 66, 152, 142, 119, 27, 175, 36, + 65, 181, 6, 175, 123, 210, 219, 164, 206, 246, 212, 171, 184, 128, + 72, 62, 140, 43, 89, 55, 143, 171, 236, 163, 138, 117, 243, 184, + 202, 62, 170, 86, 89, 30, 87, 217, 71, 213, 42, 203, 227, 42, + 251, 168, 35, 175, 114, 228, 113, 149, 125, 212, 145, 87, 57, 242, + 184, 202, 62, 234, 156, 57, 135, 171, 44, 15, 171, 236, 227, 63, + 196, 85, 150, 199, 85, 246, 241, 164, 171, 176, 202, 62, 174, 86, + 89, 30, 87, 217, 199, 213, 42, 203, 227, 42, 251, 184, 90, 101, + 121, 135, 218, 159, 120, 137, 86, 89, 30, 86, 217, 39, 212, 42, + 203, 227, 42, 251, 132, 90, 101, 121, 92, 101, 159, 80, 171, 108, + 156, 102, 126, 205, 25, 248, 99, 185, 202, 198, 13, 106, 255, 154, + 147, 187, 137, 252, 33, 172, 178, 113, 88, 101, 159, 132, 85, 246, + 95, 210, 49, 87, 232, 210, 123, 137, 67, 174, 224, 27, 47, 125, + 196, 149, 188, 183, 251, 255, 181, 37, 54, 142, 75, 236, 147, 138, + 111, 199, 113, 137, 125, 82, 45, 177, 113, 92, 98, 159, 84, 75, + 108, 28, 151, 216, 39, 213, 18, 27, 199, 37, 246, 73, 181, 196, + 198, 113, 137, 125, 18, 150, 216, 87, 64, 57, 24, 183, 7, 104, + 230, 211, 142, 249, 159, 29, 171, 55, 80, 79, 250, 129, 27, 124, + 94, 92, 92, 159, 71, 103, 252, 76, 16, 10, 239, 172, 231, 179, + 7, 55, 54, 174, 194, 154, 108, 185, 126, 157, 207, 138, 201, 111, + 240, 118, 39, 136, 185, 15, 211, 26, 132, 204, 23, 46, 180, 251, + 69, 93, 124, 92, 25, 111, 66, 246, 123, 219, 18, 15, 235, 229, + 202, 6, 48, 199, 182, 184, 115, 238, 54, 49, 7, 55, 78, 187, + 8, 233, 189, 186, 153, 250, 61, 249, 156, 118, 248, 170, 83, 140, + 190, 99, 185, 171, 107, 235, 27, 138, 152, 120, 254, 255, 105, 39, + 123, 11, 30, 197, 143, 139, 243, 255, 207, 56, 246, 49, 60, 229, + 25, 151, 199, 253, 159, 113, 228, 43, 40, 227, 242, 184, 255, 51, + 78, 225, 40, 57, 37, 91, 24, 212, 254, 29, 199, 158, 42, 78, + 138, 224, 32, 30, 165, 250, 66, 116, 51, 67, 84, 155, 72, 10, + 76, 40, 184, 249, 22, 114, 143, 196, 99, 82, 251, 119, 29, 123, + 162, 56, 157, 38, 157, 200, 35, 168, 210, 178, 97, 162, 12, 49, + 7, 81, 130, 26, 122, 240, 187, 142, 124, 198, 103, 92, 70, 11, + 252, 174, 131, 175, 69, 129, 32, 48, 104, 230, 179, 142, 249, 123, + 206, 237, 114, 214, 65, 240, 125, 54, 97, 32, 16, 124, 159, 117, + 100, 134, 203, 113, 236, 232, 103, 157, 99, 243, 10, 180, 0, 148, + 249, 32, 198, 81, 181, 255, 61, 39, 115, 90, 129, 89, 0, 199, + 79, 161, 140, 30, 135, 239, 126, 238, 135, 40, 163, 199, 81, 27, + 255, 92, 210, 85, 208, 198, 63, 167, 100, 244, 56, 14, 252, 115, + 74, 70, 143, 163, 54, 254, 57, 37, 163, 199, 29, 106, 255, 209, + 75, 36, 163, 199, 65, 70, 255, 145, 146, 209, 227, 40, 163, 255, + 72, 201, 232, 113, 148, 209, 127, 4, 50, 250, 109, 22, 49, 109, + 74, 51, 95, 112, 6, 254, 198, 49, 10, 127, 111, 178, 69, 237, + 213, 213, 103, 231, 32, 21, 92, 109, 225, 38, 100, 211, 231, 55, + 154, 74, 210, 203, 40, 98, 188, 221, 78, 135, 187, 226, 138, 181, + 26, 133, 204, 170, 38, 242, 123, 171, 155, 217, 58, 42, 237, 194, + 133, 171, 50, 55, 157, 72, 67, 147, 206, 88, 28, 4, 45, 149, + 237, 50, 146, 178, 13, 29, 190, 152, 206, 13, 58, 184, 156, 74, + 77, 143, 247, 5, 163, 114, 207, 205, 229, 190, 46, 120, 126, 79, 50, 123, 209, 66, 62, 42, 47, 142, 48, 68, 255, 18, 180, 23, - 46, 72, 20, 83, 211, 66, 92, 180, 195, 64, 188, 203, 208, 83, - 109, 33, 104, 239, 175, 7, 83, 211, 211, 242, 236, 18, 51, 131, - 224, 226, 216, 72, 167, 195, 211, 57, 243, 84, 194, 61, 145, 42, - 138, 26, 212, 254, 188, 147, 59, 74, 126, 199, 36, 182, 77, 173, - 62, 154, 249, 162, 99, 254, 133, 99, 21, 254, 189, 136, 164, 73, - 95, 236, 239, 202, 175, 151, 156, 21, 98, 10, 69, 153, 78, 68, - 207, 162, 200, 243, 186, 35, 147, 10, 16, 230, 178, 70, 16, 207, - 170, 20, 59, 13, 21, 207, 237, 69, 155, 73, 30, 17, 249, 44, - 2, 243, 182, 183, 83, 173, 211, 40, 253, 84, 146, 61, 54, 213, - 224, 126, 16, 171, 76, 33, 226, 157, 26, 152, 170, 46, 30, 136, - 218, 188, 30, 245, 70, 61, 78, 151, 9, 171, 148, 119, 202, 165, - 127, 202, 126, 88, 62, 144, 142, 49, 49, 175, 45, 177, 31, 46, - 110, 185, 97, 121, 203, 125, 170, 88, 194, 206, 96, 81, 43, 85, - 133, 253, 72, 170, 71, 68, 60, 172, 62, 37, 219, 76, 151, 161, - 166, 92, 172, 20, 51, 80, 127, 209, 33, 226, 101, 47, 42, 50, - 80, 255, 185, 99, 23, 81, 46, 81, 153, 115, 250, 207, 29, 153, - 17, 154, 202, 156, 211, 127, 238, 12, 141, 37, 5, 6, 20, 140, - 223, 158, 20, 88, 80, 192, 78, 104, 156, 6, 181, 191, 228, 216, - 39, 117, 5, 16, 102, 95, 74, 227, 52, 28, 40, 24, 26, 77, - 10, 176, 9, 189, 35, 41, 176, 160, 224, 68, 17, 215, 50, 133, - 94, 254, 165, 99, 138, 188, 168, 20, 251, 248, 151, 74, 226, 80, - 116, 174, 253, 165, 51, 48, 166, 64, 3, 192, 241, 9, 5, 90, - 0, 30, 61, 38, 158, 136, 162, 208, 185, 47, 59, 230, 100, 225, - 237, 70, 234, 165, 147, 23, 224, 166, 18, 204, 212, 222, 174, 27, - 35, 23, 99, 112, 10, 106, 96, 193, 53, 14, 11, 62, 36, 176, - 21, 136, 20, 165, 152, 40, 210, 141, 228, 209, 77, 114, 114, 83, - 145, 151, 84, 228, 163, 81, 98, 241, 202, 160, 85, 249, 6, 149, - 26, 11, 144, 234, 203, 201, 208, 128, 80, 95, 118, 100, 252, 7, - 69, 50, 125, 217, 145, 55, 33, 41, 18, 233, 203, 206, 233, 59, - 37, 145, 76, 106, 127, 197, 49, 167, 229, 143, 32, 150, 191, 146, - 96, 50, 29, 0, 53, 38, 140, 23, 119, 232, 41, 5, 90, 0, - 78, 78, 73, 76, 22, 181, 191, 234, 200, 108, 203, 20, 15, 119, - 190, 154, 96, 178, 28, 0, 101, 164, 31, 197, 195, 157, 175, 58, - 163, 39, 21, 136, 109, 239, 156, 148, 152, 108, 106, 127, 205, 49, - 213, 143, 182, 0, 21, 38, 219, 1, 80, 247, 201, 54, 0, 148, - 23, 220, 40, 30, 141, 124, 45, 97, 1, 135, 218, 255, 195, 49, - 213, 208, 29, 27, 65, 133, 201, 193, 95, 117, 159, 28, 3, 192, - 81, 197, 47, 142, 5, 160, 204, 163, 75, 97, 131, 250, 186, 35, - 83, 39, 83, 116, 231, 127, 61, 193, 148, 113, 0, 212, 125, 202, - 24, 0, 210, 19, 10, 180, 0, 60, 117, 154, 124, 206, 32, 166, - 61, 70, 51, 223, 118, 250, 254, 103, 198, 40, 60, 193, 42, 126, - 221, 109, 71, 50, 255, 233, 205, 61, 153, 46, 146, 121, 133, 65, - 75, 133, 96, 17, 246, 144, 215, 228, 61, 9, 139, 217, 158, 155, - 202, 231, 82, 38, 115, 143, 255, 32, 51, 206, 118, 63, 224, 142, - 29, 23, 82, 120, 204, 160, 246, 183, 157, 220, 173, 228, 13, 163, - 196, 182, 199, 96, 5, 126, 40, 99, 158, 40, 124, 45, 207, 230, - 217, 82, 160, 206, 198, 146, 236, 188, 46, 107, 123, 92, 132, 43, - 116, 99, 100, 110, 119, 66, 54, 24, 43, 17, 103, 118, 81, 59, - 240, 69, 124, 163, 155, 62, 238, 77, 146, 222, 234, 235, 53, 221, + 46, 72, 20, 51, 179, 66, 92, 116, 194, 64, 188, 203, 208, 87, + 109, 41, 232, 236, 111, 4, 51, 179, 179, 242, 236, 18, 51, 131, + 224, 226, 216, 76, 167, 195, 211, 57, 243, 84, 194, 61, 145, 42, + 138, 26, 212, 254, 130, 147, 59, 74, 254, 147, 73, 108, 155, 90, + 3, 52, 243, 37, 199, 252, 115, 199, 42, 252, 59, 17, 73, 147, + 190, 216, 223, 147, 95, 47, 57, 43, 196, 20, 138, 50, 157, 136, + 158, 69, 145, 231, 117, 71, 38, 21, 32, 204, 101, 141, 32, 158, + 87, 41, 118, 26, 42, 158, 219, 139, 182, 146, 60, 34, 242, 89, + 4, 230, 53, 155, 169, 214, 105, 148, 126, 42, 201, 30, 155, 105, + 112, 63, 136, 85, 166, 16, 241, 78, 13, 76, 85, 15, 15, 68, + 29, 94, 143, 250, 163, 30, 103, 203, 132, 85, 202, 59, 229, 210, + 63, 102, 63, 42, 31, 72, 199, 152, 152, 215, 150, 216, 143, 22, + 183, 221, 176, 188, 237, 62, 89, 44, 97, 103, 176, 168, 157, 170, + 194, 126, 44, 213, 35, 34, 30, 86, 159, 145, 109, 102, 203, 80, + 83, 46, 86, 138, 25, 168, 191, 228, 16, 241, 178, 23, 21, 25, + 168, 255, 204, 177, 139, 40, 151, 168, 204, 57, 253, 103, 142, 204, + 8, 77, 101, 206, 233, 63, 115, 70, 38, 146, 2, 3, 10, 38, + 111, 77, 10, 44, 40, 96, 39, 52, 78, 131, 218, 95, 118, 236, + 147, 186, 2, 8, 179, 47, 167, 113, 26, 14, 20, 140, 140, 39, + 5, 216, 132, 222, 150, 20, 88, 80, 112, 162, 136, 107, 153, 66, + 47, 255, 194, 49, 69, 94, 84, 138, 125, 252, 11, 37, 113, 40, + 58, 215, 254, 194, 25, 154, 80, 160, 1, 224, 228, 148, 2, 45, + 0, 143, 30, 19, 79, 68, 81, 232, 220, 87, 28, 115, 186, 240, + 118, 35, 245, 210, 201, 243, 112, 83, 9, 102, 106, 111, 215, 141, + 145, 139, 49, 56, 5, 53, 176, 224, 26, 135, 5, 31, 18, 216, + 10, 68, 138, 82, 76, 20, 233, 70, 242, 232, 38, 57, 185, 169, + 200, 75, 42, 242, 209, 40, 177, 120, 101, 208, 170, 124, 131, 74, + 141, 5, 72, 245, 149, 100, 104, 64, 168, 175, 56, 50, 254, 131, + 34, 153, 190, 226, 200, 155, 144, 20, 137, 244, 21, 231, 244, 237, + 146, 72, 38, 181, 191, 234, 152, 179, 242, 71, 16, 203, 95, 77, + 48, 153, 14, 128, 26, 19, 198, 139, 59, 244, 148, 2, 45, 0, + 167, 103, 36, 38, 139, 218, 95, 115, 100, 182, 101, 138, 135, 59, + 95, 75, 48, 89, 14, 128, 50, 210, 143, 226, 225, 206, 215, 156, + 241, 147, 10, 196, 182, 183, 79, 75, 76, 54, 181, 191, 238, 152, + 234, 71, 91, 128, 10, 147, 237, 0, 168, 251, 100, 27, 0, 202, + 11, 110, 20, 143, 70, 190, 158, 176, 128, 67, 237, 255, 225, 152, + 106, 232, 142, 141, 160, 194, 228, 224, 175, 186, 79, 142, 1, 224, + 184, 226, 23, 199, 2, 80, 230, 209, 165, 176, 65, 125, 195, 145, + 169, 147, 41, 186, 243, 191, 145, 96, 202, 56, 0, 234, 62, 101, + 12, 0, 233, 9, 5, 90, 0, 158, 58, 77, 62, 111, 16, 211, + 158, 160, 153, 239, 56, 3, 255, 51, 99, 20, 30, 103, 21, 191, + 238, 118, 34, 153, 255, 244, 197, 61, 153, 46, 146, 121, 133, 65, + 91, 133, 96, 17, 246, 128, 215, 226, 125, 9, 139, 217, 158, 155, + 202, 231, 82, 38, 11, 143, 253, 48, 51, 206, 246, 62, 224, 142, + 29, 23, 82, 120, 194, 160, 246, 119, 156, 220, 205, 228, 13, 227, + 196, 182, 39, 96, 5, 126, 40, 99, 158, 40, 124, 61, 207, 22, + 217, 74, 160, 206, 198, 146, 236, 188, 46, 235, 120, 92, 132, 43, + 244, 98, 100, 110, 111, 66, 54, 24, 43, 17, 103, 118, 81, 39, + 240, 69, 124, 163, 155, 62, 238, 77, 146, 222, 234, 235, 53, 189, 175, 189, 139, 60, 143, 242, 181, 142, 228, 249, 144, 56, 96, 213, - 197, 10, 62, 21, 213, 144, 79, 50, 241, 48, 42, 245, 220, 6, - 76, 238, 135, 203, 68, 105, 94, 203, 107, 186, 33, 209, 239, 196, + 229, 10, 62, 21, 213, 144, 79, 50, 241, 48, 42, 245, 221, 6, + 76, 238, 135, 203, 68, 105, 94, 219, 107, 185, 33, 209, 239, 196, 203, 183, 190, 48, 225, 98, 137, 69, 238, 62, 24, 0, 226, 106, 151, 24, 130, 190, 144, 112, 195, 107, 102, 64, 86, 153, 204, 42, - 8, 244, 237, 130, 31, 33, 108, 137, 227, 141, 184, 32, 184, 198, - 220, 88, 164, 232, 77, 66, 129, 147, 113, 35, 246, 23, 66, 245, - 152, 188, 170, 240, 216, 99, 250, 31, 248, 255, 177, 199, 224, 71, - 87, 254, 184, 85, 199, 127, 26, 156, 177, 109, 198, 118, 118, 61, - 2, 230, 146, 78, 54, 171, 147, 248, 176, 166, 156, 79, 113, 107, - 35, 106, 187, 62, 99, 152, 176, 135, 117, 255, 151, 222, 101, 24, - 251, 97, 183, 228, 77, 51, 246, 195, 236, 238, 18, 59, 87, 98, - 115, 37, 118, 142, 189, 22, 235, 129, 96, 221, 219, 13, 154, 7, - 7, 86, 150, 13, 183, 122, 26, 150, 216, 221, 208, 22, 26, 54, - 221, 45, 222, 100, 83, 106, 244, 211, 162, 73, 189, 212, 56, 208, - 228, 30, 213, 68, 188, 50, 39, 200, 36, 235, 243, 210, 246, 129, - 250, 231, 85, 125, 145, 154, 116, 59, 8, 100, 229, 157, 210, 238, - 129, 202, 119, 233, 202, 34, 171, 231, 212, 249, 105, 245, 198, 4, - 144, 105, 150, 205, 107, 178, 201, 176, 15, 157, 67, 92, 71, 242, - 202, 24, 162, 56, 226, 205, 109, 249, 10, 158, 12, 145, 192, 84, - 117, 44, 205, 244, 226, 5, 49, 153, 211, 214, 139, 167, 83, 55, - 203, 212, 25, 181, 76, 177, 134, 183, 26, 130, 109, 21, 164, 27, - 137, 116, 207, 140, 129, 17, 44, 162, 143, 184, 95, 111, 6, 50, - 240, 67, 71, 232, 138, 235, 102, 66, 131, 41, 179, 110, 38, 199, - 48, 198, 216, 11, 147, 164, 168, 24, 192, 91, 191, 198, 166, 218, - 65, 20, 121, 91, 205, 253, 244, 83, 102, 58, 186, 39, 209, 124, - 82, 137, 170, 133, 218, 135, 137, 74, 197, 125, 72, 25, 37, 163, - 201, 181, 183, 11, 166, 35, 242, 23, 82, 77, 31, 4, 21, 19, - 13, 191, 168, 169, 136, 22, 191, 142, 114, 197, 196, 68, 190, 160, - 86, 25, 166, 225, 138, 234, 139, 102, 226, 196, 22, 211, 87, 245, - 224, 91, 138, 160, 34, 140, 53, 82, 113, 172, 130, 58, 41, 250, - 165, 223, 150, 192, 39, 208, 218, 33, 90, 168, 240, 97, 145, 147, - 89, 15, 31, 83, 104, 201, 132, 244, 172, 21, 68, 232, 84, 8, - 182, 174, 123, 65, 39, 82, 196, 85, 143, 4, 138, 177, 53, 138, - 146, 174, 238, 142, 235, 249, 58, 179, 173, 74, 134, 156, 206, 227, - 155, 158, 134, 238, 23, 48, 162, 122, 208, 230, 37, 17, 169, 141, - 113, 41, 58, 83, 240, 33, 163, 238, 102, 213, 201, 72, 44, 111, - 21, 231, 37, 110, 218, 96, 122, 90, 201, 85, 94, 28, 73, 197, - 85, 214, 21, 188, 34, 122, 36, 217, 37, 53, 30, 206, 139, 34, - 66, 173, 139, 23, 18, 2, 42, 27, 72, 196, 227, 1, 150, 45, - 190, 227, 249, 200, 70, 82, 235, 234, 165, 140, 184, 9, 28, 237, - 186, 161, 48, 45, 122, 50, 77, 171, 184, 45, 145, 33, 23, 219, - 224, 32, 31, 17, 225, 69, 34, 76, 202, 61, 108, 196, 233, 97, - 70, 65, 75, 37, 16, 237, 169, 9, 152, 181, 97, 215, 226, 174, - 126, 22, 70, 160, 0, 163, 137, 251, 13, 247, 144, 69, 196, 138, - 248, 220, 112, 81, 90, 176, 40, 36, 241, 93, 81, 87, 72, 40, - 24, 89, 42, 113, 184, 94, 153, 93, 143, 153, 36, 41, 57, 19, - 142, 6, 68, 201, 134, 233, 137, 183, 216, 84, 74, 16, 25, 66, - 14, 72, 101, 46, 59, 47, 68, 139, 50, 240, 147, 248, 81, 253, - 18, 10, 155, 101, 11, 73, 150, 42, 241, 216, 14, 94, 250, 144, - 122, 111, 106, 25, 73, 13, 181, 29, 6, 91, 238, 150, 136, 150, - 105, 240, 200, 219, 241, 209, 15, 134, 169, 166, 209, 77, 200, 98, - 92, 207, 138, 74, 202, 115, 32, 114, 167, 196, 174, 223, 40, 129, - 82, 140, 247, 22, 68, 68, 116, 176, 157, 250, 74, 93, 196, 227, - 48, 241, 22, 74, 61, 8, 27, 169, 60, 157, 120, 245, 68, 42, - 199, 99, 168, 247, 127, 40, 99, 106, 48, 3, 160, 212, 251, 199, - 80, 239, 255, 80, 102, 252, 152, 2, 45, 0, 143, 51, 116, 176, - 140, 129, 21, 249, 225, 140, 249, 237, 140, 8, 127, 30, 67, 67, - 232, 195, 25, 66, 201, 91, 178, 36, 3, 48, 104, 56, 191, 153, - 177, 75, 133, 111, 102, 210, 143, 14, 200, 180, 232, 110, 24, 43, - 118, 189, 145, 142, 166, 238, 124, 203, 231, 135, 136, 30, 35, 102, - 68, 79, 221, 170, 144, 190, 211, 148, 39, 84, 190, 6, 38, 132, - 154, 76, 225, 134, 65, 122, 174, 144, 146, 160, 36, 138, 27, 214, - 97, 16, 196, 135, 246, 64, 101, 217, 1, 137, 36, 227, 153, 226, - 174, 247, 3, 88, 80, 175, 119, 240, 13, 250, 46, 166, 69, 47, - 10, 124, 4, 183, 126, 220, 2, 239, 194, 45, 240, 62, 220, 47, - 73, 34, 161, 47, 8, 65, 220, 228, 101, 117, 135, 30, 102, 115, - 234, 174, 105, 198, 206, 158, 197, 118, 234, 6, 101, 25, 199, 54, - 117, 223, 180, 86, 28, 206, 158, 69, 148, 186, 2, 108, 192, 83, - 211, 41, 205, 226, 236, 89, 118, 62, 9, 123, 84, 171, 248, 144, - 129, 118, 125, 92, 100, 18, 72, 19, 242, 110, 236, 165, 222, 128, - 123, 169, 212, 213, 248, 1, 118, 247, 69, 130, 107, 166, 247, 27, - 2, 229, 1, 228, 115, 221, 200, 15, 123, 94, 132, 169, 107, 159, - 115, 18, 245, 161, 111, 144, 160, 254, 113, 0, 253, 249, 67, 181, - 62, 172, 43, 175, 145, 38, 162, 65, 220, 204, 71, 230, 72, 30, - 33, 213, 27, 108, 144, 60, 58, 39, 157, 26, 213, 109, 80, 98, - 101, 8, 141, 96, 165, 166, 27, 197, 138, 37, 15, 76, 62, 204, - 188, 102, 141, 158, 93, 186, 91, 179, 75, 68, 253, 148, 78, 15, - 169, 69, 60, 81, 139, 70, 40, 117, 74, 106, 225, 13, 27, 117, - 16, 215, 242, 234, 65, 51, 240, 167, 101, 28, 255, 152, 116, 66, - 252, 102, 70, 58, 12, 198, 164, 19, 226, 55, 51, 242, 89, 170, - 49, 233, 132, 248, 205, 204, 216, 109, 73, 129, 5, 5, 133, 163, - 73, 65, 14, 10, 142, 157, 33, 121, 146, 147, 5, 38, 148, 220, - 62, 67, 126, 223, 148, 75, 222, 160, 246, 111, 195, 146, 255, 13, - 83, 221, 57, 221, 197, 55, 40, 132, 185, 30, 239, 134, 156, 139, - 87, 3, 58, 161, 214, 182, 46, 200, 132, 223, 77, 207, 7, 235, - 0, 255, 174, 7, 205, 78, 203, 47, 17, 6, 27, 54, 252, 144, - 168, 175, 165, 84, 196, 174, 27, 69, 157, 22, 111, 136, 205, 217, - 141, 82, 136, 166, 75, 216, 84, 224, 209, 15, 92, 184, 161, 190, - 54, 230, 249, 34, 67, 174, 216, 48, 4, 237, 241, 182, 150, 188, - 8, 86, 223, 47, 179, 84, 76, 52, 224, 20, 252, 39, 80, 234, - 99, 16, 64, 249, 20, 15, 131, 89, 225, 220, 7, 253, 67, 199, - 172, 239, 7, 29, 177, 89, 236, 201, 68, 6, 110, 163, 65, 216, - 121, 188, 126, 6, 226, 75, 158, 134, 52, 188, 168, 221, 116, 247, - 61, 245, 34, 104, 71, 92, 163, 85, 116, 55, 108, 36, 106, 50, - 119, 134, 3, 5, 169, 185, 51, 144, 236, 169, 185, 51, 44, 40, - 72, 205, 157, 145, 131, 130, 212, 220, 25, 48, 119, 191, 13, 115, - 247, 129, 65, 57, 119, 38, 181, 255, 62, 99, 79, 23, 158, 25, - 212, 169, 236, 215, 208, 238, 132, 237, 173, 234, 111, 7, 221, 142, - 63, 157, 208, 54, 197, 177, 42, 241, 181, 139, 233, 189, 246, 193, - 40, 109, 73, 141, 26, 181, 22, 47, 57, 2, 194, 173, 27, 223, - 234, 20, 82, 53, 225, 122, 105, 187, 99, 3, 21, 118, 173, 30, - 100, 81, 12, 159, 222, 224, 9, 97, 243, 152, 67, 87, 110, 132, - 232, 234, 62, 248, 221, 192, 199, 56, 105, 94, 239, 96, 212, 41, - 84, 139, 68, 234, 82, 230, 7, 130, 167, 136, 112, 66, 245, 180, - 18, 155, 177, 174, 47, 142, 246, 98, 233, 111, 198, 135, 85, 181, - 61, 128, 31, 133, 14, 53, 185, 11, 90, 197, 102, 131, 139, 126, - 111, 234, 14, 33, 130, 107, 156, 183, 97, 11, 116, 119, 66, 183, - 189, 139, 221, 214, 21, 144, 221, 68, 7, 136, 34, 214, 212, 86, - 39, 70, 237, 169, 30, 248, 190, 184, 71, 16, 7, 211, 194, 211, - 45, 238, 0, 168, 213, 84, 22, 27, 163, 198, 141, 151, 59, 148, - 63, 118, 107, 95, 100, 95, 234, 29, 76, 144, 80, 44, 217, 82, - 133, 194, 144, 216, 12, 250, 230, 249, 10, 222, 218, 217, 77, 154, - 200, 139, 53, 233, 172, 56, 23, 245, 143, 45, 55, 188, 6, 235, - 68, 248, 193, 207, 158, 157, 22, 198, 85, 132, 239, 145, 114, 180, - 2, 164, 218, 39, 148, 85, 69, 135, 146, 162, 33, 240, 67, 44, - 51, 109, 33, 211, 248, 204, 141, 98, 30, 122, 209, 181, 228, 149, - 99, 141, 238, 160, 196, 68, 195, 14, 243, 177, 2, 99, 4, 201, - 5, 78, 225, 38, 8, 163, 184, 76, 216, 50, 223, 67, 154, 32, - 231, 202, 251, 186, 201, 93, 95, 124, 48, 75, 60, 195, 162, 30, - 141, 232, 218, 88, 48, 55, 140, 246, 38, 224, 222, 187, 32, 135, - 159, 102, 220, 237, 32, 64, 235, 248, 6, 63, 111, 185, 97, 249, - 16, 180, 91, 110, 40, 118, 191, 195, 246, 178, 45, 247, 41, 246, - 0, 187, 235, 226, 11, 162, 125, 74, 125, 117, 222, 151, 250, 57, - 80, 226, 64, 157, 23, 192, 209, 210, 61, 127, 49, 76, 170, 102, - 234, 65, 221, 206, 86, 19, 108, 185, 64, 168, 7, 18, 193, 162, - 92, 24, 154, 79, 196, 219, 71, 225, 78, 234, 117, 88, 96, 120, - 197, 4, 65, 200, 226, 208, 245, 240, 230, 136, 98, 17, 137, 74, - 124, 149, 169, 246, 233, 7, 90, 67, 33, 138, 182, 154, 174, 127, - 77, 48, 189, 90, 13, 242, 166, 172, 208, 3, 17, 13, 216, 21, - 229, 23, 239, 94, 178, 180, 216, 92, 249, 208, 57, 17, 213, 30, - 96, 247, 136, 89, 153, 97, 151, 210, 140, 173, 169, 133, 170, 219, - 140, 72, 205, 143, 195, 102, 75, 114, 172, 138, 189, 35, 89, 69, - 49, 185, 84, 54, 202, 108, 230, 236, 11, 98, 150, 182, 4, 155, - 97, 59, 33, 38, 170, 148, 13, 122, 24, 75, 252, 200, 30, 96, - 247, 234, 89, 145, 81, 10, 172, 209, 51, 252, 40, 181, 29, 153, - 54, 238, 19, 201, 118, 100, 58, 80, 32, 207, 51, 176, 192, 128, - 130, 241, 83, 73, 129, 5, 5, 147, 83, 120, 158, 1, 5, 22, - 181, 191, 149, 177, 103, 116, 5, 203, 198, 130, 4, 167, 229, 64, - 65, 10, 167, 101, 64, 193, 248, 233, 164, 0, 113, 76, 77, 107, - 156, 54, 181, 255, 33, 99, 207, 233, 10, 182, 40, 72, 112, 218, - 14, 20, 164, 112, 218, 6, 20, 140, 207, 38, 5, 22, 20, 156, - 59, 79, 254, 218, 32, 166, 61, 78, 51, 111, 204, 246, 189, 59, - 107, 20, 254, 171, 145, 122, 201, 79, 72, 197, 166, 48, 182, 118, - 189, 54, 219, 226, 241, 30, 231, 126, 207, 125, 50, 97, 117, 199, - 81, 175, 147, 90, 61, 20, 49, 159, 228, 157, 215, 251, 107, 58, - 123, 76, 20, 5, 117, 207, 213, 39, 95, 250, 125, 28, 253, 21, - 146, 246, 122, 39, 71, 230, 234, 157, 7, 212, 48, 49, 27, 63, - 176, 88, 18, 43, 44, 27, 117, 229, 7, 17, 14, 234, 113, 131, - 218, 111, 204, 230, 142, 144, 39, 137, 109, 143, 131, 245, 246, 230, - 172, 121, 186, 240, 4, 155, 247, 217, 188, 14, 122, 81, 91, 80, - 36, 12, 126, 244, 4, 128, 74, 202, 159, 196, 61, 163, 135, 8, - 232, 152, 83, 123, 10, 81, 222, 16, 149, 72, 202, 223, 233, 126, - 176, 4, 45, 201, 113, 84, 86, 223, 156, 53, 53, 152, 1, 112, - 224, 22, 5, 26, 0, 222, 202, 20, 104, 1, 120, 242, 20, 90, - 165, 227, 96, 149, 254, 203, 172, 249, 92, 86, 88, 165, 227, 104, - 149, 254, 203, 44, 25, 39, 239, 48, 72, 6, 96, 24, 215, 91, - 179, 118, 169, 240, 163, 105, 163, 20, 35, 53, 187, 119, 190, 222, - 195, 133, 174, 55, 179, 147, 247, 198, 48, 202, 88, 248, 210, 113, - 91, 86, 174, 34, 183, 87, 123, 42, 43, 31, 127, 89, 120, 145, - 144, 235, 198, 165, 110, 254, 214, 172, 100, 212, 113, 169, 155, 191, - 53, 43, 245, 187, 113, 169, 155, 191, 53, 43, 245, 187, 113, 169, - 155, 191, 53, 43, 245, 187, 113, 169, 155, 191, 53, 43, 245, 187, - 113, 165, 155, 191, 53, 123, 251, 12, 89, 145, 227, 54, 168, 253, - 246, 172, 125, 170, 240, 96, 239, 184, 145, 7, 48, 51, 183, 176, - 77, 164, 138, 117, 248, 248, 83, 253, 6, 189, 244, 237, 233, 126, - 131, 94, 250, 246, 172, 92, 96, 227, 82, 47, 125, 123, 118, 252, - 120, 82, 96, 65, 65, 241, 36, 217, 147, 157, 50, 169, 253, 116, - 214, 190, 189, 176, 211, 219, 41, 212, 228, 197, 238, 189, 29, 113, - 156, 148, 173, 253, 56, 121, 184, 182, 155, 207, 100, 54, 114, 92, - 150, 73, 20, 124, 234, 24, 81, 156, 198, 167, 58, 15, 226, 226, - 233, 116, 231, 65, 138, 61, 157, 38, 58, 16, 236, 233, 172, 124, - 9, 120, 92, 74, 177, 167, 179, 71, 143, 145, 63, 85, 172, 100, - 81, 251, 93, 89, 251, 104, 225, 63, 25, 7, 120, 73, 6, 151, - 221, 76, 231, 229, 205, 217, 23, 232, 60, 98, 17, 9, 122, 184, - 175, 224, 212, 121, 39, 200, 133, 182, 27, 197, 41, 51, 52, 228, - 77, 126, 29, 95, 83, 223, 143, 57, 155, 146, 15, 245, 137, 156, - 18, 202, 132, 196, 53, 251, 0, 162, 156, 21, 250, 210, 116, 138, - 66, 32, 147, 223, 149, 166, 16, 200, 228, 119, 165, 41, 4, 50, - 249, 93, 89, 249, 146, 241, 184, 148, 201, 239, 202, 30, 41, 144, - 247, 221, 65, 142, 139, 228, 243, 103, 221, 182, 119, 22, 23, 202, - 166, 202, 24, 32, 24, 137, 18, 153, 157, 222, 109, 123, 5, 153, - 169, 254, 172, 202, 84, 127, 54, 9, 164, 16, 181, 103, 126, 214, - 32, 67, 104, 249, 95, 146, 88, 232, 29, 164, 240, 80, 181, 178, - 180, 184, 121, 169, 242, 240, 252, 171, 170, 43, 181, 205, 141, 229, - 181, 213, 202, 66, 245, 161, 106, 101, 49, 223, 71, 7, 73, 78, - 61, 187, 158, 55, 0, 170, 85, 126, 104, 163, 90, 171, 44, 230, - 77, 58, 66, 6, 86, 54, 214, 87, 55, 214, 55, 87, 150, 151, - 174, 230, 45, 58, 76, 72, 117, 89, 195, 54, 29, 34, 253, 213, - 43, 87, 54, 214, 231, 47, 45, 85, 242, 14, 165, 100, 120, 99, - 121, 165, 182, 88, 169, 85, 22, 55, 151, 170, 107, 235, 249, 12, - 189, 133, 140, 46, 175, 44, 111, 86, 174, 172, 174, 95, 221, 92, - 172, 60, 52, 191, 177, 180, 158, 207, 94, 120, 156, 12, 119, 15, - 151, 222, 94, 238, 205, 195, 143, 3, 145, 193, 26, 19, 239, 205, - 49, 107, 106, 120, 238, 72, 57, 161, 71, 185, 107, 164, 181, 161, - 237, 52, 120, 169, 77, 134, 235, 65, 43, 85, 253, 18, 237, 170, - 143, 30, 145, 85, 227, 53, 243, 178, 198, 78, 208, 116, 253, 157, - 114, 16, 238, 156, 221, 225, 62, 118, 226, 172, 248, 201, 109, 123, - 17, 78, 80, 42, 166, 241, 98, 234, 239, 247, 153, 246, 229, 249, - 213, 234, 35, 191, 83, 32, 25, 106, 15, 247, 93, 53, 200, 175, - 218, 196, 24, 164, 214, 112, 31, 157, 251, 183, 54, 91, 8, 218, - 251, 161, 183, 179, 27, 179, 185, 115, 231, 95, 38, 227, 11, 217, - 210, 210, 2, 33, 108, 201, 171, 115, 31, 175, 69, 250, 13, 105, - 229, 205, 183, 65, 171, 80, 191, 148, 216, 171, 68, 6, 28, 54, - 87, 62, 199, 166, 208, 113, 45, 127, 42, 78, 95, 36, 104, 61, - 171, 103, 40, 83, 175, 50, 226, 33, 73, 157, 183, 113, 89, 137, - 196, 150, 174, 95, 231, 73, 174, 77, 137, 163, 76, 48, 183, 38, - 62, 13, 189, 133, 91, 34, 216, 172, 109, 117, 71, 91, 85, 99, - 110, 76, 132, 23, 109, 55, 142, 219, 23, 206, 158, 221, 219, 219, - 43, 187, 216, 81, 36, 89, 83, 84, 139, 206, 46, 85, 23, 42, - 203, 107, 149, 217, 185, 242, 57, 66, 216, 134, 143, 151, 88, 245, - 5, 215, 173, 125, 245, 90, 34, 104, 187, 77, 119, 15, 61, 144, - 59, 161, 76, 241, 229, 249, 42, 71, 76, 137, 69, 193, 118, 188, - 135, 70, 80, 195, 3, 149, 113, 171, 19, 119, 81, 73, 117, 76, - 190, 182, 174, 42, 4, 120, 21, 181, 56, 191, 198, 170, 107, 69, - 118, 105, 126, 173, 186, 86, 34, 236, 209, 234, 250, 195, 43, 27, - 235, 236, 209, 249, 90, 109, 126, 121, 189, 90, 89, 99, 43, 53, - 182, 176, 178, 188, 88, 5, 222, 95, 99, 43, 15, 177, 249, 229, - 171, 236, 149, 213, 229, 197, 146, 186, 208, 203, 159, 4, 59, 62, - 194, 128, 69, 140, 222, 107, 164, 50, 189, 170, 207, 235, 248, 113, - 245, 168, 131, 206, 131, 182, 19, 92, 231, 33, 154, 86, 152, 161, - 35, 146, 239, 85, 250, 13, 194, 48, 87, 141, 244, 67, 31, 24, - 81, 153, 144, 28, 49, 76, 106, 229, 251, 198, 72, 63, 49, 173, - 62, 106, 209, 190, 25, 40, 204, 81, 107, 188, 239, 213, 80, 152, - 27, 16, 127, 138, 194, 91, 250, 138, 88, 72, 196, 159, 162, 240, - 214, 190, 187, 176, 80, 254, 41, 10, 111, 235, 155, 196, 66, 67, - 252, 41, 10, 39, 100, 243, 83, 234, 79, 35, 75, 237, 66, 223, - 148, 65, 62, 103, 17, 51, 219, 71, 173, 73, 243, 66, 225, 119, - 45, 54, 47, 29, 241, 41, 111, 159, 30, 183, 202, 101, 33, 243, - 157, 76, 169, 57, 47, 169, 151, 148, 65, 55, 43, 225, 11, 60, - 211, 24, 122, 165, 214, 121, 87, 98, 208, 110, 211, 177, 199, 21, - 201, 126, 120, 42, 181, 250, 187, 229, 199, 52, 123, 128, 41, 209, - 245, 90, 52, 41, 214, 98, 55, 150, 239, 185, 220, 76, 227, 148, - 164, 19, 237, 123, 197, 209, 98, 71, 122, 94, 226, 184, 9, 8, - 197, 114, 120, 17, 172, 137, 184, 60, 28, 233, 186, 215, 226, 81, - 236, 182, 218, 192, 109, 94, 200, 55, 99, 79, 140, 245, 166, 176, - 167, 250, 92, 146, 62, 238, 23, 233, 142, 146, 214, 175, 189, 72, - 8, 33, 86, 182, 207, 164, 86, 33, 123, 82, 252, 109, 195, 68, - 203, 242, 12, 181, 38, 7, 100, 185, 65, 173, 201, 83, 115, 226, - 111, 139, 90, 147, 247, 220, 79, 190, 100, 18, 211, 233, 163, 246, - 185, 190, 171, 70, 225, 255, 50, 241, 134, 190, 223, 240, 234, 152, - 138, 76, 138, 142, 116, 238, 27, 87, 190, 67, 47, 184, 100, 106, - 187, 251, 40, 192, 141, 149, 223, 88, 230, 14, 146, 226, 2, 21, - 244, 215, 117, 120, 20, 139, 123, 192, 2, 135, 27, 41, 150, 194, - 124, 36, 210, 24, 115, 65, 111, 104, 119, 226, 105, 149, 198, 96, - 102, 70, 157, 166, 205, 204, 164, 19, 113, 235, 110, 41, 30, 172, - 7, 77, 38, 223, 172, 148, 103, 230, 23, 193, 232, 21, 177, 148, - 34, 176, 46, 234, 110, 9, 70, 11, 72, 76, 153, 62, 99, 55, - 216, 99, 243, 171, 85, 12, 228, 0, 126, 221, 117, 253, 70, 83, - 171, 141, 42, 19, 33, 6, 162, 175, 235, 75, 85, 51, 51, 45, - 119, 127, 102, 134, 133, 188, 206, 189, 235, 28, 51, 179, 118, 61, - 4, 156, 156, 66, 17, 98, 57, 48, 9, 231, 28, 74, 30, 36, - 182, 3, 218, 185, 53, 103, 158, 40, 204, 177, 133, 192, 191, 14, - 26, 144, 112, 34, 200, 40, 102, 164, 46, 222, 216, 75, 221, 35, - 198, 141, 1, 131, 84, 29, 7, 117, 101, 107, 206, 60, 166, 32, - 147, 90, 115, 199, 25, 249, 105, 3, 177, 27, 212, 186, 207, 28, - 41, 252, 184, 33, 83, 38, 73, 63, 173, 34, 133, 114, 241, 187, - 145, 182, 149, 203, 132, 61, 138, 169, 53, 48, 17, 135, 200, 115, - 113, 24, 121, 221, 144, 179, 196, 67, 29, 171, 196, 2, 91, 90, - 126, 202, 52, 50, 140, 183, 218, 187, 110, 228, 137, 28, 3, 201, - 219, 152, 186, 255, 6, 246, 81, 67, 38, 181, 238, 27, 26, 38, - 255, 65, 244, 223, 164, 214, 203, 205, 145, 194, 47, 129, 61, 122, - 160, 203, 138, 185, 116, 182, 11, 193, 182, 60, 149, 188, 69, 212, - 157, 153, 105, 117, 34, 224, 157, 45, 158, 164, 177, 118, 163, 174, - 51, 57, 201, 157, 37, 225, 243, 222, 118, 189, 38, 62, 199, 27, - 176, 70, 192, 34, 249, 230, 149, 60, 24, 246, 25, 15, 67, 16, - 140, 29, 249, 48, 236, 227, 213, 229, 87, 205, 47, 85, 23, 55, - 231, 107, 151, 55, 174, 84, 150, 215, 31, 159, 214, 195, 131, 41, - 120, 185, 30, 30, 14, 104, 104, 152, 124, 91, 12, 207, 162, 214, - 37, 147, 22, 254, 230, 208, 225, 165, 132, 237, 139, 142, 48, 157, - 159, 27, 151, 90, 212, 14, 96, 19, 47, 201, 68, 63, 245, 102, - 71, 221, 104, 32, 233, 227, 99, 57, 234, 174, 23, 5, 133, 102, - 34, 223, 67, 23, 148, 83, 199, 180, 94, 44, 118, 61, 44, 197, - 245, 40, 222, 242, 75, 104, 226, 138, 36, 158, 17, 102, 198, 74, - 37, 41, 156, 140, 228, 115, 91, 117, 158, 208, 198, 50, 96, 252, - 67, 10, 50, 169, 117, 41, 63, 74, 126, 74, 208, 198, 166, 214, - 101, 115, 180, 240, 175, 15, 165, 13, 202, 135, 239, 145, 52, 74, - 10, 201, 163, 110, 210, 115, 46, 174, 91, 193, 106, 75, 123, 70, - 181, 87, 84, 116, 215, 54, 160, 131, 131, 10, 50, 169, 117, 121, - 36, 79, 126, 70, 116, 222, 161, 214, 146, 153, 47, 60, 123, 120, - 231, 91, 173, 78, 12, 106, 211, 139, 246, 93, 173, 40, 14, 99, - 173, 243, 238, 57, 195, 244, 29, 28, 95, 249, 36, 24, 215, 13, - 86, 107, 226, 23, 145, 249, 158, 132, 184, 108, 8, 231, 32, 158, - 63, 232, 17, 56, 6, 244, 114, 64, 65, 38, 181, 150, 134, 71, - 200, 143, 155, 56, 130, 12, 181, 106, 230, 45, 133, 55, 153, 122, - 4, 82, 184, 79, 41, 15, 249, 116, 42, 111, 171, 207, 58, 62, - 230, 135, 225, 13, 214, 244, 208, 195, 124, 163, 145, 169, 59, 128, - 208, 71, 245, 234, 115, 202, 27, 161, 115, 56, 1, 26, 212, 46, - 92, 127, 159, 185, 225, 150, 23, 135, 110, 184, 207, 68, 26, 154, - 18, 11, 221, 110, 199, 182, 204, 78, 35, 222, 253, 9, 181, 49, - 15, 130, 95, 63, 23, 199, 230, 117, 250, 165, 166, 124, 117, 2, - 190, 50, 25, 201, 214, 168, 58, 135, 105, 234, 69, 114, 158, 36, - 141, 50, 6, 80, 37, 175, 32, 147, 90, 181, 177, 113, 242, 207, - 5, 197, 178, 212, 122, 181, 57, 81, 248, 154, 209, 77, 177, 84, - 142, 13, 17, 20, 31, 201, 87, 44, 197, 201, 132, 146, 244, 50, - 13, 222, 182, 74, 111, 123, 3, 10, 202, 76, 64, 56, 70, 57, - 46, 105, 128, 35, 54, 245, 250, 75, 194, 38, 32, 208, 82, 159, - 19, 21, 18, 7, 171, 136, 210, 23, 166, 54, 34, 77, 231, 10, - 115, 247, 80, 202, 111, 99, 240, 50, 57, 128, 69, 60, 159, 45, - 220, 12, 130, 34, 89, 3, 104, 48, 166, 32, 147, 90, 175, 190, - 245, 182, 173, 140, 200, 223, 72, 62, 121, 94, 27, 201, 218, 238, - 141, 149, 214, 36, 141, 228, 145, 30, 181, 170, 120, 145, 244, 107, - 205, 138, 78, 144, 108, 196, 235, 129, 223, 136, 38, 12, 102, 76, - 89, 53, 5, 210, 113, 226, 248, 174, 31, 68, 19, 38, 51, 166, - 156, 154, 0, 46, 189, 201, 32, 99, 41, 211, 81, 33, 189, 52, - 172, 81, 42, 219, 113, 238, 160, 237, 152, 244, 17, 95, 205, 193, - 167, 233, 147, 254, 182, 183, 190, 105, 24, 239, 51, 173, 203, 171, - 151, 62, 108, 222, 33, 12, 193, 242, 170, 82, 6, 31, 229, 205, - 230, 43, 161, 193, 58, 180, 125, 228, 63, 158, 37, 89, 234, 220, - 209, 247, 78, 195, 32, 159, 26, 68, 131, 242, 142, 62, 58, 247, - 27, 131, 250, 10, 152, 186, 255, 197, 102, 147, 75, 107, 248, 162, - 10, 134, 213, 72, 157, 71, 120, 221, 72, 151, 21, 122, 78, 91, - 161, 85, 191, 94, 102, 248, 4, 0, 254, 22, 233, 171, 112, 101, - 242, 221, 190, 247, 77, 8, 171, 113, 109, 139, 97, 16, 150, 124, - 187, 200, 83, 73, 96, 177, 100, 203, 243, 97, 77, 66, 191, 212, - 209, 34, 190, 251, 138, 65, 118, 132, 181, 130, 134, 78, 130, 83, - 18, 103, 209, 58, 157, 165, 150, 201, 137, 200, 211, 193, 164, 48, - 165, 158, 78, 10, 135, 247, 193, 46, 72, 155, 117, 166, 167, 99, - 81, 111, 180, 48, 238, 76, 33, 215, 79, 255, 138, 48, 135, 186, - 162, 24, 112, 113, 140, 183, 131, 113, 93, 194, 242, 23, 135, 145, - 201, 23, 229, 107, 158, 73, 119, 26, 94, 84, 111, 186, 94, 139, - 139, 227, 170, 195, 58, 225, 249, 105, 90, 168, 78, 200, 219, 45, - 73, 63, 72, 210, 145, 239, 171, 31, 234, 194, 75, 79, 92, 178, - 235, 55, 206, 130, 146, 142, 146, 177, 229, 198, 152, 66, 58, 181, - 253, 41, 143, 65, 202, 16, 87, 1, 181, 48, 168, 101, 105, 45, - 199, 169, 27, 50, 105, 222, 242, 131, 228, 183, 72, 186, 182, 241, - 149, 3, 129, 42, 8, 181, 10, 136, 225, 166, 152, 115, 182, 17, - 132, 17, 151, 55, 125, 90, 65, 204, 229, 141, 159, 56, 234, 122, - 17, 84, 70, 138, 40, 71, 129, 14, 211, 212, 38, 105, 59, 4, - 101, 125, 47, 4, 222, 241, 83, 86, 56, 166, 157, 122, 184, 186, - 198, 214, 86, 30, 90, 127, 116, 190, 86, 97, 213, 53, 182, 90, - 91, 121, 85, 117, 177, 178, 200, 46, 93, 101, 235, 15, 87, 216, - 194, 202, 234, 213, 90, 245, 242, 195, 235, 236, 225, 149, 165, 197, - 74, 109, 141, 205, 47, 47, 178, 133, 149, 229, 245, 90, 245, 210, - 198, 250, 74, 109, 141, 104, 55, 3, 252, 50, 191, 124, 149, 85, - 94, 189, 90, 171, 172, 161, 111, 161, 122, 101, 117, 169, 90, 89, - 76, 121, 28, 74, 172, 186, 252, 255, 178, 247, 47, 176, 113, 100, - 235, 125, 32, 206, 122, 176, 217, 60, 212, 131, 42, 189, 168, 210, - 235, 76, 235, 69, 106, 154, 205, 135, 30, 51, 162, 70, 154, 105, - 82, 45, 177, 231, 82, 36, 167, 73, 206, 75, 163, 33, 139, 221, - 213, 100, 141, 186, 171, 122, 170, 170, 249, 152, 185, 202, 117, 238, - 245, 253, 27, 137, 227, 191, 227, 141, 227, 56, 55, 190, 65, 236, - 216, 23, 27, 36, 235, 197, 38, 112, 108, 39, 241, 26, 8, 124, - 23, 222, 181, 189, 222, 5, 118, 99, 199, 222, 199, 93, 239, 230, - 177, 128, 129, 133, 19, 27, 187, 192, 2, 217, 197, 249, 190, 115, - 78, 157, 106, 54, 37, 205, 56, 185, 198, 2, 18, 70, 154, 62, - 85, 167, 206, 251, 241, 61, 127, 223, 204, 220, 202, 189, 242, 252, - 131, 60, 157, 94, 89, 166, 243, 11, 203, 132, 206, 149, 31, 150, - 151, 75, 247, 232, 242, 66, 30, 170, 221, 251, 29, 93, 184, 79, - 31, 150, 42, 51, 179, 197, 249, 229, 226, 116, 121, 174, 188, 252, - 1, 84, 120, 191, 188, 60, 207, 42, 187, 191, 80, 33, 180, 72, - 23, 139, 149, 229, 242, 204, 202, 92, 177, 66, 23, 87, 42, 139, - 11, 75, 37, 202, 122, 118, 175, 188, 52, 51, 87, 44, 63, 44, - 221, 43, 208, 242, 60, 157, 95, 160, 165, 119, 75, 243, 203, 116, - 105, 182, 56, 55, 151, 238, 40, 161, 11, 239, 205, 151, 42, 92, - 50, 34, 187, 73, 167, 75, 116, 174, 204, 152, 70, 86, 21, 244, - 243, 94, 185, 82, 154, 89, 102, 29, 74, 126, 205, 148, 239, 149, - 230, 151, 139, 115, 121, 66, 65, 190, 88, 156, 203, 211, 210, 251, - 165, 135, 139, 115, 197, 202, 7, 121, 94, 232, 82, 233, 157, 149, - 210, 252, 114, 185, 56, 71, 239, 21, 31, 22, 31, 148, 150, 232, - 240, 243, 70, 101, 177, 178, 48, 179, 82, 41, 49, 10, 153, 13, - 197, 210, 202, 244, 210, 114, 121, 121, 101, 185, 68, 31, 44, 44, - 220, 131, 193, 94, 42, 85, 222, 45, 207, 148, 150, 110, 211, 185, - 133, 37, 24, 176, 149, 165, 82, 158, 208, 123, 197, 229, 34, 84, - 189, 88, 89, 184, 95, 94, 94, 186, 205, 126, 79, 175, 44, 149, - 97, 224, 202, 243, 203, 165, 74, 101, 5, 164, 159, 35, 116, 118, - 225, 189, 210, 187, 165, 10, 157, 41, 174, 44, 149, 238, 193, 8, - 47, 204, 179, 222, 178, 181, 82, 90, 168, 124, 192, 138, 101, 227, - 0, 51, 144, 167, 239, 205, 150, 150, 103, 75, 21, 54, 168, 48, - 90, 69, 54, 12, 75, 203, 149, 242, 204, 178, 154, 109, 161, 66, - 151, 23, 42, 203, 68, 233, 39, 157, 47, 61, 152, 43, 63, 40, - 205, 207, 148, 216, 235, 5, 86, 204, 123, 229, 165, 210, 8, 45, - 86, 202, 75, 44, 67, 25, 42, 166, 239, 21, 63, 96, 44, 62, - 171, 152, 77, 212, 202, 82, 137, 224, 111, 101, 233, 230, 97, 62, - 105, 249, 62, 45, 222, 123, 183, 204, 90, 206, 115, 47, 46, 44, - 45, 149, 249, 114, 129, 97, 155, 153, 229, 99, 46, 5, 76, 180, - 103, 136, 75, 128, 114, 61, 183, 65, 2, 116, 9, 127, 226, 195, - 11, 61, 231, 225, 225, 121, 252, 137, 15, 47, 246, 148, 133, 252, - 137, 253, 196, 135, 151, 122, 242, 66, 170, 196, 126, 226, 195, 203, - 61, 99, 66, 254, 196, 126, 226, 195, 43, 137, 164, 234, 138, 148, - 84, 13, 247, 188, 34, 228, 79, 236, 231, 255, 116, 150, 232, 102, - 143, 149, 249, 33, 141, 93, 125, 246, 111, 159, 165, 69, 154, 200, - 73, 82, 214, 53, 136, 242, 203, 142, 53, 175, 137, 158, 23, 28, - 50, 87, 160, 87, 194, 243, 207, 192, 1, 10, 13, 110, 27, 128, - 22, 233, 250, 53, 39, 204, 43, 136, 210, 32, 245, 108, 227, 119, - 156, 58, 64, 150, 46, 116, 170, 201, 141, 33, 94, 176, 11, 129, - 145, 10, 144, 70, 239, 72, 60, 20, 17, 183, 29, 10, 2, 57, - 70, 3, 163, 37, 112, 253, 94, 43, 168, 110, 82, 39, 166, 43, - 203, 51, 180, 233, 213, 124, 56, 209, 1, 5, 216, 241, 219, 236, - 26, 152, 200, 211, 137, 91, 175, 141, 231, 197, 65, 221, 10, 131, - 134, 219, 138, 189, 42, 125, 16, 186, 27, 65, 232, 57, 190, 108, - 61, 55, 0, 66, 27, 230, 8, 15, 232, 46, 185, 100, 204, 37, - 136, 54, 235, 58, 33, 13, 124, 87, 68, 253, 105, 122, 126, 59, - 230, 230, 28, 55, 199, 101, 255, 26, 129, 191, 81, 160, 115, 174, - 211, 74, 186, 28, 186, 52, 23, 53, 93, 39, 116, 107, 57, 10, - 122, 18, 135, 221, 70, 180, 225, 58, 45, 194, 179, 81, 160, 123, - 17, 63, 210, 21, 65, 159, 164, 133, 47, 191, 208, 209, 215, 221, - 161, 143, 38, 175, 143, 110, 6, 109, 52, 142, 112, 66, 66, 161, - 244, 199, 195, 207, 38, 58, 216, 124, 142, 65, 206, 17, 17, 162, - 41, 4, 42, 199, 227, 225, 40, 199, 199, 199, 39, 70, 225, 191, - 229, 241, 241, 41, 248, 239, 67, 214, 245, 91, 183, 110, 221, 26, - 157, 152, 28, 189, 54, 177, 60, 121, 109, 234, 198, 173, 169, 27, - 183, 10, 183, 196, 159, 15, 11, 116, 122, 151, 36, 193, 134, 132, - 161, 179, 19, 99, 233, 121, 186, 237, 82, 215, 143, 128, 185, 7, - 148, 93, 8, 189, 36, 192, 167, 113, 126, 185, 85, 205, 163, 202, - 253, 25, 66, 175, 93, 187, 118, 43, 233, 203, 246, 246, 118, 193, - 115, 227, 58, 80, 136, 97, 189, 202, 254, 178, 28, 133, 120, 39, - 30, 97, 20, 155, 171, 32, 20, 211, 11, 82, 10, 154, 8, 68, - 233, 196, 20, 157, 9, 154, 173, 118, 236, 42, 123, 1, 42, 92, - 92, 88, 42, 191, 79, 215, 216, 200, 12, 143, 172, 21, 56, 201, - 147, 100, 146, 196, 39, 15, 33, 146, 16, 207, 145, 27, 175, 242, - 9, 30, 134, 207, 231, 87, 230, 230, 70, 70, 186, 230, 131, 245, - 62, 60, 62, 114, 91, 105, 211, 228, 243, 218, 180, 225, 198, 172, - 148, 160, 94, 115, 118, 149, 182, 97, 36, 3, 168, 96, 203, 105, - 208, 120, 139, 215, 152, 202, 126, 57, 222, 202, 83, 104, 208, 237, - 47, 219, 165, 173, 66, 188, 197, 82, 207, 234, 17, 102, 106, 71, - 110, 149, 94, 165, 19, 227, 227, 233, 30, 94, 219, 183, 135, 239, - 121, 254, 181, 73, 186, 246, 192, 141, 151, 64, 41, 204, 94, 23, - 163, 251, 94, 195, 93, 78, 79, 196, 253, 242, 92, 105, 185, 252, - 176, 68, 235, 49, 111, 198, 126, 223, 92, 174, 199, 162, 165, 43, - 229, 249, 229, 155, 215, 105, 236, 85, 159, 68, 244, 14, 29, 30, - 30, 198, 39, 35, 245, 184, 80, 219, 158, 245, 54, 54, 239, 57, - 49, 124, 53, 66, 223, 120, 131, 94, 155, 28, 161, 95, 165, 240, - 110, 46, 216, 22, 175, 196, 184, 141, 141, 209, 34, 107, 111, 45, - 216, 142, 160, 72, 182, 89, 38, 198, 199, 149, 51, 44, 42, 200, - 12, 120, 74, 77, 220, 220, 187, 141, 100, 105, 236, 243, 137, 155, - 215, 175, 95, 127, 237, 218, 205, 241, 228, 216, 224, 86, 120, 43, - 190, 183, 35, 74, 185, 245, 218, 120, 103, 41, 133, 47, 55, 153, - 195, 216, 127, 58, 60, 140, 131, 50, 6, 147, 197, 254, 140, 208, - 81, 181, 57, 207, 89, 193, 172, 28, 54, 92, 162, 156, 75, 74, - 57, 176, 0, 70, 82, 11, 224, 250, 190, 11, 224, 109, 103, 203, - 161, 107, 56, 145, 5, 110, 94, 200, 178, 60, 244, 26, 13, 47, - 82, 22, 0, 32, 122, 52, 225, 41, 189, 67, 247, 255, 224, 25, - 203, 156, 222, 73, 158, 22, 124, 119, 123, 186, 237, 53, 106, 110, - 56, 60, 194, 58, 182, 196, 71, 136, 87, 129, 3, 51, 146, 68, - 21, 98, 121, 230, 177, 239, 158, 31, 179, 158, 243, 156, 216, 117, - 222, 109, 24, 129, 145, 2, 120, 245, 67, 91, 146, 49, 184, 241, - 156, 49, 40, 251, 81, 236, 248, 113, 193, 15, 182, 149, 110, 243, - 167, 16, 53, 253, 14, 77, 229, 121, 102, 79, 147, 134, 63, 191, - 203, 126, 176, 93, 216, 112, 227, 18, 91, 108, 248, 108, 120, 68, - 233, 121, 186, 247, 60, 51, 75, 12, 239, 211, 211, 155, 251, 246, - 84, 216, 143, 114, 58, 131, 46, 238, 198, 155, 200, 72, 164, 22, - 154, 58, 81, 195, 35, 157, 171, 240, 129, 27, 207, 36, 243, 62, - 60, 2, 103, 253, 219, 75, 11, 243, 244, 33, 130, 21, 18, 66, - 203, 62, 62, 65, 174, 29, 197, 77, 202, 56, 237, 182, 220, 116, - 40, 12, 234, 8, 45, 25, 210, 12, 4, 46, 160, 47, 116, 255, - 136, 32, 139, 18, 9, 25, 229, 189, 24, 159, 208, 139, 104, 238, - 115, 70, 55, 60, 29, 253, 188, 25, 248, 241, 230, 211, 209, 207, - 107, 206, 238, 211, 229, 207, 217, 229, 253, 116, 234, 243, 166, 231, - 63, 157, 250, 60, 114, 171, 79, 31, 21, 62, 103, 228, 18, 219, - 178, 79, 31, 127, 152, 35, 220, 29, 4, 191, 6, 129, 31, 218, - 186, 115, 189, 170, 43, 130, 109, 128, 153, 123, 205, 219, 240, 226, - 136, 3, 116, 243, 154, 242, 20, 170, 202, 19, 138, 149, 229, 41, - 212, 134, 66, 88, 168, 50, 177, 43, 111, 65, 160, 3, 184, 182, - 183, 3, 81, 154, 235, 84, 55, 145, 38, 19, 116, 28, 163, 255, - 248, 145, 162, 68, 221, 163, 27, 1, 109, 183, 128, 76, 16, 159, - 162, 215, 36, 62, 156, 232, 78, 237, 141, 228, 73, 74, 161, 129, - 53, 229, 62, 204, 209, 168, 93, 175, 123, 59, 41, 41, 156, 11, - 235, 0, 40, 209, 225, 220, 202, 242, 76, 110, 228, 118, 234, 105, - 74, 241, 85, 160, 69, 30, 190, 4, 23, 131, 8, 235, 228, 134, - 50, 110, 95, 18, 170, 138, 81, 147, 195, 78, 34, 243, 195, 176, - 136, 185, 15, 115, 35, 232, 106, 216, 10, 61, 95, 130, 108, 119, - 44, 37, 244, 12, 83, 171, 18, 192, 44, 194, 106, 134, 80, 160, - 233, 24, 133, 83, 5, 115, 2, 112, 44, 99, 117, 178, 111, 185, - 157, 48, 239, 67, 180, 167, 29, 224, 132, 9, 118, 56, 35, 123, - 28, 156, 115, 147, 227, 19, 175, 177, 219, 97, 226, 198, 242, 248, - 196, 212, 181, 241, 169, 137, 27, 133, 241, 137, 15, 115, 124, 117, - 71, 20, 210, 242, 122, 65, 211, 29, 200, 9, 245, 7, 126, 66, - 55, 223, 200, 83, 86, 90, 129, 111, 32, 25, 171, 33, 143, 70, - 219, 10, 169, 230, 80, 118, 61, 114, 75, 39, 164, 242, 164, 101, - 90, 130, 195, 68, 100, 204, 70, 66, 31, 197, 65, 121, 105, 97, - 9, 54, 217, 240, 72, 23, 2, 181, 208, 12, 62, 243, 26, 13, - 7, 118, 151, 235, 143, 174, 44, 141, 213, 130, 106, 52, 246, 158, - 187, 62, 150, 52, 101, 172, 34, 76, 13, 199, 30, 52, 130, 117, - 167, 177, 186, 128, 216, 39, 99, 172, 65, 99, 74, 37, 35, 2, - 203, 8, 194, 216, 224, 73, 147, 135, 125, 206, 195, 72, 174, 49, - 138, 145, 13, 122, 65, 252, 88, 19, 29, 226, 241, 125, 100, 84, - 20, 210, 181, 139, 132, 62, 90, 139, 226, 176, 14, 159, 42, 61, - 10, 170, 81, 161, 133, 39, 27, 235, 203, 228, 88, 195, 91, 15, - 157, 112, 23, 200, 238, 194, 102, 220, 108, 92, 128, 95, 226, 219, - 17, 144, 185, 16, 185, 144, 69, 37, 81, 203, 173, 210, 43, 151, - 62, 24, 189, 212, 28, 189, 84, 91, 190, 52, 59, 117, 233, 225, - 212, 165, 165, 194, 165, 250, 135, 87, 10, 116, 206, 123, 226, 110, - 123, 145, 11, 108, 14, 27, 160, 100, 150, 32, 94, 3, 132, 85, - 9, 106, 14, 44, 214, 43, 17, 125, 180, 86, 94, 90, 16, 68, - 205, 125, 60, 172, 106, 60, 57, 60, 178, 246, 120, 152, 168, 70, - 41, 159, 4, 53, 156, 9, 246, 99, 20, 248, 5, 167, 229, 193, - 132, 136, 167, 200, 69, 96, 91, 199, 246, 150, 13, 253, 20, 21, - 92, 154, 188, 119, 105, 242, 30, 161, 35, 128, 228, 37, 44, 100, - 132, 37, 99, 72, 171, 78, 11, 54, 72, 80, 87, 237, 53, 229, - 153, 207, 149, 185, 114, 252, 65, 155, 59, 64, 12, 0, 151, 250, - 33, 45, 123, 132, 124, 91, 35, 38, 98, 75, 253, 176, 166, 31, - 179, 255, 255, 26, 173, 36, 28, 174, 88, 251, 65, 29, 150, 60, - 140, 113, 228, 249, 85, 149, 202, 34, 221, 201, 44, 250, 144, 195, - 222, 63, 139, 45, 34, 221, 248, 162, 15, 81, 129, 21, 121, 18, - 108, 9, 141, 45, 127, 88, 211, 251, 68, 82, 99, 201, 236, 97, - 145, 52, 88, 210, 58, 138, 56, 184, 96, 68, 249, 99, 154, 110, - 217, 255, 76, 163, 243, 129, 63, 234, 187, 27, 200, 7, 167, 184, - 105, 71, 112, 141, 140, 145, 236, 206, 77, 207, 243, 15, 37, 131, - 201, 21, 228, 32, 146, 76, 10, 3, 193, 41, 6, 11, 4, 71, - 100, 95, 173, 19, 138, 230, 31, 114, 3, 72, 100, 208, 235, 65, - 200, 24, 99, 33, 61, 232, 28, 48, 206, 52, 230, 249, 95, 210, - 101, 80, 180, 94, 232, 167, 24, 20, 13, 186, 157, 61, 40, 146, - 6, 75, 14, 30, 145, 154, 140, 127, 115, 138, 220, 216, 8, 10, - 213, 205, 48, 104, 122, 237, 38, 218, 77, 181, 171, 222, 24, 106, - 62, 107, 235, 40, 82, 31, 219, 154, 24, 115, 194, 216, 171, 59, - 213, 152, 235, 55, 6, 89, 182, 130, 200, 86, 216, 154, 176, 159, - 103, 55, 104, 63, 79, 103, 146, 251, 142, 78, 178, 69, 94, 141, - 101, 17, 211, 119, 154, 46, 232, 71, 250, 43, 240, 219, 58, 79, - 6, 68, 51, 86, 189, 26, 168, 72, 250, 43, 68, 60, 42, 215, - 172, 211, 164, 191, 238, 198, 213, 205, 213, 118, 216, 24, 50, 224, - 117, 22, 30, 172, 132, 13, 107, 142, 28, 147, 47, 87, 193, 182, - 5, 248, 255, 33, 147, 106, 195, 3, 147, 246, 30, 99, 63, 121, - 49, 85, 44, 81, 70, 73, 126, 101, 189, 66, 14, 112, 247, 25, - 112, 161, 28, 234, 133, 218, 6, 248, 179, 229, 221, 150, 107, 157, - 37, 36, 242, 62, 115, 87, 193, 132, 116, 40, 3, 138, 158, 126, - 246, 100, 154, 61, 176, 206, 147, 172, 136, 108, 51, 212, 71, 181, - 225, 3, 211, 198, 247, 138, 102, 69, 62, 180, 78, 146, 190, 141, - 106, 180, 218, 14, 189, 161, 44, 148, 158, 217, 168, 70, 43, 161, - 55, 61, 241, 225, 216, 139, 205, 218, 109, 124, 210, 90, 127, 251, - 7, 78, 160, 37, 224, 219, 26, 249, 181, 196, 18, 240, 151, 211, - 150, 128, 147, 227, 64, 47, 204, 173, 204, 148, 105, 17, 162, 196, - 0, 247, 255, 255, 57, 131, 192, 151, 22, 129, 223, 71, 139, 192, - 83, 137, 69, 224, 8, 252, 212, 44, 227, 104, 207, 136, 180, 3, - 188, 47, 132, 179, 236, 231, 63, 214, 65, 144, 106, 158, 235, 121, - 91, 179, 127, 94, 135, 168, 109, 13, 55, 129, 79, 227, 120, 81, - 14, 98, 185, 141, 197, 46, 96, 130, 75, 191, 76, 135, 178, 39, - 84, 158, 69, 50, 90, 46, 66, 145, 113, 253, 25, 227, 70, 112, - 116, 28, 186, 236, 70, 113, 133, 155, 113, 128, 103, 121, 217, 223, - 82, 156, 209, 193, 72, 76, 60, 24, 109, 48, 250, 73, 150, 78, - 155, 176, 45, 214, 185, 215, 8, 39, 229, 165, 229, 151, 39, 50, - 248, 65, 12, 161, 90, 72, 130, 115, 17, 119, 42, 144, 0, 85, - 16, 59, 69, 163, 216, 109, 209, 70, 176, 193, 113, 55, 48, 38, - 7, 56, 0, 183, 91, 173, 32, 140, 33, 66, 9, 240, 14, 224, - 223, 182, 19, 83, 175, 54, 69, 111, 161, 213, 21, 187, 165, 141, - 115, 217, 65, 242, 3, 38, 191, 164, 141, 17, 221, 178, 255, 141, - 65, 103, 144, 206, 18, 53, 74, 16, 22, 216, 108, 202, 136, 33, - 73, 1, 184, 45, 247, 65, 24, 186, 79, 247, 17, 1, 39, 151, - 188, 143, 198, 62, 47, 207, 191, 187, 48, 83, 100, 171, 113, 181, - 124, 239, 169, 188, 19, 162, 177, 207, 139, 149, 229, 242, 253, 226, - 204, 50, 123, 158, 43, 136, 194, 217, 104, 141, 226, 25, 244, 197, - 75, 135, 161, 30, 251, 124, 165, 50, 183, 90, 90, 154, 41, 46, - 150, 238, 173, 46, 151, 150, 160, 6, 126, 210, 69, 99, 159, 87, - 74, 75, 43, 115, 203, 207, 107, 13, 178, 125, 93, 74, 18, 144, - 36, 172, 174, 85, 175, 70, 221, 168, 234, 180, 184, 134, 49, 209, - 54, 171, 202, 244, 39, 27, 99, 190, 27, 143, 181, 195, 198, 216, - 133, 69, 39, 222, 44, 193, 23, 116, 56, 114, 93, 234, 52, 162, - 64, 126, 228, 120, 173, 66, 205, 221, 26, 155, 152, 156, 28, 225, - 214, 88, 74, 179, 224, 72, 224, 74, 79, 118, 230, 64, 28, 83, - 197, 216, 148, 230, 162, 106, 232, 186, 126, 180, 25, 196, 133, 150, - 191, 145, 203, 211, 92, 28, 58, 85, 55, 26, 115, 24, 143, 156, - 67, 91, 5, 164, 131, 140, 17, 61, 43, 82, 154, 101, 140, 244, - 31, 20, 41, 195, 50, 70, 6, 143, 144, 223, 23, 68, 144, 49, - 166, 159, 178, 127, 75, 227, 48, 40, 141, 196, 89, 65, 154, 72, - 138, 81, 204, 211, 182, 239, 125, 218, 118, 5, 14, 79, 188, 119, - 163, 21, 8, 125, 88, 252, 128, 99, 125, 54, 32, 0, 15, 154, - 237, 60, 92, 89, 2, 173, 25, 119, 235, 230, 97, 227, 33, 11, - 59, 157, 102, 23, 86, 230, 238, 201, 203, 96, 221, 169, 62, 225, - 95, 23, 8, 173, 184, 27, 238, 206, 20, 253, 248, 209, 163, 169, - 237, 32, 172, 77, 61, 126, 60, 252, 232, 209, 20, 48, 140, 83, - 143, 31, 127, 62, 158, 159, 188, 113, 253, 105, 242, 114, 228, 205, - 139, 98, 28, 180, 94, 214, 59, 49, 14, 26, 235, 107, 255, 49, - 145, 50, 44, 99, 236, 228, 16, 241, 97, 24, 116, 203, 184, 166, - 159, 180, 29, 90, 164, 28, 195, 35, 218, 12, 194, 120, 180, 1, - 122, 220, 149, 202, 28, 248, 124, 178, 43, 159, 123, 203, 242, 240, - 115, 29, 35, 196, 15, 90, 152, 244, 110, 132, 133, 156, 33, 189, - 151, 85, 40, 90, 198, 102, 225, 90, 191, 37, 82, 134, 101, 92, - 59, 126, 130, 204, 65, 203, 12, 203, 184, 169, 223, 176, 223, 164, - 239, 177, 147, 65, 22, 202, 45, 113, 163, 2, 45, 215, 249, 239, - 90, 158, 134, 238, 168, 52, 161, 98, 123, 188, 40, 219, 197, 203, - 54, 50, 172, 184, 211, 34, 165, 89, 198, 205, 51, 227, 34, 197, - 170, 186, 118, 157, 252, 121, 92, 25, 166, 101, 220, 214, 109, 59, - 166, 15, 221, 154, 199, 49, 90, 246, 118, 119, 142, 29, 90, 14, - 130, 151, 240, 19, 57, 23, 187, 59, 241, 88, 171, 225, 120, 126, - 14, 49, 196, 228, 178, 221, 147, 213, 107, 58, 27, 238, 24, 91, - 204, 133, 4, 116, 77, 182, 214, 236, 101, 109, 16, 163, 100, 106, - 150, 113, 187, 255, 184, 72, 25, 150, 113, 123, 232, 20, 249, 49, - 108, 109, 175, 101, 188, 165, 159, 180, 191, 161, 209, 37, 239, 51, - 55, 177, 207, 3, 75, 52, 245, 28, 244, 124, 186, 82, 6, 227, - 71, 0, 45, 150, 30, 127, 170, 227, 190, 210, 69, 234, 249, 232, - 107, 28, 114, 83, 219, 104, 19, 45, 22, 28, 218, 240, 252, 39, - 212, 171, 115, 236, 155, 56, 8, 48, 234, 167, 108, 125, 47, 180, - 169, 79, 164, 52, 203, 120, 43, 43, 230, 184, 215, 176, 140, 183, - 142, 159, 32, 255, 5, 182, 62, 99, 25, 247, 245, 105, 251, 151, - 52, 58, 179, 255, 202, 18, 174, 180, 137, 181, 54, 55, 244, 115, - 158, 184, 62, 35, 81, 166, 157, 184, 186, 57, 3, 118, 115, 98, - 226, 163, 225, 145, 2, 106, 209, 54, 92, 224, 4, 43, 139, 51, - 81, 30, 3, 153, 59, 17, 157, 243, 162, 88, 201, 154, 167, 53, - 180, 196, 109, 5, 45, 0, 235, 75, 108, 125, 25, 23, 166, 24, - 30, 10, 135, 114, 180, 197, 148, 93, 206, 244, 178, 142, 136, 46, - 103, 52, 203, 184, 159, 29, 20, 41, 195, 50, 238, 31, 21, 219, - 47, 147, 181, 140, 251, 199, 139, 228, 48, 201, 66, 234, 167, 178, - 61, 150, 113, 255, 228, 155, 164, 8, 3, 210, 103, 25, 101, 253, - 184, 125, 29, 46, 243, 7, 51, 75, 116, 165, 82, 238, 28, 18, - 28, 251, 43, 145, 18, 228, 241, 193, 204, 146, 108, 75, 95, 47, - 43, 67, 44, 158, 62, 205, 50, 202, 253, 162, 45, 125, 134, 101, - 148, 143, 30, 147, 76, 207, 111, 189, 78, 174, 189, 32, 211, 83, - 13, 154, 205, 192, 127, 46, 203, 179, 47, 71, 179, 77, 250, 222, - 117, 66, 207, 241, 99, 235, 58, 49, 106, 110, 125, 72, 163, 198, - 240, 192, 100, 174, 208, 89, 86, 129, 231, 43, 220, 115, 235, 16, - 57, 191, 194, 178, 219, 55, 73, 86, 60, 176, 6, 137, 241, 196, - 221, 229, 12, 17, 251, 105, 29, 35, 189, 48, 103, 156, 19, 194, - 196, 148, 254, 186, 150, 187, 78, 8, 74, 110, 22, 29, 47, 124, - 209, 47, 115, 127, 73, 35, 7, 31, 120, 177, 215, 112, 163, 153, - 160, 217, 244, 128, 11, 219, 12, 162, 88, 112, 97, 236, 183, 53, - 68, 250, 90, 97, 240, 137, 91, 141, 249, 215, 34, 201, 234, 9, - 221, 58, 103, 188, 216, 79, 198, 177, 85, 161, 164, 213, 77, 39, - 218, 4, 86, 171, 191, 66, 240, 209, 172, 19, 109, 90, 54, 201, - 182, 130, 8, 76, 133, 128, 133, 50, 42, 50, 157, 107, 145, 3, - 15, 220, 48, 244, 226, 25, 48, 27, 251, 130, 141, 57, 65, 50, - 104, 110, 6, 237, 49, 42, 60, 5, 53, 178, 189, 19, 185, 49, - 180, 135, 213, 200, 211, 185, 6, 57, 132, 29, 95, 228, 109, 248, - 83, 15, 128, 218, 63, 179, 163, 127, 63, 162, 145, 163, 233, 234, - 42, 208, 194, 55, 72, 214, 117, 194, 134, 231, 242, 122, 7, 38, - 233, 222, 245, 210, 241, 161, 252, 194, 122, 157, 100, 192, 31, 17, - 27, 247, 34, 223, 242, 252, 185, 109, 52, 81, 196, 70, 220, 220, - 211, 136, 103, 113, 200, 73, 245, 147, 29, 213, 63, 235, 43, 81, - 241, 2, 233, 71, 151, 219, 138, 91, 183, 94, 39, 125, 27, 184, - 6, 121, 189, 103, 246, 118, 128, 47, 210, 138, 91, 159, 237, 169, - 136, 236, 211, 89, 146, 65, 119, 216, 220, 28, 33, 73, 150, 63, - 237, 28, 126, 25, 118, 251, 127, 1, 67, 201, 67, 61, 63, 167, - 61, 139, 223, 158, 184, 245, 146, 223, 126, 201, 111, 255, 105, 248, - 109, 225, 129, 119, 63, 241, 192, 187, 79, 254, 5, 65, 38, 123, - 188, 231, 134, 102, 255, 46, 161, 69, 250, 196, 221, 29, 69, 91, - 231, 166, 211, 226, 96, 231, 235, 136, 146, 195, 174, 125, 184, 121, - 80, 0, 10, 252, 117, 213, 129, 26, 97, 113, 130, 79, 188, 124, - 42, 163, 245, 239, 184, 85, 24, 90, 207, 87, 32, 10, 182, 157, - 93, 30, 181, 84, 112, 194, 129, 79, 148, 247, 11, 75, 121, 250, - 96, 113, 69, 152, 216, 38, 47, 56, 234, 187, 196, 5, 15, 66, - 26, 182, 125, 148, 223, 55, 156, 13, 198, 24, 20, 101, 59, 21, - 32, 183, 170, 211, 194, 88, 191, 74, 63, 32, 111, 210, 96, 193, - 124, 136, 169, 232, 82, 10, 196, 11, 105, 52, 216, 114, 99, 159, - 201, 114, 8, 125, 208, 246, 106, 46, 194, 143, 96, 164, 251, 61, - 223, 162, 247, 33, 112, 211, 64, 178, 133, 237, 134, 75, 55, 218, - 96, 206, 190, 189, 233, 196, 108, 232, 35, 100, 136, 192, 105, 7, - 164, 232, 210, 234, 53, 13, 6, 91, 20, 120, 68, 104, 141, 238, - 214, 20, 7, 20, 225, 173, 166, 182, 16, 213, 174, 16, 52, 4, - 192, 72, 252, 200, 99, 203, 198, 139, 17, 79, 21, 35, 234, 14, - 99, 104, 6, 12, 179, 93, 111, 56, 79, 188, 198, 238, 8, 48, - 18, 72, 202, 122, 205, 86, 16, 198, 28, 230, 74, 206, 136, 7, - 238, 24, 128, 241, 137, 48, 186, 85, 55, 132, 147, 160, 230, 53, - 5, 192, 59, 224, 2, 137, 72, 176, 219, 238, 58, 202, 70, 128, - 232, 151, 203, 99, 143, 41, 53, 165, 145, 23, 131, 253, 52, 109, - 133, 65, 149, 109, 37, 47, 10, 16, 148, 99, 4, 244, 188, 62, - 199, 127, 17, 99, 230, 176, 33, 228, 82, 114, 49, 221, 28, 63, - 179, 179, 49, 14, 154, 251, 34, 148, 16, 227, 232, 163, 182, 23, - 187, 81, 161, 181, 203, 177, 115, 23, 4, 0, 89, 30, 240, 4, - 35, 4, 163, 87, 246, 0, 66, 135, 50, 86, 193, 145, 190, 83, - 96, 183, 135, 106, 69, 110, 168, 246, 252, 185, 102, 204, 239, 11, - 204, 55, 183, 135, 231, 175, 147, 93, 26, 185, 49, 117, 163, 72, - 206, 27, 43, 38, 78, 36, 21, 98, 93, 108, 122, 140, 26, 222, - 133, 194, 82, 138, 76, 175, 78, 31, 204, 83, 39, 228, 236, 154, - 211, 12, 252, 13, 217, 199, 164, 154, 150, 227, 133, 17, 31, 116, - 167, 134, 16, 54, 172, 44, 223, 221, 230, 223, 243, 22, 70, 10, - 178, 129, 12, 150, 157, 94, 139, 14, 42, 74, 88, 51, 189, 56, - 74, 154, 6, 234, 207, 25, 126, 119, 230, 213, 70, 64, 219, 96, - 231, 172, 183, 171, 79, 220, 120, 10, 15, 60, 118, 25, 226, 131, - 60, 133, 89, 205, 85, 189, 28, 230, 2, 123, 139, 84, 54, 120, - 34, 242, 53, 60, 191, 189, 51, 26, 186, 13, 200, 158, 44, 128, - 41, 117, 97, 16, 126, 93, 69, 83, 99, 99, 213, 40, 125, 171, - 139, 196, 88, 20, 86, 65, 252, 228, 249, 27, 99, 80, 201, 122, - 16, 143, 117, 172, 168, 68, 28, 55, 158, 61, 76, 190, 38, 164, - 113, 215, 245, 115, 118, 8, 39, 167, 10, 56, 41, 194, 185, 139, - 19, 234, 43, 238, 46, 140, 24, 103, 185, 68, 60, 104, 140, 86, - 156, 80, 238, 124, 152, 100, 198, 60, 141, 240, 170, 241, 66, 130, - 1, 200, 67, 199, 67, 148, 31, 46, 240, 201, 176, 22, 28, 87, - 132, 65, 215, 79, 156, 82, 132, 65, 215, 207, 156, 37, 239, 18, - 0, 208, 121, 189, 231, 77, 205, 126, 155, 29, 58, 104, 172, 145, - 94, 22, 5, 186, 44, 25, 119, 96, 165, 225, 78, 115, 54, 54, - 240, 30, 118, 93, 85, 144, 26, 59, 27, 17, 14, 135, 166, 89, - 198, 235, 89, 139, 124, 133, 152, 166, 198, 134, 227, 182, 126, 196, - 190, 155, 72, 117, 156, 209, 207, 30, 179, 127, 198, 71, 111, 173, - 62, 190, 58, 60, 214, 241, 96, 228, 234, 69, 66, 31, 58, 59, - 28, 239, 98, 138, 222, 188, 206, 187, 166, 129, 156, 75, 200, 7, - 52, 232, 218, 237, 254, 3, 34, 101, 88, 198, 237, 195, 131, 228, - 60, 84, 171, 89, 198, 93, 253, 168, 109, 165, 74, 154, 188, 113, - 83, 22, 165, 245, 178, 28, 162, 40, 214, 230, 187, 253, 135, 68, - 202, 176, 140, 187, 71, 44, 242, 151, 117, 162, 155, 186, 101, 62, - 232, 249, 88, 179, 191, 161, 211, 20, 95, 36, 125, 67, 113, 99, - 8, 138, 94, 204, 51, 39, 72, 41, 242, 57, 60, 16, 53, 31, - 44, 66, 67, 199, 71, 204, 227, 40, 206, 11, 23, 39, 40, 33, - 8, 119, 175, 200, 143, 26, 193, 70, 129, 62, 12, 194, 132, 138, - 64, 103, 47, 150, 187, 46, 179, 17, 200, 199, 54, 89, 140, 130, - 168, 116, 195, 24, 169, 59, 198, 9, 219, 177, 208, 5, 176, 186, - 117, 143, 59, 203, 75, 135, 21, 81, 148, 187, 227, 177, 3, 220, - 243, 243, 16, 29, 157, 251, 180, 129, 248, 107, 39, 230, 226, 103, - 54, 184, 15, 178, 199, 201, 199, 196, 52, 117, 54, 193, 111, 235, - 150, 253, 14, 172, 247, 206, 227, 65, 140, 2, 107, 132, 220, 202, - 98, 187, 33, 83, 192, 229, 136, 213, 160, 153, 43, 176, 137, 247, - 107, 14, 63, 53, 216, 100, 232, 48, 231, 111, 243, 137, 210, 97, - 206, 223, 230, 178, 77, 29, 230, 252, 237, 193, 35, 176, 212, 64, - 168, 246, 80, 63, 14, 75, 77, 140, 37, 247, 253, 240, 229, 72, - 116, 54, 130, 109, 243, 92, 161, 75, 181, 108, 125, 60, 148, 213, - 178, 245, 241, 144, 75, 19, 116, 88, 31, 15, 143, 2, 44, 17, - 171, 87, 183, 140, 138, 126, 196, 254, 243, 26, 229, 43, 35, 116, - 235, 162, 158, 208, 173, 71, 99, 155, 174, 83, 139, 198, 154, 32, - 31, 83, 34, 28, 36, 227, 14, 136, 185, 32, 234, 67, 129, 63, - 143, 167, 190, 30, 58, 126, 117, 19, 250, 144, 7, 34, 94, 45, - 14, 95, 230, 186, 13, 153, 222, 203, 90, 36, 218, 206, 198, 165, - 194, 183, 137, 14, 194, 198, 202, 225, 65, 114, 11, 154, 110, 88, - 198, 138, 126, 202, 206, 139, 150, 207, 150, 222, 167, 75, 179, 197, - 137, 2, 136, 144, 26, 193, 182, 27, 2, 33, 216, 165, 18, 163, - 151, 125, 43, 42, 49, 52, 203, 88, 225, 178, 86, 29, 36, 139, - 43, 39, 135, 200, 63, 209, 161, 22, 211, 50, 30, 235, 199, 237, - 159, 215, 233, 61, 132, 130, 102, 68, 102, 16, 59, 13, 238, 171, - 200, 17, 20, 1, 112, 75, 8, 154, 234, 64, 195, 225, 174, 218, - 114, 243, 180, 25, 248, 65, 28, 248, 252, 56, 242, 252, 106, 232, - 58, 17, 26, 152, 197, 238, 134, 27, 162, 153, 83, 232, 34, 232, - 25, 68, 67, 216, 118, 96, 29, 34, 255, 130, 114, 62, 14, 168, - 171, 196, 54, 163, 27, 65, 28, 168, 182, 220, 27, 94, 60, 138, - 248, 160, 110, 72, 40, 10, 31, 104, 171, 209, 222, 240, 252, 2, - 18, 15, 84, 152, 2, 68, 130, 20, 134, 211, 209, 137, 232, 182, - 219, 104, 48, 14, 5, 172, 43, 9, 123, 18, 39, 40, 229, 155, - 110, 211, 149, 248, 245, 73, 212, 255, 198, 46, 134, 22, 231, 125, - 222, 59, 208, 102, 47, 27, 190, 62, 145, 210, 44, 227, 113, 86, - 172, 68, 211, 176, 140, 199, 71, 143, 17, 74, 0, 255, 204, 233, - 249, 68, 179, 143, 1, 60, 25, 54, 155, 11, 53, 248, 198, 101, - 147, 228, 100, 143, 145, 89, 98, 154, 6, 219, 184, 85, 221, 178, - 111, 139, 204, 108, 123, 224, 82, 75, 111, 145, 209, 208, 221, 242, - 220, 237, 110, 219, 21, 90, 97, 192, 22, 173, 242, 165, 96, 192, - 22, 173, 242, 45, 106, 192, 22, 173, 14, 30, 33, 215, 160, 78, - 205, 50, 92, 253, 184, 125, 89, 54, 16, 207, 165, 238, 187, 82, - 20, 207, 182, 162, 43, 139, 103, 91, 209, 229, 91, 209, 128, 173, - 232, 30, 61, 70, 70, 160, 120, 221, 50, 54, 244, 163, 246, 25, - 138, 210, 34, 142, 243, 202, 75, 159, 152, 188, 118, 253, 134, 44, - 148, 237, 145, 13, 62, 170, 6, 236, 145, 141, 236, 33, 145, 50, - 44, 99, 227, 136, 69, 134, 161, 80, 195, 50, 60, 253, 184, 125, - 154, 46, 178, 209, 4, 186, 44, 93, 174, 44, 147, 109, 9, 79, - 150, 201, 70, 219, 203, 138, 134, 178, 45, 225, 29, 61, 70, 174, - 19, 0, 183, 107, 246, 108, 107, 246, 176, 18, 154, 112, 138, 174, - 68, 110, 199, 13, 195, 195, 193, 241, 217, 99, 51, 223, 204, 158, - 192, 83, 199, 100, 211, 215, 210, 45, 118, 234, 44, 167, 60, 235, - 4, 206, 1, 106, 117, 118, 129, 107, 136, 149, 235, 133, 91, 215, - 177, 155, 128, 171, 117, 228, 105, 68, 88, 199, 220, 16, 96, 255, - 229, 125, 6, 106, 169, 116, 104, 19, 5, 50, 213, 19, 170, 6, - 19, 86, 65, 139, 79, 147, 9, 171, 160, 197, 87, 129, 9, 171, - 160, 53, 120, 132, 12, 64, 211, 53, 203, 248, 148, 19, 40, 38, - 204, 238, 167, 242, 51, 54, 187, 159, 242, 217, 53, 97, 118, 63, - 61, 122, 140, 127, 166, 91, 70, 168, 31, 225, 175, 216, 252, 133, - 242, 51, 86, 100, 200, 207, 56, 60, 214, 194, 195, 131, 100, 21, - 62, 51, 44, 99, 75, 63, 110, 87, 68, 248, 138, 206, 14, 242, - 171, 170, 42, 198, 28, 125, 169, 131, 13, 201, 194, 119, 222, 160, - 68, 9, 173, 198, 170, 99, 211, 190, 197, 167, 221, 132, 105, 223, - 202, 138, 30, 176, 105, 223, 58, 122, 140, 92, 38, 108, 31, 247, - 126, 214, 243, 3, 154, 102, 159, 74, 205, 123, 42, 168, 62, 155, - 232, 94, 205, 50, 62, 203, 158, 38, 211, 196, 52, 123, 217, 60, - 127, 85, 63, 103, 223, 192, 104, 32, 193, 54, 112, 181, 216, 86, - 217, 5, 16, 145, 128, 119, 191, 148, 212, 179, 245, 207, 91, 216, - 11, 36, 225, 87, 209, 215, 155, 165, 52, 203, 248, 234, 145, 83, - 34, 101, 88, 198, 87, 207, 156, 37, 203, 80, 155, 102, 25, 95, - 211, 207, 216, 15, 104, 153, 151, 7, 216, 133, 29, 245, 73, 111, - 112, 39, 6, 222, 2, 253, 83, 26, 187, 120, 97, 8, 63, 118, - 129, 235, 193, 74, 205, 176, 98, 69, 253, 108, 142, 191, 118, 228, - 164, 72, 25, 150, 241, 53, 251, 52, 153, 34, 186, 153, 177, 50, - 223, 212, 122, 126, 88, 211, 236, 60, 45, 114, 23, 26, 54, 61, - 210, 110, 141, 145, 57, 220, 88, 153, 17, 165, 62, 59, 75, 57, - 2, 98, 70, 179, 204, 111, 106, 217, 35, 228, 14, 49, 205, 140, - 222, 99, 153, 63, 164, 233, 35, 246, 24, 140, 91, 208, 168, 129, - 142, 44, 177, 51, 221, 119, 196, 14, 146, 94, 246, 121, 6, 190, - 63, 45, 146, 96, 23, 119, 230, 162, 72, 26, 44, 121, 101, 152, - 188, 13, 117, 105, 150, 249, 23, 53, 253, 138, 253, 70, 122, 212, - 20, 115, 187, 189, 67, 197, 90, 148, 30, 42, 44, 90, 203, 64, - 97, 162, 98, 13, 202, 62, 147, 19, 73, 131, 37, 47, 93, 38, - 211, 68, 55, 251, 172, 204, 143, 106, 61, 63, 169, 105, 246, 117, - 213, 58, 207, 73, 224, 35, 121, 92, 5, 225, 82, 236, 199, 97, - 208, 160, 40, 31, 229, 163, 214, 167, 89, 230, 143, 178, 81, 251, - 3, 118, 170, 244, 101, 123, 172, 204, 143, 107, 250, 95, 211, 12, - 251, 191, 197, 131, 165, 235, 199, 20, 199, 29, 209, 132, 5, 141, - 231, 69, 194, 122, 33, 129, 253, 167, 205, 0, 129, 141, 203, 117, - 110, 149, 139, 5, 160, 47, 150, 0, 136, 78, 62, 243, 124, 142, - 47, 195, 185, 121, 63, 240, 71, 69, 249, 27, 94, 156, 167, 81, - 123, 125, 11, 229, 158, 121, 142, 90, 4, 218, 32, 103, 195, 37, - 156, 99, 140, 80, 132, 176, 43, 238, 102, 180, 192, 222, 116, 67, - 23, 135, 184, 47, 203, 38, 243, 199, 181, 236, 33, 50, 198, 186, - 204, 86, 202, 79, 104, 230, 105, 251, 21, 90, 20, 20, 151, 231, - 203, 94, 37, 7, 39, 159, 162, 62, 88, 27, 63, 161, 153, 135, - 68, 82, 99, 201, 195, 39, 68, 210, 96, 201, 83, 54, 121, 131, - 232, 102, 214, 202, 252, 13, 173, 231, 231, 52, 205, 46, 164, 167, - 40, 169, 200, 233, 94, 21, 155, 156, 172, 102, 153, 127, 67, 203, - 90, 100, 134, 152, 102, 150, 53, 244, 219, 154, 110, 241, 163, 224, - 139, 146, 214, 208, 188, 44, 152, 76, 126, 91, 211, 179, 34, 169, - 177, 100, 255, 65, 145, 52, 88, 114, 240, 8, 41, 65, 141, 154, - 101, 254, 45, 77, 63, 110, 191, 134, 54, 54, 120, 4, 10, 26, - 237, 89, 13, 16, 23, 56, 150, 170, 245, 66, 57, 162, 78, 13, - 138, 237, 31, 20, 73, 131, 37, 143, 30, 35, 223, 208, 160, 82, - 221, 50, 127, 86, 211, 143, 216, 237, 63, 19, 114, 154, 55, 74, - 239, 133, 86, 136, 38, 179, 145, 248, 89, 173, 255, 128, 72, 26, - 44, 121, 120, 80, 234, 19, 255, 112, 136, 220, 126, 65, 125, 34, - 23, 41, 173, 50, 250, 117, 127, 189, 98, 238, 247, 53, 114, 240, - 62, 102, 173, 64, 78, 107, 146, 28, 111, 133, 94, 211, 9, 119, - 87, 1, 159, 102, 149, 35, 148, 113, 157, 198, 81, 254, 178, 196, - 222, 61, 196, 87, 214, 29, 146, 129, 188, 209, 144, 14, 74, 199, - 75, 123, 245, 40, 169, 74, 10, 240, 117, 133, 127, 100, 93, 39, - 39, 226, 176, 237, 195, 69, 133, 149, 70, 171, 96, 166, 10, 170, - 145, 222, 202, 49, 249, 22, 190, 139, 102, 216, 59, 251, 21, 210, - 11, 73, 107, 136, 244, 165, 219, 40, 146, 95, 70, 157, 242, 231, - 185, 245, 226, 131, 103, 90, 47, 78, 188, 212, 166, 188, 212, 166, - 124, 97, 109, 10, 170, 80, 172, 68, 133, 194, 126, 254, 32, 183, - 83, 28, 234, 121, 160, 217, 255, 167, 70, 203, 123, 194, 24, 110, - 111, 74, 115, 68, 182, 171, 17, 123, 166, 35, 62, 31, 55, 2, - 228, 214, 38, 220, 245, 33, 241, 34, 230, 8, 87, 128, 154, 227, - 185, 64, 192, 175, 148, 81, 220, 7, 114, 104, 16, 232, 40, 38, - 125, 213, 70, 59, 138, 25, 99, 202, 227, 244, 9, 9, 117, 68, - 227, 96, 3, 196, 240, 93, 67, 218, 32, 228, 23, 71, 151, 118, - 162, 200, 13, 49, 70, 57, 23, 111, 11, 172, 67, 180, 222, 137, - 157, 234, 19, 138, 134, 102, 138, 193, 225, 80, 246, 56, 249, 13, - 105, 112, 120, 81, 191, 96, 255, 138, 137, 168, 182, 0, 150, 37, - 224, 175, 129, 210, 105, 55, 98, 175, 233, 64, 236, 116, 192, 25, - 171, 37, 178, 226, 56, 128, 90, 249, 72, 161, 67, 15, 65, 122, - 105, 157, 131, 39, 165, 202, 131, 22, 161, 219, 143, 2, 98, 5, - 94, 244, 233, 134, 210, 162, 47, 85, 78, 219, 2, 92, 55, 222, - 148, 157, 195, 171, 194, 241, 105, 9, 118, 44, 40, 125, 216, 62, - 4, 111, 65, 214, 180, 2, 136, 169, 225, 22, 113, 68, 0, 167, - 212, 236, 210, 26, 2, 5, 41, 241, 222, 90, 110, 149, 227, 149, - 136, 121, 200, 99, 236, 12, 175, 217, 116, 107, 30, 14, 65, 221, - 137, 157, 134, 28, 235, 4, 249, 183, 186, 25, 68, 174, 15, 134, - 164, 73, 84, 20, 25, 216, 128, 116, 43, 158, 181, 177, 174, 194, - 48, 121, 17, 162, 37, 241, 192, 42, 130, 251, 27, 86, 97, 210, - 130, 200, 77, 66, 43, 36, 198, 176, 35, 164, 211, 66, 149, 47, - 46, 108, 3, 111, 110, 194, 131, 34, 57, 168, 24, 91, 137, 129, - 21, 146, 107, 247, 211, 182, 3, 81, 109, 130, 144, 70, 77, 167, - 209, 16, 4, 238, 196, 248, 228, 117, 9, 162, 76, 232, 202, 242, - 253, 209, 215, 83, 182, 139, 23, 83, 182, 139, 23, 251, 207, 41, - 226, 234, 139, 175, 228, 72, 192, 150, 157, 209, 99, 153, 195, 250, - 164, 97, 59, 20, 174, 151, 14, 204, 133, 48, 88, 111, 184, 77, - 161, 36, 66, 137, 76, 106, 201, 37, 86, 80, 14, 173, 134, 78, - 180, 9, 81, 155, 187, 14, 50, 86, 111, 176, 198, 12, 147, 195, - 228, 191, 212, 73, 134, 37, 217, 194, 159, 48, 79, 218, 191, 172, - 239, 93, 248, 169, 5, 253, 236, 245, 76, 94, 104, 65, 239, 183, - 158, 201, 23, 88, 208, 220, 134, 76, 78, 84, 247, 233, 22, 166, - 205, 93, 142, 146, 127, 255, 147, 126, 136, 244, 225, 80, 246, 178, - 177, 84, 210, 154, 101, 76, 12, 88, 73, 218, 176, 140, 137, 227, - 39, 200, 63, 49, 133, 217, 234, 180, 126, 198, 254, 121, 229, 200, - 25, 142, 70, 82, 179, 189, 231, 136, 33, 124, 179, 184, 33, 220, - 95, 24, 114, 141, 53, 45, 240, 197, 172, 32, 151, 241, 34, 251, - 26, 236, 119, 57, 134, 26, 141, 2, 196, 55, 79, 246, 50, 48, - 68, 140, 103, 77, 4, 144, 8, 159, 20, 212, 59, 63, 242, 48, - 96, 230, 125, 56, 21, 144, 168, 162, 195, 252, 255, 73, 127, 82, - 221, 17, 33, 162, 220, 244, 185, 194, 142, 137, 60, 15, 253, 231, - 179, 50, 223, 67, 129, 14, 28, 56, 99, 140, 119, 170, 43, 149, - 228, 161, 5, 140, 56, 96, 116, 151, 31, 136, 0, 143, 32, 131, - 101, 165, 12, 11, 3, 30, 62, 56, 80, 62, 120, 72, 190, 199, - 35, 168, 169, 199, 142, 48, 25, 172, 229, 121, 249, 143, 198, 31, - 139, 112, 100, 52, 218, 116, 26, 13, 218, 116, 226, 234, 38, 161, - 93, 169, 86, 177, 182, 80, 14, 140, 58, 9, 183, 38, 151, 26, - 68, 57, 228, 99, 227, 176, 21, 236, 68, 109, 78, 218, 32, 148, - 253, 146, 247, 153, 59, 60, 50, 2, 235, 16, 128, 176, 128, 18, - 115, 107, 244, 90, 126, 226, 181, 73, 92, 120, 242, 140, 209, 76, - 182, 124, 100, 42, 99, 25, 211, 3, 131, 138, 149, 240, 52, 151, - 70, 160, 149, 240, 180, 125, 154, 124, 34, 172, 132, 239, 235, 23, - 236, 199, 106, 228, 211, 160, 78, 213, 201, 2, 251, 86, 65, 5, - 39, 199, 44, 207, 2, 88, 88, 8, 219, 133, 139, 12, 141, 42, - 161, 151, 64, 158, 68, 41, 11, 225, 196, 148, 82, 7, 83, 202, - 115, 138, 133, 240, 253, 87, 114, 146, 221, 248, 127, 114, 228, 76, - 167, 221, 33, 194, 87, 236, 7, 61, 247, 147, 26, 201, 44, 65, - 14, 235, 54, 201, 224, 45, 193, 13, 17, 47, 236, 177, 206, 194, - 140, 8, 100, 30, 161, 37, 34, 255, 196, 126, 135, 12, 40, 143, - 187, 88, 21, 230, 85, 171, 194, 129, 201, 19, 123, 10, 127, 151, - 189, 85, 237, 20, 255, 190, 78, 122, 225, 161, 117, 155, 16, 191, - 221, 104, 172, 98, 1, 172, 208, 67, 93, 108, 199, 230, 219, 141, - 6, 228, 159, 237, 169, 244, 251, 34, 97, 93, 32, 7, 112, 134, - 86, 147, 250, 181, 217, 158, 202, 0, 62, 149, 153, 80, 213, 201, - 51, 129, 133, 23, 203, 132, 79, 49, 211, 121, 66, 214, 131, 64, - 52, 195, 164, 218, 112, 150, 85, 197, 158, 97, 134, 55, 160, 148, - 118, 53, 230, 89, 122, 161, 171, 39, 247, 25, 71, 94, 124, 187, - 26, 203, 94, 178, 101, 193, 191, 205, 236, 99, 33, 55, 231, 69, - 177, 236, 101, 67, 36, 166, 51, 196, 124, 226, 249, 181, 220, 109, - 210, 47, 115, 88, 5, 146, 65, 221, 48, 159, 209, 253, 6, 157, - 231, 186, 122, 154, 244, 203, 65, 180, 14, 17, 50, 191, 50, 55, - 183, 250, 110, 113, 110, 165, 52, 216, 51, 253, 181, 238, 48, 131, - 3, 216, 25, 129, 49, 56, 246, 130, 24, 131, 216, 241, 47, 4, - 48, 248, 173, 179, 140, 209, 59, 215, 243, 241, 75, 124, 193, 151, - 248, 130, 47, 241, 5, 95, 226, 11, 190, 196, 23, 124, 137, 47, - 248, 103, 142, 47, 120, 63, 193, 23, 188, 255, 108, 124, 193, 124, - 130, 47, 152, 255, 2, 248, 130, 255, 192, 64, 113, 211, 100, 207, - 13, 205, 254, 142, 65, 215, 240, 194, 93, 75, 179, 185, 120, 159, - 2, 41, 12, 87, 30, 220, 232, 121, 97, 78, 192, 35, 38, 34, - 173, 70, 184, 92, 188, 233, 128, 186, 171, 182, 235, 59, 77, 110, - 62, 193, 110, 104, 97, 79, 6, 112, 30, 16, 14, 76, 200, 212, - 162, 188, 172, 156, 36, 14, 176, 137, 146, 102, 125, 23, 140, 233, - 0, 199, 64, 54, 142, 199, 235, 78, 155, 32, 250, 132, 98, 40, - 32, 214, 48, 89, 60, 109, 120, 79, 92, 250, 246, 146, 236, 14, - 130, 204, 240, 130, 56, 126, 144, 79, 68, 220, 39, 110, 72, 23, - 59, 94, 131, 123, 73, 57, 113, 71, 189, 112, 95, 114, 147, 102, - 56, 77, 145, 127, 37, 137, 32, 22, 227, 127, 9, 239, 90, 33, - 78, 20, 77, 18, 204, 8, 96, 205, 116, 20, 205, 242, 202, 185, - 240, 34, 204, 35, 67, 82, 9, 233, 216, 100, 246, 16, 152, 212, - 112, 251, 63, 106, 231, 233, 138, 68, 17, 103, 51, 16, 212, 247, - 159, 129, 180, 229, 222, 49, 213, 114, 239, 248, 105, 213, 114, 239, - 220, 121, 242, 107, 58, 154, 238, 221, 233, 121, 168, 217, 191, 168, - 211, 53, 160, 226, 58, 86, 201, 62, 53, 41, 208, 66, 140, 115, - 247, 112, 140, 24, 9, 157, 103, 51, 202, 141, 26, 4, 116, 19, - 251, 197, 104, 94, 215, 241, 209, 228, 172, 218, 14, 35, 54, 231, - 124, 210, 248, 210, 11, 66, 234, 16, 121, 41, 139, 53, 85, 20, - 254, 220, 161, 124, 10, 178, 42, 97, 213, 204, 38, 3, 144, 224, - 133, 96, 33, 114, 137, 176, 141, 100, 159, 175, 3, 188, 190, 192, - 203, 148, 198, 206, 18, 186, 72, 128, 244, 63, 119, 230, 248, 240, - 136, 137, 131, 150, 20, 18, 67, 197, 59, 217, 131, 36, 71, 76, - 83, 203, 246, 88, 230, 155, 250, 156, 97, 31, 131, 242, 24, 145, - 45, 91, 46, 140, 6, 179, 108, 74, 222, 204, 30, 32, 87, 132, - 105, 99, 209, 60, 107, 219, 105, 205, 30, 27, 206, 244, 103, 48, - 175, 69, 243, 160, 98, 182, 88, 60, 52, 164, 152, 45, 22, 79, - 159, 1, 3, 22, 48, 91, 156, 49, 207, 216, 103, 210, 69, 242, - 48, 156, 233, 66, 181, 94, 150, 151, 40, 6, 140, 51, 3, 39, - 21, 3, 198, 25, 251, 52, 47, 84, 183, 140, 210, 222, 66, 185, - 201, 103, 186, 80, 198, 132, 150, 100, 161, 172, 57, 37, 89, 40, - 99, 66, 75, 246, 105, 114, 21, 10, 53, 44, 227, 129, 57, 100, - 159, 237, 80, 107, 226, 122, 233, 40, 213, 232, 101, 153, 133, 173, - 165, 161, 89, 198, 131, 254, 163, 34, 197, 10, 58, 113, 146, 140, - 66, 169, 166, 101, 148, 205, 51, 54, 221, 211, 84, 113, 232, 165, - 11, 54, 51, 44, 191, 76, 105, 150, 81, 150, 205, 53, 13, 203, - 40, 219, 167, 121, 193, 189, 150, 241, 21, 243, 108, 103, 193, 50, - 120, 57, 95, 38, 178, 224, 222, 12, 203, 47, 102, 172, 87, 179, - 140, 175, 200, 25, 235, 53, 44, 227, 43, 167, 207, 144, 191, 163, - 97, 176, 153, 165, 158, 119, 53, 251, 167, 52, 186, 38, 121, 170, - 53, 140, 105, 143, 102, 50, 113, 224, 67, 216, 19, 87, 196, 233, - 81, 66, 49, 35, 137, 40, 23, 140, 56, 151, 136, 92, 182, 224, - 132, 219, 246, 57, 245, 246, 236, 149, 158, 174, 30, 178, 173, 177, - 178, 215, 148, 88, 45, 75, 189, 135, 136, 45, 98, 181, 172, 232, - 71, 236, 131, 116, 190, 99, 189, 242, 48, 44, 43, 50, 28, 68, - 143, 110, 25, 43, 135, 7, 201, 215, 53, 180, 134, 125, 212, 243, - 177, 102, 111, 209, 53, 201, 127, 242, 238, 110, 135, 78, 171, 229, - 134, 212, 9, 131, 54, 55, 49, 226, 163, 139, 50, 163, 228, 116, - 120, 222, 158, 77, 151, 12, 217, 156, 48, 116, 118, 21, 251, 211, - 71, 217, 35, 100, 74, 216, 159, 62, 214, 207, 216, 163, 108, 102, - 59, 170, 123, 206, 129, 171, 235, 61, 96, 153, 40, 83, 25, 203, - 120, 60, 48, 168, 88, 154, 62, 230, 114, 33, 180, 52, 125, 108, - 159, 150, 18, 152, 239, 142, 147, 155, 47, 168, 240, 109, 133, 46, - 158, 90, 251, 250, 144, 126, 25, 87, 212, 220, 31, 232, 228, 104, - 34, 204, 95, 20, 149, 88, 23, 201, 33, 142, 100, 176, 26, 186, - 27, 238, 78, 139, 75, 103, 14, 176, 167, 229, 26, 152, 97, 183, - 172, 55, 72, 31, 63, 84, 185, 160, 102, 127, 119, 84, 89, 116, - 69, 124, 98, 45, 18, 194, 101, 164, 126, 117, 23, 132, 40, 135, - 38, 199, 247, 22, 208, 165, 121, 133, 146, 252, 174, 162, 148, 97, - 141, 18, 203, 221, 1, 73, 248, 170, 187, 19, 240, 8, 139, 40, - 123, 169, 28, 225, 111, 74, 242, 69, 174, 78, 72, 82, 144, 213, - 71, 140, 226, 220, 220, 96, 143, 117, 145, 208, 119, 139, 149, 114, - 113, 126, 121, 105, 245, 189, 242, 242, 236, 234, 202, 124, 233, 253, - 197, 210, 204, 114, 233, 222, 42, 162, 68, 44, 13, 106, 214, 8, - 185, 148, 206, 181, 48, 63, 247, 65, 183, 172, 122, 238, 207, 145, - 33, 214, 9, 81, 179, 23, 248, 223, 215, 129, 206, 253, 136, 70, - 6, 59, 223, 90, 215, 72, 6, 164, 238, 194, 57, 242, 212, 190, - 37, 206, 246, 84, 120, 86, 235, 53, 68, 26, 114, 60, 63, 226, - 13, 121, 230, 103, 50, 243, 244, 0, 233, 151, 43, 56, 247, 77, - 131, 28, 17, 254, 227, 73, 131, 42, 228, 0, 114, 222, 171, 110, - 109, 67, 250, 108, 142, 237, 45, 127, 207, 167, 133, 82, 109, 195, - 93, 222, 109, 185, 75, 110, 92, 25, 192, 66, 216, 163, 200, 250, - 128, 28, 135, 209, 197, 207, 87, 101, 19, 120, 227, 187, 24, 50, - 116, 89, 109, 149, 163, 113, 151, 29, 82, 32, 71, 85, 216, 38, - 49, 123, 232, 237, 121, 68, 65, 111, 226, 83, 152, 39, 150, 2, - 57, 37, 178, 163, 31, 243, 96, 130, 60, 133, 185, 237, 42, 25, - 80, 58, 101, 77, 144, 99, 34, 240, 206, 170, 130, 116, 2, 99, - 148, 173, 28, 21, 239, 18, 79, 138, 200, 122, 133, 28, 80, 186, - 142, 211, 149, 173, 12, 36, 93, 137, 114, 147, 228, 56, 235, 238, - 67, 55, 118, 24, 27, 144, 244, 237, 20, 201, 242, 69, 137, 194, - 192, 254, 74, 31, 46, 199, 232, 203, 216, 92, 252, 206, 101, 116, - 97, 253, 230, 75, 23, 214, 151, 70, 23, 255, 193, 92, 88, 239, - 116, 119, 97, 253, 101, 13, 25, 226, 211, 61, 51, 154, 253, 247, - 180, 52, 229, 86, 111, 251, 0, 179, 167, 130, 59, 141, 222, 5, - 250, 179, 64, 104, 9, 34, 251, 36, 106, 207, 184, 186, 201, 120, - 134, 70, 67, 117, 157, 131, 69, 250, 48, 136, 98, 90, 109, 120, - 80, 44, 170, 89, 183, 185, 35, 36, 56, 224, 113, 126, 69, 236, - 69, 208, 224, 60, 239, 138, 81, 216, 194, 211, 217, 211, 228, 175, - 10, 40, 69, 227, 156, 126, 198, 254, 33, 77, 184, 166, 114, 179, - 15, 144, 127, 2, 126, 14, 87, 87, 123, 53, 108, 177, 244, 88, - 8, 221, 141, 118, 195, 145, 147, 6, 14, 68, 174, 31, 123, 161, - 219, 216, 205, 83, 64, 132, 5, 149, 147, 124, 205, 125, 58, 27, - 94, 213, 139, 27, 187, 156, 48, 227, 34, 205, 143, 65, 88, 122, - 49, 165, 126, 63, 151, 82, 191, 159, 235, 63, 169, 240, 156, 231, - 236, 211, 224, 94, 3, 42, 216, 87, 244, 243, 246, 221, 103, 180, - 95, 240, 105, 145, 19, 123, 81, 125, 87, 246, 32, 33, 129, 84, - 29, 220, 43, 186, 165, 232, 224, 94, 57, 106, 43, 58, 184, 87, - 206, 158, 3, 55, 133, 30, 182, 2, 46, 234, 55, 13, 123, 138, - 222, 247, 26, 177, 27, 70, 169, 57, 164, 235, 78, 132, 91, 35, - 89, 8, 5, 201, 101, 138, 48, 135, 80, 46, 76, 200, 197, 190, - 35, 16, 191, 186, 7, 103, 228, 138, 121, 192, 222, 4, 61, 64, - 170, 80, 222, 126, 110, 153, 203, 182, 214, 124, 121, 254, 193, 148, - 244, 26, 241, 34, 64, 13, 2, 129, 61, 88, 34, 115, 127, 20, - 48, 226, 68, 136, 20, 212, 241, 177, 177, 110, 56, 177, 235, 87, - 119, 133, 238, 155, 143, 242, 21, 179, 47, 73, 235, 150, 113, 133, - 12, 144, 191, 102, 240, 150, 105, 150, 49, 97, 142, 216, 63, 100, - 116, 27, 235, 117, 23, 176, 187, 227, 64, 44, 24, 49, 234, 32, - 24, 217, 116, 208, 19, 58, 8, 65, 225, 77, 104, 219, 239, 112, - 37, 142, 10, 180, 28, 167, 60, 87, 36, 212, 17, 160, 232, 42, - 31, 64, 248, 0, 244, 23, 38, 157, 30, 201, 145, 8, 31, 153, - 104, 37, 228, 52, 195, 201, 5, 174, 62, 220, 18, 184, 195, 81, - 20, 112, 192, 58, 13, 149, 188, 122, 103, 135, 176, 70, 182, 221, - 23, 139, 75, 75, 208, 154, 77, 136, 149, 8, 245, 19, 250, 232, - 126, 177, 60, 151, 167, 248, 47, 203, 242, 88, 56, 178, 54, 26, - 93, 230, 82, 109, 224, 186, 11, 90, 118, 162, 250, 100, 242, 172, - 210, 163, 79, 89, 180, 98, 166, 52, 152, 153, 139, 73, 90, 183, - 140, 137, 43, 195, 114, 73, 233, 150, 113, 195, 44, 216, 155, 116, - 137, 155, 103, 197, 193, 115, 143, 11, 196, 203, 234, 28, 35, 66, - 69, 92, 66, 190, 185, 252, 221, 110, 51, 32, 26, 194, 150, 204, - 13, 115, 36, 73, 179, 150, 228, 71, 201, 175, 107, 66, 145, 125, - 91, 63, 99, 255, 163, 174, 135, 15, 156, 54, 29, 27, 245, 133, - 246, 213, 179, 78, 79, 118, 67, 132, 24, 15, 79, 90, 13, 240, - 65, 23, 126, 208, 78, 187, 17, 19, 5, 28, 10, 94, 178, 217, - 6, 88, 165, 244, 78, 74, 212, 228, 25, 214, 149, 3, 138, 154, - 252, 246, 193, 147, 138, 154, 252, 182, 125, 154, 124, 87, 19, 72, - 90, 211, 250, 57, 251, 23, 53, 48, 3, 9, 219, 110, 158, 81, - 15, 177, 27, 210, 160, 205, 22, 151, 224, 38, 82, 227, 206, 246, - 251, 195, 118, 140, 193, 48, 129, 241, 0, 153, 23, 156, 157, 9, - 203, 81, 40, 206, 205, 113, 251, 146, 186, 211, 136, 220, 188, 64, - 159, 98, 165, 123, 17, 248, 126, 3, 53, 192, 35, 122, 38, 16, - 230, 233, 225, 223, 19, 164, 47, 105, 85, 2, 225, 213, 203, 250, - 145, 81, 32, 188, 166, 251, 78, 41, 16, 94, 211, 103, 206, 146, - 79, 80, 40, 248, 160, 103, 94, 179, 63, 126, 198, 77, 169, 48, - 50, 47, 126, 93, 186, 201, 71, 145, 34, 58, 123, 144, 165, 228, - 91, 154, 144, 132, 189, 173, 159, 177, 255, 146, 92, 94, 202, 39, - 127, 182, 23, 156, 150, 242, 31, 213, 184, 255, 232, 73, 69, 248, - 246, 182, 125, 154, 44, 10, 225, 219, 67, 253, 188, 61, 243, 188, - 78, 188, 232, 45, 167, 193, 45, 247, 144, 223, 114, 40, 163, 123, - 200, 111, 57, 148, 209, 61, 60, 123, 14, 28, 194, 116, 203, 124, - 167, 231, 3, 205, 30, 222, 103, 234, 56, 95, 150, 76, 153, 148, - 131, 188, 147, 29, 34, 7, 136, 105, 234, 217, 30, 203, 172, 232, - 239, 27, 40, 175, 0, 73, 101, 37, 123, 132, 188, 41, 100, 36, - 203, 230, 73, 123, 82, 65, 208, 232, 176, 223, 218, 20, 39, 54, - 58, 20, 185, 59, 78, 53, 110, 40, 78, 184, 25, 86, 194, 128, - 34, 26, 89, 62, 96, 41, 162, 145, 229, 227, 39, 192, 23, 6, - 54, 228, 123, 230, 41, 251, 78, 82, 213, 149, 168, 19, 110, 0, - 43, 23, 230, 168, 104, 160, 40, 0, 169, 17, 94, 129, 251, 217, - 102, 88, 97, 3, 138, 15, 238, 123, 7, 142, 41, 62, 184, 239, - 157, 28, 34, 55, 208, 243, 241, 163, 158, 167, 154, 61, 178, 207, - 240, 9, 182, 179, 99, 252, 216, 86, 250, 40, 123, 10, 228, 72, - 134, 209, 99, 153, 31, 235, 85, 3, 60, 143, 64, 52, 93, 87, - 220, 219, 175, 64, 8, 219, 141, 128, 205, 53, 227, 113, 65, 156, - 36, 228, 72, 6, 24, 10, 126, 76, 142, 147, 69, 146, 97, 41, - 54, 222, 107, 102, 206, 46, 162, 177, 26, 227, 103, 83, 250, 141, - 245, 93, 213, 115, 190, 27, 123, 40, 41, 23, 118, 158, 27, 220, - 92, 110, 205, 204, 38, 105, 205, 50, 214, 250, 207, 38, 105, 195, - 50, 214, 232, 43, 228, 29, 222, 2, 205, 50, 214, 77, 219, 158, - 86, 192, 81, 71, 171, 155, 30, 4, 238, 68, 164, 141, 104, 211, - 107, 73, 48, 188, 164, 57, 176, 123, 148, 51, 63, 105, 130, 214, - 203, 202, 76, 154, 192, 230, 99, 189, 255, 120, 146, 54, 44, 99, - 125, 232, 20, 249, 13, 93, 184, 151, 54, 245, 243, 246, 223, 209, - 69, 184, 102, 64, 200, 128, 224, 80, 48, 32, 140, 232, 0, 126, - 31, 33, 80, 67, 55, 14, 61, 119, 11, 117, 247, 161, 203, 86, - 223, 152, 231, 139, 159, 36, 137, 94, 43, 33, 62, 59, 232, 7, - 192, 123, 8, 68, 57, 220, 5, 107, 127, 100, 211, 60, 162, 186, - 83, 250, 121, 183, 241, 159, 130, 251, 226, 105, 161, 107, 161, 207, - 64, 52, 69, 191, 146, 207, 85, 246, 93, 22, 69, 232, 180, 12, - 145, 154, 231, 125, 199, 83, 22, 6, 164, 64, 114, 150, 120, 13, - 163, 83, 108, 52, 18, 15, 219, 12, 27, 205, 131, 138, 135, 109, - 243, 144, 173, 120, 216, 54, 207, 158, 35, 255, 155, 38, 92, 108, - 35, 125, 220, 254, 103, 112, 235, 57, 202, 226, 71, 186, 49, 66, - 194, 49, 153, 225, 4, 112, 101, 47, 101, 192, 79, 56, 178, 231, - 124, 227, 113, 195, 59, 104, 6, 136, 188, 44, 174, 190, 93, 228, - 122, 247, 27, 127, 118, 45, 6, 148, 75, 246, 88, 237, 205, 196, - 120, 78, 220, 252, 56, 154, 170, 104, 41, 241, 9, 206, 176, 110, - 30, 87, 124, 130, 163, 19, 175, 42, 62, 193, 81, 97, 140, 252, - 93, 77, 56, 5, 239, 232, 175, 216, 223, 214, 104, 209, 87, 128, - 125, 149, 3, 157, 139, 124, 80, 218, 254, 253, 184, 154, 232, 61, - 101, 158, 115, 133, 171, 185, 148, 91, 242, 142, 244, 117, 102, 147, - 185, 211, 127, 70, 113, 75, 222, 57, 79, 201, 207, 104, 194, 47, - 249, 171, 58, 181, 127, 124, 223, 126, 249, 180, 124, 239, 185, 221, - 233, 232, 13, 249, 18, 221, 161, 251, 119, 135, 209, 46, 95, 149, - 221, 97, 7, 238, 87, 251, 79, 43, 30, 209, 95, 61, 119, 158, - 184, 224, 17, 157, 249, 186, 214, 243, 77, 77, 179, 223, 123, 6, - 245, 34, 196, 93, 47, 78, 186, 52, 249, 23, 220, 161, 142, 209, - 72, 95, 215, 178, 103, 193, 161, 206, 212, 123, 44, 243, 7, 53, - 253, 188, 125, 67, 220, 248, 34, 187, 50, 138, 114, 95, 120, 53, - 121, 71, 97, 84, 104, 240, 5, 51, 245, 30, 19, 74, 145, 201, - 94, 150, 28, 56, 34, 146, 26, 75, 90, 182, 72, 26, 44, 121, - 246, 156, 212, 35, 252, 235, 128, 188, 246, 130, 210, 255, 100, 47, - 125, 121, 252, 253, 103, 90, 141, 62, 23, 203, 242, 75, 41, 42, - 236, 47, 169, 39, 201, 253, 219, 12, 33, 201, 189, 100, 217, 106, - 48, 128, 233, 204, 247, 138, 198, 247, 138, 189, 60, 40, 192, 235, - 164, 55, 138, 133, 112, 248, 80, 55, 17, 187, 114, 223, 46, 177, - 156, 21, 252, 192, 154, 33, 3, 24, 120, 124, 149, 245, 245, 249, - 113, 0, 100, 197, 4, 63, 99, 47, 172, 113, 98, 198, 206, 70, - 52, 212, 11, 214, 151, 93, 176, 10, 19, 52, 159, 10, 228, 180, - 238, 145, 131, 117, 207, 135, 224, 57, 88, 241, 126, 102, 160, 73, - 197, 198, 247, 138, 70, 229, 128, 248, 10, 234, 189, 73, 178, 53, - 215, 169, 53, 60, 223, 133, 232, 1, 207, 193, 103, 20, 121, 247, - 149, 73, 103, 65, 96, 220, 85, 38, 253, 21, 50, 184, 238, 109, - 124, 218, 118, 195, 221, 85, 119, 167, 21, 132, 113, 52, 212, 15, - 221, 237, 130, 45, 57, 237, 109, 188, 195, 114, 150, 32, 99, 229, - 176, 248, 18, 211, 145, 149, 35, 124, 244, 106, 171, 235, 187, 67, - 4, 38, 20, 186, 215, 207, 31, 79, 239, 90, 175, 146, 35, 194, - 130, 96, 85, 128, 77, 15, 13, 160, 204, 93, 188, 168, 240, 231, - 214, 49, 210, 27, 186, 78, 163, 57, 116, 0, 161, 76, 33, 97, - 149, 201, 97, 14, 65, 181, 202, 65, 229, 134, 14, 238, 7, 135, - 57, 139, 25, 17, 145, 56, 170, 28, 218, 76, 165, 173, 215, 8, - 105, 133, 65, 203, 13, 99, 207, 141, 134, 14, 61, 211, 222, 183, - 162, 100, 181, 238, 144, 1, 108, 227, 106, 212, 114, 171, 67, 135, - 247, 67, 179, 68, 236, 75, 70, 41, 85, 72, 36, 127, 91, 231, - 201, 0, 99, 196, 217, 172, 173, 122, 181, 161, 65, 196, 78, 21, - 143, 202, 181, 92, 153, 244, 194, 122, 182, 142, 147, 35, 75, 203, - 197, 229, 210, 234, 202, 60, 24, 162, 221, 47, 151, 238, 13, 246, - 88, 132, 100, 138, 51, 203, 229, 119, 75, 131, 154, 117, 136, 144, - 251, 229, 249, 226, 92, 249, 195, 242, 252, 131, 65, 221, 58, 72, - 250, 121, 186, 116, 111, 208, 120, 219, 204, 26, 131, 102, 238, 55, - 13, 114, 40, 61, 127, 214, 217, 4, 39, 83, 19, 115, 165, 39, - 96, 153, 103, 73, 31, 59, 51, 35, 151, 195, 104, 242, 215, 252, - 153, 117, 138, 244, 130, 255, 3, 234, 87, 240, 37, 62, 177, 222, - 233, 80, 116, 224, 238, 203, 63, 111, 65, 41, 154, 158, 104, 182, - 39, 165, 24, 177, 222, 35, 135, 98, 119, 39, 94, 149, 116, 6, - 223, 89, 133, 23, 40, 116, 39, 129, 70, 158, 237, 169, 28, 140, - 213, 7, 118, 133, 12, 40, 213, 90, 51, 138, 86, 140, 235, 187, - 94, 80, 37, 149, 124, 103, 87, 200, 193, 84, 173, 86, 113, 111, - 169, 23, 94, 64, 139, 166, 148, 57, 125, 144, 12, 112, 149, 25, - 163, 102, 114, 63, 168, 145, 67, 233, 181, 109, 189, 78, 134, 218, - 145, 171, 108, 252, 85, 121, 204, 115, 173, 212, 137, 118, 228, 38, - 155, 63, 9, 89, 255, 58, 201, 160, 131, 245, 139, 195, 202, 98, - 254, 220, 35, 66, 146, 21, 110, 93, 35, 125, 184, 198, 159, 161, - 193, 196, 236, 81, 69, 228, 180, 134, 72, 159, 231, 111, 186, 33, - 175, 61, 91, 17, 201, 220, 207, 107, 164, 143, 103, 183, 238, 147, - 67, 220, 47, 125, 149, 55, 21, 107, 56, 191, 47, 128, 44, 182, - 184, 114, 112, 35, 5, 122, 252, 22, 25, 64, 67, 114, 118, 215, - 11, 239, 233, 115, 93, 10, 81, 192, 137, 43, 234, 39, 214, 41, - 146, 245, 162, 213, 154, 23, 198, 168, 33, 103, 13, 142, 238, 177, - 228, 151, 209, 196, 253, 210, 42, 106, 226, 254, 161, 254, 82, 19, - 247, 82, 19, 247, 125, 8, 222, 114, 25, 126, 234, 150, 113, 140, - 63, 53, 44, 227, 120, 207, 29, 248, 105, 90, 198, 137, 158, 183, - 184, 214, 110, 40, 209, 218, 177, 159, 223, 68, 175, 233, 94, 218, - 243, 203, 26, 184, 77, 23, 25, 123, 197, 22, 73, 219, 145, 46, - 200, 104, 21, 152, 168, 35, 154, 205, 54, 250, 200, 177, 156, 84, - 208, 56, 108, 36, 202, 113, 202, 178, 81, 145, 235, 131, 47, 67, - 19, 32, 31, 90, 109, 236, 231, 109, 33, 12, 136, 166, 104, 180, - 237, 132, 16, 81, 37, 118, 162, 39, 121, 130, 56, 145, 136, 16, - 130, 191, 243, 116, 230, 29, 234, 196, 177, 219, 108, 197, 5, 2, - 17, 54, 131, 136, 53, 98, 10, 116, 35, 194, 47, 19, 29, 4, - 20, 42, 9, 145, 15, 121, 216, 45, 65, 228, 130, 46, 68, 132, - 105, 129, 136, 127, 66, 3, 72, 179, 22, 153, 100, 191, 251, 45, - 227, 21, 253, 96, 238, 50, 112, 46, 232, 170, 18, 182, 91, 224, - 63, 87, 13, 215, 219, 27, 224, 93, 50, 49, 254, 218, 235, 55, - 111, 221, 4, 118, 197, 52, 123, 250, 123, 44, 227, 149, 1, 46, - 236, 238, 103, 197, 41, 41, 29, 83, 255, 153, 140, 212, 54, 162, - 231, 77, 251, 103, 180, 103, 71, 129, 73, 122, 194, 49, 53, 60, - 159, 226, 21, 117, 111, 186, 240, 192, 141, 203, 10, 74, 97, 101, - 113, 38, 9, 22, 67, 159, 17, 167, 69, 137, 130, 209, 37, 244, - 9, 27, 156, 133, 118, 220, 106, 199, 32, 63, 249, 66, 81, 75, - 120, 36, 183, 172, 101, 142, 88, 121, 131, 71, 15, 232, 193, 232, - 1, 87, 205, 81, 229, 129, 102, 25, 175, 154, 175, 130, 48, 20, - 148, 134, 5, 253, 142, 161, 40, 254, 10, 125, 7, 200, 66, 162, - 248, 27, 55, 109, 251, 45, 1, 209, 233, 128, 251, 61, 152, 192, - 161, 195, 172, 180, 87, 197, 8, 18, 120, 74, 1, 195, 192, 30, - 6, 232, 150, 211, 161, 208, 27, 55, 143, 167, 20, 122, 227, 67, - 167, 200, 189, 68, 159, 119, 205, 60, 204, 129, 91, 146, 113, 4, - 156, 18, 78, 242, 34, 44, 23, 4, 179, 140, 0, 124, 117, 175, - 142, 71, 131, 98, 72, 74, 249, 116, 237, 224, 33, 242, 91, 90, - 162, 125, 122, 221, 60, 106, 255, 138, 214, 89, 143, 23, 41, 177, - 219, 1, 112, 151, 157, 188, 161, 227, 227, 53, 205, 97, 244, 2, - 42, 201, 65, 236, 172, 136, 65, 129, 136, 184, 140, 243, 247, 169, - 211, 142, 131, 166, 19, 115, 149, 77, 20, 176, 163, 176, 30, 187, - 33, 236, 77, 244, 115, 145, 2, 60, 26, 128, 247, 141, 76, 74, - 25, 158, 42, 233, 92, 119, 171, 1, 68, 175, 117, 170, 49, 134, - 177, 83, 117, 90, 175, 155, 135, 82, 58, 173, 215, 143, 88, 100, - 139, 119, 215, 176, 140, 55, 76, 203, 222, 232, 214, 91, 121, 162, - 176, 97, 245, 17, 144, 143, 53, 114, 239, 0, 83, 31, 91, 201, - 247, 115, 170, 245, 74, 227, 149, 118, 177, 3, 242, 13, 243, 96, - 146, 214, 45, 227, 141, 193, 35, 40, 128, 131, 201, 46, 97, 148, - 65, 142, 84, 197, 87, 14, 191, 236, 188, 116, 240, 169, 24, 23, - 0, 88, 134, 122, 77, 126, 181, 114, 229, 108, 228, 130, 42, 45, - 33, 218, 249, 142, 173, 119, 110, 101, 12, 23, 69, 35, 15, 189, - 197, 185, 33, 166, 2, 90, 44, 241, 36, 188, 56, 114, 27, 117, - 161, 109, 66, 167, 51, 88, 202, 9, 46, 178, 132, 73, 116, 124, - 26, 36, 219, 54, 173, 76, 7, 1, 92, 73, 186, 171, 178, 165, - 89, 202, 30, 84, 20, 248, 165, 193, 35, 228, 46, 215, 61, 154, - 101, 125, 206, 180, 199, 49, 162, 77, 188, 239, 22, 40, 116, 63, - 38, 244, 140, 101, 148, 101, 8, 27, 54, 188, 229, 51, 87, 20, - 141, 95, 249, 234, 171, 252, 152, 208, 179, 150, 89, 206, 207, 137, - 99, 66, 199, 99, 226, 109, 121, 76, 232, 120, 76, 124, 197, 124, - 149, 44, 8, 13, 225, 162, 126, 222, 158, 86, 228, 223, 92, 78, - 217, 21, 16, 23, 49, 200, 159, 36, 216, 82, 194, 194, 53, 209, - 213, 153, 172, 68, 53, 248, 206, 226, 192, 113, 69, 115, 183, 120, - 194, 86, 52, 119, 139, 103, 207, 145, 255, 75, 4, 223, 49, 223, - 215, 63, 184, 110, 127, 75, 219, 119, 148, 228, 181, 40, 228, 142, - 114, 255, 226, 57, 191, 119, 243, 238, 129, 138, 136, 220, 56, 207, - 201, 140, 40, 81, 219, 167, 183, 142, 114, 251, 118, 204, 199, 228, - 67, 122, 231, 14, 189, 143, 239, 49, 255, 157, 47, 255, 71, 198, - 252, 201, 88, 198, 251, 114, 122, 77, 205, 50, 222, 63, 51, 34, - 82, 134, 101, 188, 159, 31, 21, 169, 172, 101, 124, 144, 185, 198, - 39, 211, 196, 217, 253, 32, 59, 65, 190, 46, 67, 2, 61, 214, - 71, 236, 182, 18, 78, 120, 187, 219, 88, 178, 125, 176, 14, 68, - 85, 213, 173, 183, 1, 19, 93, 161, 56, 102, 4, 186, 125, 140, - 94, 252, 64, 204, 174, 180, 106, 78, 172, 240, 68, 180, 237, 199, - 94, 35, 53, 86, 216, 198, 222, 12, 107, 132, 232, 77, 175, 102, - 25, 143, 207, 92, 20, 41, 195, 50, 30, 95, 25, 38, 191, 155, - 21, 49, 128, 182, 244, 87, 237, 255, 42, 75, 231, 165, 147, 160, - 114, 46, 42, 135, 165, 184, 187, 3, 223, 45, 208, 133, 45, 55, - 236, 160, 131, 216, 75, 210, 49, 141, 14, 93, 153, 47, 47, 204, - 43, 116, 22, 237, 118, 14, 239, 37, 11, 136, 128, 241, 134, 111, - 164, 76, 190, 219, 217, 157, 79, 156, 66, 216, 250, 72, 155, 115, - 56, 116, 186, 147, 228, 82, 155, 200, 152, 129, 4, 129, 47, 233, - 182, 116, 149, 4, 101, 85, 138, 138, 139, 120, 203, 132, 241, 124, - 144, 26, 9, 113, 190, 34, 113, 71, 168, 235, 87, 157, 86, 212, - 110, 56, 50, 202, 52, 208, 92, 190, 211, 72, 252, 9, 82, 223, - 8, 179, 244, 141, 208, 105, 109, 34, 197, 31, 130, 185, 3, 134, - 24, 12, 101, 224, 3, 39, 166, 205, 32, 66, 231, 21, 80, 6, - 10, 45, 154, 0, 232, 103, 103, 69, 199, 116, 242, 48, 133, 209, - 166, 147, 68, 213, 194, 138, 64, 105, 194, 206, 99, 12, 221, 91, - 160, 239, 177, 125, 137, 9, 56, 134, 81, 231, 180, 233, 114, 173, - 36, 161, 161, 235, 84, 55, 225, 114, 83, 43, 160, 203, 155, 237, - 136, 86, 119, 171, 13, 151, 35, 190, 55, 26, 193, 182, 32, 44, - 66, 151, 250, 65, 208, 98, 125, 4, 161, 135, 34, 203, 160, 161, - 27, 183, 67, 191, 195, 174, 74, 78, 188, 56, 102, 182, 92, 90, - 109, 4, 17, 142, 26, 73, 247, 141, 211, 9, 120, 206, 40, 151, - 23, 178, 29, 21, 183, 10, 158, 80, 5, 12, 85, 165, 136, 21, - 43, 34, 118, 153, 68, 99, 228, 8, 212, 72, 145, 36, 171, 130, - 159, 84, 136, 38, 152, 30, 90, 121, 127, 66, 164, 196, 237, 212, - 103, 130, 182, 226, 196, 15, 0, 241, 174, 131, 181, 203, 240, 150, - 231, 144, 164, 101, 74, 36, 173, 189, 205, 27, 225, 195, 25, 5, - 98, 76, 11, 68, 13, 35, 144, 62, 99, 1, 211, 144, 198, 130, - 170, 139, 58, 238, 52, 186, 28, 224, 181, 219, 157, 28, 66, 149, - 151, 108, 151, 56, 119, 246, 8, 100, 193, 183, 14, 72, 46, 184, - 223, 171, 78, 164, 248, 145, 101, 76, 118, 180, 168, 49, 186, 182, - 6, 142, 136, 148, 102, 25, 91, 214, 101, 145, 50, 44, 99, 107, - 228, 42, 137, 68, 16, 174, 207, 244, 49, 187, 78, 59, 69, 189, - 138, 227, 21, 4, 57, 16, 162, 51, 10, 52, 150, 4, 98, 17, - 107, 135, 235, 73, 82, 71, 18, 135, 74, 193, 2, 41, 112, 76, - 216, 132, 62, 147, 213, 42, 83, 25, 203, 248, 108, 64, 152, 183, - 244, 105, 150, 241, 153, 125, 85, 164, 12, 203, 248, 108, 180, 32, - 174, 204, 172, 101, 126, 93, 211, 31, 216, 255, 187, 134, 2, 15, - 137, 61, 142, 160, 46, 185, 118, 228, 134, 83, 111, 184, 77, 199, - 107, 220, 133, 168, 243, 129, 92, 15, 157, 116, 88, 2, 116, 207, - 206, 45, 40, 45, 114, 195, 45, 175, 234, 50, 138, 17, 226, 50, - 67, 161, 132, 151, 90, 13, 71, 21, 126, 242, 45, 167, 213, 138, - 90, 65, 92, 216, 224, 31, 241, 111, 0, 120, 113, 4, 205, 187, - 216, 166, 16, 88, 94, 14, 155, 227, 144, 164, 218, 249, 73, 176, - 233, 215, 2, 247, 45, 126, 124, 226, 167, 123, 25, 39, 164, 115, - 178, 189, 208, 245, 172, 72, 130, 86, 171, 255, 168, 72, 26, 44, - 121, 98, 72, 36, 97, 156, 78, 221, 39, 131, 112, 109, 102, 225, - 218, 52, 191, 174, 157, 190, 71, 126, 90, 135, 129, 236, 183, 204, - 191, 160, 233, 212, 254, 143, 116, 122, 191, 221, 104, 72, 127, 118, - 174, 138, 69, 192, 0, 152, 96, 25, 163, 181, 99, 166, 211, 131, - 249, 44, 94, 240, 2, 187, 112, 71, 69, 169, 163, 224, 30, 47, - 135, 63, 97, 223, 9, 29, 165, 75, 234, 217, 63, 69, 115, 99, - 50, 54, 195, 40, 92, 11, 5, 49, 236, 140, 113, 134, 251, 97, - 172, 230, 58, 181, 117, 215, 173, 67, 240, 135, 61, 215, 15, 150, - 145, 154, 186, 84, 25, 240, 60, 26, 3, 156, 232, 155, 175, 189, - 126, 107, 60, 39, 71, 188, 191, 23, 198, 72, 140, 120, 191, 198, - 146, 253, 182, 72, 26, 44, 121, 246, 60, 249, 69, 92, 153, 196, - 50, 127, 68, 211, 143, 217, 255, 177, 70, 43, 174, 211, 104, 118, - 37, 181, 56, 210, 62, 28, 145, 124, 208, 100, 76, 138, 253, 96, - 60, 199, 60, 191, 30, 58, 40, 44, 100, 255, 140, 182, 118, 199, - 94, 29, 75, 129, 98, 70, 177, 27, 142, 1, 171, 182, 225, 249, - 238, 152, 211, 142, 55, 87, 249, 178, 228, 98, 69, 80, 142, 68, - 171, 213, 192, 175, 123, 27, 40, 190, 16, 221, 36, 189, 208, 114, - 209, 77, 162, 177, 100, 255, 33, 145, 52, 88, 242, 200, 81, 78, - 215, 15, 88, 230, 95, 214, 244, 203, 246, 184, 130, 102, 92, 160, - 239, 98, 52, 11, 17, 131, 0, 145, 87, 225, 0, 245, 54, 252, - 32, 4, 82, 9, 139, 27, 200, 64, 1, 131, 34, 169, 177, 228, - 17, 42, 146, 6, 75, 94, 184, 68, 126, 10, 199, 244, 128, 101, - 254, 132, 166, 143, 216, 63, 162, 209, 98, 184, 238, 197, 161, 19, - 238, 170, 190, 184, 34, 134, 58, 122, 173, 40, 46, 131, 121, 90, - 11, 154, 142, 231, 143, 42, 0, 9, 66, 61, 67, 186, 51, 101, - 112, 83, 3, 32, 4, 163, 237, 208, 146, 87, 216, 75, 189, 113, - 135, 94, 31, 191, 117, 83, 2, 12, 97, 107, 15, 0, 36, 172, - 46, 246, 220, 1, 128, 132, 61, 117, 65, 36, 1, 18, 246, 242, - 48, 249, 159, 123, 161, 47, 7, 45, 243, 59, 154, 126, 206, 254, - 111, 122, 161, 42, 192, 226, 224, 98, 110, 110, 34, 179, 13, 120, - 75, 110, 196, 173, 133, 246, 238, 49, 17, 27, 82, 8, 121, 60, - 191, 230, 238, 116, 220, 224, 60, 248, 174, 136, 195, 130, 193, 35, - 33, 72, 177, 64, 252, 114, 124, 167, 177, 27, 185, 17, 63, 138, - 170, 237, 70, 43, 132, 96, 21, 236, 177, 23, 209, 49, 30, 251, - 165, 21, 120, 126, 44, 115, 143, 200, 49, 226, 109, 238, 156, 236, - 22, 50, 24, 72, 184, 4, 176, 153, 59, 204, 75, 20, 98, 84, - 136, 4, 107, 93, 14, 147, 60, 74, 50, 71, 193, 250, 245, 217, - 98, 4, 28, 55, 224, 152, 55, 93, 47, 164, 138, 214, 173, 192, - 21, 5, 8, 191, 20, 130, 163, 35, 157, 225, 86, 171, 10, 28, - 159, 19, 50, 118, 0, 177, 56, 128, 206, 97, 141, 110, 183, 26, - 129, 195, 42, 227, 231, 32, 43, 16, 162, 69, 73, 0, 127, 34, - 233, 191, 174, 13, 67, 64, 68, 40, 37, 33, 66, 58, 45, 78, - 223, 117, 195, 154, 87, 229, 145, 147, 156, 40, 10, 170, 158, 19, - 43, 40, 36, 114, 168, 131, 58, 189, 234, 248, 187, 87, 249, 194, - 245, 66, 12, 1, 227, 197, 109, 104, 137, 58, 196, 16, 136, 192, - 83, 0, 208, 60, 95, 54, 186, 186, 251, 204, 70, 231, 73, 215, - 152, 38, 91, 216, 74, 46, 178, 65, 170, 117, 219, 109, 52, 132, - 173, 183, 220, 14, 7, 51, 176, 194, 15, 136, 164, 198, 146, 7, - 197, 238, 56, 104, 176, 228, 233, 179, 228, 7, 251, 96, 59, 28, - 178, 204, 95, 210, 116, 219, 254, 147, 12, 45, 194, 213, 56, 154, - 44, 40, 161, 234, 84, 163, 20, 199, 72, 32, 183, 184, 41, 19, - 55, 214, 235, 28, 210, 133, 122, 236, 250, 42, 252, 37, 135, 227, - 83, 239, 179, 13, 87, 154, 0, 167, 215, 103, 130, 21, 8, 238, - 184, 60, 200, 16, 143, 32, 20, 132, 50, 152, 81, 161, 19, 107, - 211, 237, 218, 98, 132, 122, 97, 139, 111, 119, 74, 70, 40, 66, - 96, 131, 4, 86, 33, 218, 245, 99, 103, 135, 7, 131, 232, 86, - 10, 163, 168, 62, 230, 129, 114, 62, 26, 93, 45, 60, 254, 124, - 34, 63, 49, 62, 254, 116, 138, 61, 43, 142, 126, 200, 31, 127, - 52, 252, 209, 8, 133, 119, 147, 175, 63, 93, 187, 40, 128, 9, - 177, 244, 109, 39, 162, 145, 219, 0, 190, 6, 160, 72, 129, 162, - 165, 111, 164, 197, 227, 240, 63, 214, 217, 187, 83, 111, 236, 17, - 156, 243, 113, 184, 139, 72, 138, 16, 174, 136, 36, 237, 45, 223, - 227, 151, 217, 70, 0, 33, 148, 186, 42, 186, 148, 50, 249, 165, - 196, 75, 94, 85, 45, 71, 240, 172, 170, 110, 58, 161, 83, 141, - 221, 144, 135, 241, 193, 131, 109, 159, 246, 34, 210, 146, 210, 74, - 48, 187, 227, 109, 195, 221, 37, 79, 76, 17, 32, 193, 119, 183, - 49, 108, 217, 109, 182, 152, 218, 235, 49, 171, 14, 35, 31, 224, - 14, 81, 121, 175, 212, 42, 219, 51, 87, 152, 55, 169, 47, 17, - 65, 118, 124, 7, 56, 62, 130, 93, 84, 136, 130, 154, 139, 80, - 127, 112, 17, 184, 60, 126, 61, 154, 31, 129, 208, 82, 156, 188, - 85, 4, 90, 76, 204, 148, 214, 164, 82, 82, 180, 38, 42, 180, - 218, 241, 26, 103, 71, 160, 29, 236, 248, 227, 172, 71, 194, 178, - 200, 61, 123, 168, 23, 182, 161, 184, 251, 15, 105, 44, 217, 127, - 76, 36, 13, 150, 60, 121, 138, 124, 21, 44, 205, 51, 191, 162, - 245, 252, 190, 166, 217, 62, 77, 107, 209, 21, 70, 161, 27, 71, - 208, 133, 33, 0, 81, 11, 238, 0, 88, 143, 146, 181, 64, 169, - 114, 93, 145, 54, 113, 35, 46, 77, 179, 204, 95, 209, 178, 39, - 184, 103, 127, 143, 101, 254, 170, 166, 191, 101, 159, 7, 49, 138, - 56, 170, 100, 49, 220, 74, 129, 119, 19, 204, 193, 89, 254, 172, - 72, 106, 44, 201, 177, 200, 193, 32, 220, 252, 85, 237, 232, 49, - 145, 204, 178, 228, 241, 55, 129, 118, 214, 184, 222, 193, 252, 85, - 237, 228, 29, 94, 185, 102, 153, 255, 244, 25, 149, 223, 67, 27, - 8, 89, 185, 214, 11, 249, 69, 229, 26, 124, 46, 43, 215, 12, - 150, 148, 149, 107, 89, 150, 148, 149, 107, 88, 249, 63, 101, 149, - 191, 202, 113, 29, 204, 239, 106, 250, 93, 251, 108, 247, 202, 151, - 217, 164, 203, 170, 245, 94, 200, 45, 170, 102, 45, 255, 174, 32, - 237, 0, 219, 193, 252, 174, 118, 196, 18, 201, 44, 75, 30, 189, - 195, 171, 70, 65, 170, 249, 93, 237, 248, 109, 242, 144, 85, 109, - 244, 88, 153, 95, 215, 244, 223, 212, 12, 251, 14, 85, 69, 9, - 29, 211, 159, 118, 170, 218, 51, 225, 162, 113, 6, 155, 133, 95, - 215, 200, 113, 226, 144, 12, 75, 178, 73, 253, 13, 205, 188, 108, - 191, 3, 81, 81, 18, 11, 211, 56, 160, 159, 34, 227, 169, 150, - 12, 117, 237, 45, 30, 22, 124, 154, 85, 45, 16, 114, 152, 244, - 97, 21, 25, 168, 227, 100, 242, 64, 99, 15, 134, 94, 73, 30, - 24, 236, 193, 197, 75, 228, 29, 232, 179, 102, 101, 126, 91, 211, - 255, 123, 205, 176, 139, 52, 101, 182, 177, 183, 215, 59, 113, 98, - 232, 250, 172, 126, 179, 5, 240, 219, 26, 57, 73, 254, 150, 6, - 29, 135, 213, 252, 223, 105, 230, 69, 251, 71, 181, 253, 122, 158, - 20, 252, 133, 186, 77, 151, 218, 235, 163, 40, 164, 72, 12, 237, - 186, 184, 65, 167, 76, 144, 49, 178, 59, 26, 116, 226, 168, 0, - 152, 9, 107, 226, 241, 228, 129, 198, 30, 156, 56, 159, 60, 48, - 216, 131, 220, 5, 114, 136, 3, 171, 100, 126, 71, 211, 127, 79, - 51, 176, 211, 16, 126, 225, 119, 180, 236, 81, 80, 213, 105, 108, - 229, 253, 174, 102, 190, 194, 87, 158, 145, 129, 228, 97, 145, 212, - 88, 114, 240, 140, 72, 66, 230, 243, 148, 127, 106, 90, 230, 63, - 215, 204, 75, 252, 165, 153, 129, 228, 17, 145, 212, 88, 210, 162, - 34, 105, 176, 228, 133, 139, 228, 31, 32, 140, 69, 230, 123, 90, - 207, 191, 214, 52, 251, 103, 53, 154, 182, 143, 81, 102, 115, 51, - 216, 238, 224, 14, 212, 217, 4, 146, 155, 241, 23, 81, 32, 25, - 60, 15, 136, 107, 92, 149, 92, 14, 198, 102, 141, 81, 50, 193, - 22, 28, 230, 169, 160, 38, 0, 253, 44, 131, 95, 129, 93, 112, - 18, 23, 166, 166, 198, 133, 25, 64, 127, 15, 243, 123, 236, 224, - 251, 128, 59, 117, 152, 127, 160, 233, 23, 237, 175, 208, 37, 151, - 71, 219, 72, 24, 1, 100, 221, 209, 67, 114, 151, 135, 70, 240, - 69, 28, 44, 79, 245, 107, 80, 204, 31, 249, 186, 132, 152, 107, - 172, 236, 140, 72, 106, 44, 217, 119, 94, 36, 13, 150, 204, 93, - 64, 67, 100, 56, 74, 254, 149, 166, 159, 177, 255, 138, 214, 165, - 37, 235, 123, 162, 199, 128, 86, 255, 74, 68, 219, 45, 84, 74, - 187, 216, 4, 28, 138, 14, 38, 153, 187, 225, 162, 82, 76, 13, - 153, 197, 70, 147, 224, 24, 98, 136, 210, 238, 180, 181, 236, 145, - 150, 129, 70, 14, 138, 36, 180, 249, 200, 73, 145, 52, 88, 210, - 62, 77, 190, 165, 129, 59, 73, 230, 15, 181, 158, 111, 233, 154, - 253, 195, 154, 226, 188, 16, 171, 209, 80, 106, 156, 130, 100, 244, - 20, 231, 211, 60, 63, 29, 229, 79, 154, 120, 36, 78, 12, 195, - 91, 158, 147, 34, 231, 97, 67, 142, 164, 53, 141, 152, 139, 243, - 44, 171, 60, 231, 8, 95, 3, 108, 67, 252, 161, 150, 181, 200, - 14, 119, 178, 48, 255, 15, 205, 56, 105, 127, 210, 189, 157, 73, - 128, 160, 116, 91, 11, 132, 150, 4, 126, 161, 135, 182, 39, 233, - 234, 4, 56, 33, 40, 140, 214, 219, 232, 135, 184, 30, 196, 155, - 124, 64, 193, 35, 129, 85, 45, 147, 26, 75, 14, 88, 34, 105, - 176, 228, 241, 19, 228, 199, 14, 114, 167, 4, 243, 175, 235, 198, - 49, 251, 235, 7, 83, 13, 229, 82, 145, 206, 214, 238, 93, 7, - 64, 58, 64, 11, 25, 153, 32, 101, 211, 232, 216, 146, 202, 24, - 115, 78, 71, 240, 52, 236, 232, 187, 0, 103, 105, 213, 137, 220, - 20, 227, 204, 152, 61, 207, 167, 145, 23, 183, 37, 19, 233, 134, - 137, 201, 55, 110, 149, 122, 232, 36, 250, 130, 154, 91, 107, 131, - 101, 81, 236, 70, 132, 135, 184, 21, 45, 134, 200, 183, 172, 9, - 64, 88, 86, 157, 6, 194, 92, 122, 146, 189, 70, 239, 97, 161, - 210, 184, 18, 129, 96, 139, 40, 101, 2, 0, 142, 235, 176, 154, - 128, 199, 158, 115, 99, 90, 20, 124, 139, 210, 73, 36, 59, 83, - 186, 17, 65, 110, 85, 93, 111, 75, 176, 222, 14, 39, 87, 57, - 218, 166, 195, 198, 165, 213, 142, 57, 248, 40, 124, 149, 174, 219, - 245, 217, 101, 193, 86, 7, 171, 121, 122, 223, 154, 247, 176, 4, - 156, 251, 102, 191, 99, 206, 49, 113, 132, 79, 54, 83, 98, 77, - 13, 179, 143, 99, 193, 73, 238, 210, 134, 235, 68, 49, 125, 2, - 244, 119, 178, 39, 70, 80, 1, 21, 135, 222, 198, 6, 160, 167, - 41, 213, 23, 1, 163, 95, 38, 167, 197, 68, 71, 29, 153, 192, - 213, 38, 114, 99, 152, 194, 226, 149, 72, 149, 6, 224, 209, 4, - 107, 9, 37, 34, 200, 108, 238, 10, 45, 17, 111, 6, 129, 169, - 84, 234, 218, 227, 189, 9, 84, 109, 81, 242, 150, 29, 92, 59, - 73, 237, 243, 132, 161, 221, 83, 42, 168, 40, 197, 37, 129, 59, - 63, 121, 45, 85, 43, 14, 122, 11, 213, 219, 97, 167, 61, 18, - 157, 158, 204, 211, 233, 107, 180, 80, 40, 208, 233, 121, 78, 239, - 11, 65, 55, 206, 139, 211, 136, 2, 118, 47, 141, 166, 112, 197, - 83, 189, 96, 123, 92, 246, 0, 221, 113, 96, 149, 180, 130, 40, - 242, 214, 27, 187, 73, 88, 104, 162, 136, 170, 58, 90, 62, 61, - 41, 90, 49, 44, 108, 8, 48, 154, 45, 143, 136, 40, 3, 34, - 138, 33, 22, 160, 175, 14, 95, 47, 163, 201, 222, 73, 54, 96, - 171, 141, 32, 228, 23, 232, 67, 1, 208, 46, 173, 53, 104, 203, - 137, 55, 35, 48, 19, 3, 72, 114, 104, 44, 178, 232, 169, 179, - 152, 22, 249, 192, 40, 39, 3, 191, 36, 185, 46, 45, 165, 172, - 64, 205, 220, 222, 82, 102, 216, 103, 105, 28, 249, 109, 128, 165, - 74, 139, 1, 182, 17, 106, 159, 49, 102, 83, 24, 228, 121, 244, - 46, 157, 158, 96, 255, 206, 36, 233, 73, 158, 102, 131, 178, 29, - 96, 79, 80, 181, 37, 76, 203, 208, 193, 24, 220, 17, 229, 249, - 7, 119, 38, 248, 50, 43, 241, 142, 228, 201, 233, 68, 145, 183, - 193, 237, 1, 64, 141, 154, 154, 105, 177, 84, 133, 0, 0, 38, - 237, 106, 224, 187, 66, 156, 212, 165, 17, 4, 149, 196, 51, 116, - 24, 140, 14, 96, 67, 79, 79, 176, 43, 99, 122, 18, 166, 101, - 54, 216, 118, 183, 220, 48, 207, 215, 26, 43, 1, 77, 13, 120, - 29, 30, 202, 137, 54, 218, 78, 232, 248, 177, 203, 9, 38, 175, - 46, 252, 198, 185, 163, 187, 208, 5, 203, 107, 92, 213, 21, 139, - 121, 7, 67, 101, 30, 222, 75, 132, 14, 105, 58, 79, 220, 174, - 183, 8, 235, 156, 211, 104, 240, 62, 137, 114, 229, 5, 198, 120, - 177, 191, 174, 27, 125, 34, 9, 87, 84, 246, 176, 72, 26, 44, - 105, 29, 133, 176, 116, 166, 149, 249, 182, 222, 243, 15, 117, 205, - 206, 191, 56, 61, 160, 184, 28, 125, 155, 149, 251, 55, 117, 225, - 115, 244, 29, 221, 188, 100, 255, 40, 198, 144, 96, 220, 58, 229, - 17, 205, 144, 20, 84, 100, 193, 213, 77, 183, 250, 132, 157, 25, - 237, 56, 21, 129, 149, 173, 10, 223, 173, 186, 81, 228, 132, 187, - 176, 220, 170, 64, 148, 58, 181, 90, 10, 226, 82, 141, 158, 38, - 202, 68, 97, 160, 79, 120, 156, 181, 60, 191, 149, 28, 182, 152, - 49, 86, 65, 236, 98, 200, 182, 18, 40, 188, 248, 99, 12, 251, - 246, 57, 152, 231, 166, 131, 84, 166, 205, 173, 233, 29, 58, 113, - 27, 114, 45, 201, 72, 109, 21, 119, 203, 131, 254, 69, 91, 254, - 106, 40, 18, 119, 232, 117, 204, 88, 40, 20, 8, 125, 42, 253, - 167, 50, 48, 64, 170, 255, 212, 119, 116, 78, 197, 163, 255, 212, - 119, 244, 11, 23, 201, 31, 107, 60, 146, 164, 249, 159, 232, 230, - 85, 251, 95, 160, 201, 91, 98, 127, 61, 28, 141, 168, 162, 116, - 238, 139, 79, 219, 45, 30, 188, 172, 115, 220, 229, 145, 148, 26, - 243, 18, 55, 144, 228, 125, 251, 180, 237, 182, 93, 26, 135, 187, - 159, 4, 235, 17, 183, 222, 2, 75, 128, 137, 241, 142, 170, 5, - 249, 148, 18, 140, 23, 100, 56, 10, 2, 146, 40, 118, 144, 228, - 133, 159, 106, 178, 250, 33, 236, 2, 43, 18, 46, 39, 151, 157, - 108, 104, 70, 46, 93, 206, 52, 19, 186, 125, 64, 36, 51, 44, - 121, 240, 148, 72, 194, 160, 216, 151, 68, 210, 96, 201, 225, 17, - 242, 235, 58, 143, 162, 105, 254, 130, 110, 158, 176, 127, 89, 167, - 239, 113, 17, 19, 74, 136, 113, 160, 252, 93, 25, 239, 189, 233, - 212, 92, 65, 162, 243, 241, 201, 195, 94, 78, 144, 86, 121, 32, - 204, 78, 203, 15, 101, 96, 29, 90, 115, 91, 174, 95, 3, 153, - 51, 219, 29, 237, 214, 70, 8, 2, 245, 117, 183, 30, 132, 9, - 165, 197, 21, 172, 72, 69, 59, 237, 56, 8, 3, 144, 113, 133, - 110, 213, 107, 33, 61, 52, 179, 233, 134, 225, 238, 104, 203, 171, - 62, 193, 53, 155, 12, 58, 4, 165, 11, 90, 210, 160, 131, 77, - 47, 76, 101, 208, 142, 197, 17, 4, 12, 4, 32, 178, 194, 169, - 209, 113, 225, 83, 24, 99, 160, 146, 4, 32, 45, 151, 203, 186, - 45, 39, 196, 136, 27, 34, 238, 231, 65, 17, 130, 148, 13, 101, - 86, 36, 53, 150, 236, 23, 43, 151, 49, 182, 191, 160, 31, 59, - 46, 93, 253, 254, 29, 33, 183, 94, 208, 21, 206, 15, 98, 9, - 6, 191, 111, 132, 184, 247, 200, 249, 132, 22, 186, 47, 44, 145, - 230, 149, 79, 173, 115, 132, 36, 199, 40, 135, 167, 83, 158, 36, - 126, 83, 186, 226, 55, 245, 101, 220, 19, 190, 213, 143, 193, 217, - 46, 62, 51, 56, 219, 228, 75, 239, 132, 151, 222, 9, 255, 126, - 130, 179, 253, 4, 15, 206, 118, 166, 231, 162, 102, 255, 5, 157, - 22, 165, 15, 48, 236, 29, 78, 205, 59, 29, 129, 247, 1, 62, - 104, 221, 117, 125, 197, 152, 146, 8, 47, 238, 206, 204, 87, 58, - 44, 162, 208, 134, 106, 187, 195, 182, 24, 166, 39, 114, 234, 46, - 39, 48, 21, 25, 31, 172, 118, 209, 44, 32, 137, 184, 209, 26, - 116, 117, 109, 107, 162, 160, 248, 96, 201, 6, 173, 209, 153, 70, - 208, 174, 209, 197, 246, 250, 216, 82, 123, 157, 176, 99, 205, 171, - 178, 117, 241, 246, 210, 194, 252, 168, 162, 151, 174, 7, 97, 51, - 229, 120, 112, 77, 241, 59, 56, 147, 189, 66, 170, 2, 120, 236, - 188, 105, 219, 239, 98, 16, 27, 69, 82, 172, 202, 89, 4, 237, - 162, 90, 66, 190, 128, 225, 127, 202, 150, 255, 188, 73, 20, 91, - 254, 243, 210, 240, 181, 199, 176, 140, 243, 67, 167, 200, 156, 48, - 143, 190, 96, 30, 183, 223, 76, 206, 130, 48, 177, 145, 8, 182, - 253, 104, 175, 117, 78, 41, 21, 91, 116, 170, 234, 229, 18, 51, - 228, 94, 86, 28, 81, 204, 144, 47, 36, 145, 125, 12, 203, 184, - 112, 244, 88, 18, 53, 231, 8, 57, 221, 233, 225, 12, 193, 211, - 246, 11, 154, 211, 71, 122, 193, 191, 124, 250, 105, 247, 152, 40, - 4, 222, 138, 144, 40, 133, 23, 12, 137, 2, 85, 126, 161, 136, - 40, 255, 249, 32, 70, 68, 153, 28, 124, 25, 17, 229, 101, 68, - 148, 151, 17, 81, 94, 70, 68, 121, 25, 17, 229, 101, 68, 148, - 239, 99, 68, 148, 146, 32, 189, 216, 79, 17, 17, 69, 6, 63, - 185, 40, 227, 156, 92, 234, 121, 85, 4, 63, 97, 63, 69, 68, - 20, 25, 252, 228, 178, 12, 126, 114, 37, 9, 126, 194, 126, 138, - 136, 40, 50, 244, 10, 251, 249, 143, 145, 198, 51, 38, 123, 6, - 237, 255, 148, 145, 120, 96, 174, 227, 85, 49, 226, 105, 58, 226, - 44, 227, 1, 170, 142, 47, 133, 156, 1, 117, 182, 2, 175, 198, - 49, 205, 216, 241, 39, 228, 246, 53, 146, 254, 30, 142, 223, 221, - 160, 29, 210, 226, 98, 25, 34, 87, 196, 105, 107, 84, 110, 212, - 13, 247, 87, 44, 68, 152, 33, 154, 134, 67, 8, 81, 21, 178, - 8, 49, 132, 2, 68, 94, 90, 44, 179, 203, 103, 51, 168, 161, - 153, 144, 231, 71, 49, 227, 64, 196, 109, 36, 76, 140, 239, 7, - 1, 151, 172, 80, 74, 195, 86, 149, 78, 59, 225, 112, 39, 182, - 4, 144, 26, 35, 210, 86, 127, 159, 247, 40, 81, 161, 79, 137, - 26, 153, 228, 160, 164, 128, 254, 226, 29, 66, 59, 41, 32, 196, - 137, 105, 58, 209, 147, 253, 200, 160, 87, 72, 63, 196, 252, 123, - 232, 68, 79, 24, 203, 8, 2, 53, 142, 46, 141, 137, 233, 111, - 106, 221, 41, 164, 67, 242, 67, 65, 37, 77, 190, 32, 149, 4, - 205, 98, 173, 250, 66, 148, 210, 79, 223, 38, 125, 86, 239, 185, - 158, 63, 214, 94, 6, 143, 123, 73, 42, 189, 36, 149, 94, 146, - 74, 47, 73, 165, 151, 164, 210, 247, 147, 84, 146, 84, 209, 5, - 73, 21, 93, 236, 25, 19, 84, 17, 251, 41, 72, 37, 73, 21, - 93, 146, 84, 209, 229, 132, 42, 186, 44, 169, 162, 43, 61, 101, - 65, 126, 177, 159, 93, 73, 165, 191, 159, 7, 82, 41, 243, 71, - 26, 187, 250, 236, 191, 157, 167, 107, 242, 230, 237, 140, 32, 135, - 230, 210, 209, 110, 115, 61, 104, 120, 85, 238, 184, 6, 215, 120, - 30, 68, 121, 156, 236, 17, 23, 1, 188, 153, 162, 185, 122, 193, - 201, 117, 62, 89, 47, 212, 114, 132, 208, 89, 55, 116, 233, 90, - 189, 163, 34, 238, 17, 199, 131, 203, 133, 65, 16, 11, 146, 43, - 79, 215, 156, 53, 56, 119, 215, 214, 215, 136, 136, 89, 207, 79, - 90, 25, 221, 28, 162, 8, 121, 62, 43, 24, 21, 245, 107, 181, - 53, 89, 172, 124, 155, 138, 136, 14, 185, 11, 235, 107, 160, 145, - 133, 124, 77, 244, 27, 85, 236, 126, 185, 186, 31, 109, 125, 249, - 96, 240, 22, 164, 13, 234, 8, 39, 182, 68, 196, 187, 13, 150, - 183, 37, 0, 129, 1, 95, 189, 198, 141, 212, 119, 25, 185, 215, - 6, 95, 189, 36, 75, 161, 163, 13, 224, 17, 197, 1, 39, 219, - 81, 28, 52, 209, 125, 197, 245, 171, 1, 4, 234, 31, 142, 92, - 23, 64, 58, 183, 185, 186, 27, 191, 126, 8, 95, 123, 62, 163, - 96, 62, 113, 193, 50, 57, 194, 144, 220, 62, 135, 167, 240, 165, - 125, 151, 187, 19, 163, 206, 165, 37, 243, 98, 232, 54, 78, 156, - 138, 113, 10, 66, 194, 122, 63, 170, 8, 39, 17, 187, 90, 184, - 155, 184, 64, 188, 198, 1, 106, 167, 210, 72, 189, 124, 176, 156, - 136, 40, 250, 45, 49, 121, 140, 140, 220, 3, 235, 46, 222, 36, - 32, 20, 238, 150, 23, 180, 193, 130, 70, 146, 216, 66, 69, 7, - 54, 253, 123, 90, 236, 68, 2, 49, 85, 172, 203, 122, 66, 51, - 59, 116, 138, 78, 78, 138, 212, 122, 242, 130, 210, 26, 157, 162, - 19, 73, 114, 135, 229, 20, 201, 167, 226, 199, 46, 203, 116, 141, - 168, 15, 63, 155, 162, 175, 115, 9, 46, 119, 47, 6, 229, 57, - 87, 35, 193, 104, 200, 59, 19, 131, 74, 193, 222, 225, 99, 179, - 147, 223, 133, 21, 251, 25, 1, 117, 133, 23, 138, 248, 123, 82, - 1, 31, 11, 197, 154, 4, 132, 101, 249, 57, 178, 8, 27, 39, - 180, 128, 103, 51, 74, 56, 10, 195, 200, 20, 249, 242, 93, 127, - 42, 25, 3, 8, 82, 159, 138, 148, 197, 213, 99, 194, 95, 152, - 43, 77, 56, 177, 216, 112, 162, 56, 101, 153, 229, 16, 174, 81, - 71, 136, 4, 110, 164, 224, 80, 121, 222, 8, 135, 44, 94, 172, - 240, 214, 6, 189, 74, 106, 15, 229, 113, 243, 38, 123, 74, 56, - 14, 161, 91, 130, 24, 204, 97, 39, 194, 216, 0, 74, 13, 117, - 37, 3, 161, 155, 78, 13, 165, 250, 114, 61, 142, 164, 131, 19, - 136, 83, 3, 22, 161, 116, 184, 22, 42, 116, 175, 177, 155, 32, - 214, 66, 147, 226, 160, 197, 113, 32, 58, 23, 34, 68, 203, 172, - 58, 17, 242, 120, 180, 82, 90, 90, 238, 218, 41, 165, 62, 209, - 43, 105, 223, 199, 103, 62, 65, 185, 93, 111, 163, 142, 42, 85, - 172, 136, 169, 152, 42, 88, 108, 163, 40, 118, 157, 154, 58, 94, - 174, 83, 221, 4, 27, 194, 45, 175, 214, 118, 26, 162, 185, 36, - 177, 115, 225, 71, 153, 116, 232, 4, 16, 211, 46, 189, 225, 103, - 19, 50, 174, 121, 194, 137, 220, 4, 27, 60, 69, 123, 22, 216, - 57, 196, 77, 230, 82, 157, 229, 43, 157, 208, 106, 195, 117, 194, - 198, 174, 36, 160, 149, 240, 156, 72, 38, 3, 96, 140, 91, 109, - 56, 124, 17, 240, 6, 23, 23, 203, 5, 74, 203, 0, 71, 176, - 11, 109, 196, 1, 112, 235, 117, 182, 184, 130, 125, 186, 53, 38, - 126, 68, 168, 195, 69, 165, 27, 161, 2, 7, 21, 118, 41, 48, - 250, 221, 142, 88, 116, 183, 166, 11, 98, 204, 35, 216, 46, 202, - 92, 122, 123, 143, 249, 196, 184, 75, 56, 161, 241, 117, 139, 90, - 22, 66, 99, 39, 220, 112, 99, 117, 232, 217, 117, 132, 88, 226, - 168, 51, 194, 34, 107, 232, 16, 196, 14, 222, 84, 211, 229, 41, - 140, 188, 41, 152, 207, 225, 137, 195, 245, 56, 242, 64, 238, 126, - 30, 163, 61, 93, 195, 21, 104, 182, 48, 161, 17, 109, 251, 113, - 208, 174, 110, 178, 106, 97, 255, 202, 214, 121, 17, 109, 57, 145, - 184, 89, 2, 34, 213, 253, 220, 31, 14, 218, 202, 155, 144, 151, - 119, 5, 122, 119, 70, 29, 205, 115, 26, 13, 121, 191, 227, 217, - 185, 165, 94, 50, 112, 93, 136, 3, 100, 239, 169, 148, 116, 135, - 155, 98, 117, 142, 125, 30, 156, 119, 120, 117, 108, 201, 17, 176, - 196, 107, 181, 16, 186, 131, 111, 52, 137, 40, 208, 89, 3, 71, - 189, 134, 249, 145, 253, 47, 36, 231, 6, 233, 218, 42, 180, 173, - 228, 135, 37, 47, 99, 239, 41, 73, 215, 224, 148, 92, 235, 60, - 38, 59, 174, 221, 61, 51, 182, 167, 36, 57, 195, 184, 2, 113, - 36, 72, 151, 161, 0, 24, 111, 57, 30, 242, 174, 105, 186, 225, - 70, 2, 245, 161, 140, 134, 210, 18, 178, 223, 88, 116, 90, 182, - 161, 195, 146, 146, 147, 23, 208, 229, 82, 78, 223, 69, 233, 91, - 184, 219, 37, 92, 157, 162, 143, 38, 30, 43, 215, 148, 95, 83, - 166, 252, 11, 212, 51, 222, 181, 232, 73, 165, 104, 24, 41, 111, - 207, 208, 122, 72, 91, 112, 242, 246, 17, 163, 111, 115, 121, 70, - 230, 86, 115, 143, 197, 87, 113, 7, 65, 176, 254, 197, 154, 244, - 172, 190, 231, 233, 100, 170, 251, 160, 113, 119, 19, 161, 3, 59, - 118, 185, 132, 129, 114, 60, 219, 189, 129, 86, 4, 154, 153, 122, - 222, 145, 100, 17, 179, 147, 64, 18, 216, 176, 45, 97, 97, 50, - 114, 182, 134, 32, 113, 236, 182, 150, 23, 230, 21, 1, 133, 214, - 73, 172, 40, 35, 215, 142, 192, 3, 86, 61, 113, 164, 229, 82, - 250, 51, 1, 171, 38, 145, 200, 80, 88, 146, 44, 54, 58, 235, - 250, 85, 136, 27, 189, 167, 61, 9, 57, 16, 168, 135, 85, 94, - 142, 136, 147, 68, 148, 17, 114, 214, 61, 24, 6, 162, 89, 74, - 105, 74, 171, 33, 148, 113, 45, 32, 156, 106, 17, 197, 98, 135, - 34, 197, 232, 9, 104, 116, 185, 161, 83, 11, 40, 69, 241, 4, - 98, 245, 226, 120, 117, 163, 115, 72, 87, 66, 71, 41, 50, 69, - 233, 36, 230, 11, 42, 161, 163, 208, 57, 9, 125, 45, 195, 39, - 71, 213, 77, 183, 233, 80, 119, 43, 104, 180, 197, 57, 225, 225, - 29, 222, 116, 29, 159, 159, 115, 146, 1, 114, 185, 89, 102, 66, - 37, 61, 241, 131, 109, 25, 122, 9, 44, 197, 192, 108, 139, 189, - 170, 123, 141, 6, 63, 90, 136, 42, 21, 151, 103, 15, 78, 30, - 174, 2, 47, 20, 51, 84, 144, 192, 84, 30, 187, 134, 182, 29, - 63, 86, 175, 104, 136, 64, 45, 104, 107, 33, 35, 103, 237, 229, - 87, 34, 227, 159, 176, 141, 64, 39, 110, 59, 187, 226, 24, 221, - 37, 169, 193, 203, 115, 25, 24, 216, 138, 241, 120, 209, 108, 128, - 253, 32, 6, 227, 189, 8, 9, 144, 20, 249, 198, 111, 180, 134, - 48, 140, 232, 92, 66, 112, 195, 39, 87, 98, 212, 229, 78, 76, - 72, 46, 28, 12, 177, 223, 208, 14, 46, 226, 164, 139, 74, 247, - 62, 241, 252, 26, 144, 98, 221, 73, 157, 46, 7, 21, 73, 236, - 137, 144, 132, 216, 12, 0, 92, 65, 225, 222, 128, 192, 185, 64, - 103, 184, 209, 155, 136, 43, 18, 132, 116, 118, 121, 121, 17, 73, - 76, 100, 112, 32, 45, 2, 94, 119, 185, 101, 57, 89, 195, 131, - 51, 41, 237, 144, 123, 159, 207, 242, 98, 113, 121, 102, 86, 82, - 167, 65, 157, 46, 174, 44, 167, 54, 179, 136, 197, 5, 53, 70, - 110, 211, 241, 99, 175, 26, 17, 58, 204, 50, 130, 44, 23, 46, - 87, 33, 216, 4, 142, 170, 221, 104, 240, 22, 69, 156, 47, 6, - 182, 185, 36, 216, 230, 160, 174, 82, 113, 120, 154, 177, 28, 249, - 61, 123, 19, 56, 109, 30, 94, 158, 7, 103, 22, 56, 111, 232, - 248, 129, 124, 13, 90, 244, 112, 163, 63, 206, 251, 87, 131, 102, - 211, 41, 96, 69, 17, 202, 108, 61, 31, 137, 110, 48, 120, 102, - 20, 93, 53, 240, 183, 92, 225, 199, 58, 6, 134, 210, 140, 70, - 8, 71, 171, 78, 211, 5, 84, 21, 46, 114, 223, 114, 125, 137, - 155, 84, 196, 80, 230, 226, 126, 21, 38, 138, 29, 2, 233, 100, - 9, 73, 58, 89, 242, 193, 226, 221, 98, 24, 128, 205, 155, 188, - 122, 86, 34, 55, 4, 119, 250, 196, 38, 151, 82, 186, 184, 201, - 248, 202, 22, 252, 123, 135, 78, 222, 78, 113, 189, 162, 44, 248, - 84, 22, 196, 199, 168, 230, 69, 173, 134, 179, 187, 10, 189, 87, - 139, 228, 239, 157, 90, 13, 108, 197, 212, 82, 97, 54, 144, 149, - 117, 58, 169, 152, 53, 222, 226, 53, 216, 220, 141, 32, 128, 99, - 54, 106, 87, 55, 101, 215, 88, 86, 217, 12, 33, 118, 98, 93, - 42, 168, 141, 201, 117, 230, 128, 222, 229, 82, 109, 192, 21, 33, - 141, 203, 197, 146, 80, 163, 242, 192, 217, 218, 8, 182, 69, 237, - 178, 226, 38, 226, 207, 168, 245, 206, 59, 77, 55, 223, 89, 77, - 154, 157, 96, 71, 230, 2, 24, 79, 227, 170, 233, 16, 73, 1, - 64, 148, 114, 11, 129, 157, 117, 68, 63, 97, 155, 192, 73, 2, - 117, 240, 75, 90, 110, 99, 206, 93, 118, 174, 140, 206, 197, 176, - 4, 235, 233, 33, 79, 201, 158, 160, 49, 55, 96, 174, 227, 79, - 133, 78, 225, 179, 200, 103, 247, 250, 237, 228, 205, 82, 123, 93, - 148, 20, 181, 215, 87, 69, 29, 119, 232, 173, 219, 93, 196, 11, - 203, 233, 179, 10, 189, 32, 159, 61, 163, 202, 36, 178, 18, 22, - 194, 103, 103, 87, 26, 161, 124, 149, 220, 130, 188, 151, 187, 45, - 161, 65, 25, 206, 37, 93, 206, 73, 95, 116, 118, 208, 142, 176, - 246, 113, 48, 76, 46, 76, 227, 226, 13, 126, 124, 38, 51, 74, - 223, 117, 67, 169, 100, 227, 253, 236, 160, 208, 224, 248, 220, 85, - 244, 190, 252, 228, 220, 132, 19, 39, 17, 95, 64, 211, 84, 30, - 132, 200, 203, 130, 75, 31, 183, 88, 93, 187, 220, 18, 142, 123, - 172, 164, 4, 181, 136, 132, 199, 152, 95, 224, 6, 214, 202, 243, - 239, 22, 231, 202, 247, 86, 139, 149, 7, 43, 15, 75, 243, 203, - 107, 201, 117, 199, 154, 36, 188, 50, 218, 126, 211, 105, 181, 184, - 75, 240, 0, 106, 136, 205, 63, 210, 178, 71, 72, 94, 160, 8, - 255, 91, 77, 63, 99, 159, 227, 24, 56, 137, 116, 20, 231, 66, - 12, 13, 135, 229, 53, 33, 187, 76, 246, 178, 228, 128, 4, 237, - 213, 88, 210, 58, 41, 146, 6, 75, 42, 33, 212, 127, 247, 18, - 57, 215, 169, 140, 174, 181, 67, 213, 232, 121, 143, 42, 122, 138, - 100, 239, 241, 44, 214, 16, 233, 139, 220, 106, 224, 215, 16, 69, - 222, 168, 136, 164, 117, 140, 244, 250, 142, 31, 96, 228, 228, 222, - 10, 38, 166, 191, 177, 143, 142, 250, 160, 40, 81, 168, 168, 39, - 94, 80, 69, 45, 26, 251, 133, 52, 212, 191, 119, 1, 109, 249, - 162, 151, 10, 234, 151, 10, 234, 151, 10, 234, 151, 10, 234, 151, - 10, 234, 151, 10, 234, 239, 167, 130, 90, 234, 141, 217, 79, 161, - 160, 158, 21, 26, 102, 246, 83, 40, 168, 165, 42, 251, 146, 84, - 101, 95, 238, 41, 8, 85, 54, 251, 41, 20, 212, 82, 149, 125, - 69, 170, 178, 135, 19, 85, 54, 251, 249, 55, 7, 209, 95, 163, - 222, 19, 105, 246, 143, 13, 210, 34, 21, 183, 110, 135, 118, 26, - 220, 87, 243, 180, 238, 237, 184, 181, 81, 68, 124, 162, 81, 203, - 241, 37, 100, 134, 66, 178, 19, 100, 229, 16, 160, 147, 157, 254, - 120, 255, 35, 206, 29, 71, 113, 138, 82, 47, 98, 10, 180, 0, - 36, 1, 169, 131, 75, 69, 10, 220, 131, 216, 243, 133, 183, 90, - 44, 168, 185, 170, 211, 112, 253, 154, 131, 24, 234, 60, 148, 5, - 59, 166, 159, 184, 52, 87, 115, 118, 115, 96, 2, 152, 107, 6, - 126, 188, 153, 19, 197, 8, 124, 189, 56, 80, 176, 168, 61, 63, - 185, 225, 132, 55, 117, 85, 130, 7, 19, 112, 2, 78, 114, 11, - 89, 2, 235, 160, 28, 42, 214, 4, 79, 198, 238, 118, 106, 236, - 40, 15, 66, 9, 90, 37, 177, 17, 156, 164, 160, 2, 173, 0, - 197, 128, 26, 214, 48, 216, 241, 154, 232, 203, 246, 234, 232, 196, - 120, 126, 124, 124, 156, 238, 186, 78, 200, 213, 33, 37, 142, 191, - 73, 136, 248, 73, 39, 166, 32, 52, 70, 59, 118, 147, 102, 32, - 254, 130, 218, 92, 184, 247, 90, 145, 219, 174, 5, 112, 249, 22, - 248, 37, 157, 244, 39, 138, 157, 48, 166, 119, 104, 161, 80, 184, - 221, 249, 206, 245, 107, 169, 55, 178, 34, 65, 97, 137, 183, 248, - 90, 18, 137, 98, 90, 239, 176, 18, 100, 106, 20, 235, 18, 233, - 219, 29, 31, 193, 2, 224, 159, 224, 111, 241, 1, 164, 68, 37, - 94, 157, 14, 239, 169, 232, 13, 58, 78, 47, 95, 238, 44, 235, - 46, 29, 31, 73, 184, 148, 61, 31, 189, 170, 242, 202, 29, 159, - 142, 222, 161, 19, 227, 226, 143, 224, 154, 169, 219, 96, 244, 85, - 183, 6, 220, 237, 218, 128, 55, 158, 221, 128, 209, 103, 52, 224, - 213, 110, 13, 80, 166, 127, 50, 153, 254, 100, 190, 96, 254, 147, - 228, 171, 201, 132, 125, 241, 85, 176, 239, 92, 239, 191, 70, 240, - 149, 58, 229, 119, 210, 83, 78, 95, 221, 51, 8, 183, 147, 143, - 196, 2, 80, 38, 93, 253, 96, 207, 42, 72, 190, 73, 143, 115, - 106, 205, 169, 67, 156, 124, 208, 117, 116, 147, 233, 77, 50, 222, - 85, 51, 238, 83, 199, 171, 221, 235, 232, 186, 132, 148, 25, 188, - 182, 223, 6, 174, 57, 177, 11, 168, 63, 236, 159, 154, 219, 0, - 22, 131, 46, 238, 198, 155, 72, 77, 177, 63, 49, 27, 244, 189, - 25, 135, 107, 206, 110, 116, 231, 90, 158, 54, 61, 191, 29, 187, - 209, 157, 137, 241, 145, 244, 54, 163, 119, 100, 109, 195, 29, 175, - 10, 247, 195, 160, 185, 44, 139, 138, 107, 35, 137, 84, 239, 161, - 211, 106, 121, 254, 70, 34, 179, 225, 156, 14, 138, 110, 100, 251, - 129, 129, 222, 35, 209, 67, 1, 70, 232, 112, 210, 213, 65, 214, - 24, 173, 17, 242, 10, 182, 11, 207, 8, 194, 88, 129, 12, 222, - 174, 215, 189, 29, 154, 139, 114, 116, 152, 227, 63, 129, 138, 12, - 135, 126, 4, 93, 22, 49, 214, 109, 213, 173, 37, 114, 86, 191, - 221, 92, 199, 72, 27, 60, 43, 231, 125, 146, 91, 38, 18, 62, - 148, 208, 76, 34, 239, 37, 167, 33, 62, 233, 176, 151, 185, 38, - 111, 43, 40, 105, 60, 85, 150, 98, 156, 36, 250, 238, 165, 6, - 138, 13, 69, 238, 90, 148, 3, 56, 6, 54, 251, 169, 75, 113, - 66, 41, 76, 2, 40, 172, 187, 74, 19, 187, 149, 86, 16, 171, - 107, 130, 149, 203, 202, 233, 40, 149, 208, 166, 87, 13, 211, 229, - 190, 104, 177, 19, 81, 14, 188, 22, 133, 185, 122, 61, 59, 72, - 254, 7, 17, 210, 200, 248, 68, 63, 102, 255, 215, 26, 93, 66, - 80, 11, 81, 41, 151, 136, 171, 100, 65, 129, 62, 228, 0, 189, - 176, 182, 71, 175, 77, 220, 200, 223, 120, 237, 38, 187, 224, 216, - 95, 208, 162, 191, 218, 241, 80, 128, 92, 108, 113, 157, 239, 20, - 43, 53, 114, 233, 122, 208, 134, 174, 133, 34, 184, 20, 231, 77, - 166, 8, 189, 57, 206, 26, 49, 214, 244, 124, 122, 149, 37, 154, - 158, 63, 182, 25, 210, 171, 116, 242, 58, 221, 12, 199, 106, 206, - 46, 189, 74, 175, 221, 188, 81, 152, 188, 65, 217, 30, 25, 99, - 151, 43, 189, 138, 59, 20, 111, 90, 213, 99, 242, 19, 25, 64, - 133, 117, 253, 147, 236, 97, 197, 99, 242, 19, 235, 40, 249, 134, - 33, 92, 38, 67, 221, 178, 255, 68, 23, 3, 145, 34, 110, 28, - 62, 46, 105, 234, 70, 33, 110, 212, 241, 34, 201, 128, 137, 221, - 20, 81, 112, 80, 150, 136, 38, 162, 180, 48, 69, 107, 225, 106, - 116, 232, 56, 161, 107, 124, 30, 214, 184, 100, 8, 220, 96, 185, - 206, 122, 11, 88, 60, 223, 221, 112, 224, 247, 26, 52, 136, 103, - 196, 133, 46, 142, 1, 4, 95, 86, 42, 4, 139, 186, 16, 240, - 3, 252, 192, 31, 253, 204, 13, 3, 174, 49, 20, 14, 198, 169, - 210, 4, 34, 179, 196, 112, 6, 193, 46, 163, 31, 133, 143, 70, - 71, 59, 59, 151, 200, 173, 91, 183, 242, 252, 47, 46, 15, 229, - 129, 178, 52, 84, 79, 211, 48, 21, 240, 38, 76, 5, 188, 9, - 7, 143, 72, 209, 214, 111, 189, 74, 166, 94, 208, 213, 31, 36, - 147, 50, 76, 241, 126, 129, 125, 95, 44, 110, 239, 190, 97, 127, - 191, 76, 220, 222, 220, 255, 173, 17, 75, 141, 186, 124, 207, 141, - 29, 175, 97, 157, 76, 197, 225, 133, 176, 173, 24, 132, 119, 40, - 9, 19, 138, 112, 2, 50, 66, 232, 73, 210, 7, 221, 244, 106, - 24, 4, 180, 146, 97, 201, 114, 205, 58, 69, 178, 161, 91, 95, - 221, 116, 162, 77, 30, 186, 181, 47, 116, 235, 179, 78, 180, 105, - 77, 17, 30, 7, 117, 53, 116, 235, 60, 50, 232, 233, 253, 194, - 68, 86, 220, 122, 165, 63, 18, 63, 173, 105, 140, 43, 42, 26, - 62, 212, 11, 95, 119, 137, 222, 168, 118, 175, 146, 250, 38, 247, - 23, 116, 114, 64, 125, 109, 89, 106, 191, 121, 151, 167, 72, 86, - 104, 10, 121, 72, 204, 125, 42, 153, 227, 185, 42, 50, 191, 53, - 67, 14, 174, 183, 55, 86, 217, 9, 19, 248, 174, 31, 195, 208, - 116, 45, 96, 186, 189, 49, 35, 114, 85, 14, 172, 43, 41, 30, - 37, 151, 163, 153, 175, 162, 174, 23, 6, 11, 163, 228, 242, 23, - 75, 240, 188, 35, 136, 109, 239, 11, 7, 177, 205, 45, 225, 80, - 136, 78, 176, 161, 8, 221, 86, 32, 134, 130, 253, 182, 78, 147, - 254, 186, 215, 112, 65, 33, 195, 231, 63, 203, 30, 204, 179, 113, - 178, 136, 9, 65, 138, 13, 144, 199, 194, 239, 220, 223, 213, 200, - 1, 181, 103, 214, 60, 57, 232, 69, 81, 219, 93, 101, 188, 204, - 19, 55, 228, 145, 59, 175, 116, 9, 230, 204, 178, 45, 99, 46, - 249, 253, 108, 79, 229, 128, 167, 188, 176, 138, 36, 219, 12, 252, - 32, 116, 188, 6, 159, 156, 46, 177, 84, 31, 242, 28, 106, 49, - 242, 179, 233, 44, 201, 32, 242, 77, 110, 138, 28, 239, 90, 171, - 245, 10, 57, 32, 167, 144, 45, 112, 20, 69, 15, 200, 103, 229, - 90, 110, 134, 28, 217, 83, 141, 186, 91, 180, 244, 110, 57, 70, - 122, 225, 216, 19, 160, 28, 144, 248, 50, 160, 28, 191, 154, 195, - 152, 161, 223, 208, 158, 137, 202, 49, 254, 18, 149, 227, 37, 42, - 199, 151, 143, 25, 122, 57, 137, 25, 58, 146, 196, 12, 189, 195, - 197, 64, 39, 18, 216, 14, 246, 115, 28, 165, 64, 167, 122, 174, - 107, 246, 69, 90, 246, 145, 30, 4, 209, 198, 122, 208, 142, 5, - 216, 181, 18, 182, 95, 208, 133, 167, 178, 54, 249, 71, 186, 160, - 11, 115, 250, 93, 251, 239, 233, 251, 70, 186, 236, 40, 166, 75, - 164, 75, 25, 4, 73, 156, 239, 29, 209, 46, 9, 205, 241, 253, - 24, 141, 125, 190, 88, 89, 120, 187, 52, 179, 252, 20, 35, 109, - 124, 94, 41, 221, 95, 157, 45, 46, 205, 62, 133, 203, 59, 26, - 251, 124, 165, 50, 183, 90, 90, 154, 41, 46, 150, 238, 173, 46, - 151, 150, 150, 87, 203, 247, 158, 230, 10, 132, 179, 28, 93, 222, - 130, 75, 41, 222, 136, 212, 141, 170, 78, 75, 130, 6, 10, 245, - 140, 170, 123, 122, 178, 49, 230, 187, 241, 88, 59, 108, 140, 93, - 88, 116, 226, 205, 18, 124, 81, 248, 210, 49, 55, 115, 169, 152, - 155, 185, 84, 204, 205, 220, 160, 8, 20, 212, 147, 181, 140, 156, - 117, 39, 29, 114, 51, 119, 244, 13, 66, 5, 77, 122, 73, 63, - 110, 31, 77, 14, 143, 4, 105, 59, 33, 152, 46, 201, 170, 24, - 193, 116, 169, 95, 133, 230, 184, 116, 244, 24, 241, 120, 132, 64, - 99, 68, 63, 110, 127, 68, 139, 180, 237, 123, 159, 182, 83, 168, - 247, 64, 225, 34, 4, 186, 47, 130, 243, 200, 170, 104, 69, 76, - 121, 130, 66, 93, 16, 35, 203, 118, 64, 13, 136, 150, 36, 52, - 146, 158, 138, 57, 170, 67, 204, 209, 65, 37, 152, 224, 200, 209, - 99, 228, 107, 34, 54, 224, 168, 126, 210, 14, 233, 172, 187, 227, - 212, 220, 170, 215, 116, 26, 146, 233, 98, 20, 139, 224, 35, 5, - 249, 41, 169, 21, 136, 18, 136, 150, 146, 201, 67, 97, 169, 196, - 190, 68, 147, 109, 73, 179, 10, 18, 136, 135, 32, 149, 209, 3, - 123, 89, 11, 178, 74, 244, 192, 209, 254, 35, 74, 244, 192, 209, - 99, 39, 200, 35, 30, 60, 208, 24, 215, 79, 219, 243, 96, 218, - 47, 228, 138, 130, 179, 21, 26, 49, 63, 14, 131, 134, 0, 114, - 75, 3, 157, 202, 141, 66, 49, 174, 3, 163, 143, 11, 106, 124, - 190, 113, 125, 64, 137, 207, 55, 126, 224, 132, 18, 159, 111, 252, - 148, 77, 46, 137, 248, 123, 215, 116, 106, 15, 193, 92, 168, 101, - 2, 200, 116, 42, 68, 222, 53, 253, 144, 18, 34, 239, 218, 225, - 211, 74, 136, 188, 107, 231, 206, 147, 43, 128, 50, 111, 190, 214, - 83, 209, 236, 211, 251, 158, 19, 252, 120, 96, 75, 235, 181, 236, - 49, 114, 153, 227, 193, 27, 183, 116, 203, 62, 5, 11, 51, 8, - 189, 13, 207, 231, 112, 146, 34, 32, 192, 1, 1, 4, 111, 220, - 226, 195, 11, 32, 214, 198, 45, 190, 19, 0, 193, 218, 184, 53, - 120, 132, 172, 114, 144, 119, 227, 142, 126, 198, 174, 40, 182, 238, - 2, 146, 159, 7, 190, 224, 7, 12, 154, 105, 53, 92, 94, 145, - 180, 34, 43, 48, 10, 137, 62, 92, 89, 90, 78, 129, 194, 201, - 166, 104, 25, 86, 195, 33, 145, 98, 245, 29, 62, 41, 82, 134, - 101, 220, 177, 79, 147, 93, 14, 249, 110, 20, 245, 87, 236, 6, - 90, 31, 48, 130, 132, 114, 106, 137, 74, 138, 163, 107, 252, 16, - 214, 224, 60, 183, 6, 40, 16, 58, 221, 222, 72, 73, 169, 147, - 149, 128, 106, 59, 214, 11, 14, 90, 39, 26, 169, 103, 88, 221, - 162, 145, 108, 80, 138, 135, 207, 136, 148, 97, 25, 197, 243, 148, - 252, 43, 157, 67, 122, 27, 101, 253, 188, 253, 207, 117, 90, 22, - 251, 152, 195, 37, 162, 49, 34, 223, 49, 106, 244, 158, 196, 40, - 148, 19, 157, 34, 58, 1, 64, 247, 194, 192, 182, 27, 141, 221, - 209, 79, 219, 78, 3, 237, 165, 85, 36, 35, 1, 253, 40, 84, - 232, 168, 189, 46, 16, 234, 110, 20, 168, 160, 153, 130, 8, 78, - 134, 130, 211, 242, 128, 38, 159, 113, 34, 151, 173, 44, 34, 111, - 5, 180, 91, 188, 234, 7, 241, 85, 4, 46, 229, 88, 168, 123, - 154, 133, 227, 26, 186, 108, 42, 99, 17, 90, 153, 240, 238, 21, - 232, 189, 96, 219, 143, 226, 208, 117, 154, 124, 191, 161, 58, 116, - 19, 145, 50, 85, 106, 136, 149, 5, 228, 5, 40, 139, 57, 222, - 56, 217, 91, 31, 168, 38, 98, 55, 108, 133, 110, 172, 44, 28, - 118, 68, 148, 229, 26, 102, 71, 68, 185, 223, 22, 41, 54, 11, - 103, 207, 145, 255, 81, 227, 88, 233, 198, 59, 250, 176, 253, 219, - 255, 65, 194, 39, 241, 205, 248, 133, 2, 39, 117, 137, 78, 42, - 54, 70, 158, 238, 97, 106, 176, 24, 17, 65, 109, 239, 22, 98, - 167, 212, 59, 250, 144, 72, 105, 150, 241, 206, 169, 11, 34, 101, - 88, 198, 59, 151, 175, 144, 2, 0, 191, 155, 43, 61, 27, 154, - 157, 163, 115, 29, 38, 158, 176, 252, 19, 55, 23, 126, 182, 176, - 117, 190, 146, 61, 70, 126, 79, 227, 152, 235, 198, 35, 221, 178, - 127, 83, 19, 32, 152, 236, 118, 23, 242, 6, 229, 210, 66, 156, - 100, 182, 237, 37, 73, 1, 207, 148, 175, 166, 228, 181, 253, 198, - 102, 16, 197, 119, 199, 222, 224, 183, 218, 221, 148, 205, 61, 205, - 61, 63, 42, 152, 120, 51, 22, 133, 213, 28, 65, 49, 7, 35, - 187, 93, 159, 175, 212, 92, 97, 195, 139, 25, 69, 178, 52, 187, - 176, 50, 119, 175, 219, 16, 2, 232, 187, 241, 136, 47, 38, 192, - 124, 55, 30, 241, 3, 17, 32, 223, 141, 71, 131, 71, 200, 31, - 9, 196, 119, 163, 170, 159, 180, 255, 87, 45, 21, 121, 2, 142, - 190, 237, 253, 206, 72, 142, 18, 89, 135, 254, 195, 85, 206, 134, - 39, 242, 48, 52, 21, 76, 47, 106, 7, 176, 197, 99, 99, 57, - 41, 195, 198, 192, 109, 226, 124, 139, 198, 90, 206, 110, 19, 126, - 84, 131, 208, 21, 169, 85, 110, 66, 181, 202, 46, 157, 213, 118, - 236, 53, 86, 219, 190, 23, 195, 210, 172, 194, 176, 56, 59, 60, - 132, 204, 20, 189, 49, 49, 89, 32, 120, 34, 11, 254, 100, 221, - 169, 62, 137, 26, 112, 59, 3, 93, 129, 140, 129, 28, 29, 70, - 205, 84, 229, 232, 176, 51, 186, 218, 111, 137, 148, 97, 25, 213, - 227, 39, 200, 155, 48, 56, 186, 101, 212, 245, 35, 246, 36, 93, - 240, 221, 209, 117, 135, 209, 166, 16, 29, 134, 203, 138, 159, 49, - 64, 188, 56, 118, 145, 214, 185, 164, 73, 135, 193, 174, 103, 15, - 136, 148, 97, 25, 245, 195, 131, 196, 1, 156, 122, 243, 73, 79, - 164, 217, 43, 180, 162, 170, 80, 147, 139, 128, 35, 210, 171, 215, - 68, 1, 226, 241, 203, 12, 16, 54, 58, 9, 202, 207, 150, 40, - 100, 143, 248, 242, 103, 71, 202, 147, 236, 49, 136, 183, 96, 100, - 123, 44, 179, 161, 135, 24, 85, 221, 200, 178, 21, 210, 200, 30, - 34, 147, 28, 137, 222, 240, 123, 71, 237, 75, 112, 6, 8, 91, - 17, 168, 121, 185, 243, 130, 226, 29, 5, 12, 121, 195, 239, 181, - 69, 74, 179, 12, 255, 244, 176, 72, 25, 150, 225, 191, 154, 135, - 75, 221, 96, 99, 240, 105, 239, 69, 126, 169, 11, 246, 188, 75, - 137, 236, 38, 253, 180, 247, 132, 72, 177, 207, 78, 158, 23, 41, - 195, 50, 62, 205, 93, 32, 95, 3, 68, 95, 115, 187, 231, 51, - 205, 142, 210, 195, 225, 119, 109, 121, 30, 60, 152, 1, 123, 24, - 172, 225, 65, 192, 56, 221, 222, 112, 124, 239, 51, 55, 204, 19, - 234, 108, 57, 94, 3, 17, 1, 99, 185, 171, 97, 28, 197, 168, - 39, 38, 86, 124, 96, 217, 9, 181, 157, 61, 75, 110, 112, 80, - 96, 99, 87, 63, 101, 15, 191, 192, 224, 65, 128, 37, 232, 145, - 9, 59, 118, 151, 47, 20, 128, 202, 53, 118, 97, 174, 56, 82, - 174, 177, 123, 114, 136, 124, 76, 116, 179, 215, 234, 253, 115, 61, - 223, 208, 52, 251, 157, 206, 238, 202, 161, 76, 45, 146, 124, 170, - 71, 9, 83, 178, 222, 222, 136, 82, 34, 8, 222, 25, 70, 195, - 253, 185, 236, 41, 114, 149, 152, 102, 175, 222, 99, 153, 63, 160, - 233, 199, 237, 51, 233, 201, 226, 167, 155, 32, 194, 14, 146, 94, - 150, 183, 23, 50, 103, 69, 82, 99, 73, 30, 16, 167, 23, 76, - 6, 127, 64, 59, 122, 140, 148, 161, 96, 8, 115, 169, 31, 181, - 111, 239, 179, 10, 68, 8, 127, 132, 11, 156, 110, 120, 254, 147, - 187, 197, 106, 213, 141, 34, 111, 221, 107, 120, 241, 110, 78, 214, - 171, 169, 17, 52, 123, 1, 50, 247, 235, 34, 26, 78, 47, 64, - 230, 126, 93, 59, 98, 73, 121, 238, 183, 215, 201, 235, 95, 68, - 158, 139, 143, 247, 149, 230, 62, 87, 94, 251, 28, 187, 200, 23, - 20, 7, 39, 70, 139, 210, 24, 224, 203, 139, 131, 237, 63, 133, - 64, 219, 190, 253, 130, 223, 214, 29, 175, 209, 14, 25, 191, 228, - 68, 82, 14, 253, 39, 189, 132, 36, 220, 157, 101, 167, 228, 207, - 153, 239, 21, 141, 239, 21, 123, 185, 60, 246, 76, 34, 104, 214, - 133, 120, 186, 87, 74, 155, 47, 144, 126, 172, 82, 10, 162, 217, - 231, 189, 223, 43, 234, 149, 44, 190, 40, 215, 172, 215, 73, 31, - 143, 29, 194, 133, 206, 167, 246, 10, 13, 223, 197, 12, 88, 186, - 200, 110, 157, 39, 89, 119, 167, 5, 160, 231, 32, 92, 205, 226, - 123, 249, 208, 186, 69, 50, 81, 236, 196, 237, 104, 40, 67, 181, - 225, 67, 147, 103, 186, 203, 138, 151, 32, 15, 111, 58, 126, 96, - 93, 38, 7, 162, 118, 179, 233, 132, 187, 171, 155, 113, 179, 49, - 212, 151, 244, 110, 128, 191, 152, 141, 155, 13, 235, 46, 33, 112, - 137, 66, 56, 151, 161, 44, 116, 192, 222, 35, 226, 149, 90, 117, - 44, 161, 31, 62, 97, 15, 173, 41, 146, 21, 75, 109, 168, 159, - 119, 191, 243, 107, 161, 55, 226, 221, 19, 249, 173, 27, 196, 140, - 157, 141, 104, 136, 80, 99, 120, 160, 91, 231, 150, 128, 95, 94, - 116, 188, 16, 63, 133, 236, 214, 8, 57, 192, 71, 80, 209, 3, - 200, 121, 29, 224, 239, 64, 39, 48, 67, 14, 166, 86, 215, 208, - 193, 47, 46, 216, 183, 238, 147, 67, 233, 101, 54, 116, 8, 74, - 57, 191, 183, 148, 251, 152, 175, 2, 217, 42, 7, 235, 106, 178, - 67, 154, 126, 248, 133, 165, 233, 22, 37, 253, 94, 4, 128, 91, - 110, 109, 104, 80, 44, 20, 163, 146, 245, 162, 135, 240, 240, 109, - 51, 59, 48, 120, 32, 247, 47, 117, 114, 152, 245, 163, 180, 19, - 248, 220, 19, 231, 153, 139, 255, 100, 199, 226, 151, 235, 254, 90, - 178, 164, 141, 231, 44, 233, 100, 53, 143, 146, 67, 110, 82, 49, - 43, 212, 76, 213, 121, 80, 121, 91, 174, 89, 5, 50, 232, 238, - 180, 26, 142, 143, 217, 97, 145, 246, 38, 139, 244, 176, 242, 18, - 22, 234, 229, 142, 89, 207, 40, 11, 90, 157, 242, 183, 72, 134, - 207, 82, 31, 236, 153, 46, 34, 124, 101, 124, 112, 106, 248, 214, - 193, 239, 210, 195, 157, 237, 50, 220, 87, 223, 199, 243, 5, 247, - 157, 117, 130, 88, 75, 203, 197, 229, 149, 165, 213, 149, 121, 48, - 122, 188, 95, 46, 221, 27, 236, 177, 178, 196, 92, 44, 46, 45, - 13, 106, 236, 215, 253, 98, 121, 110, 80, 183, 250, 73, 239, 76, - 165, 184, 52, 59, 104, 176, 159, 197, 233, 133, 202, 242, 160, 201, - 222, 47, 125, 165, 188, 56, 216, 123, 245, 71, 53, 114, 100, 79, - 243, 172, 28, 57, 87, 122, 127, 97, 190, 84, 65, 24, 221, 74, - 169, 184, 180, 48, 223, 81, 219, 9, 98, 45, 204, 204, 172, 84, - 150, 86, 23, 230, 87, 31, 22, 203, 243, 115, 229, 249, 210, 160, - 102, 157, 36, 71, 147, 231, 96, 101, 184, 58, 51, 183, 52, 168, - 91, 131, 228, 192, 252, 194, 242, 234, 76, 165, 188, 92, 158, 41, - 206, 13, 26, 214, 81, 114, 120, 101, 190, 244, 254, 98, 105, 102, - 185, 116, 111, 21, 218, 110, 126, 25, 53, 194, 79, 46, 163, 26, - 225, 231, 244, 103, 169, 17, 38, 110, 189, 84, 35, 188, 84, 35, - 124, 121, 53, 194, 72, 162, 70, 24, 78, 212, 8, 168, 92, 48, - 44, 227, 56, 207, 96, 90, 198, 137, 158, 59, 240, 179, 215, 50, - 78, 246, 220, 131, 159, 25, 203, 24, 146, 200, 148, 118, 162, 114, - 96, 63, 255, 146, 1, 58, 135, 222, 203, 61, 63, 163, 105, 246, - 191, 211, 65, 72, 10, 14, 220, 32, 89, 174, 183, 125, 97, 143, - 3, 252, 88, 213, 129, 69, 3, 209, 99, 19, 55, 65, 249, 10, - 172, 142, 32, 236, 147, 91, 235, 136, 75, 34, 157, 100, 229, 99, - 17, 136, 151, 116, 20, 20, 181, 189, 216, 77, 103, 149, 21, 64, - 110, 191, 51, 84, 48, 126, 193, 237, 62, 101, 253, 158, 159, 132, - 229, 145, 193, 69, 9, 29, 94, 88, 202, 211, 7, 139, 43, 121, - 216, 24, 108, 171, 212, 27, 206, 70, 148, 167, 110, 92, 29, 145, - 17, 133, 164, 79, 161, 112, 244, 21, 192, 72, 9, 107, 90, 131, - 80, 109, 138, 65, 79, 194, 22, 116, 128, 53, 129, 244, 200, 109, - 174, 187, 224, 68, 156, 148, 158, 130, 39, 159, 120, 77, 209, 231, - 92, 206, 90, 228, 52, 251, 221, 111, 25, 87, 244, 67, 185, 195, - 168, 16, 17, 34, 83, 66, 6, 136, 105, 246, 244, 247, 88, 198, - 149, 1, 174, 160, 232, 103, 223, 41, 41, 29, 83, 191, 38, 180, - 66, 230, 132, 126, 221, 180, 127, 97, 127, 181, 16, 70, 166, 83, - 163, 252, 238, 209, 11, 61, 112, 227, 132, 214, 220, 171, 19, 122, - 6, 20, 250, 179, 148, 65, 252, 120, 5, 221, 209, 210, 202, 220, - 247, 71, 65, 244, 165, 245, 67, 19, 41, 253, 208, 68, 74, 63, - 52, 49, 40, 221, 187, 178, 150, 57, 97, 93, 55, 210, 10, 162, - 73, 115, 84, 121, 160, 89, 198, 53, 243, 85, 242, 211, 189, 66, - 101, 52, 171, 191, 105, 255, 149, 94, 84, 16, 120, 181, 60, 117, - 186, 43, 124, 146, 37, 216, 85, 229, 179, 225, 238, 76, 209, 143, - 31, 61, 154, 154, 106, 133, 158, 31, 79, 77, 61, 126, 252, 249, - 68, 254, 198, 196, 228, 211, 139, 92, 174, 184, 29, 240, 120, 108, - 2, 112, 11, 56, 25, 177, 172, 105, 43, 116, 235, 222, 14, 95, - 181, 210, 212, 206, 33, 96, 120, 228, 52, 90, 155, 142, 223, 110, - 2, 212, 172, 140, 62, 204, 163, 14, 37, 49, 68, 168, 67, 91, - 78, 200, 79, 145, 141, 48, 104, 183, 10, 210, 126, 26, 66, 158, - 231, 156, 177, 245, 177, 106, 78, 254, 172, 37, 63, 221, 169, 29, - 53, 177, 43, 18, 245, 28, 223, 156, 40, 18, 138, 58, 220, 126, - 160, 22, 44, 188, 216, 104, 80, 15, 36, 203, 235, 46, 132, 214, - 2, 148, 24, 23, 179, 208, 117, 183, 234, 180, 35, 41, 152, 227, - 189, 231, 189, 206, 57, 99, 80, 223, 123, 94, 188, 41, 108, 210, - 225, 51, 1, 235, 16, 70, 49, 189, 142, 238, 75, 136, 87, 242, - 140, 66, 217, 165, 153, 148, 187, 190, 111, 201, 178, 219, 112, 184, - 201, 126, 63, 171, 22, 86, 116, 215, 214, 179, 79, 115, 34, 6, - 126, 85, 217, 235, 158, 79, 87, 202, 5, 130, 11, 70, 158, 107, - 82, 112, 46, 166, 31, 197, 143, 254, 46, 119, 143, 194, 8, 94, - 137, 206, 114, 54, 165, 179, 156, 77, 233, 44, 103, 143, 30, 19, - 169, 172, 101, 204, 30, 191, 203, 23, 59, 6, 231, 53, 102, 79, - 220, 33, 155, 92, 165, 105, 206, 233, 11, 166, 253, 161, 170, 2, - 113, 212, 195, 135, 3, 98, 117, 70, 128, 150, 193, 162, 225, 244, - 149, 107, 61, 29, 245, 251, 26, 172, 244, 68, 163, 57, 151, 210, - 104, 206, 113, 193, 36, 106, 52, 231, 142, 159, 224, 59, 86, 207, - 90, 230, 220, 201, 5, 177, 99, 49, 170, 175, 241, 208, 124, 85, - 121, 160, 89, 198, 188, 121, 149, 108, 9, 21, 232, 146, 254, 150, - 237, 209, 123, 0, 119, 208, 18, 226, 114, 48, 218, 19, 244, 192, - 182, 3, 196, 84, 216, 246, 125, 17, 81, 7, 148, 77, 4, 15, - 87, 5, 203, 1, 35, 6, 230, 101, 124, 110, 180, 27, 76, 238, - 183, 68, 243, 153, 97, 21, 247, 43, 154, 207, 37, 162, 106, 62, - 151, 142, 137, 208, 18, 70, 214, 50, 150, 78, 188, 201, 59, 96, - 96, 143, 150, 78, 222, 37, 127, 219, 16, 154, 209, 143, 244, 187, - 246, 95, 53, 212, 88, 71, 202, 253, 159, 220, 235, 73, 44, 71, - 184, 225, 145, 101, 135, 112, 131, 172, 141, 28, 17, 90, 132, 125, - 167, 51, 115, 121, 122, 235, 214, 165, 87, 101, 25, 106, 144, 16, - 229, 235, 149, 200, 13, 241, 33, 47, 2, 98, 61, 197, 110, 136, - 33, 67, 121, 236, 39, 4, 145, 240, 197, 119, 162, 176, 2, 194, - 192, 236, 121, 65, 95, 185, 163, 52, 156, 115, 165, 0, 30, 21, - 34, 182, 84, 66, 76, 112, 248, 51, 70, 101, 202, 66, 226, 0, - 190, 25, 139, 158, 120, 173, 177, 106, 232, 68, 155, 8, 60, 5, - 95, 109, 58, 161, 207, 104, 66, 70, 57, 56, 2, 207, 201, 169, - 198, 109, 167, 65, 81, 22, 65, 18, 26, 91, 22, 25, 248, 238, - 48, 90, 73, 119, 168, 116, 58, 70, 27, 119, 115, 203, 9, 189, - 8, 52, 44, 92, 139, 220, 203, 102, 41, 163, 104, 152, 63, 234, - 59, 172, 104, 152, 63, 178, 142, 138, 84, 214, 50, 62, 58, 38, - 108, 18, 76, 156, 238, 143, 142, 191, 1, 17, 113, 65, 1, 189, - 166, 79, 219, 115, 244, 161, 83, 221, 244, 124, 119, 52, 116, 157, - 26, 144, 43, 216, 244, 212, 213, 194, 9, 61, 208, 1, 204, 47, - 128, 102, 118, 47, 223, 151, 82, 90, 175, 233, 7, 20, 165, 245, - 218, 193, 163, 138, 210, 122, 237, 196, 73, 145, 202, 90, 198, 218, - 80, 145, 183, 177, 23, 219, 184, 118, 234, 45, 242, 199, 184, 36, - 51, 150, 17, 232, 247, 236, 127, 105, 208, 217, 118, 211, 241, 147, - 54, 42, 44, 178, 2, 59, 2, 100, 138, 231, 211, 217, 229, 135, - 115, 162, 185, 235, 140, 52, 244, 189, 24, 148, 108, 60, 140, 86, - 232, 50, 58, 27, 35, 38, 194, 183, 235, 97, 176, 29, 185, 161, - 84, 203, 121, 159, 37, 234, 82, 148, 24, 73, 213, 156, 251, 41, - 155, 94, 118, 131, 132, 52, 106, 98, 104, 121, 48, 7, 78, 20, - 118, 224, 24, 191, 178, 124, 127, 244, 117, 140, 37, 13, 65, 230, - 34, 25, 140, 26, 105, 63, 192, 227, 192, 120, 114, 28, 69, 46, - 118, 54, 216, 125, 117, 149, 190, 17, 187, 59, 241, 168, 200, 126, - 151, 55, 55, 18, 198, 1, 17, 135, 30, 145, 229, 65, 24, 189, - 157, 24, 60, 82, 87, 16, 225, 0, 60, 83, 151, 3, 172, 74, - 172, 42, 68, 233, 19, 159, 77, 117, 212, 195, 190, 17, 191, 71, - 189, 218, 157, 220, 27, 34, 181, 234, 213, 238, 230, 238, 118, 148, - 169, 28, 195, 127, 170, 114, 89, 65, 136, 31, 120, 87, 172, 159, - 76, 47, 155, 118, 113, 74, 103, 52, 203, 8, 250, 197, 33, 150, - 49, 44, 35, 24, 58, 37, 82, 89, 203, 8, 236, 25, 190, 126, - 50, 184, 126, 130, 211, 211, 100, 22, 150, 79, 159, 101, 134, 122, - 52, 110, 79, 193, 172, 182, 2, 15, 5, 249, 224, 26, 183, 45, - 16, 170, 146, 211, 1, 68, 123, 220, 5, 23, 217, 6, 185, 164, - 251, 50, 150, 17, 234, 194, 242, 162, 79, 179, 140, 240, 204, 101, - 145, 50, 44, 35, 28, 185, 42, 82, 89, 203, 136, 50, 99, 188, - 73, 125, 216, 164, 168, 175, 192, 183, 93, 214, 50, 183, 245, 157, - 113, 251, 43, 137, 131, 70, 231, 70, 75, 142, 87, 101, 13, 171, - 203, 110, 3, 2, 150, 242, 101, 55, 46, 219, 152, 205, 88, 198, - 182, 110, 139, 148, 102, 25, 219, 167, 47, 136, 148, 97, 25, 219, - 151, 175, 136, 84, 214, 50, 118, 100, 27, 179, 216, 198, 157, 190, - 2, 249, 65, 116, 38, 232, 183, 140, 167, 250, 219, 246, 54, 21, - 130, 64, 206, 217, 166, 57, 2, 100, 120, 154, 32, 211, 80, 96, - 239, 0, 18, 47, 140, 189, 42, 96, 114, 40, 97, 127, 195, 61, - 231, 73, 145, 62, 97, 100, 34, 82, 37, 2, 119, 75, 246, 167, - 223, 100, 205, 144, 169, 140, 101, 60, 149, 97, 146, 250, 53, 203, - 120, 122, 66, 244, 181, 223, 176, 140, 167, 103, 207, 139, 84, 214, - 50, 158, 210, 50, 239, 93, 63, 246, 238, 233, 43, 179, 228, 115, - 232, 28, 177, 50, 223, 208, 244, 255, 159, 102, 218, 79, 232, 172, - 19, 109, 138, 241, 151, 81, 176, 233, 166, 187, 51, 28, 109, 58, - 147, 55, 110, 14, 71, 16, 159, 106, 248, 202, 149, 194, 39, 129, - 231, 15, 95, 185, 20, 77, 93, 138, 62, 242, 175, 192, 128, 60, - 201, 211, 45, 182, 158, 196, 151, 64, 99, 14, 143, 176, 63, 123, - 89, 6, 36, 43, 254, 95, 246, 222, 61, 78, 174, 226, 186, 19, - 239, 170, 186, 211, 211, 83, 163, 209, 140, 74, 243, 210, 157, 145, - 116, 213, 146, 208, 72, 154, 151, 4, 8, 144, 144, 209, 48, 122, - 48, 72, 72, 48, 146, 140, 9, 49, 162, 103, 230, 142, 212, 86, - 79, 247, 164, 187, 71, 66, 196, 73, 108, 108, 227, 64, 176, 141, - 205, 207, 254, 25, 59, 94, 25, 219, 108, 22, 76, 214, 177, 136, - 237, 176, 241, 2, 142, 3, 251, 241, 35, 254, 100, 67, 150, 93, - 63, 54, 54, 38, 142, 29, 7, 214, 1, 252, 88, 135, 15, 31, - 246, 83, 167, 234, 212, 173, 123, 251, 118, 207, 67, 2, 98, 27, - 254, 97, 78, 235, 222, 91, 175, 83, 231, 156, 58, 117, 206, 247, - 240, 58, 225, 188, 3, 239, 82, 18, 148, 19, 73, 54, 180, 33, - 201, 36, 217, 233, 242, 102, 69, 166, 100, 87, 187, 110, 37, 140, - 183, 192, 88, 56, 140, 197, 121, 39, 113, 250, 172, 95, 136, 112, - 222, 69, 156, 141, 154, 231, 27, 133, 115, 27, 161, 105, 119, 107, - 76, 36, 144, 153, 127, 157, 89, 169, 202, 170, 67, 70, 186, 205, - 116, 186, 55, 141, 73, 248, 212, 98, 36, 137, 36, 155, 187, 145, - 100, 146, 92, 185, 138, 31, 130, 102, 23, 9, 231, 14, 66, 215, - 184, 187, 107, 53, 107, 212, 239, 1, 169, 203, 13, 216, 233, 100, - 248, 9, 83, 243, 63, 65, 23, 37, 225, 179, 205, 72, 18, 73, - 182, 172, 64, 146, 73, 114, 213, 106, 254, 49, 197, 182, 77, 194, - 249, 0, 161, 235, 221, 247, 190, 98, 113, 27, 134, 243, 231, 23, - 190, 161, 186, 219, 148, 132, 254, 117, 34, 73, 36, 185, 108, 53, - 146, 76, 146, 231, 245, 240, 191, 84, 71, 244, 197, 194, 185, 135, - 208, 203, 221, 7, 66, 165, 39, 67, 70, 177, 65, 56, 83, 14, - 91, 83, 91, 63, 91, 14, 106, 61, 131, 213, 20, 132, 136, 234, - 50, 107, 184, 171, 21, 162, 142, 10, 192, 8, 142, 242, 210, 6, - 2, 69, 148, 207, 76, 249, 242, 255, 250, 116, 45, 255, 52, 151, - 66, 146, 64, 155, 70, 254, 141, 6, 207, 6, 47, 184, 84, 145, - 20, 94, 121, 200, 191, 109, 47, 182, 164, 43, 174, 176, 178, 112, - 107, 3, 104, 44, 6, 58, 167, 167, 92, 156, 201, 143, 99, 240, - 213, 166, 11, 6, 131, 115, 102, 105, 125, 149, 109, 182, 184, 14, - 102, 47, 137, 36, 145, 100, 125, 11, 146, 76, 146, 75, 113, 215, - 45, 78, 73, 178, 125, 72, 111, 169, 197, 106, 147, 221, 67, 58, - 118, 240, 75, 56, 173, 75, 136, 228, 189, 36, 241, 215, 132, 184, - 27, 107, 217, 74, 153, 8, 131, 52, 114, 86, 151, 32, 194, 185, - 151, 212, 53, 243, 183, 17, 238, 212, 129, 219, 229, 62, 66, 151, - 185, 69, 79, 249, 207, 161, 138, 92, 224, 78, 82, 78, 197, 253, - 133, 50, 66, 157, 234, 115, 154, 54, 41, 109, 219, 121, 27, 128, - 189, 249, 37, 149, 205, 23, 198, 12, 52, 168, 151, 249, 146, 95, - 198, 208, 48, 57, 214, 58, 133, 51, 115, 31, 161, 173, 72, 82, - 73, 118, 116, 242, 245, 208, 63, 34, 156, 7, 8, 109, 116, 187, - 2, 27, 23, 20, 146, 100, 52, 5, 115, 106, 62, 68, 212, 179, - 73, 36, 169, 36, 27, 56, 191, 71, 141, 148, 10, 231, 179, 242, - 75, 31, 32, 49, 159, 194, 77, 238, 29, 156, 57, 122, 20, 60, - 15, 38, 215, 27, 192, 72, 180, 23, 84, 71, 124, 100, 243, 227, - 133, 98, 17, 210, 18, 1, 251, 23, 126, 4, 87, 13, 150, 176, - 230, 193, 251, 21, 47, 129, 195, 86, 189, 226, 77, 230, 50, 199, - 125, 51, 2, 57, 218, 207, 6, 35, 80, 93, 110, 224, 252, 63, - 171, 17, 48, 225, 124, 158, 208, 69, 238, 233, 184, 17, 192, 73, - 192, 159, 144, 204, 13, 217, 145, 150, 194, 134, 72, 202, 153, 242, - 120, 97, 202, 199, 142, 96, 122, 212, 214, 216, 33, 42, 5, 90, - 40, 234, 63, 20, 192, 18, 247, 66, 131, 198, 161, 109, 132, 151, - 237, 241, 153, 225, 48, 2, 29, 174, 71, 146, 74, 146, 55, 242, - 163, 48, 26, 71, 56, 255, 69, 142, 230, 186, 152, 193, 104, 179, - 71, 181, 36, 57, 50, 51, 166, 138, 185, 106, 107, 121, 50, 155, - 207, 150, 142, 1, 46, 171, 10, 137, 152, 2, 32, 2, 185, 101, - 183, 130, 10, 41, 204, 4, 221, 112, 8, 180, 132, 221, 112, 168, - 36, 121, 35, 255, 4, 133, 126, 212, 9, 231, 203, 146, 47, 238, - 162, 145, 142, 76, 100, 39, 84, 24, 22, 26, 94, 97, 255, 208, - 161, 99, 246, 169, 211, 28, 143, 114, 57, 5, 220, 30, 58, 158, - 150, 122, 1, 24, 77, 109, 141, 50, 20, 30, 242, 52, 206, 76, - 111, 104, 124, 211, 69, 127, 42, 35, 21, 64, 78, 33, 144, 135, - 26, 0, 32, 126, 235, 112, 120, 50, 83, 146, 223, 145, 7, 193, - 105, 96, 222, 190, 184, 131, 96, 126, 50, 123, 20, 237, 186, 0, - 174, 54, 204, 158, 48, 94, 109, 215, 133, 62, 169, 231, 172, 142, - 192, 36, 33, 99, 214, 81, 73, 54, 112, 254, 247, 4, 2, 125, - 147, 95, 37, 137, 183, 81, 226, 62, 70, 188, 17, 149, 125, 171, - 79, 158, 218, 57, 160, 84, 93, 143, 118, 40, 12, 239, 91, 15, - 204, 63, 86, 42, 228, 16, 55, 198, 27, 203, 129, 96, 71, 160, - 224, 138, 51, 115, 32, 206, 2, 163, 40, 148, 119, 107, 154, 211, - 255, 14, 91, 186, 228, 141, 21, 202, 199, 180, 123, 80, 71, 211, - 73, 245, 47, 207, 255, 165, 130, 222, 133, 249, 66, 153, 123, 195, - 251, 214, 73, 41, 96, 4, 165, 35, 165, 201, 87, 73, 170, 131, - 127, 151, 234, 184, 228, 228, 19, 132, 62, 73, 28, 247, 27, 115, - 241, 80, 91, 215, 171, 198, 77, 205, 43, 252, 212, 214, 229, 98, - 212, 87, 189, 80, 87, 181, 213, 112, 105, 224, 119, 237, 139, 74, - 168, 247, 89, 211, 91, 141, 83, 251, 42, 187, 174, 155, 48, 160, - 219, 121, 2, 237, 80, 136, 232, 118, 158, 32, 13, 77, 72, 50, - 73, 182, 44, 1, 59, 148, 208, 68, 74, 46, 135, 120, 82, 219, - 161, 68, 251, 175, 157, 191, 71, 59, 148, 104, 7, 182, 243, 63, - 164, 29, 122, 177, 14, 4, 119, 190, 73, 104, 155, 187, 1, 29, - 216, 232, 179, 238, 245, 74, 190, 31, 147, 130, 96, 250, 70, 234, - 224, 85, 236, 27, 129, 47, 233, 56, 39, 136, 241, 118, 190, 73, - 150, 182, 242, 167, 136, 142, 242, 118, 254, 129, 208, 118, 247, 239, - 72, 212, 243, 102, 25, 245, 182, 13, 167, 218, 215, 119, 248, 144, - 29, 223, 15, 119, 147, 217, 227, 161, 94, 249, 55, 149, 139, 25, - 92, 164, 35, 211, 153, 108, 177, 164, 81, 167, 10, 249, 192, 210, - 203, 40, 204, 205, 32, 20, 150, 71, 90, 238, 85, 21, 115, 179, - 86, 97, 237, 169, 177, 108, 30, 195, 205, 131, 162, 212, 253, 99, - 153, 146, 127, 36, 196, 25, 56, 33, 52, 9, 99, 108, 64, 146, - 72, 146, 47, 65, 146, 73, 178, 181, 77, 74, 122, 136, 39, 79, - 126, 159, 208, 31, 16, 199, 189, 54, 228, 78, 205, 219, 187, 100, - 78, 254, 84, 5, 207, 2, 118, 70, 177, 15, 202, 201, 233, 227, - 89, 19, 198, 83, 59, 223, 15, 150, 73, 234, 159, 239, 147, 134, - 14, 36, 153, 36, 221, 46, 205, 66, 44, 37, 187, 213, 253, 3, - 195, 66, 202, 253, 232, 60, 29, 176, 16, 83, 44, 244, 143, 146, - 133, 242, 58, 12, 219, 249, 103, 66, 175, 112, 111, 244, 84, 48, - 128, 84, 181, 99, 254, 177, 172, 190, 241, 11, 237, 250, 179, 243, - 250, 168, 62, 59, 117, 208, 32, 142, 72, 170, 178, 127, 38, 13, - 203, 144, 100, 146, 236, 94, 142, 100, 74, 146, 43, 246, 232, 222, - 43, 255, 154, 243, 207, 100, 229, 110, 254, 22, 232, 125, 157, 112, - 158, 37, 116, 167, 251, 219, 175, 232, 41, 83, 117, 166, 78, 53, - 134, 61, 151, 26, 228, 89, 60, 86, 18, 90, 199, 36, 217, 137, - 3, 169, 75, 73, 210, 29, 214, 61, 87, 94, 55, 231, 89, 210, - 117, 57, 255, 160, 18, 191, 73, 128, 42, 28, 113, 111, 165, 115, - 155, 249, 169, 168, 89, 172, 170, 45, 123, 135, 181, 200, 206, 148, - 74, 217, 82, 217, 155, 8, 66, 253, 51, 249, 76, 238, 84, 88, - 85, 207, 148, 11, 242, 212, 56, 238, 141, 205, 28, 237, 155, 204, - 230, 148, 193, 1, 247, 22, 0, 32, 239, 77, 248, 229, 64, 219, - 131, 148, 31, 47, 102, 203, 224, 107, 86, 247, 87, 82, 9, 233, - 229, 149, 103, 203, 153, 177, 169, 44, 184, 214, 79, 24, 4, 243, - 83, 224, 242, 29, 243, 149, 209, 86, 208, 44, 109, 238, 81, 224, - 9, 249, 21, 79, 54, 2, 103, 174, 225, 125, 37, 51, 203, 73, - 53, 47, 75, 145, 4, 204, 198, 86, 23, 73, 192, 108, 92, 190, - 2, 201, 148, 36, 87, 94, 161, 103, 89, 249, 166, 156, 23, 136, - 183, 135, 63, 175, 36, 87, 189, 112, 94, 38, 116, 200, 125, 154, - 84, 158, 240, 236, 189, 58, 215, 99, 30, 15, 206, 121, 179, 28, - 243, 108, 77, 88, 227, 172, 23, 142, 105, 138, 59, 192, 69, 195, - 152, 212, 9, 81, 114, 76, 21, 189, 83, 95, 7, 131, 78, 34, - 73, 36, 89, 143, 178, 189, 158, 73, 114, 105, 43, 146, 41, 73, - 182, 237, 208, 83, 168, 124, 105, 206, 203, 164, 253, 50, 56, 152, - 17, 145, 124, 7, 77, 220, 75, 229, 193, 76, 177, 169, 119, 242, - 216, 169, 136, 229, 2, 6, 95, 176, 212, 250, 96, 38, 117, 202, - 59, 104, 93, 59, 127, 151, 52, 246, 165, 189, 225, 188, 155, 210, - 181, 238, 73, 243, 161, 121, 31, 204, 108, 83, 96, 150, 211, 25, - 87, 86, 87, 244, 116, 166, 212, 240, 187, 41, 245, 144, 164, 146, - 92, 189, 134, 255, 25, 133, 94, 18, 225, 188, 151, 210, 101, 238, - 61, 212, 59, 152, 157, 202, 230, 50, 197, 152, 139, 16, 239, 164, - 95, 244, 189, 194, 152, 2, 177, 132, 16, 24, 111, 42, 147, 205, - 67, 88, 253, 88, 49, 147, 31, 63, 198, 189, 30, 80, 74, 153, - 163, 153, 108, 190, 84, 246, 50, 234, 150, 201, 24, 108, 51, 121, - 181, 119, 228, 87, 21, 134, 166, 169, 56, 180, 190, 159, 123, 61, - 210, 20, 132, 138, 161, 8, 28, 63, 81, 152, 25, 43, 107, 237, - 104, 88, 18, 140, 65, 121, 228, 202, 42, 243, 154, 195, 6, 46, - 78, 201, 211, 68, 89, 95, 239, 20, 198, 199, 103, 138, 32, 146, - 99, 110, 116, 214, 115, 111, 40, 40, 218, 18, 51, 82, 123, 159, - 15, 12, 95, 227, 21, 103, 242, 37, 139, 221, 234, 148, 237, 240, - 94, 170, 143, 187, 4, 78, 169, 239, 165, 29, 157, 252, 25, 53, - 161, 84, 56, 31, 162, 212, 117, 255, 247, 60, 38, 212, 110, 84, - 182, 216, 83, 90, 15, 59, 11, 196, 69, 175, 60, 117, 99, 170, - 216, 240, 190, 158, 210, 250, 126, 175, 231, 144, 70, 111, 47, 169, - 211, 46, 192, 126, 232, 162, 242, 16, 72, 174, 196, 145, 246, 134, - 113, 15, 170, 23, 224, 122, 205, 88, 118, 67, 126, 50, 91, 156, - 82, 0, 62, 101, 115, 125, 133, 103, 96, 248, 247, 194, 76, 126, - 34, 155, 63, 202, 189, 201, 204, 120, 185, 32, 13, 22, 176, 106, - 32, 85, 10, 36, 36, 224, 148, 204, 228, 101, 27, 195, 251, 74, - 222, 137, 82, 236, 191, 241, 40, 195, 248, 231, 100, 49, 36, 255, - 126, 136, 210, 54, 36, 97, 246, 59, 151, 241, 199, 24, 44, 6, - 19, 206, 105, 74, 151, 186, 159, 103, 230, 96, 165, 58, 5, 163, - 55, 146, 190, 80, 237, 172, 35, 79, 58, 211, 82, 211, 4, 122, - 99, 28, 99, 113, 80, 192, 79, 73, 59, 64, 1, 196, 150, 244, - 188, 235, 67, 164, 82, 84, 200, 161, 190, 151, 157, 228, 166, 33, - 213, 141, 82, 89, 221, 60, 229, 11, 51, 71, 143, 105, 65, 48, - 149, 153, 240, 131, 190, 65, 77, 130, 146, 87, 128, 112, 40, 200, - 77, 83, 151, 142, 112, 114, 154, 246, 139, 89, 192, 28, 205, 89, - 183, 184, 37, 185, 159, 70, 38, 117, 78, 155, 18, 200, 80, 115, - 4, 208, 245, 16, 89, 41, 220, 143, 0, 167, 63, 88, 5, 110, - 194, 167, 76, 60, 84, 149, 249, 83, 142, 252, 76, 89, 139, 233, - 94, 14, 177, 2, 190, 130, 147, 9, 174, 159, 213, 191, 150, 188, - 202, 184, 74, 175, 80, 244, 98, 162, 42, 205, 42, 75, 59, 240, - 52, 85, 94, 99, 73, 82, 73, 46, 17, 252, 123, 74, 210, 58, - 194, 249, 20, 165, 237, 238, 127, 183, 220, 42, 88, 35, 36, 83, - 138, 28, 71, 229, 114, 246, 123, 61, 1, 90, 181, 50, 22, 34, - 166, 108, 73, 85, 161, 48, 6, 4, 72, 150, 241, 162, 174, 68, - 83, 40, 70, 191, 40, 173, 142, 153, 188, 198, 241, 193, 242, 32, - 240, 25, 235, 196, 94, 208, 199, 199, 131, 217, 252, 113, 188, 186, - 192, 172, 140, 169, 76, 126, 198, 106, 4, 78, 4, 235, 205, 4, - 72, 179, 241, 83, 148, 46, 65, 146, 74, 178, 181, 205, 228, 71, - 188, 247, 102, 126, 225, 28, 67, 252, 139, 254, 56, 148, 3, 88, - 120, 114, 68, 87, 52, 189, 1, 202, 57, 235, 127, 156, 181, 188, - 177, 59, 215, 142, 226, 141, 158, 126, 237, 162, 57, 190, 22, 28, - 61, 244, 139, 11, 78, 28, 73, 127, 156, 240, 142, 97, 88, 142, - 224, 72, 53, 170, 146, 220, 68, 15, 111, 10, 90, 66, 220, 17, - 8, 160, 166, 163, 139, 130, 127, 25, 153, 16, 151, 114, 30, 208, - 26, 8, 37, 38, 56, 223, 106, 194, 122, 94, 44, 231, 28, 243, - 234, 12, 122, 79, 131, 254, 101, 100, 34, 253, 46, 194, 151, 95, - 158, 41, 143, 31, 139, 246, 179, 132, 29, 221, 197, 83, 250, 113, - 85, 50, 186, 113, 243, 250, 202, 198, 171, 140, 114, 212, 188, 26, - 233, 7, 141, 233, 199, 138, 106, 253, 80, 85, 214, 196, 27, 120, - 163, 229, 18, 209, 125, 169, 61, 17, 246, 11, 98, 53, 111, 82, - 101, 40, 142, 148, 11, 199, 253, 124, 169, 147, 66, 1, 236, 69, - 234, 199, 67, 240, 91, 250, 110, 194, 59, 84, 17, 177, 202, 37, - 27, 10, 45, 4, 153, 125, 33, 212, 106, 218, 171, 177, 141, 55, - 234, 62, 72, 134, 214, 139, 89, 153, 223, 97, 144, 230, 71, 185, - 122, 92, 254, 157, 190, 128, 47, 219, 157, 205, 195, 221, 78, 101, - 231, 42, 80, 157, 168, 202, 42, 72, 159, 33, 220, 195, 17, 41, - 32, 250, 152, 69, 222, 194, 91, 149, 141, 148, 205, 31, 61, 18, - 25, 164, 254, 218, 82, 243, 64, 240, 190, 88, 199, 155, 51, 19, - 19, 71, 236, 117, 81, 179, 186, 56, 51, 97, 183, 35, 250, 184, - 40, 250, 83, 133, 19, 126, 232, 89, 6, 207, 46, 81, 255, 98, - 61, 158, 222, 197, 87, 92, 149, 41, 30, 15, 126, 58, 136, 198, - 31, 246, 120, 117, 197, 98, 52, 84, 76, 119, 250, 30, 179, 1, - 3, 39, 202, 124, 62, 32, 46, 231, 141, 214, 182, 174, 190, 249, - 130, 207, 235, 111, 148, 131, 124, 167, 89, 118, 224, 253, 225, 29, - 24, 124, 169, 52, 175, 158, 218, 219, 148, 214, 222, 166, 21, 115, - 81, 117, 155, 86, 116, 54, 19, 218, 165, 161, 190, 234, 93, 122, - 153, 130, 238, 210, 51, 86, 99, 155, 90, 189, 104, 12, 102, 171, - 148, 254, 28, 225, 221, 193, 231, 67, 201, 23, 243, 152, 142, 107, - 120, 11, 116, 195, 82, 202, 122, 245, 86, 197, 119, 197, 106, 72, - 125, 173, 185, 28, 73, 221, 153, 101, 106, 254, 156, 240, 116, 100, - 110, 172, 183, 231, 183, 152, 87, 86, 44, 102, 127, 173, 197, 172, - 156, 164, 185, 175, 232, 12, 95, 93, 179, 215, 122, 89, 247, 243, - 37, 209, 249, 196, 181, 157, 125, 66, 71, 91, 34, 115, 89, 74, - 255, 14, 111, 83, 45, 14, 105, 45, 141, 243, 211, 197, 147, 211, - 153, 162, 159, 47, 219, 115, 163, 127, 18, 219, 120, 10, 181, 186, - 145, 157, 21, 141, 227, 23, 213, 171, 230, 133, 244, 24, 239, 178, - 70, 138, 79, 153, 133, 25, 174, 152, 243, 24, 224, 178, 216, 62, - 7, 147, 157, 126, 19, 239, 142, 111, 67, 79, 227, 197, 188, 1, - 251, 131, 211, 87, 99, 4, 163, 193, 195, 155, 255, 182, 129, 167, - 70, 181, 233, 37, 222, 204, 91, 162, 122, 82, 204, 93, 43, 187, - 53, 149, 86, 58, 33, 126, 143, 183, 199, 235, 98, 49, 16, 3, - 110, 87, 203, 122, 112, 7, 231, 254, 130, 154, 162, 116, 66, 142, - 46, 170, 130, 227, 70, 87, 69, 77, 207, 58, 186, 12, 23, 149, - 106, 84, 108, 140, 201, 30, 172, 166, 108, 103, 109, 34, 203, 151, - 85, 85, 185, 98, 115, 245, 161, 84, 211, 207, 110, 123, 133, 137, - 176, 75, 218, 204, 233, 132, 240, 121, 71, 21, 77, 41, 98, 230, - 190, 182, 82, 173, 209, 140, 225, 56, 43, 145, 119, 238, 10, 38, - 110, 194, 130, 135, 42, 56, 206, 210, 43, 179, 112, 92, 165, 182, - 156, 133, 227, 98, 84, 86, 58, 33, 114, 40, 141, 162, 233, 154, - 243, 20, 187, 238, 236, 178, 48, 157, 16, 119, 144, 144, 36, 138, - 202, 92, 113, 193, 172, 35, 136, 81, 44, 238, 133, 243, 124, 203, - 12, 254, 36, 111, 141, 147, 89, 162, 175, 230, 7, 163, 242, 211, - 141, 153, 170, 90, 162, 48, 157, 88, 72, 42, 227, 63, 252, 182, - 74, 101, 252, 171, 215, 83, 25, 95, 79, 101, 124, 53, 82, 25, - 215, 6, 169, 140, 27, 130, 84, 198, 203, 130, 84, 198, 161, 32, - 149, 241, 114, 157, 191, 184, 44, 200, 95, 148, 127, 254, 128, 114, - 154, 76, 8, 103, 117, 226, 70, 226, 254, 47, 234, 29, 212, 21, - 49, 33, 108, 64, 42, 244, 80, 16, 149, 100, 212, 168, 114, 12, - 138, 152, 27, 71, 118, 38, 184, 73, 57, 238, 159, 242, 210, 234, - 152, 216, 7, 39, 219, 180, 186, 39, 197, 59, 71, 93, 11, 90, - 215, 100, 215, 21, 133, 102, 202, 38, 230, 192, 186, 239, 138, 202, - 200, 126, 238, 29, 144, 207, 159, 204, 106, 12, 175, 80, 125, 80, - 184, 148, 2, 38, 63, 188, 127, 232, 240, 161, 43, 118, 237, 63, - 52, 50, 60, 116, 104, 215, 78, 93, 186, 12, 43, 8, 200, 54, - 148, 171, 12, 154, 245, 1, 211, 198, 30, 28, 84, 65, 219, 61, - 52, 178, 111, 215, 206, 35, 87, 143, 238, 50, 172, 98, 125, 71, - 223, 149, 217, 81, 17, 30, 108, 62, 165, 162, 39, 84, 98, 98, - 50, 65, 4, 91, 157, 106, 225, 63, 167, 220, 73, 2, 208, 228, - 0, 221, 227, 222, 77, 245, 200, 228, 188, 229, 253, 147, 214, 71, - 116, 112, 148, 169, 222, 102, 42, 129, 171, 202, 109, 65, 91, 19, - 186, 118, 71, 16, 241, 142, 1, 151, 102, 113, 142, 249, 25, 201, - 94, 33, 220, 60, 8, 234, 12, 175, 78, 176, 67, 85, 121, 204, - 242, 140, 220, 120, 186, 66, 102, 175, 103, 142, 217, 56, 56, 221, - 79, 237, 147, 53, 61, 50, 210, 69, 221, 152, 143, 236, 244, 50, - 185, 162, 159, 153, 56, 165, 157, 181, 189, 122, 98, 75, 222, 208, - 190, 209, 93, 67, 59, 175, 59, 178, 235, 77, 35, 7, 15, 29, - 228, 161, 213, 217, 124, 149, 183, 125, 187, 117, 227, 95, 242, 182, - 159, 197, 127, 16, 23, 157, 84, 105, 135, 3, 201, 118, 164, 168, - 96, 3, 29, 253, 72, 49, 193, 6, 46, 25, 230, 119, 170, 37, - 34, 194, 217, 66, 47, 218, 228, 190, 61, 88, 35, 147, 83, 107, - 185, 10, 84, 112, 128, 206, 193, 45, 78, 143, 207, 125, 242, 51, - 234, 123, 125, 112, 211, 53, 17, 89, 11, 30, 183, 24, 179, 174, - 133, 242, 18, 131, 195, 40, 168, 147, 143, 129, 11, 65, 226, 175, - 170, 154, 154, 41, 121, 177, 22, 175, 214, 155, 253, 120, 118, 232, - 199, 201, 35, 68, 176, 45, 201, 110, 164, 168, 96, 91, 150, 111, - 69, 138, 9, 118, 81, 115, 31, 191, 20, 230, 142, 10, 182, 149, - 238, 113, 7, 180, 127, 71, 7, 84, 232, 234, 224, 249, 66, 190, - 207, 108, 143, 16, 199, 235, 111, 81, 34, 216, 86, 179, 72, 240, - 49, 179, 72, 148, 9, 182, 245, 146, 97, 190, 7, 218, 97, 130, - 109, 167, 123, 221, 173, 222, 161, 98, 38, 95, 210, 69, 205, 2, - 214, 179, 152, 18, 81, 49, 97, 155, 239, 30, 217, 63, 180, 111, - 228, 183, 48, 9, 39, 169, 50, 193, 182, 39, 59, 145, 162, 130, - 109, 95, 182, 25, 41, 217, 202, 246, 61, 252, 114, 104, 210, 17, - 206, 14, 58, 212, 227, 94, 96, 198, 166, 1, 221, 177, 6, 110, - 102, 246, 1, 58, 68, 176, 29, 201, 149, 72, 81, 193, 118, 120, - 59, 144, 98, 130, 13, 53, 175, 225, 31, 33, 208, 92, 157, 112, - 118, 209, 221, 61, 238, 31, 17, 111, 212, 31, 159, 41, 150, 178, - 39, 252, 220, 41, 111, 42, 83, 60, 14, 55, 253, 161, 235, 219, - 82, 44, 64, 163, 29, 178, 82, 226, 158, 185, 173, 236, 133, 2, - 238, 250, 202, 100, 42, 40, 227, 30, 60, 191, 46, 244, 193, 177, - 76, 201, 207, 101, 243, 190, 25, 70, 29, 17, 108, 87, 114, 57, - 82, 84, 176, 93, 43, 46, 69, 138, 9, 182, 187, 121, 13, 255, - 128, 26, 70, 82, 176, 189, 116, 143, 187, 197, 27, 154, 86, 165, - 138, 195, 9, 139, 0, 172, 91, 125, 218, 148, 44, 56, 100, 103, - 195, 157, 3, 89, 144, 36, 130, 237, 53, 108, 150, 164, 130, 237, - 53, 108, 150, 100, 130, 237, 189, 100, 152, 95, 7, 189, 175, 23, - 206, 85, 116, 255, 38, 119, 175, 55, 84, 46, 76, 233, 59, 147, - 140, 25, 201, 152, 220, 69, 21, 249, 122, 179, 140, 73, 55, 84, - 79, 4, 187, 202, 236, 169, 122, 42, 216, 85, 102, 79, 213, 51, - 193, 246, 55, 247, 241, 17, 232, 68, 74, 56, 215, 208, 209, 180, - 187, 45, 58, 135, 246, 245, 206, 220, 26, 77, 17, 193, 174, 73, - 118, 33, 69, 5, 187, 166, 251, 98, 164, 152, 96, 163, 205, 43, - 248, 17, 104, 180, 65, 56, 135, 233, 27, 183, 184, 215, 204, 101, - 228, 182, 11, 38, 166, 39, 60, 174, 43, 13, 68, 176, 195, 201, - 85, 72, 81, 193, 14, 167, 119, 34, 197, 4, 123, 99, 243, 102, - 254, 93, 197, 67, 92, 56, 55, 208, 35, 3, 238, 219, 137, 22, - 200, 129, 60, 54, 222, 8, 157, 216, 104, 146, 189, 16, 215, 64, - 217, 114, 65, 251, 42, 135, 10, 174, 170, 252, 82, 185, 79, 173, - 153, 250, 81, 155, 119, 120, 46, 232, 7, 52, 208, 73, 93, 66, - 2, 238, 30, 145, 33, 205, 209, 225, 172, 84, 83, 192, 144, 156, - 8, 118, 67, 210, 69, 138, 10, 118, 67, 215, 22, 164, 152, 96, - 71, 154, 55, 242, 91, 137, 194, 185, 246, 19, 101, 226, 174, 7, - 196, 137, 112, 45, 112, 217, 211, 168, 68, 239, 231, 155, 15, 156, - 75, 109, 42, 187, 140, 104, 11, 126, 106, 37, 255, 177, 169, 170, - 114, 156, 238, 118, 191, 67, 172, 134, 66, 161, 140, 99, 190, 66, - 1, 14, 242, 219, 195, 242, 166, 95, 163, 219, 194, 249, 8, 241, - 77, 175, 26, 186, 78, 95, 29, 134, 212, 174, 42, 134, 147, 29, - 151, 210, 80, 93, 7, 75, 25, 53, 178, 51, 48, 26, 185, 151, - 134, 72, 141, 190, 77, 155, 207, 191, 224, 194, 45, 23, 93, 124, - 201, 96, 186, 31, 210, 219, 149, 169, 169, 74, 189, 151, 148, 57, - 42, 79, 77, 123, 14, 143, 236, 4, 14, 178, 115, 163, 223, 172, - 19, 164, 143, 252, 118, 223, 155, 55, 172, 9, 161, 25, 28, 15, - 161, 25, 28, 111, 104, 183, 208, 12, 142, 47, 115, 45, 180, 235, - 227, 93, 187, 194, 96, 6, 199, 151, 15, 243, 245, 8, 93, 144, - 167, 221, 110, 183, 61, 103, 96, 39, 192, 73, 168, 228, 23, 45, - 216, 235, 164, 124, 118, 145, 149, 66, 158, 111, 234, 176, 82, 200, - 243, 110, 23, 255, 2, 65, 220, 235, 18, 237, 116, 239, 35, 177, - 192, 215, 38, 63, 77, 51, 79, 191, 55, 234, 203, 195, 19, 94, - 236, 159, 191, 197, 27, 58, 56, 60, 50, 98, 229, 142, 64, 52, - 123, 49, 147, 159, 40, 76, 121, 135, 15, 171, 192, 92, 121, 72, - 152, 154, 242, 243, 19, 112, 38, 58, 100, 125, 16, 46, 246, 33, - 3, 121, 194, 159, 154, 46, 148, 117, 226, 82, 198, 187, 49, 240, - 248, 222, 168, 170, 30, 169, 178, 161, 33, 20, 237, 82, 40, 231, - 188, 212, 176, 212, 202, 57, 47, 181, 119, 240, 109, 16, 217, 93, - 119, 18, 128, 7, 251, 171, 236, 129, 120, 103, 94, 0, 235, 124, - 50, 181, 86, 35, 31, 39, 4, 123, 43, 29, 116, 115, 248, 153, - 210, 245, 217, 55, 247, 7, 253, 12, 146, 10, 245, 129, 112, 106, - 186, 124, 74, 74, 14, 147, 100, 104, 61, 155, 205, 243, 10, 148, - 146, 195, 211, 242, 161, 11, 7, 7, 189, 176, 69, 37, 155, 118, - 100, 219, 134, 74, 10, 246, 214, 198, 180, 133, 27, 253, 214, 213, - 27, 45, 220, 232, 183, 246, 15, 240, 159, 16, 140, 23, 190, 133, - 208, 78, 247, 123, 191, 42, 11, 28, 4, 181, 115, 175, 84, 46, - 22, 242, 71, 115, 167, 236, 239, 203, 94, 77, 23, 166, 103, 114, - 10, 24, 57, 91, 178, 131, 189, 116, 152, 243, 45, 225, 48, 231, - 91, 72, 195, 82, 43, 204, 249, 22, 210, 222, 193, 47, 7, 32, - 222, 228, 187, 73, 226, 3, 132, 184, 23, 40, 68, 30, 101, 135, - 207, 206, 28, 42, 206, 29, 66, 236, 229, 4, 191, 155, 164, 206, - 227, 107, 52, 56, 175, 115, 27, 161, 231, 185, 237, 33, 17, 170, - 163, 38, 116, 31, 41, 20, 173, 190, 13, 139, 86, 83, 185, 156, - 206, 109, 164, 177, 13, 73, 200, 8, 108, 95, 133, 36, 100, 4, - 174, 89, 203, 31, 165, 26, 248, 214, 121, 63, 161, 107, 220, 207, - 82, 239, 64, 94, 27, 241, 222, 180, 228, 183, 204, 248, 49, 19, - 160, 17, 61, 31, 150, 116, 92, 83, 6, 107, 97, 149, 237, 163, - 71, 54, 95, 42, 251, 153, 9, 200, 80, 40, 89, 53, 11, 48, - 192, 39, 151, 41, 30, 245, 185, 210, 226, 202, 144, 45, 250, 25, - 125, 160, 182, 179, 186, 35, 103, 153, 146, 55, 230, 159, 130, 66, - 78, 185, 92, 225, 36, 128, 208, 78, 201, 243, 39, 120, 53, 212, - 151, 117, 174, 154, 174, 102, 57, 94, 28, 155, 57, 10, 120, 194, - 155, 6, 183, 92, 112, 193, 37, 91, 240, 84, 169, 47, 188, 175, - 207, 190, 89, 101, 240, 200, 102, 38, 74, 74, 244, 153, 121, 150, - 219, 145, 123, 27, 118, 22, 192, 189, 149, 43, 28, 213, 197, 180, - 84, 29, 203, 13, 102, 250, 137, 3, 83, 104, 200, 58, 73, 234, - 154, 225, 128, 171, 235, 188, 159, 136, 149, 72, 50, 73, 166, 87, - 131, 48, 97, 34, 249, 33, 146, 248, 99, 66, 220, 190, 42, 210, - 36, 234, 210, 183, 88, 133, 17, 225, 124, 136, 164, 86, 2, 84, - 61, 147, 172, 242, 97, 66, 247, 184, 29, 182, 64, 47, 23, 244, - 128, 117, 103, 1, 160, 86, 62, 183, 8, 73, 34, 201, 166, 14, - 36, 153, 36, 221, 46, 36, 83, 146, 236, 222, 13, 161, 157, 12, - 19, 10, 62, 76, 86, 236, 228, 155, 52, 136, 173, 243, 81, 66, - 123, 221, 213, 112, 0, 196, 66, 207, 58, 146, 85, 71, 97, 66, - 251, 19, 166, 3, 36, 9, 239, 96, 19, 4, 62, 209, 189, 14, - 73, 38, 201, 13, 27, 249, 118, 128, 180, 77, 158, 38, 128, 113, - 53, 80, 101, 122, 42, 47, 36, 172, 9, 114, 136, 112, 78, 147, - 212, 42, 126, 190, 70, 164, 117, 238, 33, 116, 187, 187, 54, 132, - 240, 28, 62, 170, 161, 205, 168, 123, 11, 120, 180, 242, 173, 20, - 146, 144, 162, 168, 51, 48, 0, 145, 214, 185, 135, 104, 252, 32, - 7, 166, 235, 30, 34, 46, 133, 233, 114, 112, 186, 238, 33, 173, - 91, 249, 78, 192, 172, 77, 222, 75, 18, 159, 39, 68, 30, 71, - 106, 174, 118, 197, 173, 135, 53, 170, 58, 200, 86, 76, 245, 240, - 255, 70, 16, 155, 246, 126, 66, 175, 114, 255, 130, 212, 24, 87, - 102, 98, 98, 64, 197, 20, 216, 167, 198, 114, 97, 96, 178, 88, - 152, 234, 229, 144, 107, 49, 82, 97, 14, 133, 146, 137, 108, 112, - 122, 48, 111, 20, 246, 137, 14, 74, 181, 155, 131, 16, 48, 5, - 176, 165, 189, 115, 128, 22, 118, 50, 83, 156, 130, 67, 95, 166, - 116, 60, 108, 145, 7, 192, 185, 247, 135, 129, 115, 239, 39, 13, - 203, 45, 224, 220, 251, 137, 183, 10, 201, 148, 36, 211, 251, 96, - 170, 235, 112, 170, 239, 39, 107, 174, 228, 127, 74, 16, 90, 247, - 51, 82, 116, 254, 7, 53, 47, 165, 202, 137, 209, 251, 29, 122, - 216, 91, 101, 10, 70, 84, 197, 92, 245, 110, 41, 252, 182, 20, - 128, 232, 97, 210, 159, 153, 208, 152, 74, 218, 7, 226, 149, 178, - 57, 63, 95, 206, 157, 226, 94, 246, 104, 190, 128, 78, 21, 163, - 187, 198, 79, 5, 240, 189, 14, 244, 215, 70, 243, 253, 12, 10, - 17, 133, 230, 251, 25, 34, 86, 89, 104, 190, 159, 145, 50, 252, - 49, 53, 86, 42, 156, 207, 17, 186, 222, 253, 124, 100, 172, 211, - 69, 255, 68, 182, 48, 83, 202, 5, 29, 140, 142, 95, 113, 5, - 12, 159, 47, 96, 252, 10, 141, 72, 127, 90, 79, 198, 130, 231, - 128, 58, 48, 14, 67, 214, 73, 210, 204, 129, 92, 209, 207, 17, - 177, 6, 73, 38, 201, 117, 61, 242, 16, 64, 157, 164, 72, 126, - 145, 36, 30, 33, 196, 253, 54, 169, 178, 185, 170, 220, 244, 233, - 36, 179, 67, 133, 224, 2, 99, 244, 234, 225, 94, 111, 28, 64, - 67, 74, 94, 222, 247, 39, 32, 185, 209, 220, 227, 88, 115, 208, - 95, 242, 203, 193, 151, 140, 26, 204, 228, 166, 224, 47, 131, 127, - 191, 117, 135, 254, 75, 23, 237, 84, 24, 83, 42, 78, 81, 99, - 202, 32, 169, 151, 46, 95, 152, 202, 230, 43, 84, 47, 72, 128, - 36, 17, 206, 23, 165, 141, 176, 131, 59, 78, 82, 10, 128, 135, - 9, 29, 118, 55, 87, 217, 255, 58, 215, 46, 12, 244, 150, 157, - 248, 61, 132, 142, 78, 194, 206, 123, 24, 119, 94, 18, 118, 222, - 195, 104, 227, 36, 97, 231, 61, 44, 109, 28, 77, 166, 36, 217, - 121, 57, 236, 188, 36, 238, 188, 135, 137, 187, 3, 84, 90, 189, - 72, 126, 153, 36, 190, 85, 67, 165, 69, 93, 234, 150, 108, 171, - 135, 156, 202, 212, 74, 62, 204, 29, 167, 94, 142, 236, 49, 57, - 178, 11, 67, 35, 83, 145, 15, 161, 1, 198, 238, 93, 232, 111, - 61, 12, 238, 49, 28, 92, 61, 12, 238, 49, 28, 92, 61, 12, - 238, 49, 28, 92, 61, 12, 238, 49, 28, 92, 61, 14, 238, 49, - 57, 184, 219, 41, 244, 137, 8, 231, 235, 132, 94, 225, 190, 88, - 25, 25, 91, 46, 104, 115, 73, 178, 147, 134, 101, 203, 228, 77, - 186, 102, 86, 21, 160, 196, 4, 201, 9, 127, 98, 102, 218, 248, - 217, 75, 42, 3, 141, 43, 99, 54, 20, 111, 139, 238, 180, 0, - 58, 177, 242, 187, 33, 63, 183, 62, 12, 132, 121, 160, 140, 64, - 42, 216, 160, 60, 173, 142, 251, 254, 4, 164, 63, 20, 166, 167, - 11, 38, 113, 83, 249, 200, 85, 130, 99, 216, 83, 174, 28, 229, - 102, 106, 165, 42, 255, 58, 218, 18, 245, 32, 164, 190, 78, 154, - 58, 145, 100, 146, 236, 234, 70, 50, 37, 201, 229, 123, 244, 212, - 42, 120, 49, 231, 235, 100, 229, 46, 254, 75, 7, 166, 150, 66, - 66, 97, 167, 251, 99, 231, 215, 254, 108, 225, 141, 76, 77, 231, - 164, 240, 132, 108, 115, 27, 94, 10, 217, 67, 151, 105, 245, 176, - 202, 105, 222, 47, 106, 223, 145, 89, 118, 40, 136, 59, 126, 140, - 43, 73, 171, 234, 56, 121, 229, 153, 233, 156, 239, 245, 4, 61, - 238, 133, 10, 240, 55, 29, 41, 76, 98, 57, 137, 245, 105, 35, - 133, 250, 66, 103, 200, 146, 151, 193, 217, 218, 3, 179, 53, 9, - 242, 29, 135, 139, 21, 130, 103, 74, 126, 81, 190, 26, 253, 174, - 252, 192, 160, 20, 130, 113, 59, 188, 23, 46, 50, 229, 27, 129, - 113, 15, 111, 73, 81, 152, 205, 123, 53, 67, 24, 76, 42, 32, - 184, 253, 180, 192, 62, 176, 243, 64, 207, 91, 198, 143, 101, 243, - 57, 223, 95, 191, 85, 43, 50, 157, 221, 130, 179, 171, 240, 131, - 84, 90, 231, 120, 33, 127, 194, 47, 42, 137, 90, 54, 213, 188, - 21, 115, 82, 59, 153, 181, 158, 170, 180, 88, 35, 36, 40, 36, - 179, 182, 119, 240, 15, 72, 85, 147, 18, 201, 239, 146, 196, 243, - 132, 184, 231, 207, 238, 2, 176, 198, 162, 250, 173, 28, 98, 231, - 202, 165, 188, 125, 187, 18, 156, 41, 34, 156, 239, 146, 212, 90, - 16, 156, 41, 41, 56, 159, 58, 75, 193, 153, 2, 193, 249, 20, - 206, 73, 10, 4, 231, 83, 56, 39, 41, 16, 156, 79, 161, 224, - 76, 129, 224, 124, 10, 5, 103, 10, 5, 231, 83, 82, 112, 190, - 64, 160, 79, 68, 56, 63, 38, 116, 208, 253, 71, 226, 141, 162, - 8, 50, 18, 51, 114, 225, 27, 242, 136, 88, 166, 229, 172, 30, - 17, 251, 126, 50, 175, 75, 24, 25, 143, 200, 171, 234, 103, 81, - 211, 34, 173, 186, 31, 163, 69, 147, 2, 129, 249, 99, 210, 152, - 70, 18, 230, 100, 245, 70, 36, 153, 36, 251, 7, 248, 191, 170, - 25, 163, 194, 121, 78, 202, 195, 167, 126, 253, 125, 45, 122, 6, - 228, 54, 124, 46, 96, 57, 201, 51, 207, 5, 44, 39, 183, 225, - 115, 232, 108, 105, 16, 201, 159, 145, 196, 255, 157, 163, 179, 165, - 98, 27, 194, 174, 105, 32, 194, 249, 153, 52, 164, 228, 9, 186, - 65, 238, 154, 95, 16, 186, 206, 237, 8, 111, 207, 176, 183, 165, - 1, 188, 45, 191, 192, 53, 109, 128, 3, 245, 47, 208, 219, 210, - 0, 219, 228, 23, 164, 61, 141, 36, 147, 228, 90, 105, 171, 81, - 135, 139, 228, 139, 36, 241, 110, 74, 220, 205, 179, 218, 70, 21, - 48, 8, 208, 99, 78, 132, 243, 34, 73, 173, 129, 125, 206, 101, - 143, 95, 58, 203, 125, 206, 97, 159, 191, 132, 147, 206, 97, 0, - 47, 225, 164, 115, 24, 192, 75, 184, 207, 57, 236, 243, 151, 112, - 159, 115, 220, 231, 47, 201, 125, 62, 8, 93, 34, 34, 249, 54, - 74, 223, 78, 55, 185, 30, 24, 72, 209, 177, 88, 70, 146, 254, - 164, 220, 20, 111, 211, 153, 56, 146, 36, 146, 20, 105, 36, 153, - 36, 215, 158, 135, 100, 74, 56, 111, 167, 201, 65, 221, 190, 182, - 34, 222, 78, 83, 253, 252, 47, 8, 116, 128, 10, 231, 86, 250, - 43, 230, 130, 86, 99, 147, 220, 127, 43, 53, 11, 33, 185, 255, - 86, 106, 22, 66, 114, 255, 173, 180, 189, 131, 239, 230, 212, 105, - 20, 201, 219, 105, 226, 143, 41, 113, 47, 158, 155, 14, 178, 35, - 221, 44, 126, 106, 36, 194, 185, 157, 166, 54, 0, 63, 53, 74, - 126, 186, 131, 158, 29, 63, 53, 2, 63, 221, 129, 195, 104, 4, - 126, 186, 3, 135, 209, 8, 252, 116, 7, 213, 252, 212, 8, 252, - 116, 7, 213, 252, 212, 136, 252, 116, 7, 117, 119, 240, 95, 16, - 232, 19, 17, 206, 7, 41, 189, 208, 253, 81, 172, 222, 136, 142, - 237, 215, 70, 119, 52, 130, 238, 248, 32, 165, 134, 76, 74, 178, - 113, 29, 146, 48, 47, 61, 131, 72, 50, 73, 158, 127, 129, 242, - 211, 55, 202, 93, 240, 81, 250, 155, 227, 167, 111, 132, 205, 243, - 209, 128, 235, 192, 51, 25, 112, 157, 220, 60, 31, 149, 92, 183, - 135, 83, 103, 145, 72, 158, 166, 137, 79, 80, 226, 94, 50, 71, - 213, 81, 101, 247, 44, 130, 36, 202, 212, 70, 168, 18, 181, 8, - 28, 140, 148, 110, 114, 187, 149, 254, 8, 221, 74, 135, 149, 200, - 34, 80, 34, 247, 224, 226, 46, 2, 37, 114, 15, 109, 116, 145, - 36, 146, 236, 234, 69, 146, 73, 114, 96, 144, 191, 71, 218, 159, - 77, 34, 249, 39, 52, 241, 32, 173, 126, 5, 21, 27, 147, 143, - 166, 231, 185, 186, 60, 70, 211, 179, 137, 8, 231, 79, 104, 106, - 57, 255, 170, 228, 188, 38, 57, 11, 15, 80, 122, 153, 251, 151, - 36, 78, 136, 20, 117, 145, 63, 171, 102, 156, 185, 51, 71, 135, - 81, 48, 87, 224, 129, 172, 184, 60, 55, 151, 238, 189, 218, 178, - 143, 248, 59, 45, 239, 101, 197, 37, 123, 252, 203, 214, 81, 197, - 18, 101, 77, 32, 202, 30, 64, 166, 106, 130, 101, 121, 128, 54, - 52, 35, 201, 36, 41, 150, 34, 153, 146, 100, 235, 27, 64, 148, - 53, 161, 40, 123, 128, 182, 95, 202, 79, 171, 169, 33, 194, 57, - 35, 197, 235, 157, 196, 172, 130, 242, 208, 231, 10, 153, 9, 29, - 119, 167, 202, 249, 225, 172, 5, 241, 4, 8, 42, 139, 2, 231, - 210, 237, 222, 133, 155, 54, 239, 205, 94, 222, 207, 205, 83, 253, - 22, 100, 107, 0, 176, 226, 151, 237, 71, 192, 141, 139, 51, 173, - 29, 114, 102, 188, 82, 198, 156, 65, 174, 108, 2, 25, 115, 134, - 54, 226, 0, 165, 140, 57, 131, 162, 187, 9, 84, 241, 25, 20, - 221, 77, 168, 138, 207, 72, 209, 45, 13, 180, 197, 34, 249, 121, - 154, 248, 175, 20, 13, 180, 154, 42, 42, 26, 59, 173, 55, 216, - 98, 34, 156, 207, 211, 212, 106, 254, 37, 57, 129, 139, 37, 111, - 125, 145, 210, 126, 247, 76, 172, 46, 24, 10, 130, 49, 20, 238, - 227, 204, 84, 128, 65, 6, 211, 167, 103, 55, 52, 139, 155, 6, - 175, 130, 73, 60, 100, 152, 84, 1, 5, 230, 114, 97, 119, 9, - 98, 9, 77, 248, 197, 172, 129, 232, 50, 126, 153, 144, 147, 174, - 186, 84, 95, 12, 27, 255, 139, 56, 197, 139, 97, 227, 127, 145, - 54, 122, 72, 18, 73, 174, 90, 143, 36, 147, 100, 111, 31, 95, - 196, 169, 211, 44, 146, 143, 80, 136, 243, 150, 83, 211, 76, 132, - 243, 8, 77, 173, 225, 105, 238, 56, 205, 114, 102, 190, 68, 105, - 218, 109, 181, 246, 119, 88, 230, 52, 67, 211, 95, 194, 166, 155, - 161, 233, 47, 225, 234, 54, 67, 211, 95, 162, 173, 203, 145, 100, - 146, 244, 86, 153, 132, 232, 159, 175, 227, 151, 204, 39, 239, 23, - 129, 112, 22, 156, 20, 253, 170, 151, 116, 91, 120, 90, 243, 227, - 140, 55, 74, 25, 162, 225, 170, 236, 186, 85, 164, 90, 221, 42, - 58, 231, 186, 85, 171, 34, 133, 165, 84, 198, 90, 168, 166, 212, - 54, 83, 135, 205, 169, 86, 83, 202, 234, 159, 130, 181, 52, 149, - 216, 46, 229, 245, 152, 155, 88, 7, 9, 88, 233, 154, 233, 156, - 51, 249, 137, 156, 63, 138, 175, 136, 93, 124, 81, 40, 5, 46, - 57, 215, 20, 184, 208, 107, 149, 133, 208, 234, 23, 80, 8, 109, - 214, 194, 88, 98, 57, 231, 74, 1, 149, 228, 226, 52, 168, 220, - 63, 253, 203, 200, 68, 250, 10, 222, 18, 29, 169, 184, 128, 39, - 117, 178, 107, 213, 4, 103, 43, 189, 71, 63, 155, 62, 200, 91, - 173, 25, 191, 186, 232, 43, 12, 64, 107, 165, 200, 188, 87, 106, - 195, 199, 9, 95, 82, 241, 175, 98, 53, 95, 9, 168, 117, 111, - 28, 26, 29, 25, 218, 127, 232, 72, 108, 173, 175, 197, 156, 7, - 165, 179, 90, 184, 232, 228, 173, 1, 189, 239, 186, 35, 7, 247, - 142, 92, 125, 245, 174, 157, 45, 173, 162, 129, 215, 237, 222, 55, - 180, 247, 186, 150, 21, 242, 37, 68, 203, 219, 181, 179, 165, 39, - 82, 127, 235, 170, 161, 131, 123, 91, 250, 196, 34, 158, 50, 223, - 221, 188, 144, 20, 150, 255, 111, 37, 79, 10, 103, 113, 34, 95, - 43, 131, 101, 243, 166, 215, 51, 88, 94, 207, 96, 57, 39, 25, - 44, 219, 131, 12, 150, 157, 65, 6, 11, 230, 170, 116, 4, 185, - 42, 242, 207, 97, 21, 246, 232, 38, 246, 18, 247, 162, 112, 85, - 226, 41, 105, 191, 192, 141, 118, 8, 201, 74, 114, 72, 86, 26, - 17, 10, 94, 182, 100, 85, 136, 114, 83, 75, 249, 31, 153, 152, - 197, 149, 180, 205, 253, 253, 216, 227, 217, 66, 235, 5, 109, 190, - 112, 11, 212, 11, 26, 69, 240, 205, 74, 252, 70, 152, 240, 9, - 191, 156, 201, 230, 74, 161, 160, 194, 149, 161, 160, 194, 149, 166, - 70, 76, 130, 9, 182, 114, 105, 171, 174, 159, 66, 4, 91, 77, - 219, 95, 253, 250, 41, 36, 41, 27, 110, 176, 66, 16, 87, 155, - 250, 41, 132, 9, 182, 186, 181, 141, 103, 49, 2, 113, 29, 117, - 95, 97, 60, 191, 32, 102, 112, 93, 40, 102, 112, 157, 169, 128, - 64, 153, 96, 235, 58, 85, 1, 97, 200, 23, 216, 64, 87, 186, - 203, 17, 81, 218, 94, 224, 0, 71, 50, 40, 21, 179, 129, 46, - 181, 74, 197, 108, 104, 117, 173, 82, 49, 27, 150, 175, 224, 189, - 88, 10, 166, 143, 246, 184, 43, 189, 3, 154, 213, 106, 126, 215, - 129, 199, 13, 149, 20, 172, 175, 177, 203, 170, 80, 210, 215, 189, - 218, 170, 80, 210, 119, 222, 58, 112, 10, 65, 9, 146, 65, 218, - 235, 110, 137, 57, 213, 102, 85, 116, 64, 136, 255, 179, 17, 32, - 55, 93, 66, 196, 145, 95, 177, 75, 143, 12, 54, 186, 86, 233, - 145, 193, 174, 117, 86, 233, 145, 193, 13, 27, 249, 219, 40, 214, - 22, 185, 136, 174, 114, 159, 39, 103, 1, 148, 15, 177, 183, 161, - 24, 121, 172, 26, 98, 174, 84, 177, 247, 58, 110, 165, 232, 79, - 23, 138, 229, 240, 51, 97, 224, 62, 21, 38, 224, 21, 125, 0, - 219, 42, 228, 181, 59, 101, 38, 231, 235, 187, 89, 117, 139, 170, - 176, 163, 13, 196, 95, 177, 48, 197, 189, 13, 25, 132, 189, 223, - 16, 169, 36, 19, 187, 110, 73, 152, 130, 197, 86, 157, 141, 139, - 154, 187, 173, 58, 27, 23, 173, 244, 248, 163, 68, 87, 210, 96, - 59, 232, 144, 60, 30, 89, 80, 133, 160, 119, 250, 194, 61, 217, - 230, 21, 138, 248, 187, 133, 191, 26, 0, 164, 90, 15, 0, 66, - 156, 233, 157, 25, 139, 28, 101, 229, 123, 92, 149, 39, 179, 129, - 16, 205, 65, 41, 50, 186, 216, 98, 109, 245, 117, 114, 8, 73, - 171, 130, 199, 142, 250, 22, 171, 130, 199, 14, 83, 173, 170, 62, - 37, 216, 142, 182, 29, 225, 10, 30, 59, 218, 47, 227, 159, 101, - 186, 132, 7, 187, 146, 118, 186, 159, 84, 56, 101, 74, 184, 150, - 79, 5, 7, 194, 9, 223, 211, 118, 31, 116, 204, 159, 208, 171, - 58, 178, 211, 46, 192, 197, 165, 20, 205, 21, 10, 199, 103, 166, - 205, 153, 92, 151, 14, 210, 47, 103, 243, 222, 53, 51, 126, 241, - 148, 101, 151, 153, 148, 222, 126, 253, 208, 130, 120, 112, 76, 90, - 13, 101, 105, 33, 76, 152, 44, 34, 64, 127, 196, 150, 123, 78, - 100, 51, 242, 231, 108, 17, 156, 88, 254, 56, 128, 214, 5, 39, - 209, 158, 210, 250, 245, 149, 172, 58, 51, 93, 64, 239, 166, 205, - 168, 248, 81, 88, 173, 76, 126, 238, 76, 10, 197, 233, 226, 103, - 212, 68, 8, 153, 34, 139, 189, 145, 219, 238, 177, 92, 38, 127, - 60, 40, 141, 82, 39, 215, 44, 101, 149, 70, 185, 210, 196, 96, - 167, 152, 96, 87, 154, 24, 108, 103, 127, 226, 26, 226, 14, 132, - 4, 31, 164, 122, 69, 176, 199, 35, 125, 197, 24, 236, 253, 169, - 78, 126, 1, 198, 96, 95, 77, 59, 221, 117, 26, 71, 44, 238, - 189, 144, 40, 9, 2, 166, 175, 214, 1, 241, 42, 96, 250, 106, - 93, 58, 73, 5, 76, 95, 221, 222, 193, 215, 65, 81, 2, 231, - 80, 226, 40, 113, 187, 44, 185, 31, 133, 236, 150, 157, 170, 147, - 159, 56, 84, 215, 206, 39, 116, 1, 2, 118, 45, 61, 207, 189, - 54, 10, 146, 9, 46, 8, 57, 159, 176, 199, 96, 38, 213, 193, - 0, 157, 175, 232, 116, 133, 32, 2, 184, 250, 158, 204, 230, 202, - 10, 77, 23, 83, 181, 212, 32, 84, 145, 1, 118, 45, 93, 133, - 20, 21, 236, 218, 53, 107, 249, 33, 93, 98, 128, 93, 71, 133, - 187, 39, 136, 113, 193, 62, 28, 3, 200, 205, 144, 26, 80, 104, - 118, 153, 92, 46, 84, 50, 44, 128, 115, 51, 45, 18, 248, 236, - 34, 164, 168, 96, 215, 53, 47, 225, 55, 232, 82, 4, 236, 122, - 218, 237, 94, 115, 78, 90, 204, 157, 178, 224, 218, 23, 97, 29, - 1, 118, 61, 109, 71, 74, 54, 183, 172, 139, 143, 235, 34, 2, - 236, 6, 218, 228, 190, 113, 30, 109, 3, 218, 171, 20, 140, 6, - 179, 78, 254, 26, 3, 245, 103, 58, 32, 21, 249, 13, 180, 30, - 41, 42, 216, 13, 124, 17, 191, 92, 227, 254, 179, 27, 169, 112, - 47, 140, 239, 128, 180, 173, 48, 13, 168, 34, 223, 201, 124, 95, - 170, 240, 27, 205, 228, 58, 84, 176, 27, 155, 151, 240, 239, 16, - 13, 232, 207, 38, 104, 135, 251, 13, 226, 13, 41, 227, 43, 147, - 211, 64, 167, 42, 11, 89, 7, 98, 87, 40, 115, 8, 48, 129, - 186, 131, 249, 117, 134, 237, 124, 83, 69, 4, 207, 125, 90, 202, - 4, 185, 216, 218, 121, 150, 25, 43, 156, 192, 167, 253, 82, 191, - 55, 162, 157, 188, 121, 255, 132, 95, 132, 76, 108, 93, 92, 70, - 42, 14, 37, 137, 2, 172, 202, 94, 47, 91, 94, 167, 25, 26, - 240, 1, 33, 252, 80, 190, 162, 225, 244, 205, 208, 165, 1, 49, - 65, 151, 32, 69, 5, 155, 104, 109, 231, 163, 48, 242, 164, 96, - 147, 180, 197, 221, 117, 22, 124, 85, 193, 199, 82, 7, 79, 82, - 67, 81, 193, 38, 155, 154, 249, 24, 164, 0, 56, 199, 19, 121, - 226, 190, 49, 124, 82, 192, 138, 188, 158, 165, 36, 188, 190, 55, - 120, 99, 133, 66, 174, 159, 123, 0, 41, 98, 92, 163, 102, 49, - 162, 73, 150, 90, 128, 73, 78, 62, 158, 234, 6, 1, 70, 165, - 172, 152, 162, 43, 221, 117, 222, 80, 140, 172, 168, 148, 19, 32, - 164, 32, 69, 128, 77, 105, 27, 19, 50, 4, 216, 148, 182, 49, - 33, 65, 128, 77, 45, 95, 97, 28, 127, 31, 255, 26, 153, 7, - 20, 162, 118, 99, 44, 216, 235, 247, 239, 15, 237, 112, 203, 28, - 95, 52, 140, 121, 182, 238, 68, 119, 225, 126, 214, 179, 241, 127, - 166, 7, 120, 235, 30, 191, 60, 15, 32, 61, 245, 66, 37, 144, - 92, 45, 228, 189, 246, 125, 217, 82, 121, 161, 144, 110, 93, 188, - 97, 58, 115, 212, 63, 82, 202, 222, 236, 131, 3, 181, 110, 52, - 37, 127, 56, 152, 189, 217, 23, 203, 57, 135, 127, 132, 212, 14, - 132, 245, 146, 191, 0, 144, 161, 184, 136, 55, 20, 253, 140, 226, - 36, 240, 146, 214, 134, 25, 76, 201, 135, 1, 100, 240, 22, 194, - 59, 42, 58, 125, 142, 176, 221, 196, 121, 188, 57, 239, 223, 84, - 62, 98, 245, 92, 33, 65, 54, 201, 159, 175, 198, 222, 167, 7, - 248, 178, 202, 250, 24, 56, 119, 194, 158, 111, 61, 213, 191, 207, - 187, 176, 211, 11, 6, 93, 59, 139, 233, 78, 127, 136, 240, 238, - 248, 14, 188, 50, 248, 105, 115, 158, 201, 159, 17, 222, 97, 12, - 246, 8, 19, 122, 149, 128, 154, 13, 97, 200, 204, 97, 222, 96, - 246, 185, 118, 225, 175, 173, 181, 218, 198, 241, 59, 26, 188, 23, - 158, 87, 167, 230, 188, 214, 213, 100, 227, 228, 60, 216, 248, 29, - 132, 119, 86, 142, 251, 213, 230, 227, 175, 17, 222, 109, 122, 17, - 199, 152, 179, 47, 193, 85, 149, 75, 176, 97, 86, 134, 49, 235, - 160, 184, 252, 220, 44, 70, 250, 255, 39, 124, 121, 149, 209, 188, - 198, 92, 190, 147, 123, 145, 197, 150, 39, 16, 128, 116, 159, 251, - 84, 167, 175, 225, 171, 106, 124, 69, 15, 177, 151, 139, 114, 161, - 156, 201, 29, 137, 112, 16, 233, 97, 163, 45, 240, 47, 22, 199, - 165, 251, 184, 216, 227, 151, 163, 24, 135, 85, 53, 70, 129, 183, - 74, 41, 82, 129, 77, 88, 19, 20, 241, 108, 228, 214, 41, 222, - 22, 105, 240, 108, 129, 10, 231, 188, 102, 127, 65, 120, 27, 76, - 119, 197, 104, 103, 223, 20, 67, 149, 155, 34, 230, 102, 9, 63, - 124, 174, 165, 82, 250, 102, 222, 30, 237, 249, 171, 54, 109, 31, - 161, 150, 96, 11, 60, 48, 177, 51, 71, 43, 103, 110, 167, 61, - 115, 74, 160, 158, 87, 243, 78, 46, 118, 242, 86, 241, 69, 186, - 230, 34, 220, 77, 192, 229, 99, 221, 104, 163, 250, 109, 159, 252, - 233, 220, 73, 253, 250, 121, 72, 253, 51, 148, 47, 171, 234, 158, - 18, 151, 235, 75, 87, 60, 97, 232, 5, 90, 94, 115, 252, 234, - 206, 21, 191, 53, 215, 101, 18, 163, 188, 94, 123, 135, 0, 228, - 184, 113, 243, 197, 149, 173, 84, 119, 164, 29, 84, 175, 238, 202, - 151, 139, 167, 70, 241, 67, 238, 97, 190, 200, 254, 7, 209, 194, - 217, 113, 255, 148, 182, 131, 228, 159, 98, 128, 215, 193, 57, 183, - 250, 117, 187, 254, 192, 168, 122, 110, 43, 189, 152, 164, 239, 163, - 26, 142, 80, 155, 92, 81, 166, 90, 81, 105, 60, 133, 236, 166, - 99, 209, 105, 85, 232, 169, 195, 85, 240, 0, 227, 91, 177, 167, - 220, 84, 136, 42, 70, 38, 63, 202, 118, 172, 130, 237, 220, 55, - 243, 182, 216, 47, 137, 238, 72, 144, 130, 150, 161, 58, 82, 225, - 188, 72, 208, 1, 13, 30, 177, 35, 15, 210, 119, 82, 13, 240, - 90, 49, 138, 115, 200, 99, 135, 3, 222, 81, 83, 185, 109, 174, - 83, 249, 90, 176, 207, 23, 109, 75, 203, 68, 42, 104, 222, 89, - 206, 235, 245, 61, 158, 61, 235, 248, 155, 216, 85, 41, 199, 99, - 64, 119, 237, 15, 207, 46, 203, 89, 77, 89, 227, 68, 101, 249, - 123, 136, 37, 50, 130, 238, 235, 229, 188, 130, 135, 66, 46, 244, - 106, 174, 169, 221, 199, 157, 112, 223, 24, 9, 214, 152, 163, 224, - 216, 252, 175, 141, 60, 133, 69, 2, 197, 181, 188, 41, 116, 70, - 21, 49, 178, 58, 238, 16, 59, 43, 64, 173, 250, 176, 133, 229, - 26, 255, 225, 249, 3, 185, 30, 227, 205, 145, 211, 163, 232, 169, - 124, 37, 254, 84, 236, 198, 0, 202, 86, 57, 138, 166, 19, 98, - 18, 76, 171, 40, 96, 107, 12, 140, 111, 213, 147, 228, 220, 208, - 90, 79, 42, 155, 172, 2, 165, 53, 6, 30, 181, 198, 17, 52, - 14, 30, 181, 214, 129, 49, 157, 16, 199, 121, 75, 244, 4, 19, - 7, 185, 91, 229, 116, 231, 198, 156, 18, 170, 29, 136, 210, 9, - 113, 179, 54, 198, 42, 134, 25, 211, 239, 90, 39, 26, 55, 6, - 175, 183, 230, 153, 33, 157, 16, 183, 218, 91, 48, 106, 120, 199, - 193, 37, 207, 102, 235, 187, 231, 207, 235, 29, 211, 145, 107, 120, - 163, 101, 173, 139, 152, 109, 94, 105, 204, 187, 53, 236, 187, 116, - 66, 140, 241, 166, 144, 129, 29, 183, 209, 226, 76, 126, 55, 70, - 14, 198, 90, 234, 0, 1, 189, 56, 108, 142, 138, 152, 151, 99, - 77, 109, 55, 102, 111, 198, 91, 182, 233, 132, 200, 243, 37, 21, - 22, 139, 168, 197, 101, 17, 21, 239, 198, 236, 205, 170, 38, 144, - 133, 75, 28, 209, 114, 85, 113, 137, 227, 13, 139, 170, 184, 196, - 85, 148, 103, 100, 160, 70, 126, 215, 26, 104, 68, 235, 213, 28, - 104, 84, 197, 44, 12, 7, 249, 249, 143, 17, 5, 132, 124, 167, - 243, 58, 16, 242, 235, 97, 100, 175, 66, 24, 217, 134, 32, 140, - 236, 178, 32, 140, 108, 40, 0, 66, 222, 97, 3, 33, 203, 63, - 147, 130, 117, 38, 134, 225, 207, 122, 193, 150, 37, 118, 234, 144, - 179, 174, 32, 228, 76, 254, 185, 81, 161, 35, 175, 72, 28, 37, - 238, 202, 48, 56, 114, 166, 2, 26, 25, 49, 126, 87, 164, 90, - 248, 58, 132, 248, 245, 232, 144, 235, 122, 163, 126, 185, 152, 245, - 79, 40, 20, 212, 24, 8, 68, 249, 154, 151, 92, 106, 97, 210, - 122, 173, 61, 22, 38, 173, 119, 254, 118, 126, 66, 67, 210, 178, - 181, 209, 79, 134, 11, 233, 191, 50, 72, 153, 68, 54, 108, 122, - 40, 23, 99, 173, 233, 33, 97, 130, 173, 61, 127, 59, 255, 19, - 162, 145, 95, 157, 141, 180, 119, 131, 251, 97, 98, 117, 50, 20, - 111, 161, 48, 82, 43, 146, 217, 228, 246, 223, 15, 137, 248, 38, - 19, 104, 162, 224, 155, 106, 126, 176, 25, 163, 113, 27, 113, 96, - 42, 170, 144, 106, 212, 235, 86, 66, 44, 172, 16, 200, 236, 198, - 100, 155, 5, 50, 187, 177, 189, 215, 2, 153, 237, 109, 62, 143, - 247, 105, 144, 89, 103, 128, 14, 50, 119, 101, 229, 180, 91, 238, - 196, 16, 148, 236, 64, 8, 74, 118, 32, 4, 37, 59, 176, 125, - 31, 255, 44, 65, 44, 217, 45, 244, 162, 1, 247, 19, 21, 147, - 21, 10, 239, 122, 149, 103, 44, 148, 101, 21, 157, 54, 7, 48, - 128, 93, 11, 186, 118, 139, 193, 168, 116, 0, 3, 120, 35, 127, - 208, 64, 215, 110, 167, 111, 216, 232, 126, 170, 58, 43, 232, 32, - 23, 59, 165, 177, 24, 160, 220, 74, 249, 50, 51, 61, 93, 40, - 194, 242, 89, 89, 129, 136, 156, 100, 63, 144, 153, 56, 33, 69, - 250, 68, 16, 106, 97, 87, 197, 247, 142, 22, 140, 214, 234, 43, - 78, 143, 175, 254, 29, 57, 90, 217, 25, 221, 23, 27, 211, 118, - 187, 1, 133, 173, 163, 130, 109, 55, 160, 176, 117, 76, 176, 55, - 52, 175, 227, 191, 175, 33, 109, 157, 97, 186, 115, 208, 157, 174, - 189, 118, 21, 67, 60, 235, 81, 89, 240, 181, 195, 6, 196, 53, - 73, 5, 27, 54, 32, 174, 73, 38, 216, 206, 230, 94, 254, 0, - 65, 252, 218, 17, 122, 229, 5, 238, 199, 66, 43, 17, 129, 77, - 41, 25, 195, 83, 71, 241, 132, 186, 60, 60, 83, 44, 2, 124, - 144, 87, 194, 190, 129, 79, 217, 203, 207, 76, 141, 233, 80, 89, - 123, 105, 199, 252, 92, 33, 127, 212, 171, 128, 20, 238, 149, 10, - 172, 232, 143, 151, 85, 153, 83, 40, 220, 168, 200, 16, 36, 238, - 136, 65, 71, 174, 167, 130, 141, 24, 116, 228, 122, 38, 216, 149, - 205, 131, 188, 164, 33, 113, 217, 1, 186, 205, 237, 12, 139, 88, - 115, 225, 204, 55, 239, 59, 135, 153, 118, 54, 120, 238, 129, 228, - 18, 11, 60, 247, 128, 88, 99, 129, 231, 30, 24, 184, 136, 255, - 13, 209, 232, 185, 236, 48, 221, 231, 62, 98, 79, 187, 113, 172, - 86, 219, 214, 3, 101, 11, 229, 30, 119, 120, 54, 156, 2, 92, - 138, 238, 154, 16, 74, 95, 84, 10, 112, 171, 209, 106, 50, 32, - 16, 1, 193, 116, 69, 247, 190, 194, 234, 93, 106, 99, 245, 26, - 53, 208, 192, 4, 59, 124, 254, 21, 144, 33, 6, 88, 189, 236, - 122, 122, 192, 125, 176, 202, 200, 103, 221, 247, 195, 25, 128, 223, - 135, 55, 195, 189, 15, 113, 153, 53, 148, 8, 159, 89, 108, 166, - 0, 79, 12, 151, 205, 186, 251, 44, 52, 222, 235, 147, 173, 22, - 26, 239, 245, 109, 27, 44, 52, 222, 235, 47, 220, 203, 143, 193, - 96, 27, 5, 59, 66, 223, 228, 94, 31, 21, 4, 6, 149, 251, - 236, 229, 156, 110, 183, 145, 8, 118, 36, 217, 129, 20, 21, 236, - 72, 231, 32, 82, 76, 176, 35, 219, 14, 241, 41, 232, 211, 34, - 193, 198, 105, 6, 138, 193, 215, 234, 19, 2, 215, 219, 61, 11, - 226, 233, 3, 67, 14, 34, 48, 229, 251, 35, 59, 75, 24, 120, - 117, 204, 15, 58, 182, 136, 8, 54, 110, 212, 194, 34, 42, 216, - 184, 81, 11, 139, 152, 96, 227, 67, 111, 230, 7, 161, 99, 77, - 130, 77, 210, 55, 185, 187, 163, 29, 11, 5, 231, 70, 66, 237, - 35, 125, 10, 34, 60, 176, 249, 38, 34, 216, 164, 153, 151, 38, - 42, 216, 164, 153, 151, 38, 38, 216, 228, 182, 67, 124, 139, 202, - 32, 120, 75, 98, 138, 184, 27, 170, 164, 66, 134, 92, 86, 58, - 195, 24, 147, 6, 222, 146, 234, 230, 87, 98, 206, 64, 142, 110, - 119, 183, 195, 17, 38, 95, 21, 236, 79, 55, 80, 45, 75, 63, - 8, 249, 207, 133, 66, 254, 115, 13, 77, 86, 200, 127, 174, 101, - 137, 133, 35, 156, 19, 151, 134, 113, 132, 115, 173, 91, 97, 96, - 68, 56, 211, 137, 82, 205, 129, 85, 32, 125, 97, 20, 230, 116, - 170, 155, 239, 197, 40, 204, 34, 221, 238, 190, 161, 98, 96, 17, - 120, 173, 208, 200, 172, 220, 6, 107, 100, 4, 70, 86, 212, 35, - 83, 193, 153, 69, 61, 50, 21, 156, 89, 212, 35, 35, 48, 178, - 162, 30, 25, 193, 145, 21, 91, 183, 242, 75, 32, 148, 171, 238, - 68, 226, 189, 132, 184, 189, 85, 134, 22, 113, 196, 89, 131, 147, - 38, 222, 137, 212, 10, 126, 25, 70, 104, 221, 180, 64, 120, 54, - 29, 144, 85, 39, 191, 144, 178, 130, 181, 110, 106, 88, 106, 5, - 107, 221, 212, 222, 129, 84, 74, 176, 155, 58, 47, 135, 1, 81, - 28, 208, 77, 238, 14, 133, 40, 3, 166, 231, 31, 208, 118, 247, - 251, 10, 187, 108, 42, 115, 83, 118, 106, 102, 170, 154, 38, 53, - 88, 96, 88, 89, 162, 164, 79, 34, 242, 148, 170, 75, 148, 76, - 250, 39, 225, 212, 148, 209, 241, 239, 224, 4, 87, 176, 129, 51, - 121, 179, 133, 123, 189, 76, 217, 155, 42, 148, 202, 222, 166, 193, - 193, 112, 35, 152, 137, 140, 193, 127, 58, 17, 23, 187, 166, 98, - 20, 179, 37, 249, 226, 224, 54, 141, 188, 170, 195, 10, 229, 79, - 65, 206, 120, 193, 47, 142, 171, 211, 171, 252, 221, 204, 29, 169, - 147, 67, 174, 71, 74, 78, 64, 106, 9, 82, 76, 176, 63, 104, - 109, 83, 64, 19, 80, 232, 250, 86, 66, 59, 221, 31, 17, 111, - 200, 155, 150, 171, 12, 78, 105, 144, 152, 126, 144, 242, 155, 49, - 168, 138, 222, 141, 17, 22, 184, 17, 64, 3, 251, 185, 119, 181, - 2, 53, 80, 115, 162, 230, 81, 105, 20, 144, 108, 51, 99, 37, - 201, 78, 249, 50, 180, 34, 103, 247, 218, 99, 126, 94, 18, 217, - 124, 70, 157, 186, 131, 186, 52, 211, 153, 98, 102, 202, 47, 251, - 197, 0, 42, 65, 126, 177, 178, 233, 171, 14, 31, 60, 196, 149, - 188, 82, 241, 216, 42, 8, 51, 99, 225, 119, 41, 77, 142, 3, - 51, 248, 181, 128, 59, 130, 0, 48, 84, 225, 142, 32, 0, 12, - 85, 184, 35, 164, 189, 131, 127, 75, 77, 19, 19, 206, 123, 8, - 221, 224, 126, 141, 120, 187, 13, 206, 171, 214, 135, 81, 32, 96, - 197, 9, 80, 161, 223, 47, 43, 99, 1, 203, 236, 79, 1, 10, - 104, 201, 132, 42, 23, 33, 95, 123, 42, 83, 60, 117, 228, 88, - 121, 42, 167, 10, 100, 103, 142, 66, 4, 38, 247, 252, 155, 148, - 190, 69, 100, 61, 45, 18, 242, 0, 118, 9, 60, 144, 201, 157, - 204, 156, 42, 65, 82, 59, 234, 102, 31, 74, 113, 76, 122, 105, - 136, 36, 192, 10, 237, 6, 3, 94, 97, 228, 65, 96, 33, 206, - 4, 75, 194, 224, 186, 144, 36, 146, 236, 94, 139, 36, 12, 189, - 103, 61, 66, 247, 190, 159, 36, 62, 98, 112, 14, 99, 64, 36, - 226, 5, 4, 66, 247, 190, 159, 164, 86, 130, 132, 0, 232, 222, - 187, 8, 93, 231, 110, 138, 66, 10, 150, 172, 44, 115, 83, 244, - 186, 2, 58, 149, 65, 102, 247, 93, 8, 73, 164, 48, 126, 239, - 66, 72, 34, 133, 241, 123, 23, 66, 18, 41, 140, 223, 187, 200, - 218, 243, 248, 179, 4, 49, 124, 239, 38, 116, 185, 251, 15, 146, - 239, 53, 203, 171, 184, 95, 157, 7, 1, 17, 186, 153, 146, 119, - 99, 112, 83, 115, 99, 5, 87, 231, 253, 155, 144, 159, 85, 70, - 128, 29, 230, 95, 192, 194, 31, 170, 34, 62, 148, 234, 207, 23, - 162, 59, 161, 20, 201, 227, 49, 160, 43, 253, 38, 201, 32, 92, - 235, 72, 46, 167, 169, 242, 208, 171, 2, 164, 113, 226, 164, 144, - 202, 76, 79, 251, 153, 162, 151, 203, 148, 253, 98, 128, 63, 92, - 7, 227, 77, 89, 248, 195, 119, 147, 134, 78, 11, 127, 248, 110, - 210, 213, 141, 248, 195, 31, 35, 137, 143, 215, 192, 31, 174, 188, - 73, 137, 224, 15, 127, 140, 164, 86, 241, 55, 34, 254, 240, 105, - 66, 133, 123, 69, 188, 150, 139, 84, 211, 168, 80, 117, 86, 27, - 54, 222, 142, 130, 40, 62, 29, 134, 40, 62, 29, 134, 40, 62, - 77, 90, 150, 240, 203, 20, 2, 241, 39, 73, 226, 207, 9, 113, - 55, 205, 162, 212, 170, 32, 158, 212, 17, 225, 124, 146, 164, 86, - 3, 244, 40, 96, 15, 223, 123, 54, 208, 163, 10, 244, 247, 222, - 48, 232, 239, 189, 40, 123, 20, 232, 239, 189, 8, 62, 165, 64, - 127, 239, 69, 240, 41, 3, 250, 123, 47, 113, 119, 240, 23, 13, - 232, 239, 3, 132, 182, 187, 207, 212, 212, 112, 209, 122, 33, 175, - 156, 154, 11, 181, 244, 202, 233, 186, 0, 51, 248, 1, 66, 235, - 45, 204, 224, 7, 72, 106, 137, 133, 25, 252, 0, 105, 109, 227, - 111, 167, 136, 25, 252, 160, 84, 119, 207, 207, 95, 221, 217, 204, - 241, 90, 232, 188, 80, 251, 92, 129, 121, 204, 95, 241, 41, 128, - 225, 7, 3, 230, 147, 220, 243, 96, 192, 124, 82, 211, 61, 40, - 153, 111, 135, 194, 23, 254, 2, 73, 60, 74, 16, 186, 173, 134, - 184, 175, 178, 117, 146, 68, 56, 95, 32, 169, 53, 124, 39, 162, - 246, 62, 68, 232, 38, 119, 75, 32, 243, 43, 253, 55, 179, 8, - 254, 36, 8, 254, 135, 80, 240, 39, 65, 240, 63, 68, 52, 140, - 144, 2, 242, 125, 136, 104, 24, 33, 5, 228, 251, 16, 25, 24, - 84, 130, 63, 41, 135, 251, 200, 111, 140, 224, 79, 194, 246, 120, - 36, 64, 57, 38, 48, 124, 45, 248, 147, 176, 61, 30, 145, 130, - 63, 0, 49, 254, 126, 13, 16, 227, 10, 55, 111, 12, 136, 241, - 15, 8, 162, 24, 127, 133, 208, 180, 251, 100, 224, 147, 168, 233, - 76, 8, 163, 108, 247, 86, 241, 39, 112, 149, 254, 103, 29, 239, - 240, 51, 118, 61, 249, 245, 114, 167, 29, 4, 14, 58, 37, 79, - 177, 241, 133, 228, 74, 158, 255, 59, 51, 217, 19, 153, 156, 92, - 144, 114, 193, 3, 31, 165, 124, 188, 144, 15, 187, 54, 96, 87, - 153, 44, 31, 232, 107, 128, 179, 236, 192, 56, 109, 216, 229, 175, - 32, 120, 183, 130, 93, 254, 10, 17, 203, 45, 216, 229, 175, 16, - 111, 21, 28, 108, 17, 84, 121, 141, 123, 41, 102, 177, 32, 198, - 109, 164, 174, 4, 36, 181, 148, 50, 229, 108, 105, 242, 148, 226, - 52, 251, 72, 30, 2, 37, 110, 11, 129, 18, 183, 175, 12, 129, - 18, 167, 87, 243, 231, 8, 98, 14, 63, 65, 126, 83, 142, 68, - 1, 214, 237, 19, 168, 38, 20, 214, 237, 19, 168, 38, 20, 214, - 237, 19, 82, 77, 252, 82, 77, 16, 19, 206, 183, 0, 148, 121, - 238, 106, 34, 186, 55, 94, 77, 21, 81, 217, 246, 66, 207, 69, - 245, 148, 213, 193, 216, 17, 20, 88, 26, 237, 223, 10, 64, 129, - 25, 204, 12, 158, 139, 234, 169, 3, 104, 185, 191, 142, 231, 162, - 122, 169, 254, 228, 224, 186, 144, 4, 40, 96, 125, 46, 170, 151, - 103, 33, 231, 41, 121, 46, 186, 84, 161, 35, 255, 128, 36, 254, - 143, 41, 144, 20, 163, 40, 107, 200, 206, 20, 17, 206, 15, 72, - 202, 227, 55, 32, 142, 241, 143, 228, 193, 232, 106, 239, 42, 72, - 138, 139, 222, 126, 122, 7, 138, 19, 190, 190, 208, 174, 240, 103, - 123, 35, 59, 123, 209, 119, 104, 227, 165, 143, 236, 12, 32, 142, - 29, 104, 192, 144, 73, 73, 234, 115, 147, 66, 60, 254, 17, 158, - 155, 20, 226, 241, 143, 228, 185, 233, 62, 3, 104, 252, 172, 84, - 159, 31, 249, 119, 172, 62, 17, 89, 184, 14, 250, 154, 178, 112, - 135, 159, 69, 213, 167, 112, 135, 159, 149, 170, 111, 135, 194, 213, - 125, 142, 36, 110, 175, 129, 81, 27, 127, 95, 23, 70, 213, 125, - 78, 26, 58, 80, 157, 13, 97, 117, 211, 238, 183, 163, 250, 47, - 12, 37, 49, 103, 37, 200, 45, 45, 248, 239, 75, 9, 86, 98, - 3, 215, 1, 54, 240, 146, 16, 54, 176, 86, 130, 136, 13, 236, - 173, 226, 215, 192, 60, 17, 145, 252, 55, 66, 95, 36, 155, 220, - 33, 84, 131, 246, 153, 112, 254, 186, 176, 1, 116, 225, 191, 17, - 234, 34, 73, 36, 217, 181, 6, 73, 38, 201, 117, 61, 72, 166, - 132, 243, 34, 209, 208, 186, 13, 136, 231, 247, 34, 73, 245, 171, - 211, 85, 131, 84, 150, 183, 208, 223, 204, 211, 85, 3, 168, 205, - 91, 168, 86, 155, 13, 160, 54, 111, 161, 41, 92, 90, 169, 39, - 111, 161, 173, 109, 252, 29, 20, 166, 138, 9, 231, 54, 74, 59, - 221, 159, 46, 64, 109, 190, 86, 199, 171, 248, 14, 44, 248, 124, - 213, 0, 10, 244, 54, 132, 207, 108, 0, 5, 122, 27, 98, 178, - 54, 128, 2, 189, 141, 182, 119, 240, 33, 5, 141, 253, 30, 154, - 248, 16, 69, 80, 253, 90, 106, 163, 138, 220, 225, 68, 56, 239, - 161, 169, 181, 252, 119, 17, 27, 251, 78, 74, 55, 185, 83, 85, - 14, 88, 213, 110, 118, 230, 167, 83, 236, 29, 106, 20, 11, 7, - 57, 112, 39, 66, 45, 114, 80, 44, 119, 34, 188, 171, 130, 216, - 190, 19, 225, 93, 21, 196, 246, 157, 116, 96, 80, 41, 22, 174, - 17, 143, 127, 5, 20, 11, 7, 197, 242, 193, 0, 178, 90, 129, - 18, 107, 197, 194, 53, 40, 113, 87, 55, 84, 191, 106, 20, 201, - 187, 105, 226, 227, 180, 122, 245, 171, 170, 1, 169, 17, 192, 234, - 187, 105, 170, 135, 63, 79, 16, 177, 250, 52, 165, 105, 247, 105, - 75, 185, 132, 3, 10, 236, 243, 68, 40, 56, 32, 162, 98, 170, - 93, 220, 190, 130, 42, 70, 79, 194, 252, 148, 76, 35, 48, 215, - 233, 0, 24, 26, 252, 127, 84, 43, 25, 133, 183, 125, 154, 106, - 37, 163, 240, 182, 79, 83, 111, 21, 223, 165, 144, 143, 63, 73, - 19, 255, 145, 18, 247, 162, 57, 26, 103, 177, 139, 176, 136, 8, - 231, 147, 52, 181, 158, 247, 33, 238, 241, 189, 148, 174, 116, 87, - 122, 135, 106, 68, 102, 4, 208, 199, 117, 240, 124, 189, 133, 117, - 124, 47, 77, 185, 22, 214, 241, 189, 116, 249, 10, 184, 93, 108, - 18, 201, 251, 104, 226, 1, 74, 220, 158, 234, 14, 88, 3, 165, - 27, 116, 176, 137, 8, 231, 62, 249, 205, 61, 8, 73, 252, 105, - 74, 183, 187, 151, 84, 120, 94, 51, 22, 12, 111, 200, 227, 26, - 170, 194, 27, 194, 3, 254, 116, 24, 15, 248, 211, 84, 187, 90, - 21, 30, 240, 167, 169, 174, 6, 167, 240, 128, 63, 77, 117, 53, - 56, 131, 7, 252, 105, 218, 186, 149, 95, 172, 240, 113, 63, 67, - 19, 95, 162, 213, 239, 78, 67, 209, 205, 214, 232, 22, 19, 225, - 124, 134, 166, 186, 249, 12, 130, 226, 158, 161, 244, 50, 247, 104, - 12, 222, 178, 118, 192, 134, 66, 0, 188, 158, 152, 123, 225, 245, - 96, 88, 133, 43, 15, 245, 196, 220, 178, 174, 15, 128, 108, 235, - 160, 221, 148, 133, 92, 123, 6, 177, 145, 21, 114, 237, 25, 196, - 70, 94, 12, 115, 113, 6, 177, 145, 23, 227, 92, 156, 161, 237, - 151, 242, 127, 81, 208, 190, 68, 56, 15, 73, 219, 226, 59, 213, - 108, 139, 32, 24, 227, 149, 178, 41, 130, 22, 94, 89, 91, 98, - 49, 136, 205, 135, 112, 11, 44, 6, 177, 249, 16, 218, 18, 139, - 65, 108, 62, 36, 109, 137, 23, 212, 212, 80, 225, 60, 42, 109, - 137, 127, 156, 159, 167, 214, 176, 206, 171, 237, 162, 181, 26, 94, - 232, 225, 123, 49, 152, 91, 143, 6, 236, 37, 249, 227, 81, 180, - 29, 22, 131, 185, 245, 168, 180, 29, 46, 81, 192, 200, 127, 77, - 19, 127, 67, 137, 187, 177, 150, 111, 54, 110, 43, 53, 19, 225, - 252, 53, 77, 45, 231, 23, 35, 138, 242, 227, 82, 155, 108, 128, - 229, 142, 196, 13, 133, 157, 177, 106, 127, 133, 176, 149, 31, 15, - 99, 43, 63, 30, 198, 86, 126, 60, 140, 173, 252, 184, 148, 201, - 224, 136, 109, 6, 247, 23, 253, 77, 113, 196, 54, 3, 247, 127, - 29, 151, 182, 89, 121, 232, 208, 104, 104, 86, 30, 58, 105, 52, - 200, 165, 109, 17, 201, 191, 165, 137, 31, 153, 165, 173, 98, 52, - 196, 45, 109, 11, 17, 206, 223, 202, 165, 133, 251, 142, 22, 185, - 182, 79, 202, 181, 125, 222, 178, 20, 50, 86, 200, 217, 43, 230, - 131, 85, 72, 121, 217, 12, 70, 197, 69, 188, 24, 175, 218, 233, - 180, 5, 152, 244, 73, 100, 210, 22, 144, 224, 79, 162, 225, 208, - 2, 76, 250, 36, 26, 14, 45, 192, 164, 79, 74, 38, 189, 2, - 166, 143, 8, 231, 155, 114, 250, 182, 134, 202, 220, 207, 255, 80, - 218, 2, 135, 210, 111, 82, 186, 20, 73, 248, 114, 43, 54, 43, - 151, 255, 155, 178, 89, 208, 11, 45, 82, 248, 125, 239, 55, 68, - 47, 180, 128, 208, 251, 30, 234, 133, 22, 16, 122, 223, 67, 189, - 208, 2, 66, 239, 123, 82, 47, 252, 76, 77, 13, 19, 206, 15, - 165, 94, 248, 167, 121, 158, 49, 95, 19, 197, 16, 109, 121, 161, - 154, 161, 5, 78, 149, 63, 68, 241, 209, 2, 167, 202, 31, 162, - 102, 104, 129, 83, 229, 15, 165, 102, 216, 202, 169, 179, 68, 36, - 255, 133, 38, 126, 70, 49, 136, 171, 154, 189, 27, 39, 63, 150, - 16, 225, 252, 11, 77, 173, 224, 159, 144, 179, 189, 68, 202, 143, - 159, 200, 13, 112, 23, 49, 206, 200, 140, 85, 112, 96, 119, 182, - 88, 42, 215, 172, 85, 161, 42, 48, 86, 47, 72, 193, 189, 194, - 124, 78, 158, 102, 15, 154, 99, 231, 18, 216, 224, 63, 193, 13, - 190, 4, 180, 208, 79, 80, 11, 45, 129, 13, 254, 19, 220, 105, - 75, 96, 131, 255, 68, 238, 180, 251, 212, 0, 137, 112, 126, 250, - 43, 113, 236, 92, 2, 26, 228, 167, 200, 2, 75, 64, 132, 252, - 20, 53, 200, 18, 16, 33, 63, 149, 26, 100, 132, 83, 71, 136, - 228, 47, 105, 226, 126, 70, 220, 109, 179, 29, 59, 49, 241, 77, - 23, 24, 220, 47, 71, 146, 157, 216, 234, 93, 162, 57, 66, 16, - 225, 252, 146, 166, 60, 254, 79, 114, 194, 132, 228, 136, 151, 37, - 71, 252, 207, 168, 99, 211, 196, 186, 254, 58, 220, 236, 9, 224, - 170, 151, 145, 171, 4, 168, 141, 151, 81, 109, 8, 224, 170, 151, - 81, 109, 8, 224, 170, 151, 37, 87, 109, 131, 57, 34, 194, 185, - 133, 209, 181, 112, 143, 90, 137, 79, 87, 83, 83, 8, 208, 20, - 183, 48, 218, 142, 36, 124, 172, 195, 67, 146, 73, 114, 245, 26, - 254, 101, 10, 77, 81, 225, 220, 206, 232, 50, 247, 207, 233, 28, - 175, 242, 236, 59, 17, 200, 184, 139, 65, 54, 205, 84, 98, 6, - 134, 140, 28, 173, 73, 124, 149, 75, 134, 241, 240, 83, 153, 44, - 100, 156, 97, 142, 135, 70, 61, 44, 148, 35, 202, 163, 186, 214, - 169, 184, 13, 172, 213, 211, 170, 74, 168, 82, 7, 85, 81, 65, - 102, 202, 165, 6, 186, 157, 105, 13, 36, 64, 3, 221, 206, 82, - 173, 72, 50, 73, 118, 116, 170, 203, 65, 33, 201, 247, 51, 218, - 238, 254, 184, 166, 67, 216, 108, 135, 87, 212, 25, 108, 90, 153, - 187, 146, 238, 141, 83, 211, 189, 85, 21, 117, 239, 160, 53, 81, - 82, 11, 189, 63, 152, 40, 136, 232, 99, 41, 220, 20, 12, 102, - 166, 181, 77, 121, 206, 5, 117, 132, 243, 97, 70, 59, 221, 103, - 22, 224, 14, 70, 177, 244, 154, 184, 130, 131, 198, 23, 170, 176, - 5, 117, 234, 96, 244, 41, 36, 137, 36, 181, 194, 22, 112, 123, - 248, 97, 214, 222, 193, 31, 100, 48, 85, 117, 194, 185, 143, 209, - 13, 238, 167, 216, 185, 190, 71, 149, 29, 158, 84, 159, 204, 20, - 131, 29, 133, 204, 56, 89, 200, 229, 10, 39, 229, 182, 213, 15, - 101, 243, 198, 119, 181, 65, 167, 46, 43, 198, 216, 191, 235, 141, - 187, 70, 43, 175, 84, 79, 30, 243, 243, 60, 56, 34, 110, 229, - 222, 6, 79, 35, 172, 200, 63, 109, 56, 21, 139, 54, 79, 97, - 34, 130, 236, 77, 161, 228, 35, 95, 106, 229, 59, 89, 152, 201, - 155, 116, 19, 109, 29, 132, 68, 83, 97, 236, 45, 62, 152, 34, - 85, 70, 3, 61, 31, 218, 119, 237, 208, 117, 7, 227, 187, 238, - 237, 63, 112, 104, 238, 189, 215, 16, 176, 122, 17, 235, 146, 176, - 106, 93, 72, 18, 73, 234, 11, 98, 65, 235, 152, 36, 123, 214, - 67, 80, 229, 82, 145, 252, 83, 150, 120, 132, 97, 80, 101, 45, - 31, 100, 88, 35, 131, 18, 94, 74, 132, 243, 167, 44, 181, 138, - 223, 200, 29, 103, 169, 212, 193, 127, 198, 232, 122, 119, 52, 124, - 67, 28, 64, 166, 218, 238, 252, 138, 210, 41, 189, 56, 66, 109, - 157, 133, 6, 9, 157, 95, 10, 218, 239, 207, 24, 53, 100, 82, - 146, 141, 237, 72, 18, 73, 118, 172, 65, 146, 73, 114, 93, 143, - 178, 169, 150, 66, 201, 122, 246, 171, 96, 83, 45, 5, 155, 234, - 115, 184, 75, 151, 130, 178, 253, 28, 211, 54, 213, 82, 80, 182, - 159, 99, 93, 221, 252, 41, 6, 3, 163, 194, 121, 152, 209, 213, - 238, 223, 41, 120, 245, 56, 240, 111, 93, 45, 218, 192, 250, 134, - 23, 70, 201, 127, 253, 134, 220, 142, 199, 253, 83, 254, 4, 135, - 212, 116, 105, 236, 234, 105, 202, 72, 46, 6, 131, 100, 74, 171, - 236, 241, 98, 161, 84, 234, 43, 250, 147, 126, 209, 87, 25, 138, - 82, 114, 90, 75, 219, 31, 20, 248, 49, 122, 198, 106, 199, 244, - 71, 161, 167, 103, 75, 222, 84, 102, 26, 83, 206, 164, 206, 10, - 172, 50, 181, 217, 172, 79, 3, 26, 124, 230, 68, 33, 59, 1, - 105, 253, 165, 82, 246, 132, 117, 248, 45, 101, 111, 246, 251, 189, - 93, 153, 241, 99, 186, 65, 195, 212, 227, 8, 232, 62, 3, 133, - 193, 50, 82, 203, 113, 239, 120, 54, 87, 24, 59, 85, 246, 149, - 135, 64, 45, 159, 170, 16, 63, 147, 201, 229, 78, 201, 85, 84, - 152, 207, 82, 25, 102, 188, 99, 153, 252, 196, 228, 76, 78, 117, - 113, 18, 134, 95, 198, 145, 113, 156, 244, 108, 62, 154, 239, 85, - 210, 165, 230, 115, 210, 182, 210, 247, 93, 83, 30, 52, 86, 244, - 39, 102, 228, 180, 132, 71, 128, 12, 65, 147, 176, 198, 200, 233, - 146, 151, 31, 102, 29, 43, 144, 100, 146, 92, 149, 134, 184, 226, - 86, 145, 252, 43, 150, 248, 14, 171, 30, 87, 28, 7, 48, 97, - 237, 234, 86, 34, 156, 191, 98, 169, 213, 124, 49, 119, 156, 86, - 150, 16, 201, 47, 51, 250, 53, 198, 160, 177, 86, 38, 119, 217, - 151, 25, 95, 201, 223, 69, 120, 82, 210, 224, 169, 99, 206, 229, - 238, 12, 172, 239, 124, 43, 168, 24, 248, 0, 85, 94, 82, 225, - 79, 87, 169, 149, 50, 57, 147, 203, 121, 19, 133, 241, 25, 249, - 32, 70, 95, 54, 243, 122, 213, 141, 58, 232, 135, 245, 3, 145, - 63, 52, 138, 224, 7, 38, 127, 104, 107, 15, 126, 72, 201, 31, - 58, 134, 184, 224, 92, 255, 0, 206, 240, 199, 217, 178, 203, 248, - 91, 244, 240, 136, 112, 190, 202, 156, 61, 238, 111, 197, 86, 49, - 137, 233, 190, 221, 123, 91, 138, 153, 33, 240, 170, 99, 144, 27, - 255, 171, 246, 24, 8, 180, 222, 216, 17, 252, 192, 228, 15, 110, - 87, 240, 67, 74, 254, 208, 189, 219, 140, 65, 7, 11, 124, 149, - 173, 216, 201, 119, 201, 37, 148, 11, 244, 13, 198, 150, 185, 23, - 85, 9, 13, 87, 166, 67, 20, 107, 31, 53, 179, 102, 194, 86, - 152, 224, 111, 48, 214, 128, 36, 145, 36, 111, 69, 146, 73, 178, - 163, 147, 127, 129, 64, 163, 68, 56, 79, 48, 122, 190, 251, 159, - 164, 184, 205, 101, 75, 101, 99, 131, 98, 250, 160, 101, 200, 31, - 243, 75, 189, 200, 50, 167, 240, 34, 88, 243, 174, 22, 87, 220, - 146, 87, 7, 179, 55, 131, 217, 8, 134, 190, 50, 147, 46, 28, - 28, 236, 247, 134, 242, 167, 12, 199, 79, 26, 152, 118, 185, 101, - 47, 28, 28, 52, 239, 235, 35, 128, 54, 114, 51, 121, 207, 47, - 22, 11, 69, 51, 76, 226, 64, 207, 13, 153, 148, 164, 174, 10, - 216, 10, 11, 242, 4, 91, 213, 143, 36, 147, 228, 166, 205, 234, - 224, 211, 42, 101, 241, 183, 95, 63, 248, 156, 213, 193, 167, 21, - 14, 62, 223, 70, 123, 190, 21, 164, 221, 183, 241, 224, 211, 10, - 210, 238, 219, 146, 209, 118, 112, 234, 180, 137, 228, 119, 89, 226, - 89, 86, 35, 22, 124, 22, 113, 215, 70, 132, 243, 93, 150, 90, - 195, 255, 78, 242, 109, 155, 220, 44, 79, 75, 43, 230, 203, 68, - 133, 241, 153, 221, 16, 10, 82, 48, 181, 36, 129, 231, 130, 83, - 149, 220, 72, 82, 237, 231, 215, 149, 181, 153, 8, 177, 129, 218, - 48, 8, 46, 47, 140, 213, 236, 13, 231, 178, 128, 76, 175, 42, - 141, 200, 247, 138, 126, 160, 240, 192, 13, 5, 78, 130, 73, 93, - 40, 4, 140, 141, 94, 79, 1, 230, 79, 103, 138, 229, 236, 248, - 76, 46, 83, 84, 79, 202, 41, 63, 58, 147, 41, 102, 242, 101, - 223, 84, 155, 108, 3, 187, 233, 105, 100, 233, 54, 176, 155, 158, - 70, 187, 169, 13, 54, 242, 211, 104, 55, 181, 193, 70, 126, 90, - 218, 77, 96, 94, 180, 201, 217, 127, 230, 117, 243, 226, 215, 216, - 188, 104, 3, 25, 247, 12, 154, 23, 109, 32, 227, 158, 65, 243, - 162, 13, 100, 220, 51, 210, 188, 184, 148, 83, 167, 93, 36, 159, - 99, 137, 119, 57, 213, 43, 30, 87, 128, 73, 89, 155, 173, 157, - 8, 231, 57, 150, 242, 160, 20, 87, 187, 220, 107, 47, 48, 250, - 6, 183, 59, 0, 130, 186, 90, 153, 5, 198, 65, 166, 251, 216, - 14, 218, 231, 5, 180, 137, 219, 129, 105, 95, 96, 13, 45, 72, - 50, 73, 46, 109, 69, 50, 37, 201, 182, 237, 112, 199, 221, 142, - 106, 253, 5, 214, 126, 41, 164, 249, 181, 75, 166, 254, 57, 163, - 231, 185, 155, 188, 221, 0, 170, 1, 178, 56, 51, 61, 157, 59, - 133, 112, 21, 97, 102, 54, 240, 252, 216, 29, 57, 101, 63, 103, - 180, 3, 73, 248, 96, 231, 42, 36, 153, 36, 215, 172, 229, 239, - 164, 208, 28, 21, 206, 75, 140, 182, 187, 63, 171, 233, 156, 49, - 233, 239, 126, 94, 158, 56, 94, 49, 39, 205, 96, 149, 230, 230, - 113, 165, 178, 183, 82, 170, 239, 173, 34, 214, 247, 154, 57, 147, - 114, 253, 37, 148, 235, 237, 32, 215, 95, 66, 63, 77, 59, 200, - 245, 151, 140, 159, 166, 93, 146, 239, 116, 22, 232, 167, 65, 214, - 123, 77, 252, 52, 65, 227, 11, 245, 211, 180, 131, 75, 235, 157, - 142, 225, 118, 70, 36, 169, 253, 52, 237, 224, 210, 122, 167, 211, - 222, 1, 135, 248, 14, 145, 252, 67, 39, 113, 167, 51, 151, 67, - 124, 204, 150, 236, 32, 194, 249, 67, 39, 181, 138, 175, 231, 142, - 211, 33, 183, 228, 237, 14, 29, 112, 187, 244, 210, 7, 7, 249, - 171, 194, 91, 160, 3, 180, 202, 237, 14, 53, 100, 82, 146, 141, - 203, 145, 36, 146, 92, 177, 1, 73, 38, 201, 190, 126, 117, 26, - 239, 144, 107, 255, 62, 231, 87, 225, 52, 222, 1, 70, 249, 251, - 112, 45, 58, 96, 171, 191, 207, 209, 167, 241, 14, 216, 234, 239, - 115, 186, 186, 177, 70, 203, 255, 11, 0, 0, 255, 255, 136, 63, - 31, 16, 183, 193, 2, 0}, + 8, 244, 237, 130, 31, 35, 108, 133, 227, 141, 184, 32, 184, 198, + 220, 88, 164, 232, 77, 66, 129, 147, 113, 35, 246, 231, 67, 245, + 168, 188, 170, 240, 232, 163, 250, 31, 248, 255, 209, 71, 225, 71, + 87, 254, 184, 93, 199, 127, 26, 156, 177, 38, 99, 59, 187, 30, + 1, 115, 73, 39, 155, 213, 73, 124, 88, 75, 206, 167, 184, 181, + 17, 117, 92, 159, 49, 76, 216, 195, 122, 255, 75, 239, 50, 140, + 253, 168, 91, 242, 102, 25, 251, 81, 118, 103, 137, 157, 43, 177, + 133, 18, 59, 199, 94, 139, 245, 64, 176, 238, 237, 6, 173, 131, + 3, 43, 203, 134, 219, 125, 13, 75, 236, 78, 104, 11, 13, 91, + 238, 54, 111, 177, 25, 53, 250, 89, 209, 164, 94, 106, 28, 104, + 114, 151, 106, 34, 94, 153, 19, 100, 146, 245, 121, 169, 121, 160, + 254, 121, 85, 95, 164, 38, 109, 6, 129, 172, 188, 83, 218, 61, + 80, 249, 14, 93, 89, 100, 245, 156, 57, 63, 171, 222, 152, 0, + 50, 205, 179, 69, 77, 54, 25, 246, 161, 115, 136, 235, 72, 94, + 25, 67, 20, 71, 188, 213, 148, 175, 224, 201, 16, 9, 76, 85, + 199, 210, 76, 47, 94, 16, 147, 57, 109, 189, 120, 54, 117, 179, + 76, 157, 81, 203, 20, 107, 120, 171, 33, 104, 170, 32, 221, 72, + 164, 123, 102, 12, 140, 96, 17, 125, 196, 253, 122, 43, 144, 129, + 31, 58, 66, 87, 92, 55, 19, 26, 76, 153, 245, 50, 57, 134, + 49, 198, 94, 152, 36, 69, 197, 0, 222, 250, 53, 54, 211, 9, + 162, 200, 219, 110, 237, 167, 159, 50, 211, 209, 61, 137, 230, 147, + 74, 84, 45, 212, 62, 76, 84, 42, 238, 67, 202, 40, 25, 77, + 174, 189, 93, 48, 29, 145, 191, 144, 106, 250, 32, 168, 152, 104, + 248, 69, 77, 69, 180, 248, 117, 148, 43, 38, 38, 242, 5, 181, + 202, 48, 13, 87, 84, 95, 52, 19, 39, 182, 152, 190, 170, 7, + 223, 82, 4, 21, 97, 172, 145, 138, 99, 21, 212, 73, 209, 47, + 253, 182, 4, 62, 129, 214, 9, 209, 66, 133, 15, 139, 156, 204, + 122, 248, 152, 66, 75, 38, 164, 103, 237, 32, 66, 167, 66, 176, + 125, 221, 11, 186, 145, 34, 174, 122, 36, 80, 140, 173, 81, 148, + 116, 117, 119, 92, 207, 215, 153, 109, 85, 50, 228, 116, 30, 223, + 244, 52, 244, 190, 128, 17, 213, 131, 14, 47, 137, 72, 109, 140, + 75, 209, 153, 130, 15, 25, 117, 47, 171, 78, 71, 98, 121, 171, + 56, 47, 113, 211, 6, 211, 211, 74, 174, 242, 226, 72, 42, 174, + 178, 174, 224, 21, 209, 35, 201, 46, 169, 241, 112, 94, 20, 17, + 106, 61, 188, 144, 16, 80, 217, 64, 34, 30, 15, 176, 108, 243, + 29, 207, 71, 54, 146, 90, 87, 63, 101, 196, 77, 224, 104, 215, + 13, 133, 105, 209, 151, 105, 90, 197, 109, 137, 12, 185, 216, 6, + 7, 249, 144, 8, 47, 18, 97, 82, 238, 97, 35, 78, 15, 51, + 10, 218, 42, 129, 104, 95, 77, 192, 172, 13, 187, 54, 119, 245, + 179, 48, 2, 5, 24, 77, 220, 111, 184, 135, 44, 34, 86, 196, + 231, 134, 139, 210, 130, 69, 33, 137, 239, 138, 186, 66, 66, 193, + 200, 82, 137, 195, 245, 202, 236, 121, 204, 36, 73, 201, 153, 112, + 52, 32, 74, 54, 76, 79, 188, 197, 166, 82, 130, 200, 16, 114, + 64, 42, 115, 217, 121, 33, 90, 148, 129, 159, 196, 143, 234, 151, + 80, 216, 60, 91, 74, 178, 84, 137, 199, 118, 240, 210, 135, 212, + 123, 83, 203, 72, 106, 168, 157, 48, 216, 118, 183, 69, 180, 76, + 131, 71, 222, 142, 143, 126, 48, 76, 53, 141, 110, 66, 22, 227, + 122, 86, 84, 82, 158, 3, 145, 59, 37, 118, 253, 70, 9, 148, + 98, 188, 183, 32, 34, 162, 131, 102, 234, 43, 117, 17, 143, 195, + 196, 91, 40, 245, 32, 108, 164, 242, 116, 226, 213, 19, 169, 28, + 79, 160, 222, 255, 161, 140, 169, 193, 12, 128, 82, 239, 159, 64, + 189, 255, 67, 153, 201, 99, 10, 180, 0, 60, 206, 208, 193, 50, + 1, 86, 228, 135, 51, 230, 119, 50, 34, 252, 121, 2, 13, 161, + 15, 103, 8, 37, 111, 201, 146, 12, 192, 160, 225, 252, 86, 198, + 46, 21, 190, 149, 73, 63, 58, 32, 211, 162, 187, 97, 172, 216, + 245, 70, 58, 154, 186, 243, 45, 159, 31, 34, 122, 140, 152, 17, + 61, 117, 171, 66, 250, 78, 83, 158, 80, 249, 26, 152, 16, 106, + 50, 133, 27, 6, 233, 185, 66, 74, 130, 146, 40, 110, 88, 135, + 65, 16, 31, 218, 3, 149, 101, 7, 36, 146, 140, 103, 138, 123, + 222, 15, 96, 65, 189, 222, 197, 55, 232, 123, 152, 22, 189, 40, + 240, 17, 220, 250, 113, 11, 188, 3, 183, 192, 123, 112, 191, 36, + 137, 132, 190, 32, 4, 113, 139, 151, 213, 29, 122, 152, 205, 153, + 59, 102, 25, 59, 123, 22, 219, 169, 27, 148, 101, 28, 219, 204, + 61, 179, 90, 113, 56, 123, 22, 81, 234, 10, 176, 1, 207, 204, + 166, 52, 139, 179, 103, 217, 249, 36, 236, 81, 173, 226, 67, 6, + 218, 243, 113, 145, 73, 32, 77, 200, 59, 177, 151, 122, 3, 238, + 167, 82, 79, 227, 251, 216, 157, 23, 9, 174, 153, 254, 111, 8, + 148, 7, 144, 47, 244, 34, 63, 236, 121, 17, 166, 174, 125, 46, + 72, 212, 135, 190, 65, 130, 250, 199, 1, 244, 231, 15, 213, 250, + 176, 174, 188, 70, 154, 136, 6, 113, 51, 31, 153, 35, 121, 132, + 84, 111, 176, 65, 242, 232, 156, 116, 106, 84, 155, 160, 196, 202, + 16, 26, 193, 74, 45, 55, 138, 21, 75, 30, 152, 124, 152, 121, + 205, 26, 125, 187, 116, 175, 102, 151, 136, 250, 25, 157, 30, 82, + 139, 120, 162, 22, 141, 80, 234, 148, 212, 194, 27, 54, 234, 32, + 174, 237, 213, 131, 86, 224, 207, 202, 56, 254, 9, 233, 132, 248, + 173, 140, 116, 24, 76, 72, 39, 196, 111, 101, 228, 179, 84, 19, + 210, 9, 241, 91, 153, 137, 91, 146, 2, 11, 10, 10, 71, 147, + 130, 28, 20, 28, 59, 67, 242, 36, 39, 11, 76, 40, 185, 117, + 142, 252, 158, 41, 151, 188, 65, 237, 79, 193, 146, 255, 77, 83, + 221, 57, 221, 197, 55, 40, 132, 185, 30, 239, 134, 156, 139, 87, + 3, 186, 161, 214, 182, 46, 200, 132, 223, 45, 207, 7, 235, 0, + 255, 174, 7, 173, 110, 219, 47, 17, 6, 27, 54, 252, 144, 168, + 175, 165, 84, 196, 174, 27, 69, 221, 54, 111, 136, 205, 217, 141, + 82, 136, 102, 75, 216, 84, 224, 209, 15, 92, 184, 161, 190, 54, + 230, 249, 34, 67, 174, 216, 48, 4, 237, 241, 182, 150, 188, 8, + 86, 223, 47, 179, 84, 76, 52, 224, 20, 252, 39, 80, 234, 99, + 16, 64, 249, 36, 15, 131, 121, 225, 220, 7, 253, 67, 199, 172, + 239, 7, 93, 177, 89, 236, 201, 68, 6, 110, 163, 65, 216, 121, + 188, 126, 6, 226, 75, 158, 134, 52, 188, 168, 211, 114, 247, 61, + 245, 34, 104, 87, 92, 163, 85, 116, 55, 108, 36, 106, 50, 119, + 134, 3, 5, 169, 185, 51, 144, 236, 169, 185, 51, 44, 40, 72, + 205, 157, 145, 131, 130, 212, 220, 25, 48, 119, 159, 130, 185, 251, + 192, 176, 156, 59, 147, 218, 127, 151, 177, 103, 11, 79, 15, 235, + 84, 246, 235, 104, 119, 194, 246, 86, 245, 155, 65, 175, 227, 79, + 39, 180, 77, 113, 172, 74, 124, 237, 98, 122, 175, 125, 48, 74, + 219, 82, 163, 70, 173, 197, 75, 142, 128, 112, 235, 198, 183, 58, + 133, 84, 77, 184, 94, 218, 238, 216, 64, 133, 93, 171, 7, 89, + 20, 195, 167, 55, 120, 66, 216, 34, 230, 208, 149, 27, 33, 186, + 186, 15, 126, 55, 240, 49, 78, 154, 215, 187, 24, 117, 10, 213, + 34, 145, 186, 148, 249, 129, 224, 41, 34, 156, 80, 125, 173, 196, + 102, 172, 235, 139, 163, 189, 88, 250, 155, 241, 97, 85, 109, 15, + 224, 71, 161, 67, 45, 238, 130, 86, 177, 213, 224, 162, 223, 91, + 186, 67, 136, 224, 26, 231, 29, 216, 2, 221, 157, 208, 237, 236, + 98, 183, 117, 5, 100, 55, 209, 1, 162, 136, 53, 179, 221, 141, + 81, 123, 170, 7, 190, 47, 238, 17, 196, 193, 172, 240, 116, 139, + 59, 0, 106, 53, 149, 197, 198, 168, 113, 227, 229, 14, 229, 143, + 221, 222, 23, 217, 151, 250, 7, 19, 36, 20, 75, 182, 84, 161, + 48, 36, 54, 131, 190, 121, 190, 134, 183, 118, 118, 147, 38, 242, + 98, 77, 58, 43, 206, 69, 253, 99, 219, 13, 175, 193, 58, 17, + 126, 240, 179, 103, 103, 133, 113, 21, 225, 123, 164, 28, 173, 0, + 169, 246, 9, 101, 85, 209, 161, 164, 104, 8, 252, 16, 203, 76, + 91, 200, 52, 62, 115, 163, 152, 135, 94, 116, 45, 121, 229, 88, + 163, 59, 40, 49, 209, 176, 195, 124, 172, 192, 24, 65, 114, 129, + 83, 184, 9, 194, 40, 46, 19, 182, 202, 247, 144, 38, 200, 185, + 242, 190, 110, 114, 215, 23, 31, 204, 18, 207, 176, 168, 71, 35, + 122, 54, 22, 204, 13, 163, 189, 9, 184, 247, 46, 201, 225, 167, + 25, 183, 25, 4, 104, 29, 223, 224, 231, 109, 55, 44, 31, 130, + 118, 219, 13, 197, 238, 119, 216, 94, 182, 237, 62, 201, 238, 99, + 119, 92, 124, 94, 180, 79, 170, 175, 46, 250, 82, 63, 7, 74, + 28, 168, 243, 60, 56, 218, 186, 231, 47, 132, 73, 213, 76, 61, + 168, 219, 221, 110, 129, 45, 23, 8, 245, 64, 34, 88, 150, 11, + 67, 243, 137, 120, 251, 40, 220, 73, 189, 14, 11, 12, 175, 152, + 32, 8, 89, 28, 186, 30, 222, 28, 81, 44, 34, 81, 137, 175, + 50, 213, 62, 253, 64, 107, 40, 68, 209, 118, 203, 245, 175, 9, + 166, 87, 171, 65, 222, 148, 21, 122, 32, 162, 1, 187, 162, 252, + 194, 221, 75, 150, 22, 91, 40, 31, 58, 39, 162, 218, 125, 236, + 46, 49, 43, 115, 236, 82, 154, 177, 53, 181, 80, 117, 155, 19, + 169, 249, 113, 216, 108, 69, 142, 85, 177, 119, 36, 171, 40, 38, + 151, 202, 70, 153, 205, 157, 125, 94, 204, 210, 150, 96, 115, 108, + 39, 196, 68, 149, 178, 65, 31, 99, 137, 31, 217, 125, 236, 110, + 61, 43, 50, 74, 129, 53, 250, 134, 31, 165, 182, 35, 211, 198, + 125, 34, 217, 142, 76, 7, 10, 228, 121, 6, 22, 24, 80, 48, + 121, 42, 41, 176, 160, 96, 122, 6, 207, 51, 160, 192, 162, 246, + 183, 51, 246, 156, 174, 96, 217, 88, 144, 224, 180, 28, 40, 72, + 225, 180, 12, 40, 152, 60, 157, 20, 32, 142, 153, 89, 141, 211, + 166, 246, 223, 103, 236, 5, 93, 193, 22, 5, 9, 78, 219, 129, + 130, 20, 78, 219, 128, 130, 201, 249, 164, 192, 130, 130, 115, 231, + 201, 95, 25, 196, 180, 39, 105, 230, 141, 217, 129, 119, 103, 141, + 194, 127, 53, 82, 47, 249, 9, 169, 216, 18, 198, 214, 174, 215, + 97, 219, 60, 222, 227, 220, 239, 187, 79, 38, 172, 238, 56, 234, + 119, 82, 171, 135, 34, 22, 147, 188, 243, 122, 127, 77, 103, 143, + 137, 162, 160, 238, 185, 250, 228, 75, 191, 143, 163, 191, 66, 210, + 94, 239, 228, 200, 92, 189, 243, 128, 26, 38, 102, 227, 7, 22, + 75, 98, 133, 101, 163, 158, 252, 32, 194, 65, 61, 105, 80, 251, + 141, 217, 220, 17, 242, 4, 177, 237, 73, 176, 222, 222, 156, 53, + 79, 23, 30, 103, 139, 62, 91, 212, 65, 47, 106, 11, 138, 132, + 193, 143, 158, 0, 80, 73, 249, 19, 184, 103, 244, 17, 1, 29, + 115, 106, 79, 33, 202, 27, 162, 18, 73, 249, 59, 189, 15, 150, + 160, 37, 57, 137, 202, 234, 155, 179, 166, 6, 51, 0, 14, 221, + 164, 64, 3, 192, 155, 153, 2, 45, 0, 79, 158, 66, 171, 116, + 18, 172, 210, 127, 158, 53, 159, 205, 10, 171, 116, 18, 173, 210, + 127, 158, 37, 147, 228, 29, 6, 201, 0, 12, 227, 122, 107, 214, + 46, 21, 126, 60, 109, 148, 98, 164, 102, 239, 206, 215, 127, 184, + 208, 243, 102, 118, 242, 222, 24, 70, 25, 11, 95, 58, 110, 203, + 202, 85, 228, 246, 107, 79, 101, 229, 227, 47, 11, 47, 18, 114, + 221, 164, 212, 205, 223, 154, 149, 140, 58, 41, 117, 243, 183, 102, + 165, 126, 55, 41, 117, 243, 183, 102, 165, 126, 55, 41, 117, 243, + 183, 102, 165, 126, 55, 41, 117, 243, 183, 102, 165, 126, 55, 169, + 116, 243, 183, 102, 111, 157, 35, 107, 114, 220, 6, 181, 223, 158, + 181, 79, 21, 238, 239, 31, 55, 242, 0, 102, 230, 22, 182, 137, + 84, 177, 14, 31, 127, 170, 223, 160, 151, 190, 61, 221, 111, 208, + 75, 223, 158, 149, 11, 108, 82, 234, 165, 111, 207, 78, 30, 79, + 10, 44, 40, 40, 158, 36, 123, 178, 83, 38, 181, 159, 202, 218, + 183, 22, 118, 250, 59, 133, 154, 188, 216, 189, 155, 17, 199, 73, + 217, 222, 143, 147, 135, 107, 123, 249, 76, 102, 35, 199, 101, 153, + 68, 193, 167, 142, 17, 197, 105, 124, 170, 243, 32, 46, 158, 74, + 119, 30, 164, 216, 83, 105, 162, 3, 193, 158, 202, 202, 151, 128, + 39, 165, 20, 123, 42, 123, 244, 24, 249, 19, 197, 74, 22, 181, + 223, 149, 181, 143, 22, 254, 163, 113, 128, 151, 100, 112, 217, 139, + 233, 188, 188, 57, 251, 60, 157, 71, 44, 34, 65, 15, 247, 21, + 156, 58, 239, 4, 185, 208, 113, 163, 56, 101, 134, 134, 188, 197, + 175, 227, 107, 234, 251, 49, 103, 51, 242, 161, 62, 145, 83, 66, + 153, 144, 184, 102, 239, 67, 148, 243, 66, 95, 154, 77, 81, 8, + 100, 242, 187, 210, 20, 2, 153, 252, 174, 52, 133, 64, 38, 191, + 43, 43, 95, 50, 158, 148, 50, 249, 93, 217, 35, 5, 242, 169, + 147, 228, 184, 72, 62, 127, 214, 237, 120, 103, 113, 161, 108, 169, + 140, 1, 130, 145, 40, 145, 217, 233, 221, 142, 87, 144, 153, 234, + 207, 170, 76, 245, 103, 147, 64, 10, 81, 123, 238, 227, 6, 25, + 65, 203, 255, 146, 196, 66, 111, 35, 133, 7, 170, 149, 149, 229, + 173, 75, 149, 7, 23, 95, 85, 93, 171, 109, 109, 174, 174, 95, + 173, 44, 85, 31, 168, 86, 150, 243, 3, 116, 152, 228, 212, 179, + 235, 121, 3, 160, 90, 229, 71, 54, 171, 181, 202, 114, 222, 164, + 99, 100, 104, 109, 115, 227, 234, 230, 198, 214, 218, 234, 202, 35, + 121, 139, 142, 18, 82, 93, 213, 176, 77, 71, 200, 96, 245, 202, + 149, 205, 141, 197, 75, 43, 149, 188, 67, 41, 25, 221, 92, 93, + 171, 45, 87, 106, 149, 229, 173, 149, 234, 250, 70, 62, 67, 111, + 34, 227, 171, 107, 171, 91, 149, 43, 87, 55, 30, 217, 90, 174, + 60, 176, 184, 185, 178, 145, 207, 34, 166, 229, 202, 234, 6, 116, + 163, 150, 207, 93, 120, 140, 140, 246, 14, 159, 222, 90, 238, 207, + 203, 143, 3, 147, 193, 27, 83, 239, 205, 49, 107, 102, 116, 225, + 72, 57, 161, 79, 185, 103, 228, 181, 145, 102, 26, 188, 212, 33, + 163, 245, 160, 157, 170, 126, 137, 246, 212, 71, 15, 201, 85, 227, + 53, 139, 178, 198, 78, 208, 114, 253, 157, 114, 16, 238, 156, 221, + 225, 62, 118, 226, 172, 248, 201, 237, 120, 17, 78, 88, 42, 198, + 241, 98, 234, 239, 247, 153, 246, 229, 197, 171, 213, 135, 190, 112, + 156, 100, 168, 61, 58, 176, 99, 144, 95, 179, 137, 49, 76, 173, + 209, 1, 186, 240, 111, 108, 182, 20, 116, 246, 67, 111, 103, 55, + 102, 11, 231, 22, 238, 144, 241, 134, 108, 101, 101, 137, 16, 182, + 226, 213, 185, 143, 215, 36, 253, 134, 180, 250, 22, 59, 160, 101, + 168, 95, 74, 236, 85, 34, 35, 14, 91, 40, 159, 99, 51, 232, + 200, 150, 63, 21, 103, 47, 18, 180, 166, 213, 179, 148, 169, 87, + 26, 241, 208, 164, 206, 59, 184, 204, 68, 162, 75, 215, 175, 243, + 36, 247, 166, 196, 81, 38, 152, 107, 19, 159, 138, 222, 198, 45, + 18, 108, 216, 142, 186, 179, 173, 170, 49, 55, 38, 194, 171, 182, + 27, 199, 157, 11, 103, 207, 238, 237, 237, 149, 93, 236, 40, 146, + 172, 37, 170, 69, 103, 87, 170, 75, 149, 213, 245, 202, 252, 66, + 249, 28, 33, 108, 211, 199, 75, 173, 250, 194, 235, 246, 190, 122, + 61, 17, 180, 223, 150, 187, 135, 30, 201, 157, 80, 166, 252, 242, + 124, 149, 51, 166, 196, 162, 160, 25, 239, 161, 81, 212, 240, 64, + 133, 220, 238, 198, 61, 84, 82, 29, 147, 175, 175, 171, 10, 1, + 94, 77, 45, 46, 174, 179, 234, 122, 145, 93, 90, 92, 175, 174, + 151, 8, 123, 184, 186, 241, 224, 218, 230, 6, 123, 120, 177, 86, + 91, 92, 221, 168, 86, 214, 217, 90, 141, 45, 173, 173, 46, 87, + 97, 45, 172, 179, 181, 7, 216, 226, 234, 35, 236, 149, 213, 213, + 229, 146, 186, 224, 203, 159, 0, 187, 62, 194, 0, 70, 140, 230, + 107, 164, 50, 191, 170, 207, 235, 120, 114, 245, 200, 131, 206, 139, + 182, 19, 92, 231, 33, 154, 90, 152, 177, 35, 146, 239, 87, 250, + 13, 194, 48, 119, 141, 244, 75, 31, 24, 81, 153, 144, 28, 49, + 76, 106, 229, 7, 38, 200, 32, 49, 173, 1, 106, 209, 129, 57, + 40, 204, 81, 107, 114, 224, 213, 80, 152, 27, 18, 127, 138, 194, + 155, 6, 138, 88, 72, 196, 159, 162, 240, 230, 129, 59, 176, 80, + 254, 41, 10, 111, 25, 152, 198, 66, 67, 252, 41, 10, 167, 100, + 243, 83, 234, 79, 35, 75, 237, 194, 192, 140, 65, 62, 111, 17, + 51, 59, 64, 173, 105, 243, 66, 225, 119, 44, 182, 40, 29, 243, + 41, 239, 159, 30, 183, 202, 109, 33, 243, 159, 204, 168, 57, 47, + 169, 151, 149, 65, 87, 43, 225, 139, 60, 179, 24, 138, 165, 214, + 121, 79, 162, 208, 94, 83, 178, 207, 53, 201, 126, 116, 38, 181, + 250, 123, 229, 199, 44, 187, 143, 41, 81, 246, 90, 52, 49, 214, + 99, 55, 150, 239, 187, 188, 152, 198, 41, 201, 39, 218, 247, 139, + 163, 229, 174, 244, 196, 196, 113, 11, 16, 138, 229, 240, 2, 88, + 19, 241, 121, 56, 210, 13, 175, 205, 163, 216, 109, 119, 128, 219, + 188, 144, 111, 197, 158, 24, 235, 139, 194, 158, 234, 115, 73, 250, + 188, 95, 160, 59, 74, 122, 191, 246, 34, 33, 132, 88, 217, 1, + 147, 90, 133, 236, 73, 241, 183, 13, 19, 45, 203, 51, 212, 154, + 30, 146, 229, 6, 181, 166, 79, 45, 136, 191, 45, 106, 77, 223, + 117, 47, 249, 178, 73, 76, 103, 128, 218, 231, 6, 118, 140, 194, + 255, 101, 226, 141, 125, 191, 225, 213, 49, 53, 153, 20, 29, 233, + 92, 56, 174, 124, 151, 94, 112, 201, 76, 179, 247, 104, 192, 141, + 149, 31, 89, 230, 18, 146, 226, 2, 21, 246, 215, 117, 121, 20, + 139, 123, 193, 2, 135, 27, 41, 150, 194, 252, 36, 210, 56, 115, + 65, 143, 232, 116, 227, 89, 149, 214, 96, 110, 78, 157, 174, 205, + 205, 165, 19, 115, 235, 110, 41, 30, 172, 7, 45, 38, 223, 176, + 148, 103, 232, 23, 193, 8, 22, 177, 149, 34, 208, 46, 234, 109, + 9, 70, 12, 72, 76, 153, 78, 99, 55, 216, 99, 139, 87, 171, + 24, 216, 1, 252, 186, 235, 250, 141, 150, 86, 35, 85, 102, 66, + 12, 76, 223, 208, 151, 172, 230, 230, 218, 238, 254, 220, 28, 11, + 121, 157, 123, 215, 57, 102, 106, 237, 121, 24, 56, 57, 149, 34, + 196, 114, 96, 18, 206, 57, 148, 220, 79, 108, 7, 180, 117, 107, + 193, 60, 81, 88, 96, 75, 129, 127, 29, 52, 34, 225, 84, 144, + 81, 205, 72, 93, 188, 193, 151, 186, 87, 140, 27, 3, 6, 173, + 58, 14, 234, 206, 214, 130, 121, 76, 65, 38, 181, 22, 142, 51, + 242, 179, 6, 98, 55, 168, 117, 143, 57, 86, 248, 73, 67, 166, + 80, 146, 126, 91, 69, 10, 229, 242, 119, 35, 109, 59, 151, 9, + 123, 24, 83, 109, 96, 98, 14, 145, 247, 226, 48, 242, 186, 33, + 103, 137, 199, 58, 86, 137, 6, 182, 181, 252, 148, 105, 101, 24, + 111, 119, 118, 221, 200, 19, 57, 7, 146, 183, 50, 117, 255, 13, + 236, 163, 134, 76, 106, 221, 51, 50, 74, 254, 189, 232, 191, 73, + 173, 151, 155, 99, 133, 95, 6, 251, 244, 64, 151, 21, 115, 233, + 236, 23, 130, 109, 121, 42, 153, 139, 168, 59, 55, 215, 238, 70, + 192, 59, 219, 60, 73, 107, 237, 70, 61, 103, 116, 146, 59, 75, + 194, 7, 222, 116, 189, 22, 62, 207, 27, 176, 70, 192, 34, 249, + 6, 150, 60, 40, 246, 25, 15, 67, 16, 140, 93, 249, 80, 236, + 99, 213, 213, 87, 45, 174, 84, 151, 183, 22, 107, 151, 55, 175, + 84, 86, 55, 30, 155, 213, 195, 131, 41, 120, 185, 30, 30, 14, + 104, 100, 148, 124, 71, 12, 207, 162, 214, 37, 147, 22, 254, 250, + 208, 225, 165, 132, 237, 11, 142, 48, 157, 175, 27, 151, 90, 212, + 9, 96, 19, 47, 201, 196, 63, 245, 86, 87, 221, 112, 32, 233, + 227, 100, 57, 234, 158, 23, 6, 133, 102, 34, 223, 71, 23, 148, + 83, 199, 182, 94, 44, 118, 61, 44, 197, 245, 40, 222, 246, 75, + 104, 226, 138, 164, 158, 17, 102, 202, 74, 37, 45, 156, 142, 228, + 243, 91, 117, 158, 208, 198, 50, 96, 252, 35, 10, 50, 169, 117, + 41, 63, 78, 126, 70, 208, 198, 166, 214, 101, 115, 188, 240, 47, + 15, 165, 13, 202, 135, 239, 147, 52, 74, 10, 201, 163, 111, 210, + 119, 78, 174, 91, 193, 106, 75, 123, 74, 181, 151, 84, 116, 215, + 54, 160, 131, 195, 10, 50, 169, 117, 121, 44, 79, 126, 78, 116, + 222, 161, 214, 138, 153, 47, 60, 115, 120, 231, 219, 237, 110, 12, + 106, 211, 11, 246, 93, 173, 40, 14, 99, 173, 243, 222, 57, 195, + 116, 30, 28, 95, 253, 36, 24, 231, 13, 86, 108, 226, 39, 145, + 249, 159, 132, 184, 108, 8, 103, 33, 158, 71, 232, 17, 56, 6, + 244, 114, 72, 65, 38, 181, 86, 70, 199, 200, 79, 154, 56, 130, + 12, 181, 106, 230, 77, 133, 55, 153, 122, 4, 82, 184, 207, 40, + 143, 249, 108, 42, 143, 171, 207, 186, 62, 230, 139, 225, 13, 214, + 242, 208, 227, 124, 163, 145, 169, 59, 129, 208, 71, 245, 10, 116, + 202, 59, 161, 115, 58, 1, 26, 212, 46, 92, 127, 159, 185, 225, + 182, 23, 135, 110, 184, 207, 68, 90, 154, 18, 11, 221, 94, 71, + 183, 204, 86, 35, 222, 1, 10, 181, 113, 15, 130, 95, 63, 31, + 199, 22, 117, 58, 166, 150, 124, 133, 2, 190, 50, 29, 201, 214, + 168, 58, 135, 105, 234, 69, 114, 158, 36, 141, 50, 6, 80, 37, + 175, 32, 147, 90, 181, 137, 73, 242, 79, 5, 197, 178, 212, 122, + 181, 57, 85, 248, 186, 209, 75, 177, 84, 206, 13, 17, 36, 31, + 201, 87, 45, 197, 73, 133, 146, 244, 50, 45, 94, 83, 165, 187, + 189, 1, 5, 101, 102, 32, 28, 163, 28, 151, 52, 200, 17, 155, + 122, 13, 38, 97, 19, 16, 104, 169, 207, 137, 10, 137, 195, 85, + 68, 237, 11, 211, 27, 145, 166, 115, 135, 185, 123, 40, 229, 155, + 24, 204, 76, 14, 96, 17, 207, 105, 11, 183, 131, 160, 72, 214, + 0, 26, 76, 40, 200, 164, 214, 171, 111, 190, 133, 124, 203, 70, + 250, 228, 168, 213, 52, 199, 11, 95, 182, 251, 233, 195, 123, 37, + 146, 116, 199, 204, 184, 218, 93, 40, 45, 52, 233, 42, 36, 44, + 165, 24, 169, 234, 179, 58, 234, 77, 159, 235, 72, 60, 168, 114, + 198, 1, 235, 250, 222, 235, 186, 120, 83, 77, 56, 30, 228, 11, + 119, 170, 94, 25, 143, 104, 22, 171, 87, 231, 149, 137, 21, 99, + 138, 99, 185, 183, 245, 37, 12, 22, 9, 222, 212, 105, 29, 97, + 143, 193, 87, 30, 83, 25, 223, 123, 123, 160, 83, 120, 105, 165, + 35, 245, 28, 66, 47, 174, 94, 159, 166, 122, 25, 65, 160, 73, + 194, 152, 82, 105, 132, 212, 99, 7, 218, 153, 18, 38, 89, 231, + 147, 134, 248, 86, 181, 136, 244, 74, 252, 164, 189, 90, 62, 145, + 57, 11, 83, 55, 6, 149, 156, 241, 228, 163, 46, 219, 188, 33, + 37, 161, 56, 234, 194, 71, 177, 132, 0, 82, 119, 179, 124, 76, + 203, 224, 37, 218, 132, 120, 3, 201, 23, 207, 103, 139, 20, 94, + 208, 108, 179, 211, 72, 55, 19, 95, 80, 219, 249, 108, 153, 85, + 213, 115, 70, 65, 83, 86, 154, 215, 214, 73, 202, 92, 151, 25, + 66, 31, 75, 252, 17, 143, 165, 17, 105, 182, 4, 27, 169, 169, + 69, 117, 206, 164, 86, 115, 44, 191, 157, 17, 105, 70, 201, 39, + 207, 107, 95, 142, 118, 207, 196, 74, 153, 151, 190, 156, 177, 62, + 109, 191, 120, 145, 12, 106, 133, 159, 78, 145, 108, 196, 235, 129, + 223, 136, 166, 12, 102, 204, 88, 53, 5, 210, 73, 226, 248, 174, + 31, 68, 83, 38, 51, 102, 156, 154, 0, 46, 189, 201, 32, 19, + 41, 143, 134, 66, 122, 105, 84, 163, 84, 46, 141, 133, 131, 46, + 141, 164, 143, 248, 184, 211, 53, 63, 216, 243, 147, 254, 118, 182, + 191, 101, 24, 239, 51, 173, 203, 87, 47, 125, 216, 188, 77, 248, + 39, 202, 87, 149, 141, 242, 48, 111, 181, 94, 9, 13, 54, 160, + 237, 67, 255, 225, 44, 201, 82, 231, 182, 129, 119, 26, 6, 249, + 244, 48, 250, 57, 110, 27, 160, 11, 191, 57, 172, 111, 42, 170, + 107, 138, 108, 62, 185, 91, 137, 15, 255, 96, 244, 151, 84, 197, + 133, 115, 152, 244, 56, 71, 206, 189, 76, 57, 71, 170, 126, 189, + 204, 240, 165, 10, 252, 45, 210, 55, 54, 203, 228, 123, 125, 150, + 158, 16, 86, 227, 218, 69, 128, 177, 130, 242, 137, 45, 79, 229, + 42, 198, 146, 109, 207, 135, 173, 2, 250, 165, 78, 192, 241, 121, + 98, 140, 5, 37, 172, 29, 52, 116, 174, 166, 146, 8, 153, 208, + 89, 87, 181, 170, 144, 200, 38, 29, 243, 12, 83, 234, 233, 220, + 133, 120, 109, 241, 130, 116, 165, 204, 245, 117, 44, 234, 15, 106, + 71, 133, 41, 228, 250, 133, 106, 17, 141, 83, 87, 20, 3, 225, + 26, 227, 37, 118, 148, 54, 176, 43, 137, 51, 243, 228, 139, 242, + 209, 217, 164, 59, 13, 47, 170, 183, 92, 175, 205, 197, 169, 234, + 97, 157, 240, 252, 52, 45, 84, 39, 228, 37, 172, 164, 31, 36, + 233, 200, 15, 212, 15, 117, 47, 171, 47, 124, 254, 255, 101, 239, + 95, 96, 227, 200, 214, 251, 64, 188, 235, 65, 178, 121, 168, 7, + 85, 122, 81, 165, 215, 153, 214, 139, 212, 52, 155, 15, 73, 51, + 35, 106, 164, 185, 77, 178, 37, 246, 12, 95, 211, 77, 206, 75, + 163, 33, 139, 221, 69, 178, 70, 221, 85, 61, 85, 213, 164, 56, + 115, 39, 215, 190, 215, 23, 134, 99, 251, 239, 248, 31, 199, 73, + 110, 124, 131, 56, 113, 46, 28, 36, 235, 197, 38, 235, 56, 142, + 227, 53, 16, 248, 2, 222, 181, 189, 222, 5, 118, 99, 199, 222, + 199, 93, 239, 230, 177, 128, 177, 11, 111, 28, 236, 2, 11, 100, + 23, 231, 251, 206, 57, 117, 170, 217, 148, 52, 227, 228, 26, 11, + 72, 24, 105, 250, 84, 157, 58, 143, 239, 188, 190, 243, 61, 126, + 159, 227, 215, 199, 216, 221, 17, 182, 179, 166, 19, 3, 210, 185, + 194, 149, 9, 65, 150, 34, 31, 18, 118, 223, 172, 83, 139, 92, + 136, 19, 43, 142, 92, 234, 220, 242, 131, 228, 93, 196, 53, 48, + 16, 140, 3, 139, 10, 66, 121, 51, 129, 243, 1, 160, 145, 235, + 65, 24, 185, 220, 33, 173, 25, 196, 46, 119, 76, 139, 163, 84, + 224, 90, 110, 208, 36, 228, 87, 210, 154, 88, 238, 69, 173, 144, + 109, 231, 187, 33, 155, 59, 190, 34, 28, 130, 109, 121, 174, 92, + 165, 213, 165, 251, 43, 239, 22, 43, 37, 90, 174, 210, 229, 202, + 210, 59, 229, 217, 210, 44, 157, 126, 159, 174, 204, 149, 232, 204, + 210, 242, 251, 149, 242, 131, 185, 21, 58, 183, 52, 63, 91, 170, + 84, 105, 113, 113, 150, 206, 44, 45, 174, 84, 202, 211, 171, 43, + 75, 149, 42, 145, 210, 47, 246, 166, 184, 248, 62, 45, 189, 183, + 92, 41, 85, 65, 228, 85, 94, 88, 158, 47, 151, 102, 21, 65, + 88, 158, 150, 23, 103, 230, 87, 103, 203, 139, 15, 242, 116, 122, + 117, 133, 46, 46, 173, 16, 58, 95, 94, 40, 175, 148, 102, 233, + 202, 82, 30, 170, 221, 255, 29, 93, 186, 79, 23, 74, 149, 153, + 185, 226, 226, 74, 113, 186, 60, 95, 94, 121, 31, 42, 188, 95, + 94, 89, 100, 149, 221, 95, 170, 16, 90, 164, 203, 197, 202, 74, + 121, 102, 117, 190, 88, 161, 203, 171, 149, 229, 165, 106, 137, 178, + 158, 205, 150, 171, 51, 243, 197, 242, 66, 105, 182, 64, 203, 139, + 116, 113, 137, 150, 222, 41, 45, 174, 208, 234, 92, 113, 126, 62, + 221, 81, 66, 151, 222, 93, 44, 85, 184, 192, 78, 118, 147, 78, + 151, 232, 124, 185, 56, 61, 95, 98, 85, 65, 63, 103, 203, 149, + 210, 204, 10, 235, 80, 242, 107, 6, 182, 249, 226, 124, 158, 80, + 16, 131, 23, 231, 243, 180, 244, 94, 105, 97, 121, 190, 88, 121, + 63, 207, 11, 173, 150, 222, 94, 101, 135, 65, 113, 158, 206, 22, + 23, 138, 15, 74, 85, 58, 252, 44, 170, 44, 87, 150, 102, 86, + 43, 37, 118, 113, 99, 164, 168, 174, 78, 87, 87, 202, 43, 171, + 43, 37, 250, 96, 105, 105, 22, 136, 93, 45, 85, 222, 41, 207, + 148, 170, 119, 232, 252, 82, 21, 8, 182, 90, 45, 229, 9, 157, + 45, 174, 20, 161, 234, 229, 202, 210, 253, 242, 74, 245, 14, 251, + 61, 189, 90, 45, 3, 225, 202, 139, 43, 165, 74, 101, 21, 132, + 244, 35, 116, 110, 233, 221, 210, 59, 165, 10, 157, 41, 174, 86, + 75, 179, 64, 225, 165, 69, 214, 91, 54, 87, 74, 75, 149, 247, + 89, 177, 140, 14, 48, 2, 121, 250, 238, 92, 105, 101, 174, 84, + 97, 68, 5, 106, 21, 25, 25, 170, 43, 149, 242, 204, 138, 154, + 109, 169, 66, 87, 150, 42, 43, 68, 233, 39, 93, 44, 61, 152, + 47, 63, 40, 45, 206, 148, 216, 235, 37, 86, 204, 187, 229, 106, + 105, 132, 22, 43, 229, 42, 203, 80, 134, 138, 233, 187, 197, 247, + 233, 210, 42, 244, 154, 13, 212, 106, 181, 68, 240, 183, 50, 117, + 243, 48, 158, 180, 124, 159, 22, 103, 223, 41, 179, 150, 243, 220, + 203, 75, 213, 106, 153, 79, 23, 32, 219, 204, 28, 167, 185, 148, + 123, 210, 204, 16, 23, 76, 230, 50, 119, 64, 48, 121, 5, 127, + 226, 195, 75, 153, 139, 240, 240, 34, 254, 196, 135, 151, 51, 101, + 33, 22, 101, 63, 241, 225, 149, 76, 94, 8, 59, 217, 79, 124, + 120, 53, 51, 38, 196, 162, 236, 39, 62, 188, 150, 8, 80, 175, + 73, 1, 234, 112, 230, 37, 33, 22, 101, 63, 255, 135, 243, 68, + 55, 51, 86, 239, 15, 107, 236, 232, 179, 127, 231, 60, 45, 210, + 68, 124, 151, 50, 2, 67, 48, 106, 182, 173, 121, 77, 116, 16, + 226, 200, 206, 2, 100, 21, 158, 127, 10, 126, 122, 104, 23, 222, + 0, 80, 83, 215, 175, 59, 97, 94, 1, 62, 7, 97, 124, 27, + 191, 227, 220, 1, 74, 26, 66, 167, 150, 156, 24, 226, 5, 59, + 16, 24, 171, 0, 105, 116, 226, 197, 77, 17, 195, 11, 64, 65, + 192, 233, 52, 48, 168, 7, 87, 67, 183, 130, 218, 54, 117, 98, + 186, 186, 50, 67, 155, 94, 221, 135, 29, 29, 192, 170, 29, 191, + 205, 142, 129, 137, 60, 157, 184, 253, 234, 120, 94, 108, 212, 173, + 48, 104, 184, 173, 216, 171, 209, 7, 161, 187, 21, 132, 158, 227, + 203, 214, 115, 59, 53, 52, 181, 143, 112, 131, 238, 146, 75, 134, + 6, 131, 160, 200, 174, 19, 210, 192, 119, 69, 112, 170, 166, 231, + 183, 99, 110, 117, 244, 202, 184, 236, 95, 35, 240, 183, 10, 116, + 222, 117, 90, 73, 151, 67, 151, 230, 162, 166, 235, 132, 110, 61, + 71, 65, 157, 231, 176, 211, 136, 54, 92, 167, 69, 120, 54, 10, + 215, 49, 132, 57, 117, 69, 108, 50, 105, 136, 206, 15, 116, 132, + 100, 112, 232, 195, 201, 155, 163, 219, 65, 27, 109, 120, 156, 144, + 80, 40, 253, 209, 240, 211, 153, 14, 54, 158, 99, 144, 115, 68, + 48, 215, 33, 112, 57, 30, 143, 154, 58, 62, 62, 62, 49, 10, + 255, 173, 140, 143, 79, 193, 127, 31, 176, 174, 223, 190, 125, 251, + 246, 232, 196, 228, 232, 141, 137, 149, 201, 27, 83, 183, 110, 79, + 221, 186, 93, 184, 45, 254, 124, 80, 160, 211, 123, 36, 137, 137, + 37, 236, 241, 157, 24, 75, 207, 211, 93, 151, 186, 126, 4, 50, + 39, 0, 131, 134, 8, 97, 2, 35, 29, 199, 151, 27, 127, 61, + 172, 220, 159, 33, 244, 198, 141, 27, 183, 147, 190, 236, 238, 238, + 22, 60, 55, 222, 4, 14, 49, 220, 172, 177, 191, 44, 71, 33, + 126, 18, 143, 208, 58, 138, 207, 5, 144, 54, 189, 36, 133, 243, + 137, 156, 158, 78, 76, 209, 153, 160, 217, 106, 199, 174, 178, 22, + 160, 194, 229, 165, 106, 249, 61, 186, 206, 40, 51, 60, 178, 94, + 224, 44, 79, 146, 73, 50, 159, 60, 210, 77, 194, 60, 71, 110, + 188, 198, 7, 120, 24, 62, 95, 92, 157, 159, 31, 25, 233, 154, + 15, 230, 251, 240, 248, 200, 29, 165, 77, 147, 207, 106, 211, 150, + 27, 179, 82, 130, 205, 186, 179, 167, 180, 13, 3, 110, 64, 5, + 59, 78, 131, 198, 59, 188, 198, 84, 246, 171, 241, 78, 158, 66, + 131, 238, 124, 217, 46, 237, 20, 226, 29, 150, 122, 90, 143, 48, + 83, 59, 114, 107, 244, 58, 157, 24, 31, 79, 247, 240, 198, 129, + 61, 124, 215, 243, 111, 76, 210, 245, 7, 110, 92, 5, 219, 5, + 246, 186, 24, 221, 247, 26, 238, 74, 122, 32, 238, 151, 231, 75, + 43, 229, 133, 18, 221, 140, 121, 51, 14, 250, 230, 234, 102, 44, + 90, 186, 90, 94, 92, 121, 229, 38, 141, 189, 218, 227, 136, 222, + 165, 195, 195, 195, 248, 100, 100, 51, 46, 212, 119, 231, 188, 173, + 237, 89, 39, 134, 175, 70, 232, 235, 175, 211, 27, 147, 35, 244, + 171, 20, 222, 205, 7, 187, 226, 149, 160, 219, 216, 24, 45, 178, + 246, 214, 131, 221, 8, 138, 100, 139, 101, 98, 124, 92, 217, 195, + 162, 130, 204, 128, 187, 212, 196, 43, 251, 151, 145, 44, 141, 125, + 62, 241, 202, 205, 155, 55, 95, 189, 241, 202, 120, 178, 109, 112, + 99, 209, 85, 223, 123, 34, 74, 185, 253, 234, 120, 103, 41, 133, + 47, 55, 152, 195, 216, 127, 58, 60, 140, 68, 25, 131, 193, 98, + 127, 70, 232, 168, 218, 156, 103, 204, 96, 86, 14, 35, 151, 40, + 231, 138, 82, 14, 76, 128, 145, 212, 4, 184, 121, 224, 4, 120, + 211, 217, 113, 232, 58, 14, 100, 129, 91, 193, 178, 44, 11, 94, + 163, 225, 69, 202, 4, 0, 224, 153, 38, 60, 165, 119, 233, 193, + 31, 60, 101, 154, 211, 187, 201, 211, 130, 239, 238, 78, 183, 189, + 70, 221, 13, 135, 71, 88, 199, 170, 156, 66, 188, 10, 36, 204, + 72, 18, 252, 138, 229, 89, 196, 190, 123, 126, 204, 122, 206, 115, + 98, 215, 121, 183, 129, 2, 35, 5, 0, 159, 128, 182, 36, 52, + 184, 245, 12, 26, 148, 253, 40, 118, 252, 184, 224, 7, 187, 74, + 183, 249, 83, 8, 238, 127, 151, 166, 242, 60, 181, 167, 73, 195, + 159, 221, 101, 63, 216, 45, 108, 185, 113, 137, 77, 54, 124, 54, + 60, 162, 244, 60, 221, 123, 158, 153, 37, 134, 15, 232, 233, 43, + 7, 246, 84, 152, 57, 115, 62, 131, 46, 239, 197, 219, 120, 145, + 72, 77, 52, 117, 160, 134, 71, 58, 103, 225, 3, 55, 158, 73, + 198, 125, 120, 4, 246, 250, 55, 171, 75, 139, 116, 1, 49, 53, + 9, 161, 101, 31, 159, 224, 173, 29, 165, 160, 10, 157, 246, 90, + 110, 58, 98, 11, 117, 132, 242, 22, 121, 6, 2, 7, 208, 23, + 58, 127, 68, 44, 80, 9, 216, 141, 106, 8, 12, 163, 233, 69, + 52, 247, 25, 227, 27, 62, 31, 253, 172, 25, 248, 241, 246, 231, + 163, 159, 213, 157, 189, 207, 87, 62, 99, 135, 247, 231, 83, 159, + 53, 61, 255, 243, 169, 207, 34, 183, 246, 249, 195, 194, 103, 140, + 93, 98, 75, 246, 243, 71, 31, 228, 8, 247, 90, 194, 175, 65, + 14, 141, 46, 25, 92, 221, 239, 138, 152, 48, 224, 141, 81, 247, + 182, 188, 56, 226, 66, 40, 94, 83, 158, 66, 85, 121, 66, 177, + 178, 60, 133, 218, 80, 55, 0, 85, 38, 238, 15, 45, 136, 199, + 1, 199, 246, 110, 32, 74, 115, 157, 218, 54, 242, 100, 130, 143, + 99, 252, 31, 223, 82, 148, 224, 144, 116, 43, 160, 237, 22, 176, + 9, 226, 83, 116, 238, 197, 135, 19, 221, 185, 189, 145, 60, 73, + 233, 217, 176, 166, 220, 7, 57, 26, 181, 55, 55, 189, 39, 41, + 225, 176, 11, 243, 0, 56, 209, 225, 220, 234, 202, 76, 110, 228, + 78, 234, 105, 74, 31, 91, 160, 69, 30, 101, 7, 39, 131, 136, + 62, 230, 74, 225, 164, 147, 68, 84, 99, 220, 228, 176, 147, 136, + 162, 49, 122, 103, 238, 131, 220, 8, 122, 196, 182, 66, 207, 151, + 88, 240, 29, 83, 9, 29, 24, 213, 170, 4, 126, 144, 48, 238, + 34, 20, 120, 58, 198, 225, 212, 192, 202, 5, 252, 31, 89, 157, + 236, 91, 110, 206, 206, 251, 16, 237, 107, 7, 248, 10, 131, 185, + 216, 200, 62, 63, 252, 220, 228, 248, 196, 171, 236, 116, 152, 184, + 181, 50, 62, 49, 117, 99, 124, 106, 226, 86, 97, 124, 226, 131, + 28, 159, 221, 17, 133, 180, 60, 94, 208, 194, 12, 114, 66, 253, + 129, 159, 240, 205, 183, 242, 148, 149, 86, 224, 11, 72, 134, 20, + 201, 163, 111, 129, 194, 170, 57, 148, 29, 143, 220, 32, 15, 185, + 60, 105, 64, 153, 192, 133, 17, 25, 90, 148, 208, 135, 113, 80, + 174, 46, 85, 97, 145, 13, 143, 116, 97, 80, 11, 205, 224, 83, + 175, 209, 112, 96, 117, 185, 254, 232, 106, 117, 172, 30, 212, 162, + 177, 119, 221, 141, 177, 164, 41, 99, 21, 33, 61, 30, 123, 208, + 8, 54, 156, 198, 218, 18, 66, 244, 140, 177, 6, 141, 41, 149, + 140, 8, 200, 45, 136, 182, 132, 59, 77, 30, 214, 57, 143, 118, + 186, 206, 56, 70, 70, 244, 130, 248, 177, 46, 58, 196, 195, 80, + 201, 224, 61, 164, 107, 23, 9, 125, 184, 30, 197, 225, 38, 124, + 170, 244, 40, 168, 69, 133, 22, 238, 108, 172, 47, 147, 99, 13, + 111, 35, 116, 194, 61, 96, 187, 11, 219, 113, 179, 113, 9, 126, + 137, 111, 71, 184, 196, 95, 76, 100, 81, 73, 212, 114, 107, 244, + 218, 149, 247, 71, 175, 52, 71, 175, 212, 87, 174, 204, 77, 93, + 89, 152, 186, 82, 45, 92, 217, 252, 224, 90, 129, 206, 123, 143, + 221, 93, 47, 114, 225, 154, 195, 8, 148, 140, 18, 132, 21, 97, + 165, 189, 25, 212, 29, 152, 172, 215, 34, 250, 112, 189, 92, 93, + 18, 76, 205, 125, 220, 172, 234, 60, 57, 60, 178, 254, 104, 152, + 168, 182, 82, 31, 7, 117, 28, 9, 246, 99, 20, 238, 11, 78, + 203, 131, 1, 17, 79, 241, 22, 129, 109, 29, 219, 95, 54, 244, + 83, 84, 112, 101, 114, 246, 202, 228, 44, 161, 35, 32, 242, 23, + 134, 91, 194, 224, 54, 164, 53, 167, 5, 11, 36, 216, 84, 205, + 138, 229, 158, 207, 109, 12, 36, 253, 193, 200, 96, 128, 24, 128, + 129, 246, 195, 90, 246, 24, 249, 182, 70, 76, 132, 64, 251, 81, + 77, 63, 97, 255, 255, 52, 90, 73, 110, 184, 98, 238, 7, 155, + 48, 229, 129, 198, 145, 231, 215, 84, 46, 139, 116, 103, 179, 232, + 2, 143, 206, 240, 180, 107, 17, 233, 118, 47, 250, 0, 245, 170, + 145, 39, 49, 193, 208, 38, 248, 71, 53, 189, 79, 36, 53, 150, + 204, 30, 21, 73, 131, 37, 173, 227, 8, 215, 12, 182, 190, 63, + 169, 233, 150, 253, 207, 52, 186, 24, 248, 163, 190, 187, 133, 247, + 224, 212, 109, 218, 17, 183, 70, 118, 145, 236, 126, 155, 94, 228, + 31, 202, 11, 38, 183, 219, 0, 145, 100, 82, 24, 8, 78, 49, + 166, 37, 104, 81, 124, 181, 78, 40, 154, 127, 200, 237, 116, 241, + 130, 190, 25, 132, 236, 98, 44, 164, 7, 157, 4, 227, 151, 198, + 60, 255, 75, 186, 16, 69, 235, 129, 126, 10, 162, 104, 208, 237, + 236, 97, 145, 52, 88, 114, 240, 152, 212, 100, 124, 235, 44, 185, + 181, 21, 20, 106, 219, 97, 208, 244, 218, 77, 52, 231, 107, 215, + 188, 49, 84, 200, 215, 55, 80, 164, 62, 182, 51, 49, 230, 132, + 177, 183, 233, 212, 98, 174, 223, 24, 100, 217, 10, 34, 91, 97, + 103, 194, 126, 150, 121, 171, 253, 44, 157, 73, 238, 59, 58, 201, + 22, 121, 53, 150, 69, 76, 223, 105, 186, 160, 31, 233, 175, 192, + 111, 235, 34, 25, 16, 205, 88, 243, 234, 160, 34, 233, 175, 16, + 241, 168, 92, 183, 206, 146, 254, 77, 55, 174, 109, 175, 181, 195, + 198, 144, 1, 175, 179, 240, 96, 53, 108, 88, 243, 228, 132, 124, + 185, 6, 38, 87, 112, 255, 31, 50, 169, 54, 60, 48, 105, 239, + 179, 65, 149, 7, 83, 197, 18, 101, 148, 228, 87, 214, 75, 228, + 16, 247, 242, 2, 79, 223, 161, 30, 168, 109, 128, 63, 91, 217, + 107, 185, 214, 121, 66, 34, 239, 83, 119, 13, 44, 157, 135, 122, + 65, 209, 211, 207, 158, 76, 179, 7, 214, 69, 146, 21, 1, 152, + 134, 250, 168, 54, 124, 104, 218, 248, 94, 209, 172, 200, 135, 214, + 105, 210, 183, 85, 139, 214, 218, 161, 55, 148, 133, 210, 123, 183, + 106, 209, 106, 232, 77, 79, 124, 48, 246, 124, 163, 118, 7, 159, + 180, 54, 222, 252, 249, 211, 104, 160, 58, 175, 145, 95, 79, 12, + 84, 127, 185, 195, 64, 117, 28, 248, 133, 249, 213, 153, 50, 45, + 66, 48, 35, 184, 253, 255, 127, 206, 78, 245, 133, 161, 234, 247, + 209, 80, 245, 76, 98, 168, 58, 2, 63, 53, 203, 56, 158, 25, + 145, 230, 169, 247, 133, 112, 150, 253, 252, 21, 29, 4, 169, 230, + 133, 204, 188, 102, 255, 130, 14, 193, 5, 27, 110, 130, 242, 199, + 97, 205, 28, 132, 28, 28, 139, 93, 128, 174, 151, 238, 195, 14, + 101, 79, 168, 220, 139, 100, 80, 103, 68, 204, 227, 250, 51, 118, + 27, 65, 234, 56, 116, 197, 141, 226, 10, 183, 46, 2, 0, 132, + 178, 191, 163, 96, 38, 128, 237, 162, 120, 48, 218, 96, 252, 147, + 44, 157, 54, 97, 89, 108, 112, 231, 38, 206, 202, 75, 131, 68, + 79, 100, 240, 131, 24, 34, 10, 145, 4, 142, 37, 238, 84, 32, + 1, 248, 37, 118, 138, 70, 177, 219, 162, 141, 96, 139, 195, 195, + 96, 232, 24, 240, 83, 111, 183, 90, 65, 24, 67, 32, 29, 184, + 59, 128, 27, 230, 147, 152, 122, 245, 41, 122, 27, 141, 1, 217, + 41, 109, 92, 200, 14, 146, 31, 48, 249, 33, 109, 140, 232, 150, + 253, 127, 24, 116, 6, 249, 44, 81, 163, 196, 10, 130, 197, 166, + 80, 12, 89, 10, 128, 23, 186, 15, 194, 208, 3, 186, 143, 64, + 77, 185, 228, 125, 52, 246, 89, 121, 241, 157, 165, 153, 34, 155, + 141, 107, 229, 217, 207, 229, 153, 16, 141, 125, 86, 172, 172, 148, + 239, 23, 103, 86, 216, 243, 92, 65, 20, 206, 168, 53, 138, 123, + 208, 23, 47, 29, 72, 61, 246, 217, 106, 101, 126, 173, 84, 157, + 41, 46, 151, 102, 215, 86, 74, 85, 168, 129, 239, 116, 209, 216, + 103, 149, 82, 117, 117, 126, 229, 89, 173, 193, 107, 95, 151, 146, + 4, 114, 14, 171, 107, 205, 171, 83, 55, 170, 57, 45, 105, 54, + 34, 184, 80, 85, 153, 254, 120, 107, 204, 119, 227, 177, 118, 216, + 24, 187, 180, 236, 196, 219, 37, 248, 130, 14, 71, 174, 75, 157, + 70, 20, 200, 143, 28, 175, 85, 168, 187, 59, 99, 19, 147, 147, + 35, 220, 72, 80, 105, 22, 108, 9, 92, 233, 201, 246, 28, 8, + 183, 171, 216, 64, 211, 92, 84, 11, 93, 215, 143, 182, 131, 184, + 208, 242, 183, 114, 121, 154, 139, 67, 167, 230, 70, 99, 14, 187, + 35, 231, 208, 86, 1, 249, 32, 99, 68, 207, 138, 148, 102, 25, + 35, 253, 135, 69, 202, 176, 140, 145, 193, 99, 228, 15, 4, 19, + 100, 140, 233, 103, 236, 223, 214, 56, 90, 79, 67, 53, 3, 225, + 155, 169, 160, 98, 158, 219, 191, 8, 184, 168, 120, 255, 66, 43, + 16, 186, 80, 124, 159, 67, 210, 54, 32, 78, 20, 90, 147, 45, + 172, 86, 65, 107, 198, 209, 7, 96, 63, 119, 48, 11, 219, 157, + 230, 150, 86, 231, 103, 229, 97, 176, 225, 212, 30, 243, 175, 11, + 132, 86, 220, 45, 247, 201, 20, 253, 232, 225, 195, 169, 221, 32, + 172, 79, 61, 122, 52, 252, 240, 225, 20, 92, 24, 167, 30, 61, + 250, 108, 60, 63, 121, 235, 230, 231, 201, 203, 145, 55, 46, 11, + 58, 104, 61, 172, 119, 130, 14, 26, 235, 107, 255, 9, 145, 50, + 44, 99, 236, 244, 16, 241, 129, 12, 186, 101, 220, 208, 79, 219, + 14, 45, 82, 14, 53, 19, 109, 7, 97, 60, 218, 0, 61, 238, + 106, 101, 30, 92, 147, 217, 145, 207, 157, 186, 121, 148, 196, 14, + 10, 241, 141, 22, 6, 189, 27, 99, 33, 71, 72, 239, 97, 21, + 138, 150, 177, 81, 184, 209, 111, 137, 148, 97, 25, 55, 78, 158, + 34, 243, 208, 50, 195, 50, 94, 209, 111, 217, 111, 208, 119, 217, + 206, 32, 11, 229, 6, 226, 81, 129, 150, 55, 249, 239, 122, 158, + 134, 238, 168, 180, 236, 99, 107, 188, 40, 219, 197, 203, 54, 122, + 89, 113, 103, 69, 74, 179, 140, 87, 206, 141, 139, 20, 171, 234, + 198, 77, 242, 131, 56, 51, 76, 203, 184, 163, 219, 118, 76, 23, + 220, 186, 199, 161, 132, 246, 119, 119, 158, 109, 90, 14, 98, 236, + 240, 29, 57, 23, 187, 79, 226, 177, 86, 195, 241, 252, 28, 66, + 221, 201, 105, 187, 47, 171, 215, 116, 182, 220, 49, 54, 153, 11, + 9, 54, 160, 108, 173, 217, 195, 218, 32, 168, 100, 106, 150, 113, + 167, 255, 164, 72, 25, 150, 113, 103, 232, 12, 198, 168, 2, 99, + 201, 162, 126, 218, 254, 125, 141, 86, 189, 79, 221, 196, 108, 20, + 12, 36, 213, 125, 208, 243, 233, 106, 25, 108, 114, 1, 91, 91, + 58, 166, 170, 248, 18, 74, 23, 169, 231, 163, 75, 124, 200, 45, + 192, 163, 109, 180, 88, 112, 104, 195, 243, 31, 83, 111, 147, 91, + 30, 197, 65, 128, 193, 105, 11, 132, 13, 9, 227, 111, 88, 95, + 229, 101, 157, 114, 190, 45, 223, 17, 231, 145, 205, 121, 17, 95, + 12, 151, 10, 6, 252, 84, 161, 19, 32, 248, 165, 32, 74, 15, + 116, 181, 79, 164, 52, 203, 40, 102, 197, 212, 233, 49, 44, 163, + 120, 242, 20, 249, 223, 144, 40, 189, 150, 49, 167, 79, 219, 223, + 211, 232, 204, 193, 19, 86, 56, 146, 39, 190, 9, 220, 172, 213, + 121, 236, 250, 140, 243, 153, 118, 226, 218, 54, 26, 105, 137, 249, + 20, 13, 143, 20, 80, 57, 183, 229, 194, 5, 179, 178, 60, 19, + 229, 49, 140, 191, 19, 209, 121, 47, 138, 149, 172, 121, 90, 71, + 187, 243, 86, 208, 2, 168, 202, 196, 178, 157, 93, 238, 82, 198, + 123, 220, 232, 13, 44, 143, 145, 146, 210, 20, 60, 79, 215, 57, + 13, 215, 101, 80, 63, 48, 37, 148, 164, 233, 237, 97, 29, 22, + 164, 233, 213, 44, 99, 46, 59, 40, 82, 134, 101, 204, 29, 23, + 171, 191, 55, 107, 25, 115, 39, 139, 228, 40, 201, 66, 234, 103, + 178, 25, 203, 152, 59, 253, 6, 249, 24, 8, 215, 103, 25, 111, + 233, 39, 237, 71, 192, 75, 60, 152, 169, 210, 213, 74, 185, 147, + 116, 56, 244, 215, 34, 37, 20, 234, 131, 153, 42, 130, 222, 168, + 109, 22, 123, 197, 65, 141, 238, 235, 97, 149, 137, 73, 222, 167, + 89, 198, 91, 253, 162, 209, 125, 134, 101, 188, 117, 252, 132, 188, + 156, 253, 246, 107, 228, 198, 115, 94, 206, 106, 65, 179, 25, 248, + 207, 188, 154, 29, 120, 243, 218, 37, 125, 239, 56, 161, 231, 248, + 177, 117, 147, 24, 117, 119, 115, 72, 163, 198, 240, 192, 100, 174, + 208, 89, 86, 129, 231, 43, 204, 186, 155, 37, 63, 14, 247, 42, + 44, 187, 253, 10, 201, 138, 7, 214, 32, 49, 30, 187, 123, 252, + 226, 198, 126, 90, 39, 72, 15, 76, 2, 126, 99, 195, 196, 148, + 254, 154, 150, 187, 73, 8, 74, 152, 150, 29, 47, 124, 222, 47, + 115, 63, 166, 145, 195, 15, 188, 216, 107, 184, 209, 76, 208, 108, + 122, 112, 91, 220, 14, 162, 88, 220, 22, 217, 111, 107, 136, 244, + 181, 194, 224, 99, 183, 22, 243, 175, 69, 146, 213, 19, 186, 155, + 252, 130, 200, 126, 178, 155, 101, 13, 74, 90, 219, 118, 162, 109, + 184, 18, 246, 87, 8, 62, 154, 115, 162, 109, 203, 38, 217, 86, + 16, 129, 73, 19, 92, 245, 140, 138, 76, 231, 90, 228, 208, 3, + 55, 12, 189, 120, 6, 204, 219, 190, 96, 99, 78, 145, 94, 52, + 139, 131, 246, 24, 21, 158, 130, 26, 217, 98, 140, 220, 24, 218, + 195, 106, 228, 233, 92, 131, 28, 193, 142, 47, 243, 54, 252, 169, + 9, 160, 246, 207, 236, 232, 223, 143, 107, 228, 120, 186, 186, 10, + 180, 240, 117, 146, 117, 157, 176, 225, 185, 188, 222, 129, 73, 186, + 127, 190, 116, 124, 40, 191, 176, 94, 35, 189, 224, 222, 139, 141, + 123, 158, 111, 121, 254, 220, 46, 154, 82, 98, 35, 94, 217, 215, + 136, 167, 221, 228, 147, 234, 39, 59, 170, 127, 218, 87, 162, 226, + 37, 210, 143, 30, 236, 21, 119, 211, 122, 141, 244, 109, 225, 28, + 228, 245, 158, 219, 223, 1, 62, 73, 43, 238, 230, 92, 166, 34, + 178, 79, 103, 73, 47, 122, 151, 231, 230, 9, 73, 178, 252, 105, + 199, 240, 203, 136, 5, 254, 39, 48, 232, 60, 146, 249, 219, 218, + 211, 228, 2, 19, 183, 95, 200, 5, 94, 200, 5, 254, 52, 114, + 1, 225, 192, 122, 63, 113, 96, 189, 79, 254, 5, 65, 97, 192, + 120, 230, 150, 102, 255, 30, 161, 69, 250, 216, 221, 27, 69, 87, + 129, 166, 211, 226, 177, 3, 54, 208, 194, 156, 241, 17, 112, 242, + 160, 160, 22, 228, 0, 53, 39, 146, 6, 237, 0, 49, 33, 159, + 10, 173, 131, 251, 196, 173, 1, 105, 61, 95, 177, 100, 223, 117, + 246, 120, 16, 96, 113, 99, 15, 124, 162, 188, 95, 170, 230, 233, + 131, 229, 85, 97, 10, 156, 188, 224, 65, 20, 36, 204, 126, 16, + 210, 176, 237, 163, 158, 161, 225, 108, 177, 11, 76, 81, 182, 83, + 193, 69, 172, 57, 45, 12, 157, 173, 244, 3, 242, 38, 13, 22, + 151, 36, 49, 20, 93, 74, 129, 240, 59, 141, 6, 155, 110, 236, + 51, 89, 14, 161, 15, 218, 94, 221, 69, 52, 31, 214, 171, 46, + 223, 162, 243, 46, 220, 250, 129, 7, 12, 219, 13, 151, 110, 181, + 193, 27, 100, 119, 219, 137, 25, 233, 35, 188, 184, 129, 207, 27, + 72, 251, 165, 117, 110, 26, 91, 185, 40, 224, 189, 208, 153, 195, + 173, 43, 254, 91, 194, 217, 83, 109, 33, 170, 135, 33, 6, 15, + 96, 251, 248, 145, 199, 166, 141, 23, 35, 60, 49, 6, 168, 30, + 198, 72, 39, 24, 181, 126, 179, 225, 60, 246, 26, 123, 35, 112, + 225, 65, 150, 219, 107, 182, 130, 48, 230, 168, 113, 114, 68, 60, + 240, 102, 2, 200, 92, 68, 165, 174, 185, 33, 236, 4, 117, 175, + 41, 226, 37, 128, 239, 129, 8, 172, 188, 235, 110, 160, 12, 7, + 24, 118, 57, 61, 246, 153, 124, 83, 26, 121, 49, 216, 121, 211, + 86, 24, 212, 216, 82, 242, 162, 0, 49, 110, 70, 64, 31, 237, + 115, 56, 37, 65, 51, 135, 145, 144, 75, 243, 197, 112, 115, 56, + 218, 206, 198, 56, 104, 150, 140, 200, 92, 110, 20, 175, 69, 109, + 47, 118, 163, 66, 107, 143, 67, 81, 47, 9, 60, 191, 60, 192, + 115, 70, 24, 219, 65, 89, 3, 136, 196, 203, 174, 52, 142, 116, + 61, 4, 251, 66, 84, 127, 114, 131, 186, 103, 143, 53, 187, 164, + 63, 199, 120, 115, 187, 125, 254, 58, 89, 165, 145, 27, 83, 55, + 138, 228, 184, 177, 98, 226, 68, 162, 34, 230, 197, 182, 199, 216, + 230, 61, 40, 44, 165, 112, 245, 54, 233, 131, 69, 234, 132, 252, + 90, 233, 52, 3, 127, 75, 246, 49, 169, 166, 229, 120, 97, 196, + 137, 238, 212, 17, 17, 138, 149, 229, 187, 187, 252, 123, 222, 194, + 72, 1, 10, 145, 177, 231, 211, 115, 209, 65, 133, 14, 107, 166, + 23, 71, 73, 211, 64, 77, 59, 195, 207, 206, 188, 218, 8, 104, + 27, 172, 156, 141, 118, 237, 177, 27, 79, 225, 134, 199, 14, 67, + 124, 144, 167, 48, 170, 185, 154, 151, 195, 92, 96, 23, 146, 202, + 6, 79, 68, 190, 134, 231, 183, 159, 140, 134, 110, 3, 178, 39, + 19, 96, 74, 157, 24, 132, 31, 87, 209, 212, 216, 88, 45, 74, + 159, 234, 34, 49, 22, 133, 53, 16, 147, 121, 254, 214, 24, 84, + 178, 17, 196, 99, 29, 51, 42, 17, 27, 142, 103, 143, 146, 175, + 9, 169, 225, 77, 253, 130, 29, 194, 206, 169, 226, 183, 34, 193, + 146, 29, 234, 45, 119, 15, 40, 198, 239, 112, 226, 82, 131, 193, + 191, 19, 206, 157, 147, 73, 102, 204, 211, 8, 143, 26, 47, 36, + 24, 207, 63, 116, 60, 4, 205, 226, 130, 169, 94, 214, 130, 147, + 138, 208, 234, 230, 169, 51, 138, 208, 234, 230, 185, 243, 228, 29, + 2, 120, 84, 175, 101, 222, 208, 236, 55, 217, 166, 131, 70, 37, + 233, 105, 81, 160, 43, 82, 192, 0, 87, 126, 56, 211, 156, 173, + 45, 60, 135, 93, 87, 21, 248, 198, 206, 86, 132, 228, 208, 52, + 203, 120, 45, 107, 145, 183, 136, 105, 106, 140, 28, 119, 244, 99, + 246, 189, 68, 250, 228, 140, 126, 250, 136, 253, 51, 62, 122, 123, + 237, 209, 245, 225, 177, 142, 7, 35, 215, 47, 19, 186, 224, 60, + 225, 240, 49, 83, 244, 149, 155, 188, 107, 26, 200, 227, 132, 28, + 67, 131, 174, 221, 233, 63, 36, 82, 134, 101, 220, 57, 58, 72, + 46, 66, 181, 154, 101, 220, 211, 143, 219, 86, 170, 164, 201, 91, + 175, 200, 162, 180, 30, 150, 67, 20, 197, 218, 124, 175, 255, 136, + 72, 25, 150, 113, 239, 152, 69, 254, 130, 78, 116, 83, 183, 204, + 7, 153, 143, 52, 251, 27, 58, 77, 221, 139, 228, 221, 20, 23, + 134, 224, 232, 197, 56, 115, 134, 148, 226, 61, 135, 199, 117, 231, + 196, 34, 52, 116, 124, 132, 16, 143, 226, 188, 112, 181, 131, 18, + 130, 112, 239, 154, 252, 168, 17, 108, 21, 232, 66, 16, 38, 92, + 4, 250, 74, 178, 220, 155, 50, 27, 129, 124, 108, 145, 197, 40, + 48, 75, 55, 140, 177, 186, 99, 156, 177, 29, 11, 93, 192, 126, + 220, 240, 56, 214, 132, 116, 172, 17, 69, 185, 79, 60, 182, 129, + 123, 126, 158, 157, 5, 194, 37, 20, 174, 222, 79, 98, 46, 38, + 103, 196, 125, 144, 61, 73, 62, 34, 166, 169, 179, 1, 126, 83, + 183, 236, 183, 21, 215, 183, 100, 123, 16, 84, 96, 141, 144, 75, + 89, 44, 55, 188, 20, 112, 121, 103, 45, 104, 230, 10, 108, 224, + 253, 186, 195, 119, 13, 54, 24, 58, 140, 249, 155, 124, 160, 116, + 24, 243, 55, 185, 12, 86, 135, 49, 127, 115, 240, 24, 76, 53, + 16, 254, 45, 232, 39, 97, 170, 9, 90, 114, 31, 21, 95, 82, + 162, 179, 17, 108, 153, 231, 10, 93, 170, 101, 243, 99, 65, 86, + 203, 230, 199, 2, 151, 38, 232, 48, 63, 22, 142, 3, 202, 23, + 171, 87, 183, 140, 138, 126, 204, 254, 65, 141, 242, 153, 17, 186, + 155, 162, 158, 208, 221, 140, 198, 182, 93, 167, 30, 141, 53, 65, + 142, 167, 4, 12, 73, 232, 14, 0, 212, 32, 146, 68, 197, 68, + 128, 131, 178, 17, 58, 126, 109, 27, 250, 144, 7, 38, 94, 45, + 14, 95, 230, 186, 145, 76, 239, 97, 45, 18, 109, 103, 116, 169, + 240, 101, 162, 131, 80, 180, 114, 116, 144, 220, 134, 166, 27, 150, + 177, 170, 159, 177, 243, 162, 229, 115, 165, 247, 104, 117, 174, 56, + 81, 0, 153, 84, 35, 216, 117, 67, 96, 4, 187, 84, 98, 244, + 176, 111, 69, 37, 134, 102, 25, 171, 92, 38, 172, 131, 4, 116, + 245, 244, 16, 249, 39, 58, 212, 98, 90, 198, 35, 253, 164, 253, + 11, 58, 157, 69, 100, 117, 198, 100, 6, 177, 211, 224, 174, 190, + 28, 144, 20, 240, 235, 132, 228, 106, 19, 120, 56, 92, 85, 59, + 110, 158, 54, 3, 63, 136, 3, 159, 111, 71, 158, 95, 11, 93, + 39, 66, 67, 184, 216, 221, 114, 67, 52, 199, 10, 93, 196, 16, + 132, 224, 34, 187, 14, 204, 67, 188, 191, 160, 244, 144, 227, 83, + 239, 169, 226, 196, 32, 14, 84, 155, 243, 45, 47, 30, 69, 184, + 93, 55, 36, 20, 133, 15, 180, 213, 104, 111, 121, 126, 1, 153, + 7, 42, 76, 22, 34, 193, 10, 195, 238, 232, 68, 116, 215, 109, + 52, 216, 13, 5, 172, 64, 9, 123, 18, 39, 160, 255, 219, 110, + 211, 149, 142, 177, 192, 169, 69, 140, 43, 107, 236, 97, 164, 126, + 222, 231, 253, 132, 54, 123, 24, 249, 250, 68, 74, 179, 140, 71, + 89, 49, 19, 77, 195, 50, 30, 29, 63, 65, 40, 1, 56, 65, + 39, 243, 177, 102, 159, 0, 180, 63, 108, 54, 23, 106, 240, 133, + 203, 6, 201, 201, 158, 32, 115, 196, 52, 13, 182, 112, 107, 186, + 101, 223, 17, 153, 217, 242, 192, 169, 150, 94, 34, 163, 161, 187, + 227, 185, 187, 221, 150, 43, 180, 194, 128, 37, 90, 227, 83, 193, + 128, 37, 90, 227, 75, 212, 128, 37, 90, 27, 60, 70, 110, 64, + 157, 154, 101, 184, 250, 73, 251, 170, 108, 32, 238, 75, 221, 87, + 165, 40, 158, 45, 69, 87, 22, 207, 150, 162, 203, 151, 162, 1, + 75, 209, 61, 126, 130, 140, 64, 241, 186, 101, 108, 233, 199, 237, + 115, 20, 165, 69, 28, 54, 153, 151, 62, 49, 121, 227, 230, 45, + 89, 40, 91, 35, 91, 156, 170, 6, 172, 145, 173, 236, 17, 145, + 50, 44, 99, 235, 152, 69, 134, 161, 80, 195, 50, 60, 253, 164, + 125, 150, 46, 51, 106, 2, 95, 150, 46, 87, 150, 201, 150, 132, + 39, 203, 100, 212, 246, 178, 162, 161, 108, 73, 120, 199, 79, 144, + 155, 4, 176, 34, 155, 153, 93, 205, 30, 86, 34, 125, 78, 209, + 213, 200, 237, 56, 97, 120, 116, 69, 62, 122, 108, 228, 155, 217, + 83, 184, 235, 152, 108, 248, 90, 186, 197, 118, 157, 149, 148, 7, + 160, 128, 9, 17, 142, 213, 236, 214, 16, 43, 199, 11, 183, 2, + 100, 39, 1, 87, 63, 201, 221, 136, 176, 142, 185, 33, 68, 209, + 144, 231, 25, 168, 207, 210, 145, 130, 20, 4, 98, 79, 200, 211, + 77, 152, 5, 45, 62, 76, 38, 204, 130, 22, 159, 5, 38, 204, + 130, 214, 224, 49, 50, 0, 77, 215, 44, 227, 19, 206, 160, 152, + 48, 186, 159, 200, 207, 216, 232, 126, 194, 71, 215, 132, 209, 253, + 228, 248, 9, 254, 153, 110, 25, 161, 126, 140, 191, 98, 227, 23, + 202, 207, 88, 145, 33, 223, 227, 112, 91, 11, 143, 14, 146, 53, + 248, 204, 176, 140, 29, 253, 164, 93, 17, 209, 96, 58, 59, 200, + 143, 170, 154, 160, 57, 66, 17, 4, 91, 242, 10, 223, 121, 130, + 18, 37, 82, 33, 171, 142, 13, 251, 14, 31, 118, 19, 134, 125, + 39, 43, 122, 192, 134, 125, 231, 248, 9, 114, 149, 176, 117, 220, + 243, 105, 230, 7, 52, 205, 62, 147, 26, 247, 4, 75, 134, 15, + 116, 143, 102, 25, 159, 102, 207, 146, 105, 98, 154, 61, 108, 156, + 191, 170, 95, 176, 111, 97, 112, 157, 96, 23, 110, 181, 216, 86, + 217, 5, 16, 145, 0, 56, 134, 20, 253, 179, 249, 207, 91, 216, + 3, 44, 225, 87, 17, 42, 129, 165, 52, 203, 248, 234, 177, 51, + 34, 101, 88, 198, 87, 207, 157, 39, 43, 80, 155, 102, 25, 95, + 211, 207, 217, 15, 104, 153, 151, 7, 74, 148, 142, 250, 36, 88, + 128, 19, 195, 221, 2, 253, 104, 26, 123, 120, 96, 8, 24, 8, + 1, 139, 195, 74, 237, 101, 197, 138, 250, 217, 24, 127, 237, 216, + 105, 145, 50, 44, 227, 107, 246, 89, 50, 69, 116, 179, 215, 234, + 253, 166, 150, 249, 81, 77, 179, 243, 180, 200, 93, 125, 216, 240, + 72, 251, 58, 198, 230, 112, 163, 106, 198, 148, 130, 47, 59, 7, + 20, 237, 213, 44, 243, 155, 90, 246, 24, 185, 75, 76, 179, 87, + 207, 88, 230, 15, 107, 250, 136, 61, 6, 116, 11, 26, 117, 208, + 229, 37, 246, 176, 7, 82, 236, 48, 233, 97, 159, 247, 194, 247, + 103, 69, 18, 236, 247, 206, 93, 22, 73, 131, 37, 175, 13, 147, + 55, 161, 46, 205, 50, 255, 188, 166, 95, 179, 95, 79, 83, 77, + 49, 11, 220, 79, 42, 214, 162, 52, 169, 176, 104, 173, 23, 10, + 19, 21, 107, 80, 246, 185, 156, 72, 26, 44, 121, 229, 42, 153, + 38, 186, 217, 103, 245, 254, 132, 150, 249, 43, 154, 102, 223, 84, + 173, 8, 157, 4, 185, 128, 135, 41, 17, 174, 207, 126, 28, 6, + 13, 138, 242, 81, 78, 181, 62, 205, 50, 127, 130, 81, 237, 15, + 217, 174, 210, 151, 205, 88, 189, 63, 165, 233, 127, 89, 51, 236, + 255, 26, 55, 150, 174, 31, 83, 164, 59, 130, 115, 11, 30, 207, + 139, 132, 149, 69, 18, 69, 131, 54, 3, 196, 9, 47, 111, 114, + 235, 97, 44, 0, 125, 198, 4, 222, 122, 242, 153, 231, 115, 120, + 38, 126, 155, 247, 3, 127, 84, 148, 191, 229, 197, 121, 26, 181, + 55, 118, 80, 238, 153, 231, 200, 19, 160, 54, 114, 182, 92, 194, + 111, 140, 17, 138, 16, 246, 196, 217, 140, 150, 226, 219, 110, 232, + 34, 137, 251, 178, 108, 48, 127, 74, 203, 30, 33, 99, 172, 203, + 108, 166, 252, 180, 102, 158, 181, 95, 162, 69, 193, 113, 121, 190, + 236, 85, 178, 113, 242, 33, 234, 131, 185, 241, 211, 154, 121, 68, + 36, 53, 150, 60, 122, 74, 36, 13, 150, 60, 99, 147, 215, 137, + 110, 102, 173, 222, 191, 166, 101, 254, 182, 166, 217, 133, 244, 16, + 37, 21, 57, 221, 171, 98, 131, 147, 213, 44, 243, 175, 105, 89, + 139, 204, 16, 211, 204, 178, 134, 126, 91, 211, 45, 190, 21, 124, + 81, 214, 26, 154, 151, 5, 211, 206, 111, 107, 122, 86, 36, 53, + 150, 236, 63, 44, 146, 6, 75, 14, 30, 35, 37, 168, 81, 179, + 204, 191, 161, 233, 39, 237, 87, 209, 22, 8, 183, 64, 193, 163, + 61, 173, 1, 226, 0, 199, 82, 181, 30, 40, 71, 212, 169, 65, + 177, 253, 131, 34, 105, 176, 228, 241, 19, 228, 27, 26, 84, 170, + 91, 230, 207, 105, 250, 49, 187, 253, 103, 194, 78, 243, 70, 233, + 61, 208, 10, 209, 100, 70, 137, 159, 211, 250, 15, 137, 164, 193, + 146, 10, 108, 197, 31, 13, 145, 59, 207, 169, 79, 228, 34, 165, + 53, 198, 191, 30, 172, 87, 204, 253, 129, 70, 14, 223, 199, 172, + 21, 200, 105, 77, 146, 147, 173, 208, 107, 58, 225, 222, 26, 192, + 59, 173, 113, 216, 17, 174, 211, 56, 206, 95, 150, 216, 187, 5, + 124, 101, 221, 37, 189, 144, 55, 26, 210, 65, 233, 120, 101, 191, + 30, 37, 85, 73, 1, 190, 174, 240, 143, 172, 155, 228, 84, 28, + 182, 125, 56, 168, 176, 210, 104, 13, 204, 105, 65, 53, 210, 83, + 57, 33, 223, 194, 119, 209, 12, 123, 103, 191, 68, 122, 32, 105, + 13, 145, 190, 116, 27, 69, 242, 203, 168, 83, 126, 240, 20, 90, + 89, 62, 120, 170, 149, 229, 196, 11, 109, 202, 11, 109, 202, 23, + 214, 166, 160, 10, 197, 74, 84, 40, 236, 231, 15, 113, 123, 202, + 161, 204, 3, 205, 254, 63, 53, 90, 222, 23, 21, 116, 119, 91, + 154, 77, 178, 85, 141, 208, 77, 29, 225, 46, 185, 177, 34, 183, + 138, 225, 46, 26, 137, 183, 51, 7, 136, 3, 208, 41, 207, 5, + 6, 126, 181, 140, 226, 62, 144, 67, 131, 64, 71, 49, 61, 172, + 53, 218, 81, 204, 46, 166, 60, 236, 165, 144, 80, 71, 52, 14, + 182, 64, 12, 223, 53, 66, 20, 34, 230, 113, 176, 118, 39, 138, + 220, 16, 67, 254, 115, 241, 182, 128, 10, 69, 43, 163, 216, 169, + 61, 166, 104, 16, 167, 24, 70, 14, 101, 79, 146, 223, 148, 134, + 145, 151, 245, 75, 246, 175, 154, 8, 18, 13, 88, 115, 2, 30, + 10, 56, 157, 118, 35, 246, 154, 78, 236, 50, 214, 209, 193, 166, + 11, 89, 113, 28, 64, 173, 156, 82, 232, 120, 68, 36, 148, 83, + 188, 175, 60, 104, 81, 2, 209, 36, 152, 54, 199, 223, 235, 104, + 40, 45, 250, 82, 229, 180, 43, 176, 170, 21, 116, 38, 60, 42, + 28, 159, 150, 96, 197, 130, 210, 135, 173, 67, 240, 106, 100, 77, + 43, 128, 152, 26, 78, 17, 71, 196, 67, 75, 141, 46, 173, 35, + 206, 150, 18, 62, 177, 229, 214, 56, 174, 138, 24, 135, 60, 134, + 162, 241, 154, 77, 183, 238, 33, 9, 54, 157, 216, 105, 72, 90, + 39, 64, 218, 181, 237, 32, 114, 125, 48, 120, 77, 130, 12, 197, + 34, 78, 8, 233, 86, 60, 90, 242, 164, 13, 159, 192, 10, 134, + 199, 41, 18, 183, 191, 97, 21, 101, 48, 136, 220, 36, 82, 73, + 98, 180, 59, 66, 58, 45, 105, 249, 228, 194, 54, 240, 230, 38, + 119, 80, 100, 7, 21, 163, 48, 65, 88, 105, 142, 243, 73, 219, + 129, 32, 81, 65, 72, 163, 166, 211, 104, 8, 6, 119, 98, 124, + 242, 166, 196, 36, 39, 116, 117, 229, 254, 232, 107, 41, 27, 203, + 203, 41, 27, 203, 203, 253, 23, 20, 113, 245, 229, 151, 114, 36, + 96, 211, 206, 200, 88, 230, 176, 62, 105, 216, 14, 133, 227, 165, + 3, 27, 34, 12, 54, 26, 110, 83, 40, 137, 80, 34, 147, 154, + 114, 137, 89, 149, 67, 107, 161, 19, 109, 67, 16, 244, 174, 68, + 198, 234, 13, 214, 152, 97, 114, 148, 252, 231, 58, 233, 101, 73, + 54, 241, 39, 204, 211, 246, 47, 235, 251, 39, 126, 106, 66, 63, + 125, 62, 147, 231, 154, 208, 7, 205, 103, 242, 5, 38, 52, 55, + 74, 147, 3, 213, 125, 184, 133, 9, 118, 151, 173, 228, 223, 255, + 160, 31, 33, 125, 72, 202, 30, 70, 75, 37, 173, 89, 198, 196, + 128, 149, 164, 13, 203, 152, 56, 121, 138, 252, 19, 83, 152, 215, + 78, 235, 231, 236, 95, 80, 182, 156, 225, 104, 36, 53, 218, 251, + 182, 24, 194, 23, 139, 27, 194, 249, 133, 17, 12, 89, 211, 2, + 95, 140, 10, 222, 50, 158, 103, 93, 131, 157, 49, 135, 32, 164, + 81, 128, 225, 2, 146, 181, 12, 23, 34, 118, 103, 77, 4, 144, + 8, 243, 20, 108, 118, 126, 228, 97, 252, 217, 251, 176, 43, 32, + 83, 69, 135, 249, 255, 147, 254, 164, 186, 35, 34, 174, 185, 233, + 125, 133, 109, 19, 121, 30, 73, 211, 103, 101, 190, 139, 2, 29, + 216, 112, 198, 216, 221, 105, 83, 169, 36, 15, 45, 96, 204, 1, + 227, 187, 252, 64, 196, 75, 5, 25, 44, 43, 101, 88, 24, 240, + 112, 226, 64, 249, 224, 201, 249, 46, 15, 72, 168, 110, 59, 194, + 6, 177, 158, 231, 229, 63, 28, 127, 36, 162, 251, 209, 104, 219, + 105, 52, 104, 211, 137, 107, 219, 132, 118, 229, 90, 197, 220, 66, + 57, 48, 234, 36, 220, 186, 156, 106, 16, 52, 148, 211, 198, 97, + 51, 216, 137, 218, 156, 181, 193, 200, 16, 85, 239, 83, 119, 120, + 100, 4, 230, 33, 0, 118, 1, 39, 230, 214, 233, 141, 252, 196, + 171, 147, 56, 241, 228, 30, 163, 153, 108, 250, 200, 84, 175, 101, + 76, 15, 12, 42, 214, 204, 211, 92, 26, 129, 214, 204, 211, 246, + 89, 110, 190, 168, 91, 198, 125, 253, 18, 55, 95, 20, 177, 30, + 55, 169, 58, 88, 96, 135, 43, 184, 224, 100, 155, 229, 89, 0, + 179, 11, 225, 197, 112, 146, 161, 149, 38, 244, 18, 216, 147, 40, + 101, 201, 124, 95, 218, 92, 178, 9, 127, 63, 123, 65, 177, 100, + 190, 255, 82, 78, 94, 55, 254, 159, 28, 57, 215, 105, 119, 136, + 48, 27, 7, 65, 228, 253, 21, 141, 244, 86, 33, 135, 117, 135, + 244, 226, 41, 193, 13, 17, 47, 237, 179, 206, 194, 140, 24, 7, + 32, 66, 75, 68, 254, 137, 253, 54, 25, 80, 30, 119, 177, 42, + 204, 171, 86, 133, 3, 147, 167, 246, 21, 254, 14, 123, 171, 218, + 41, 254, 125, 157, 244, 192, 67, 235, 14, 33, 126, 187, 209, 88, + 195, 2, 88, 161, 71, 186, 216, 142, 45, 182, 27, 13, 200, 63, + 151, 169, 244, 251, 34, 97, 93, 34, 135, 112, 132, 214, 146, 250, + 181, 185, 76, 101, 0, 159, 202, 76, 168, 234, 228, 153, 192, 194, + 139, 101, 194, 167, 152, 233, 34, 33, 27, 65, 32, 154, 97, 82, + 109, 56, 203, 170, 98, 207, 48, 195, 235, 80, 74, 187, 22, 243, + 44, 61, 208, 213, 211, 7, 208, 145, 23, 223, 174, 197, 178, 151, + 108, 90, 240, 111, 123, 15, 176, 144, 155, 247, 162, 88, 246, 178, + 33, 18, 211, 189, 196, 124, 236, 249, 245, 220, 29, 210, 47, 115, + 88, 5, 210, 139, 186, 97, 62, 162, 7, 17, 157, 231, 186, 126, + 150, 244, 75, 34, 90, 71, 8, 89, 92, 157, 159, 95, 123, 167, + 56, 191, 90, 26, 204, 76, 127, 173, 59, 28, 226, 0, 118, 70, + 96, 33, 142, 61, 39, 22, 34, 118, 252, 11, 1, 33, 126, 235, + 60, 187, 232, 93, 200, 124, 244, 2, 7, 241, 5, 14, 226, 11, + 28, 196, 23, 56, 136, 47, 112, 16, 95, 224, 32, 254, 153, 227, + 32, 222, 79, 112, 16, 239, 63, 29, 7, 49, 159, 224, 32, 230, + 191, 0, 14, 226, 63, 48, 80, 220, 52, 153, 185, 165, 217, 223, + 49, 232, 58, 30, 184, 235, 233, 107, 46, 158, 167, 192, 10, 195, + 145, 7, 39, 122, 94, 152, 19, 240, 0, 164, 200, 171, 17, 46, + 23, 111, 58, 160, 238, 170, 239, 249, 78, 147, 155, 79, 176, 19, + 90, 216, 147, 1, 236, 8, 68, 215, 19, 50, 181, 40, 47, 43, + 39, 137, 163, 110, 162, 164, 217, 216, 3, 99, 58, 192, 91, 144, + 141, 227, 225, 239, 211, 38, 136, 62, 161, 24, 89, 139, 53, 76, + 22, 79, 27, 222, 99, 151, 190, 89, 149, 221, 65, 48, 28, 94, + 16, 247, 213, 242, 137, 8, 163, 198, 13, 233, 98, 199, 107, 112, + 183, 43, 39, 238, 168, 23, 206, 75, 110, 210, 12, 187, 41, 222, + 95, 73, 34, 136, 197, 112, 122, 194, 11, 88, 136, 19, 69, 147, + 196, 101, 4, 48, 113, 58, 138, 102, 121, 229, 88, 120, 17, 230, + 145, 17, 222, 132, 116, 108, 50, 123, 4, 76, 106, 184, 253, 31, + 181, 243, 116, 85, 130, 240, 179, 17, 8, 54, 15, 30, 129, 180, + 229, 222, 9, 213, 114, 239, 228, 89, 213, 114, 239, 194, 69, 242, + 235, 58, 154, 238, 221, 205, 44, 104, 246, 47, 233, 116, 29, 184, + 184, 142, 89, 114, 64, 77, 10, 4, 18, 187, 185, 123, 72, 35, + 198, 66, 231, 217, 136, 114, 163, 6, 1, 49, 197, 126, 49, 158, + 215, 117, 124, 52, 57, 171, 181, 195, 136, 141, 57, 31, 52, 62, + 245, 130, 144, 58, 68, 30, 202, 98, 78, 21, 133, 223, 121, 40, + 159, 130, 172, 74, 88, 53, 179, 193, 128, 64, 10, 66, 176, 16, + 185, 68, 216, 70, 178, 207, 55, 32, 58, 133, 192, 245, 148, 198, + 206, 18, 98, 73, 196, 184, 120, 230, 200, 113, 242, 136, 129, 131, + 150, 20, 18, 67, 197, 187, 217, 195, 36, 71, 76, 83, 203, 102, + 44, 243, 13, 125, 222, 176, 79, 64, 121, 140, 201, 150, 45, 23, + 70, 131, 89, 54, 36, 111, 100, 15, 145, 107, 194, 180, 177, 104, + 158, 183, 237, 180, 102, 143, 145, 51, 253, 25, 140, 107, 209, 60, + 172, 152, 45, 22, 143, 12, 41, 102, 139, 197, 179, 231, 192, 128, + 5, 204, 22, 103, 204, 115, 246, 185, 116, 145, 60, 170, 109, 186, + 80, 173, 135, 229, 37, 138, 1, 227, 204, 192, 105, 197, 128, 113, + 198, 62, 203, 11, 213, 45, 163, 180, 191, 80, 110, 242, 153, 46, + 148, 93, 66, 75, 178, 80, 214, 156, 146, 44, 148, 93, 66, 75, + 246, 89, 114, 29, 10, 53, 44, 227, 129, 57, 100, 159, 239, 80, + 107, 226, 124, 233, 40, 213, 232, 97, 153, 133, 173, 165, 161, 89, + 198, 131, 254, 227, 34, 197, 10, 58, 117, 154, 140, 66, 169, 166, + 101, 148, 205, 115, 54, 221, 215, 84, 177, 233, 165, 11, 54, 123, + 89, 126, 153, 210, 44, 163, 44, 155, 107, 26, 150, 81, 182, 207, + 242, 130, 123, 44, 227, 45, 243, 124, 103, 193, 34, 122, 134, 152, + 38, 178, 224, 158, 94, 150, 95, 140, 88, 143, 102, 25, 111, 201, + 17, 235, 49, 44, 227, 173, 179, 231, 200, 223, 209, 48, 86, 83, + 53, 243, 142, 102, 255, 140, 70, 215, 229, 157, 10, 166, 155, 48, + 147, 137, 3, 31, 162, 6, 185, 34, 204, 149, 18, 217, 28, 89, + 68, 57, 97, 196, 190, 68, 228, 180, 5, 103, 225, 182, 207, 185, + 183, 167, 207, 244, 116, 245, 144, 109, 157, 149, 189, 174, 132, 58, + 170, 246, 28, 33, 182, 8, 117, 180, 170, 31, 179, 15, 211, 197, + 142, 249, 202, 163, 24, 173, 74, 136, 254, 140, 110, 25, 171, 71, + 7, 201, 215, 53, 180, 134, 125, 152, 249, 72, 179, 119, 232, 186, + 188, 127, 242, 238, 238, 134, 78, 171, 229, 134, 212, 9, 131, 54, + 55, 49, 226, 212, 149, 81, 16, 228, 126, 247, 244, 158, 164, 75, + 134, 108, 78, 24, 58, 123, 138, 253, 233, 195, 236, 49, 50, 37, + 236, 79, 31, 233, 231, 236, 81, 54, 178, 29, 213, 61, 99, 195, + 213, 245, 12, 88, 38, 202, 84, 175, 101, 60, 26, 24, 84, 44, + 77, 31, 113, 185, 16, 90, 154, 62, 178, 207, 74, 9, 204, 119, + 199, 201, 43, 207, 169, 240, 109, 133, 46, 238, 90, 7, 250, 144, + 126, 25, 87, 212, 220, 31, 234, 228, 120, 34, 204, 95, 22, 149, + 88, 151, 201, 17, 142, 184, 176, 22, 186, 91, 238, 147, 22, 151, + 206, 28, 98, 79, 203, 117, 48, 195, 110, 89, 175, 147, 62, 190, + 169, 114, 65, 205, 193, 238, 168, 178, 232, 138, 248, 196, 90, 38, + 132, 203, 72, 253, 218, 30, 8, 81, 142, 76, 142, 239, 47, 160, + 75, 243, 10, 37, 249, 93, 69, 41, 195, 26, 37, 150, 251, 4, + 36, 225, 107, 238, 147, 128, 7, 44, 69, 217, 75, 229, 24, 127, + 83, 146, 47, 114, 155, 132, 36, 5, 89, 125, 196, 40, 206, 207, + 15, 102, 172, 203, 132, 190, 83, 172, 148, 139, 139, 43, 213, 181, + 119, 203, 43, 115, 107, 171, 139, 165, 247, 150, 75, 51, 43, 165, + 217, 53, 68, 179, 168, 14, 106, 214, 8, 185, 146, 206, 181, 180, + 56, 255, 126, 183, 172, 122, 238, 207, 145, 33, 214, 9, 81, 179, + 23, 248, 223, 87, 66, 231, 126, 92, 35, 131, 157, 111, 173, 27, + 164, 23, 164, 238, 194, 57, 242, 204, 129, 37, 206, 101, 42, 60, + 171, 245, 42, 34, 34, 57, 158, 31, 241, 134, 60, 245, 51, 153, + 121, 122, 128, 244, 203, 25, 156, 251, 166, 65, 142, 9, 135, 244, + 164, 65, 21, 114, 8, 111, 222, 107, 110, 125, 75, 250, 108, 142, + 237, 47, 127, 223, 167, 133, 82, 125, 203, 93, 217, 107, 185, 85, + 55, 174, 12, 96, 33, 236, 81, 100, 189, 79, 78, 2, 117, 241, + 243, 53, 217, 4, 222, 248, 46, 134, 12, 93, 102, 91, 229, 120, + 220, 101, 133, 20, 200, 113, 21, 94, 74, 140, 30, 122, 123, 30, + 83, 80, 166, 248, 16, 230, 137, 165, 64, 99, 137, 236, 232, 199, + 60, 152, 32, 100, 97, 110, 187, 70, 6, 148, 78, 89, 19, 228, + 132, 136, 91, 181, 166, 32, 178, 0, 141, 178, 149, 227, 226, 93, + 226, 73, 17, 89, 47, 145, 67, 74, 215, 113, 184, 178, 149, 129, + 164, 43, 81, 110, 146, 156, 100, 221, 93, 112, 99, 135, 93, 3, + 146, 190, 157, 33, 89, 62, 41, 81, 24, 216, 95, 233, 195, 233, + 24, 125, 25, 155, 139, 223, 189, 138, 46, 172, 223, 124, 225, 194, + 250, 194, 232, 226, 63, 152, 11, 235, 221, 238, 46, 172, 191, 172, + 225, 133, 248, 108, 102, 70, 179, 255, 158, 150, 230, 220, 54, 219, + 62, 192, 1, 170, 32, 84, 163, 247, 128, 255, 44, 16, 90, 130, + 192, 88, 137, 218, 51, 174, 109, 179, 59, 67, 163, 161, 186, 206, + 193, 36, 93, 8, 162, 152, 214, 26, 30, 20, 139, 106, 214, 93, + 238, 8, 9, 14, 120, 252, 190, 34, 214, 34, 104, 112, 158, 117, + 196, 40, 215, 194, 179, 217, 179, 228, 47, 9, 200, 71, 227, 130, + 126, 206, 254, 97, 77, 184, 166, 114, 179, 15, 144, 127, 2, 206, + 15, 87, 87, 123, 117, 108, 177, 244, 88, 8, 221, 173, 118, 195, + 145, 131, 6, 14, 68, 174, 31, 123, 161, 219, 216, 203, 83, 64, + 174, 5, 149, 147, 124, 205, 125, 58, 27, 94, 205, 139, 27, 123, + 156, 49, 227, 34, 205, 143, 64, 88, 122, 57, 165, 126, 191, 144, + 82, 191, 95, 232, 63, 173, 220, 57, 47, 216, 103, 193, 189, 6, + 84, 176, 47, 233, 23, 237, 123, 79, 105, 191, 184, 167, 69, 78, + 236, 69, 155, 123, 178, 7, 9, 11, 164, 234, 224, 94, 210, 45, + 69, 7, 247, 210, 113, 91, 209, 193, 189, 116, 254, 2, 184, 41, + 100, 216, 12, 184, 172, 191, 98, 216, 83, 244, 190, 215, 136, 221, + 48, 74, 141, 33, 221, 112, 34, 92, 26, 201, 68, 40, 200, 91, + 166, 136, 18, 10, 229, 194, 128, 92, 238, 59, 6, 225, 224, 51, + 56, 34, 215, 204, 67, 246, 54, 232, 1, 82, 133, 242, 246, 115, + 203, 92, 182, 180, 22, 203, 139, 15, 166, 164, 215, 136, 23, 1, + 186, 17, 8, 236, 193, 18, 153, 251, 163, 128, 17, 39, 98, 174, + 160, 142, 143, 209, 186, 225, 196, 174, 95, 219, 19, 186, 111, 78, + 229, 107, 102, 95, 146, 214, 45, 227, 26, 25, 32, 127, 217, 224, + 45, 211, 44, 99, 194, 28, 177, 127, 216, 232, 70, 235, 13, 23, + 48, 198, 227, 64, 76, 24, 65, 117, 16, 140, 108, 59, 232, 9, + 29, 132, 160, 240, 38, 180, 237, 119, 184, 18, 71, 5, 90, 142, + 83, 158, 43, 18, 146, 9, 208, 126, 149, 15, 32, 204, 1, 250, + 11, 147, 78, 143, 228, 72, 68, 95, 77, 180, 18, 114, 152, 97, + 231, 2, 87, 31, 110, 9, 220, 225, 40, 10, 120, 101, 157, 134, + 74, 222, 102, 103, 135, 176, 70, 182, 220, 151, 139, 213, 42, 180, + 102, 27, 66, 141, 66, 253, 132, 62, 188, 95, 44, 207, 231, 41, + 254, 203, 178, 60, 18, 142, 172, 141, 70, 151, 177, 84, 27, 184, + 225, 130, 150, 157, 168, 62, 153, 60, 171, 244, 232, 83, 38, 173, + 24, 41, 13, 70, 230, 114, 146, 214, 45, 99, 226, 218, 176, 156, + 82, 186, 101, 220, 50, 11, 246, 54, 173, 114, 243, 172, 56, 120, + 230, 118, 129, 96, 69, 157, 52, 34, 84, 132, 245, 228, 139, 203, + 223, 235, 54, 2, 162, 33, 108, 202, 220, 50, 71, 146, 52, 107, + 73, 126, 148, 252, 134, 38, 20, 217, 119, 244, 115, 246, 63, 238, + 186, 249, 192, 110, 211, 177, 80, 159, 107, 93, 61, 109, 247, 100, + 39, 68, 136, 225, 36, 165, 213, 0, 39, 186, 240, 131, 118, 218, + 141, 152, 40, 32, 86, 240, 146, 141, 54, 192, 63, 165, 87, 82, + 162, 38, 239, 101, 93, 57, 164, 168, 201, 239, 28, 62, 173, 168, + 201, 239, 216, 103, 201, 119, 53, 129, 248, 53, 173, 95, 176, 127, + 73, 3, 51, 144, 176, 237, 230, 25, 247, 16, 187, 33, 13, 218, + 108, 114, 137, 219, 68, 138, 238, 108, 189, 47, 180, 99, 140, 37, + 11, 23, 15, 144, 121, 193, 222, 153, 92, 57, 10, 197, 249, 121, + 110, 95, 178, 233, 52, 34, 55, 47, 80, 178, 88, 233, 94, 4, + 190, 223, 60, 148, 32, 32, 67, 37, 80, 235, 105, 242, 239, 139, + 113, 153, 180, 42, 129, 26, 235, 97, 253, 232, 85, 160, 198, 166, + 251, 206, 40, 80, 99, 211, 231, 206, 147, 143, 81, 40, 248, 32, + 179, 168, 217, 31, 61, 229, 164, 84, 46, 50, 207, 127, 92, 186, + 201, 71, 145, 34, 58, 123, 144, 165, 228, 91, 154, 144, 132, 189, + 169, 159, 179, 127, 76, 78, 47, 229, 147, 63, 219, 3, 78, 75, + 249, 143, 106, 220, 127, 244, 180, 34, 124, 123, 211, 62, 75, 150, + 133, 240, 109, 65, 191, 104, 207, 60, 171, 19, 207, 123, 202, 105, + 112, 202, 45, 240, 83, 14, 101, 116, 11, 252, 148, 67, 25, 221, + 194, 249, 11, 224, 16, 166, 91, 230, 219, 153, 247, 53, 123, 248, + 128, 161, 227, 247, 178, 100, 200, 164, 28, 228, 237, 236, 16, 57, + 68, 76, 83, 207, 102, 44, 179, 162, 191, 103, 160, 188, 2, 36, + 149, 149, 236, 49, 242, 134, 144, 145, 172, 152, 167, 237, 73, 5, + 65, 163, 195, 126, 107, 91, 236, 216, 232, 80, 228, 62, 113, 106, + 113, 67, 113, 194, 237, 101, 37, 12, 40, 162, 145, 149, 67, 150, + 34, 26, 89, 57, 121, 10, 124, 97, 96, 65, 190, 107, 158, 177, + 239, 38, 85, 93, 139, 58, 225, 6, 176, 114, 97, 142, 138, 6, + 138, 2, 56, 27, 225, 21, 184, 159, 109, 47, 43, 108, 64, 241, + 193, 125, 247, 208, 9, 197, 7, 247, 221, 211, 67, 228, 22, 122, + 62, 126, 152, 249, 92, 179, 71, 14, 32, 159, 184, 118, 118, 208, + 143, 45, 165, 15, 179, 103, 64, 142, 100, 24, 25, 203, 252, 72, + 175, 25, 224, 121, 4, 162, 233, 77, 197, 189, 253, 26, 68, 128, + 222, 10, 216, 88, 179, 59, 46, 136, 147, 132, 28, 201, 0, 67, + 193, 143, 200, 73, 178, 76, 122, 89, 138, 209, 123, 221, 204, 217, + 69, 52, 86, 99, 247, 217, 148, 126, 99, 99, 79, 245, 156, 239, + 118, 61, 148, 156, 11, 219, 207, 13, 110, 46, 183, 110, 102, 147, + 180, 102, 25, 235, 253, 231, 147, 180, 97, 25, 235, 244, 37, 242, + 54, 111, 129, 102, 25, 27, 166, 109, 79, 43, 32, 174, 163, 181, + 109, 15, 226, 222, 34, 210, 70, 180, 237, 181, 36, 104, 95, 210, + 28, 88, 61, 202, 158, 159, 52, 65, 235, 97, 101, 38, 77, 96, + 227, 177, 209, 127, 50, 73, 27, 150, 177, 49, 116, 134, 252, 166, + 46, 220, 75, 155, 250, 69, 251, 239, 232, 34, 218, 57, 32, 100, + 64, 16, 43, 32, 8, 99, 58, 224, 190, 143, 80, 173, 161, 27, + 135, 158, 187, 131, 186, 251, 208, 101, 179, 111, 204, 243, 197, 79, + 146, 4, 127, 150, 80, 164, 29, 252, 3, 224, 61, 4, 162, 28, + 238, 130, 117, 48, 2, 107, 30, 209, 231, 41, 253, 172, 27, 253, + 167, 224, 188, 248, 188, 208, 181, 208, 167, 32, 175, 162, 95, 201, + 103, 234, 245, 93, 22, 69, 232, 180, 140, 48, 156, 231, 125, 199, + 93, 22, 8, 82, 32, 57, 75, 188, 6, 234, 20, 27, 141, 196, + 195, 182, 151, 81, 243, 176, 226, 97, 219, 60, 98, 43, 30, 182, + 205, 243, 23, 200, 255, 162, 9, 23, 219, 72, 31, 183, 255, 25, + 156, 122, 142, 50, 249, 145, 111, 140, 144, 113, 76, 70, 56, 1, + 92, 217, 207, 25, 240, 29, 142, 236, 219, 223, 120, 216, 253, 14, + 158, 1, 2, 151, 139, 163, 111, 15, 111, 189, 7, 209, 159, 29, + 139, 1, 229, 146, 61, 86, 123, 51, 49, 158, 19, 39, 63, 82, + 83, 21, 45, 37, 62, 193, 189, 172, 155, 39, 21, 159, 224, 232, + 212, 203, 138, 79, 112, 84, 24, 35, 127, 87, 19, 78, 193, 79, + 244, 151, 236, 111, 107, 180, 232, 43, 0, 196, 202, 134, 206, 69, + 62, 40, 109, 255, 126, 28, 77, 116, 86, 25, 231, 92, 225, 122, + 46, 229, 150, 252, 68, 250, 58, 179, 193, 124, 210, 127, 78, 113, + 75, 126, 114, 145, 146, 191, 169, 9, 191, 228, 175, 234, 212, 254, + 169, 3, 251, 229, 211, 242, 236, 51, 187, 211, 209, 27, 242, 37, + 186, 67, 15, 238, 14, 227, 93, 190, 42, 187, 195, 54, 220, 175, + 246, 159, 85, 60, 162, 191, 122, 225, 34, 113, 193, 35, 186, 247, + 235, 90, 230, 155, 154, 102, 191, 251, 20, 238, 69, 136, 187, 158, + 159, 117, 105, 242, 47, 184, 67, 29, 227, 145, 190, 174, 101, 207, + 131, 67, 157, 169, 103, 44, 243, 135, 52, 253, 162, 125, 75, 156, + 248, 34, 187, 66, 69, 185, 46, 188, 186, 60, 163, 48, 168, 58, + 248, 130, 153, 122, 198, 132, 82, 100, 178, 135, 37, 7, 142, 137, + 164, 198, 146, 150, 45, 146, 6, 75, 158, 191, 32, 245, 8, 255, + 58, 32, 175, 62, 167, 244, 63, 89, 75, 95, 62, 78, 192, 83, + 173, 70, 159, 137, 101, 249, 165, 20, 21, 246, 151, 212, 147, 228, + 254, 77, 47, 33, 201, 185, 100, 217, 106, 208, 130, 233, 222, 239, + 21, 141, 239, 21, 123, 120, 240, 130, 215, 72, 79, 20, 11, 225, + 240, 145, 110, 34, 118, 229, 188, 173, 178, 156, 21, 252, 192, 154, + 33, 3, 24, 183, 127, 141, 245, 245, 217, 241, 10, 100, 197, 4, + 63, 99, 47, 172, 113, 98, 198, 206, 86, 52, 212, 3, 214, 151, + 93, 176, 10, 19, 52, 159, 10, 228, 180, 102, 201, 225, 77, 207, + 135, 32, 63, 88, 241, 65, 102, 160, 73, 197, 198, 247, 138, 70, + 229, 144, 248, 10, 234, 125, 133, 100, 235, 174, 83, 111, 120, 190, + 11, 81, 14, 158, 129, 207, 40, 242, 30, 40, 147, 206, 130, 192, + 184, 171, 76, 250, 45, 50, 184, 225, 109, 125, 210, 118, 195, 189, + 53, 247, 73, 43, 8, 227, 104, 168, 31, 186, 219, 5, 91, 114, + 218, 219, 122, 155, 229, 44, 65, 198, 202, 81, 241, 37, 166, 35, + 43, 71, 56, 245, 234, 107, 27, 123, 67, 4, 6, 20, 186, 215, + 207, 31, 79, 239, 89, 47, 147, 99, 194, 130, 96, 77, 128, 98, + 15, 13, 160, 204, 93, 188, 168, 240, 231, 214, 9, 210, 19, 186, + 78, 163, 57, 116, 8, 161, 76, 33, 97, 149, 201, 81, 14, 65, + 181, 198, 65, 229, 134, 14, 31, 4, 135, 57, 135, 25, 17, 57, + 57, 170, 28, 217, 78, 165, 173, 87, 9, 105, 133, 65, 203, 13, + 99, 207, 141, 134, 142, 60, 213, 222, 183, 162, 100, 181, 238, 146, + 1, 108, 227, 90, 212, 114, 107, 67, 71, 15, 66, 179, 68, 236, + 75, 198, 41, 85, 72, 36, 127, 91, 23, 201, 0, 187, 136, 179, + 81, 91, 243, 234, 67, 131, 136, 157, 42, 30, 149, 235, 185, 50, + 233, 129, 249, 108, 157, 36, 199, 170, 43, 197, 149, 210, 218, 234, + 34, 24, 162, 221, 47, 151, 102, 7, 51, 22, 33, 189, 197, 153, + 149, 242, 59, 165, 65, 205, 58, 66, 200, 253, 242, 98, 113, 190, + 252, 65, 121, 241, 193, 160, 110, 29, 38, 253, 60, 93, 154, 29, + 52, 222, 52, 179, 198, 160, 153, 251, 45, 131, 28, 73, 143, 159, + 117, 62, 193, 201, 212, 196, 88, 233, 9, 88, 230, 121, 210, 199, + 246, 204, 200, 229, 48, 154, 252, 53, 127, 102, 157, 33, 61, 224, + 255, 128, 250, 21, 124, 137, 79, 172, 183, 59, 20, 29, 184, 250, + 242, 207, 154, 80, 138, 166, 39, 154, 203, 164, 20, 35, 214, 187, + 228, 72, 236, 62, 137, 215, 36, 159, 193, 87, 86, 225, 57, 10, + 125, 146, 96, 45, 207, 101, 42, 135, 99, 245, 129, 93, 33, 3, + 74, 181, 214, 140, 162, 21, 227, 250, 174, 231, 84, 73, 37, 223, + 217, 21, 114, 56, 85, 171, 85, 220, 95, 234, 165, 231, 208, 162, + 41, 101, 78, 31, 38, 3, 92, 101, 198, 184, 153, 220, 15, 105, + 228, 72, 122, 110, 91, 175, 145, 161, 118, 228, 42, 11, 127, 77, + 110, 243, 92, 43, 117, 170, 29, 185, 201, 226, 79, 66, 235, 191, + 70, 122, 209, 193, 250, 249, 97, 101, 49, 127, 238, 33, 33, 201, + 12, 183, 110, 144, 62, 156, 227, 79, 209, 96, 98, 246, 168, 34, + 114, 90, 67, 164, 207, 243, 183, 221, 144, 215, 158, 173, 136, 100, + 238, 23, 52, 210, 199, 179, 91, 247, 201, 17, 238, 151, 190, 198, + 155, 138, 53, 92, 60, 16, 64, 22, 91, 92, 57, 188, 149, 2, + 61, 254, 10, 25, 64, 67, 114, 118, 214, 11, 239, 233, 11, 93, + 10, 81, 192, 137, 43, 234, 39, 214, 25, 146, 245, 162, 181, 186, + 23, 198, 168, 33, 103, 13, 142, 102, 89, 242, 203, 104, 226, 254, + 209, 26, 106, 226, 254, 161, 254, 66, 19, 247, 66, 19, 247, 125, + 8, 50, 115, 21, 126, 234, 150, 113, 130, 63, 53, 44, 227, 100, + 230, 46, 252, 52, 45, 227, 84, 230, 43, 92, 107, 55, 148, 104, + 237, 216, 207, 111, 162, 215, 116, 15, 205, 252, 178, 6, 110, 211, + 69, 118, 189, 98, 147, 164, 237, 72, 23, 100, 180, 10, 76, 212, + 17, 205, 102, 27, 125, 228, 88, 78, 42, 120, 28, 70, 137, 114, + 156, 178, 108, 84, 228, 250, 224, 203, 208, 4, 200, 135, 86, 27, + 251, 121, 71, 8, 3, 162, 41, 26, 237, 58, 33, 68, 126, 137, + 157, 232, 113, 158, 32, 78, 36, 34, 132, 224, 239, 60, 157, 121, + 155, 58, 113, 236, 54, 91, 113, 129, 64, 36, 208, 32, 98, 141, + 152, 2, 221, 136, 240, 203, 68, 7, 1, 133, 75, 66, 228, 67, + 30, 30, 76, 48, 185, 160, 11, 17, 225, 100, 32, 50, 161, 208, + 0, 210, 172, 69, 38, 217, 239, 126, 203, 120, 73, 63, 156, 187, + 10, 55, 23, 116, 85, 9, 219, 45, 240, 159, 171, 133, 27, 237, + 45, 240, 46, 153, 24, 127, 245, 181, 87, 110, 191, 2, 215, 21, + 211, 204, 244, 103, 44, 227, 165, 1, 46, 236, 238, 103, 197, 41, + 41, 29, 83, 255, 137, 140, 40, 55, 162, 231, 77, 251, 111, 106, + 79, 143, 86, 147, 244, 132, 99, 106, 120, 62, 197, 35, 106, 118, + 186, 240, 192, 141, 203, 10, 74, 97, 101, 121, 38, 9, 106, 67, + 159, 18, 79, 70, 137, 214, 209, 37, 68, 11, 35, 206, 82, 59, + 110, 241, 144, 12, 95, 40, 186, 10, 143, 56, 151, 181, 204, 17, + 43, 111, 240, 48, 3, 25, 12, 51, 112, 221, 28, 85, 30, 104, + 150, 241, 178, 249, 50, 8, 67, 65, 105, 88, 208, 239, 26, 138, + 226, 175, 208, 119, 136, 44, 37, 138, 191, 113, 211, 182, 191, 34, + 32, 58, 29, 112, 191, 7, 19, 56, 116, 152, 149, 246, 170, 24, + 233, 2, 119, 41, 184, 48, 176, 135, 1, 186, 229, 116, 40, 244, + 198, 205, 147, 41, 133, 222, 248, 208, 25, 50, 155, 232, 243, 110, + 152, 71, 57, 112, 75, 66, 71, 192, 41, 169, 137, 0, 21, 126, + 157, 7, 221, 140, 0, 124, 117, 191, 142, 71, 131, 98, 72, 74, + 249, 116, 227, 240, 17, 242, 219, 90, 162, 125, 122, 205, 60, 110, + 255, 170, 214, 89, 143, 23, 41, 49, 230, 1, 112, 151, 237, 188, + 161, 227, 227, 49, 205, 97, 244, 2, 42, 217, 65, 236, 172, 8, + 106, 129, 136, 184, 236, 230, 239, 83, 167, 29, 7, 77, 39, 230, + 42, 155, 40, 96, 91, 225, 102, 236, 134, 176, 54, 209, 207, 69, + 10, 240, 104, 0, 222, 55, 50, 41, 101, 120, 170, 164, 115, 195, + 173, 5, 16, 101, 215, 169, 197, 24, 110, 79, 213, 105, 189, 102, + 30, 73, 233, 180, 94, 59, 102, 145, 29, 222, 93, 195, 50, 94, + 55, 45, 123, 171, 91, 111, 229, 142, 194, 200, 234, 35, 32, 31, + 107, 228, 126, 2, 83, 31, 91, 201, 215, 115, 170, 245, 74, 227, + 149, 118, 177, 13, 242, 117, 243, 112, 146, 214, 45, 227, 245, 193, + 99, 40, 128, 131, 193, 46, 97, 52, 68, 142, 84, 197, 103, 14, + 63, 236, 188, 116, 144, 172, 24, 39, 0, 88, 134, 122, 77, 126, + 180, 114, 229, 108, 228, 130, 42, 45, 97, 218, 249, 138, 221, 236, + 92, 202, 24, 214, 138, 70, 30, 122, 139, 115, 67, 76, 5, 180, + 88, 226, 73, 120, 113, 228, 54, 54, 133, 182, 9, 157, 206, 96, + 42, 39, 184, 200, 18, 38, 209, 241, 105, 144, 44, 219, 180, 50, + 29, 4, 112, 37, 233, 174, 202, 166, 102, 41, 123, 88, 81, 224, + 151, 6, 143, 145, 123, 92, 247, 104, 150, 245, 121, 211, 30, 199, + 200, 59, 241, 129, 75, 160, 208, 125, 155, 208, 123, 45, 163, 44, + 67, 237, 48, 242, 150, 207, 93, 83, 52, 126, 229, 235, 47, 243, + 109, 66, 207, 90, 102, 57, 63, 47, 182, 9, 29, 183, 137, 55, + 229, 54, 161, 227, 54, 241, 150, 249, 50, 89, 18, 26, 194, 101, + 253, 162, 61, 173, 200, 191, 185, 156, 178, 43, 32, 46, 98, 144, + 63, 78, 176, 165, 132, 133, 107, 162, 171, 51, 89, 137, 106, 144, + 160, 229, 129, 147, 138, 230, 110, 249, 148, 173, 104, 238, 150, 207, + 95, 32, 255, 151, 8, 18, 100, 190, 167, 191, 127, 211, 254, 150, + 118, 32, 149, 228, 177, 40, 228, 142, 114, 253, 226, 62, 191, 127, + 241, 238, 131, 138, 136, 220, 56, 207, 217, 140, 40, 81, 219, 167, + 151, 142, 114, 250, 118, 140, 199, 228, 2, 189, 123, 151, 222, 199, + 247, 152, 255, 238, 151, 255, 35, 99, 19, 245, 90, 198, 123, 114, + 120, 77, 205, 50, 222, 59, 55, 34, 82, 134, 101, 188, 151, 31, + 21, 169, 172, 101, 188, 223, 123, 131, 15, 166, 137, 163, 251, 126, + 118, 130, 124, 93, 134, 46, 122, 164, 143, 216, 109, 37, 236, 241, + 110, 55, 90, 178, 117, 176, 1, 76, 85, 205, 221, 108, 3, 38, + 186, 194, 113, 204, 8, 116, 251, 24, 189, 248, 129, 153, 93, 109, + 213, 157, 88, 185, 19, 209, 182, 31, 123, 141, 20, 173, 176, 141, + 61, 189, 172, 17, 162, 55, 61, 154, 101, 60, 58, 119, 89, 164, + 12, 203, 120, 116, 109, 152, 252, 94, 86, 4, 21, 218, 209, 95, + 182, 255, 139, 44, 93, 148, 78, 130, 202, 190, 168, 108, 150, 226, + 236, 14, 124, 183, 64, 151, 118, 220, 176, 131, 15, 98, 47, 73, + 199, 48, 58, 116, 117, 177, 188, 180, 168, 240, 89, 180, 219, 62, + 188, 159, 45, 32, 2, 198, 27, 190, 145, 50, 249, 110, 123, 119, + 62, 113, 10, 97, 243, 35, 109, 206, 225, 208, 233, 78, 150, 75, + 109, 34, 187, 12, 36, 8, 124, 73, 183, 165, 171, 36, 40, 171, + 82, 92, 92, 196, 91, 38, 140, 231, 131, 20, 37, 196, 254, 138, + 204, 29, 161, 174, 95, 115, 90, 81, 187, 225, 200, 104, 216, 192, + 115, 249, 78, 35, 241, 39, 72, 125, 35, 204, 210, 183, 66, 167, + 181, 141, 28, 127, 8, 230, 14, 24, 10, 49, 148, 129, 15, 156, + 152, 54, 131, 8, 157, 87, 64, 25, 40, 180, 104, 2, 160, 159, + 237, 21, 29, 195, 201, 195, 41, 70, 219, 78, 18, 253, 11, 43, + 2, 165, 9, 219, 143, 49, 196, 112, 129, 190, 203, 214, 37, 38, + 96, 27, 70, 157, 211, 182, 203, 181, 146, 132, 134, 174, 83, 219, + 134, 195, 77, 173, 128, 174, 108, 183, 35, 90, 219, 171, 53, 92, + 142, 248, 222, 104, 4, 187, 130, 177, 8, 93, 234, 7, 65, 139, + 245, 17, 132, 30, 138, 44, 131, 134, 110, 220, 14, 253, 14, 187, + 42, 57, 240, 98, 155, 217, 113, 105, 173, 17, 68, 72, 53, 146, + 238, 27, 231, 19, 112, 159, 81, 14, 47, 188, 118, 84, 220, 26, + 120, 66, 21, 48, 246, 149, 34, 86, 172, 136, 24, 107, 18, 141, + 145, 35, 80, 35, 71, 146, 204, 10, 190, 83, 33, 154, 96, 154, + 180, 242, 252, 132, 136, 142, 187, 169, 207, 4, 111, 197, 153, 31, + 0, 226, 221, 0, 107, 151, 225, 29, 207, 33, 73, 203, 148, 208, + 92, 251, 155, 55, 194, 201, 25, 5, 130, 166, 5, 162, 134, 17, + 72, 239, 177, 128, 105, 168, 134, 29, 75, 159, 105, 116, 37, 192, + 99, 183, 59, 59, 132, 42, 47, 217, 46, 177, 239, 236, 19, 200, + 130, 111, 29, 176, 92, 112, 190, 215, 156, 72, 241, 35, 235, 53, + 217, 214, 162, 6, 243, 218, 25, 56, 38, 82, 154, 101, 236, 88, + 87, 69, 202, 176, 140, 157, 145, 235, 36, 18, 209, 186, 62, 213, + 199, 236, 77, 218, 41, 234, 85, 28, 175, 32, 200, 129, 16, 157, + 81, 224, 177, 36, 16, 139, 152, 59, 92, 79, 146, 218, 146, 56, + 84, 10, 22, 72, 225, 198, 132, 77, 232, 51, 89, 173, 50, 213, + 107, 25, 159, 14, 8, 243, 150, 62, 205, 50, 62, 181, 175, 139, + 148, 97, 25, 159, 142, 22, 196, 145, 153, 181, 204, 175, 107, 250, + 3, 251, 127, 213, 80, 224, 33, 177, 199, 17, 212, 37, 215, 142, + 220, 112, 234, 117, 183, 233, 120, 141, 123, 16, 29, 63, 144, 243, + 161, 147, 15, 75, 128, 238, 217, 190, 5, 165, 69, 110, 184, 227, + 213, 92, 198, 49, 66, 252, 104, 40, 148, 240, 82, 107, 225, 168, + 114, 159, 252, 138, 211, 106, 69, 173, 32, 46, 108, 241, 143, 248, + 55, 0, 188, 56, 130, 230, 93, 108, 81, 8, 44, 47, 135, 141, + 113, 72, 82, 237, 252, 56, 216, 246, 235, 129, 251, 21, 190, 125, + 226, 167, 251, 47, 78, 200, 231, 100, 123, 160, 235, 89, 145, 4, + 173, 86, 255, 113, 145, 52, 88, 242, 212, 144, 72, 2, 157, 206, + 220, 39, 131, 112, 108, 102, 225, 216, 52, 191, 174, 157, 157, 37, + 63, 171, 3, 33, 251, 45, 243, 71, 52, 157, 218, 255, 127, 157, + 222, 111, 55, 26, 210, 159, 157, 171, 98, 17, 48, 0, 6, 88, + 198, 146, 237, 24, 233, 52, 49, 159, 118, 23, 188, 196, 14, 220, + 81, 81, 234, 40, 184, 199, 75, 242, 39, 215, 119, 66, 71, 105, + 85, 221, 251, 167, 104, 110, 76, 198, 102, 24, 133, 99, 161, 32, + 200, 206, 46, 206, 112, 62, 140, 213, 93, 167, 190, 225, 186, 155, + 16, 252, 97, 223, 241, 131, 101, 164, 134, 46, 85, 6, 60, 143, + 198, 0, 39, 250, 149, 87, 95, 187, 61, 158, 147, 20, 239, 239, + 1, 26, 9, 138, 247, 107, 44, 217, 111, 139, 164, 193, 146, 231, + 47, 146, 95, 194, 153, 73, 44, 243, 199, 53, 253, 132, 253, 243, + 26, 173, 184, 78, 163, 217, 149, 213, 226, 72, 251, 176, 69, 114, + 162, 201, 152, 20, 7, 193, 120, 142, 121, 254, 102, 232, 160, 176, + 144, 253, 51, 218, 218, 27, 123, 121, 44, 5, 138, 25, 197, 110, + 56, 6, 87, 181, 45, 207, 119, 199, 156, 118, 188, 189, 198, 167, + 37, 23, 43, 130, 114, 36, 90, 171, 5, 254, 166, 183, 133, 226, + 11, 209, 77, 210, 3, 45, 23, 221, 36, 26, 75, 246, 31, 17, + 73, 131, 37, 143, 29, 231, 124, 253, 128, 101, 254, 5, 77, 191, + 106, 143, 43, 104, 198, 5, 250, 14, 70, 179, 144, 129, 251, 0, + 121, 21, 54, 80, 111, 203, 15, 66, 96, 149, 176, 184, 129, 94, + 40, 96, 80, 36, 53, 150, 60, 70, 69, 210, 96, 201, 75, 87, + 200, 207, 32, 77, 15, 89, 230, 79, 107, 250, 136, 253, 227, 26, + 45, 134, 27, 94, 28, 58, 225, 158, 234, 139, 43, 98, 189, 163, + 215, 138, 226, 50, 152, 167, 245, 160, 233, 120, 254, 168, 2, 144, + 32, 212, 51, 164, 251, 165, 12, 78, 106, 0, 132, 96, 188, 29, + 90, 242, 10, 123, 169, 215, 239, 210, 155, 227, 183, 95, 145, 0, + 67, 216, 218, 67, 0, 9, 171, 139, 53, 119, 8, 32, 97, 207, + 92, 18, 73, 128, 132, 189, 58, 76, 254, 199, 30, 232, 203, 97, + 203, 252, 142, 166, 95, 176, 255, 171, 30, 168, 10, 176, 56, 184, + 152, 155, 155, 200, 236, 2, 222, 146, 27, 113, 107, 161, 253, 107, + 76, 4, 155, 20, 66, 30, 207, 175, 187, 79, 58, 78, 112, 30, + 36, 88, 196, 97, 193, 104, 148, 16, 76, 89, 32, 126, 57, 190, + 211, 216, 139, 220, 136, 111, 69, 181, 118, 163, 21, 66, 176, 10, + 246, 216, 139, 232, 24, 143, 253, 210, 10, 60, 63, 150, 185, 71, + 36, 141, 120, 155, 59, 7, 187, 133, 23, 12, 100, 92, 2, 88, + 204, 29, 230, 37, 10, 51, 42, 68, 130, 245, 46, 155, 73, 30, + 37, 153, 163, 96, 253, 250, 116, 49, 2, 210, 13, 110, 204, 219, + 174, 23, 82, 69, 235, 86, 224, 138, 2, 132, 95, 10, 193, 209, + 145, 206, 112, 171, 85, 5, 142, 207, 9, 217, 117, 0, 177, 56, + 128, 207, 97, 141, 110, 183, 26, 129, 195, 42, 227, 251, 32, 43, + 16, 162, 69, 73, 0, 127, 34, 249, 191, 174, 13, 67, 64, 68, + 40, 37, 97, 66, 58, 45, 78, 223, 113, 195, 186, 87, 227, 145, + 147, 156, 40, 10, 106, 158, 19, 43, 40, 36, 146, 212, 193, 38, + 189, 238, 248, 123, 215, 249, 196, 245, 66, 12, 1, 227, 197, 109, + 104, 137, 74, 98, 8, 68, 224, 41, 0, 104, 158, 47, 27, 93, + 219, 123, 106, 163, 243, 164, 107, 76, 147, 29, 108, 37, 23, 217, + 32, 215, 186, 235, 54, 26, 194, 214, 91, 46, 135, 195, 189, 48, + 195, 15, 137, 164, 198, 146, 135, 197, 234, 56, 108, 176, 228, 217, + 243, 228, 135, 250, 96, 57, 28, 177, 204, 127, 164, 233, 182, 253, + 111, 123, 105, 17, 142, 198, 209, 100, 66, 9, 85, 167, 26, 77, + 57, 70, 6, 185, 197, 77, 153, 184, 177, 94, 39, 73, 151, 54, + 99, 215, 87, 225, 47, 57, 28, 159, 122, 158, 109, 185, 210, 4, + 56, 61, 63, 19, 172, 64, 112, 199, 229, 65, 134, 120, 4, 161, + 32, 148, 193, 140, 10, 157, 88, 155, 110, 215, 22, 35, 212, 11, + 155, 124, 123, 83, 50, 66, 17, 2, 27, 36, 176, 10, 209, 158, + 31, 59, 79, 120, 48, 136, 110, 165, 48, 142, 234, 35, 30, 40, + 231, 195, 209, 181, 194, 163, 207, 38, 242, 19, 227, 227, 159, 79, + 177, 103, 197, 209, 15, 248, 227, 15, 135, 63, 28, 161, 240, 110, + 242, 181, 207, 215, 47, 11, 96, 66, 44, 125, 215, 137, 104, 228, + 54, 224, 94, 3, 80, 164, 192, 209, 210, 215, 211, 226, 113, 248, + 31, 235, 236, 189, 169, 215, 247, 9, 206, 57, 29, 238, 33, 146, + 34, 132, 43, 34, 73, 123, 203, 179, 252, 48, 219, 10, 32, 132, + 82, 87, 69, 151, 82, 38, 63, 148, 120, 201, 107, 170, 229, 8, + 238, 85, 181, 109, 39, 116, 106, 177, 27, 242, 48, 62, 184, 177, + 29, 208, 94, 68, 90, 82, 90, 9, 102, 119, 188, 109, 17, 15, + 36, 204, 119, 76, 17, 32, 193, 119, 119, 49, 108, 217, 29, 54, + 153, 218, 27, 49, 171, 14, 35, 31, 224, 10, 81, 239, 94, 169, + 89, 182, 111, 172, 48, 111, 82, 95, 34, 130, 236, 248, 14, 112, + 124, 196, 117, 81, 97, 10, 234, 46, 66, 253, 193, 65, 224, 242, + 56, 251, 104, 126, 4, 66, 75, 177, 243, 214, 16, 104, 49, 49, + 83, 90, 151, 74, 73, 209, 154, 168, 208, 106, 199, 235, 252, 58, + 2, 237, 96, 219, 31, 191, 122, 36, 87, 22, 185, 102, 143, 244, + 192, 50, 20, 103, 255, 17, 141, 37, 251, 79, 136, 164, 193, 146, + 167, 207, 144, 175, 130, 165, 121, 239, 175, 106, 153, 63, 208, 52, + 219, 167, 105, 45, 186, 114, 81, 232, 118, 35, 232, 114, 33, 0, + 81, 11, 174, 0, 152, 143, 242, 106, 129, 82, 229, 77, 69, 218, + 196, 141, 184, 52, 205, 50, 127, 85, 203, 158, 226, 158, 253, 25, + 203, 252, 53, 77, 255, 138, 125, 17, 196, 40, 98, 171, 146, 197, + 112, 43, 5, 222, 77, 48, 7, 103, 249, 179, 34, 169, 177, 36, + 199, 34, 7, 131, 112, 243, 215, 180, 227, 39, 68, 50, 203, 146, + 39, 223, 0, 222, 89, 227, 122, 7, 243, 215, 180, 211, 119, 121, + 229, 154, 101, 254, 211, 167, 84, 62, 139, 54, 16, 178, 114, 173, + 7, 242, 139, 202, 53, 248, 92, 86, 174, 25, 44, 41, 43, 215, + 178, 44, 41, 43, 215, 176, 242, 127, 202, 42, 127, 153, 227, 58, + 152, 223, 213, 244, 123, 246, 249, 238, 149, 175, 176, 65, 151, 85, + 235, 61, 144, 91, 84, 205, 90, 254, 93, 193, 218, 1, 182, 131, + 249, 93, 237, 152, 37, 146, 89, 150, 60, 126, 151, 87, 141, 130, + 84, 243, 187, 218, 201, 59, 100, 129, 85, 109, 100, 172, 222, 223, + 208, 244, 223, 210, 12, 251, 46, 85, 69, 9, 29, 195, 159, 118, + 170, 218, 55, 224, 162, 113, 6, 27, 133, 223, 208, 200, 73, 226, + 144, 94, 150, 100, 131, 250, 155, 154, 121, 213, 126, 27, 162, 162, + 36, 22, 166, 113, 64, 63, 193, 139, 167, 90, 50, 212, 181, 191, + 120, 152, 240, 233, 171, 106, 129, 144, 163, 164, 15, 171, 232, 133, + 58, 78, 39, 15, 52, 246, 96, 232, 165, 228, 129, 193, 30, 92, + 190, 66, 222, 134, 62, 107, 86, 239, 239, 104, 250, 127, 171, 25, + 118, 145, 166, 204, 54, 246, 247, 250, 73, 156, 24, 186, 62, 173, + 223, 108, 2, 252, 142, 70, 78, 147, 191, 161, 65, 199, 97, 54, + 255, 55, 154, 121, 217, 254, 9, 237, 160, 158, 39, 5, 127, 161, + 110, 211, 106, 123, 99, 20, 133, 20, 137, 161, 93, 23, 55, 232, + 148, 9, 50, 70, 160, 71, 131, 78, 164, 10, 128, 153, 176, 38, + 158, 76, 30, 104, 236, 193, 169, 139, 201, 3, 131, 61, 200, 93, + 34, 71, 56, 176, 74, 239, 239, 106, 250, 239, 107, 6, 118, 26, + 194, 47, 252, 174, 150, 61, 14, 170, 58, 141, 205, 188, 223, 211, + 204, 151, 248, 204, 51, 122, 33, 121, 84, 36, 53, 150, 28, 60, + 39, 146, 144, 249, 34, 229, 159, 154, 150, 249, 207, 53, 243, 10, + 127, 105, 246, 66, 242, 152, 72, 106, 44, 105, 81, 145, 52, 88, + 242, 210, 101, 242, 15, 16, 198, 162, 247, 123, 90, 230, 95, 107, + 154, 253, 115, 26, 77, 219, 199, 40, 163, 185, 29, 236, 118, 220, + 14, 212, 209, 4, 150, 155, 221, 47, 162, 64, 94, 240, 60, 96, + 174, 113, 86, 114, 57, 24, 27, 53, 198, 201, 4, 59, 176, 153, + 167, 130, 154, 0, 244, 179, 12, 126, 5, 118, 193, 73, 92, 152, + 186, 26, 23, 102, 0, 253, 61, 204, 239, 177, 141, 239, 125, 238, + 212, 97, 254, 161, 166, 95, 182, 223, 162, 85, 151, 71, 219, 72, + 46, 2, 120, 117, 71, 15, 201, 61, 30, 26, 193, 23, 113, 176, + 60, 213, 175, 65, 49, 127, 228, 243, 18, 98, 174, 177, 178, 123, + 69, 82, 99, 201, 190, 139, 34, 105, 176, 100, 238, 18, 26, 34, + 195, 86, 242, 175, 52, 253, 156, 253, 23, 181, 46, 45, 217, 216, + 23, 61, 6, 180, 250, 215, 34, 218, 110, 161, 82, 218, 197, 38, + 32, 41, 58, 46, 201, 220, 13, 23, 149, 98, 106, 200, 44, 70, + 77, 130, 52, 196, 16, 165, 221, 121, 107, 217, 35, 173, 23, 26, + 57, 40, 146, 208, 230, 99, 167, 69, 210, 96, 73, 251, 44, 249, + 150, 6, 238, 36, 189, 127, 164, 101, 190, 165, 107, 246, 143, 106, + 138, 243, 66, 172, 70, 67, 169, 115, 14, 146, 241, 83, 252, 158, + 230, 249, 233, 40, 127, 210, 196, 35, 113, 98, 24, 222, 241, 156, + 20, 59, 15, 11, 114, 36, 173, 105, 196, 92, 252, 206, 178, 198, + 115, 142, 240, 57, 192, 22, 196, 31, 105, 89, 139, 60, 225, 78, + 22, 230, 255, 174, 25, 167, 237, 143, 187, 183, 51, 9, 16, 148, + 110, 107, 129, 208, 146, 192, 47, 244, 208, 246, 36, 93, 157, 0, + 39, 4, 133, 209, 70, 27, 253, 16, 55, 130, 120, 155, 19, 20, + 60, 18, 88, 213, 50, 169, 177, 228, 128, 37, 146, 6, 75, 158, + 60, 69, 126, 242, 48, 119, 74, 48, 255, 170, 110, 156, 176, 191, + 126, 56, 213, 80, 46, 21, 233, 108, 237, 254, 121, 0, 172, 3, + 180, 144, 177, 9, 82, 54, 141, 142, 45, 169, 140, 49, 191, 233, + 136, 59, 13, 219, 250, 46, 193, 94, 90, 115, 34, 55, 117, 113, + 102, 151, 61, 207, 167, 145, 23, 183, 229, 37, 210, 13, 19, 147, + 111, 92, 42, 155, 161, 147, 232, 11, 234, 110, 189, 13, 150, 69, + 177, 27, 17, 30, 226, 86, 180, 24, 34, 223, 178, 38, 0, 99, + 89, 115, 26, 8, 115, 233, 201, 235, 53, 122, 15, 11, 149, 198, + 181, 8, 4, 91, 68, 41, 19, 0, 112, 92, 135, 213, 4, 119, + 236, 121, 55, 166, 69, 113, 111, 81, 58, 137, 108, 103, 74, 55, + 34, 216, 173, 154, 235, 237, 136, 171, 183, 195, 217, 85, 142, 182, + 233, 48, 186, 180, 218, 49, 7, 31, 133, 175, 210, 117, 187, 62, + 59, 44, 216, 236, 96, 53, 79, 31, 88, 243, 190, 43, 1, 191, + 125, 179, 223, 49, 191, 49, 113, 132, 79, 54, 82, 98, 78, 13, + 179, 143, 99, 113, 147, 220, 163, 13, 215, 137, 98, 250, 24, 248, + 239, 100, 77, 140, 160, 2, 42, 14, 189, 173, 45, 64, 79, 83, + 170, 47, 2, 70, 191, 76, 78, 139, 129, 142, 58, 50, 129, 171, + 77, 228, 198, 48, 132, 197, 107, 145, 42, 13, 192, 173, 9, 230, + 18, 74, 68, 240, 178, 185, 39, 180, 68, 188, 25, 4, 134, 82, + 169, 107, 159, 247, 38, 112, 181, 69, 121, 183, 236, 184, 181, 147, + 212, 58, 79, 46, 180, 251, 74, 5, 21, 165, 56, 36, 112, 229, + 39, 175, 165, 106, 197, 65, 111, 161, 205, 118, 216, 105, 143, 68, + 167, 39, 243, 116, 250, 6, 45, 20, 10, 116, 122, 145, 243, 251, + 66, 208, 141, 227, 226, 52, 162, 128, 157, 75, 163, 41, 92, 241, + 84, 47, 216, 26, 151, 61, 64, 119, 28, 152, 37, 173, 32, 138, + 188, 141, 198, 94, 18, 22, 154, 40, 162, 170, 142, 150, 79, 79, + 138, 86, 12, 11, 27, 2, 140, 102, 203, 35, 34, 202, 128, 136, + 130, 196, 2, 244, 213, 225, 243, 101, 52, 89, 59, 201, 2, 108, + 181, 17, 132, 252, 18, 93, 16, 0, 237, 210, 90, 131, 182, 156, + 120, 59, 2, 51, 49, 128, 36, 135, 198, 226, 21, 61, 181, 23, + 211, 34, 39, 140, 178, 51, 240, 67, 146, 235, 210, 82, 202, 10, + 212, 204, 237, 47, 101, 134, 125, 150, 198, 145, 223, 5, 88, 170, + 180, 24, 96, 23, 161, 246, 217, 197, 108, 10, 131, 60, 143, 222, + 163, 211, 19, 236, 223, 153, 36, 61, 201, 211, 140, 40, 187, 1, + 246, 4, 85, 91, 194, 180, 12, 29, 140, 193, 29, 81, 238, 127, + 112, 102, 130, 47, 179, 18, 239, 72, 238, 156, 78, 20, 121, 91, + 220, 30, 0, 212, 168, 169, 145, 22, 83, 85, 8, 0, 96, 208, + 174, 7, 190, 43, 196, 73, 93, 26, 65, 80, 73, 60, 67, 135, + 193, 232, 0, 22, 244, 244, 4, 59, 50, 166, 39, 97, 88, 230, + 130, 93, 119, 199, 13, 243, 124, 174, 177, 18, 208, 212, 128, 215, + 225, 161, 156, 104, 171, 237, 132, 142, 31, 187, 156, 97, 242, 54, + 133, 223, 56, 119, 116, 23, 186, 96, 121, 140, 171, 186, 98, 49, + 238, 96, 168, 204, 195, 123, 137, 208, 33, 77, 231, 177, 219, 245, + 20, 97, 157, 115, 26, 13, 222, 39, 81, 174, 60, 192, 216, 93, + 236, 175, 234, 70, 159, 72, 194, 17, 149, 61, 42, 146, 6, 75, + 90, 199, 33, 44, 157, 105, 245, 126, 91, 207, 252, 67, 93, 179, + 243, 207, 207, 15, 40, 46, 71, 223, 102, 229, 254, 117, 93, 248, + 28, 125, 71, 55, 175, 216, 63, 129, 49, 36, 216, 109, 157, 242, + 136, 102, 200, 10, 42, 178, 224, 218, 182, 91, 123, 204, 246, 140, + 118, 156, 138, 192, 202, 102, 133, 239, 214, 220, 40, 114, 194, 61, + 152, 110, 53, 96, 74, 157, 122, 61, 5, 113, 169, 70, 79, 19, + 101, 162, 48, 208, 39, 60, 206, 90, 158, 159, 74, 14, 155, 204, + 24, 171, 32, 118, 49, 100, 91, 9, 20, 94, 252, 49, 134, 125, + 251, 12, 204, 115, 211, 65, 42, 211, 230, 214, 244, 46, 157, 184, + 3, 185, 170, 50, 82, 91, 197, 221, 241, 160, 127, 209, 142, 191, + 22, 138, 196, 93, 122, 19, 51, 22, 10, 5, 66, 63, 151, 254, + 83, 189, 64, 32, 213, 127, 234, 59, 58, 231, 226, 209, 127, 234, + 59, 250, 165, 203, 228, 79, 52, 30, 73, 210, 252, 143, 116, 243, + 186, 253, 47, 208, 228, 45, 177, 191, 30, 142, 70, 84, 81, 58, + 247, 197, 167, 237, 22, 15, 94, 214, 73, 119, 185, 37, 165, 104, + 94, 226, 6, 146, 188, 111, 159, 180, 221, 182, 75, 227, 112, 239, + 227, 96, 35, 226, 214, 91, 96, 9, 48, 49, 222, 81, 181, 96, + 159, 82, 130, 241, 130, 12, 71, 65, 64, 18, 197, 54, 146, 188, + 240, 83, 77, 102, 63, 132, 93, 96, 69, 194, 225, 228, 178, 157, + 13, 205, 200, 165, 203, 153, 102, 66, 183, 15, 137, 100, 47, 75, + 30, 62, 35, 146, 64, 20, 251, 138, 72, 26, 44, 57, 60, 66, + 126, 67, 231, 81, 52, 205, 95, 212, 205, 83, 246, 47, 235, 244, + 93, 46, 98, 66, 9, 49, 18, 202, 223, 147, 241, 222, 155, 78, + 221, 21, 44, 58, 167, 79, 30, 214, 114, 130, 180, 202, 3, 97, + 118, 90, 126, 40, 132, 117, 104, 221, 109, 185, 126, 29, 100, 206, + 108, 117, 180, 91, 91, 33, 8, 212, 55, 220, 205, 32, 76, 56, + 45, 174, 96, 69, 46, 218, 105, 199, 65, 24, 128, 140, 43, 116, + 107, 94, 11, 249, 161, 153, 109, 55, 12, 247, 70, 91, 94, 237, + 49, 206, 217, 132, 232, 16, 148, 46, 104, 73, 131, 14, 54, 188, + 48, 148, 65, 59, 22, 91, 16, 92, 32, 0, 145, 21, 118, 141, + 142, 3, 159, 2, 141, 129, 75, 18, 128, 180, 92, 46, 235, 182, + 156, 16, 35, 110, 136, 184, 159, 135, 69, 8, 82, 70, 202, 172, + 72, 106, 44, 217, 47, 102, 46, 187, 216, 254, 162, 126, 226, 164, + 116, 245, 251, 119, 132, 220, 126, 78, 87, 56, 63, 136, 37, 24, + 252, 129, 17, 226, 222, 37, 23, 19, 94, 232, 190, 176, 68, 90, + 84, 62, 181, 46, 16, 146, 108, 163, 28, 158, 78, 121, 146, 248, + 77, 233, 138, 223, 212, 151, 113, 79, 248, 86, 63, 6, 103, 187, + 252, 212, 224, 108, 147, 47, 188, 19, 94, 120, 39, 252, 251, 9, + 206, 246, 211, 60, 56, 219, 185, 204, 101, 205, 254, 17, 157, 22, + 165, 15, 48, 172, 29, 206, 205, 59, 29, 129, 247, 1, 62, 104, + 195, 117, 125, 197, 152, 146, 8, 47, 238, 206, 204, 215, 58, 44, + 162, 208, 134, 106, 183, 195, 182, 24, 134, 39, 114, 54, 93, 206, + 96, 42, 50, 62, 152, 237, 162, 89, 192, 18, 113, 163, 53, 232, + 234, 250, 206, 68, 65, 241, 193, 146, 13, 90, 167, 51, 141, 160, + 93, 167, 203, 237, 141, 177, 106, 123, 131, 176, 109, 205, 171, 177, + 121, 241, 102, 117, 105, 113, 84, 209, 75, 111, 6, 97, 51, 229, + 120, 112, 67, 241, 59, 56, 151, 189, 70, 106, 2, 120, 236, 162, + 105, 219, 239, 96, 16, 27, 69, 82, 172, 202, 89, 4, 239, 162, + 90, 66, 62, 135, 225, 127, 202, 150, 255, 162, 73, 20, 91, 254, + 139, 210, 240, 53, 99, 88, 198, 197, 161, 51, 100, 94, 152, 71, + 95, 50, 79, 218, 111, 36, 123, 65, 152, 216, 72, 4, 187, 126, + 180, 223, 58, 167, 148, 138, 45, 58, 85, 243, 114, 137, 25, 114, + 15, 43, 142, 40, 102, 200, 151, 146, 200, 62, 134, 101, 92, 58, + 126, 34, 137, 154, 115, 140, 156, 237, 244, 112, 134, 224, 105, 7, + 5, 205, 233, 35, 61, 224, 95, 62, 253, 121, 247, 152, 40, 4, + 222, 138, 144, 40, 133, 231, 12, 137, 2, 85, 126, 161, 136, 40, + 255, 217, 32, 70, 68, 153, 28, 124, 17, 17, 229, 69, 68, 148, + 23, 17, 81, 94, 68, 68, 121, 17, 17, 229, 69, 68, 148, 239, + 99, 68, 148, 146, 96, 189, 216, 79, 17, 17, 69, 6, 63, 185, + 44, 227, 156, 92, 201, 188, 44, 130, 159, 176, 159, 34, 34, 138, + 12, 126, 114, 85, 6, 63, 185, 150, 4, 63, 97, 63, 69, 68, + 20, 25, 122, 133, 253, 252, 21, 228, 241, 140, 201, 204, 160, 253, + 31, 51, 22, 15, 204, 117, 188, 26, 70, 60, 77, 71, 156, 101, + 119, 128, 154, 227, 75, 33, 103, 64, 157, 157, 192, 171, 115, 76, + 51, 182, 253, 9, 185, 125, 157, 164, 191, 135, 237, 119, 47, 104, + 135, 180, 184, 92, 134, 200, 21, 113, 218, 26, 149, 27, 117, 195, + 249, 21, 11, 17, 102, 136, 166, 225, 16, 66, 84, 133, 44, 66, + 12, 161, 0, 145, 151, 150, 203, 236, 240, 217, 14, 234, 104, 38, + 228, 249, 81, 204, 110, 32, 226, 52, 18, 38, 198, 247, 131, 128, + 75, 86, 40, 165, 97, 171, 70, 167, 157, 112, 184, 19, 91, 2, + 88, 141, 17, 105, 171, 127, 192, 123, 148, 168, 208, 207, 137, 26, + 153, 228, 176, 228, 128, 254, 252, 93, 66, 59, 57, 32, 196, 137, + 105, 58, 209, 227, 131, 216, 160, 151, 72, 63, 196, 252, 91, 112, + 162, 199, 236, 202, 8, 2, 53, 142, 46, 141, 137, 233, 111, 106, + 221, 57, 164, 35, 242, 67, 193, 37, 77, 62, 39, 151, 4, 205, + 98, 173, 250, 66, 156, 210, 207, 222, 33, 125, 86, 207, 133, 204, + 159, 104, 47, 130, 199, 189, 96, 149, 94, 176, 74, 47, 88, 165, + 23, 172, 210, 11, 86, 233, 251, 201, 42, 73, 174, 232, 146, 228, + 138, 46, 103, 198, 4, 87, 196, 126, 10, 86, 73, 114, 69, 87, + 36, 87, 116, 53, 225, 138, 174, 74, 174, 232, 90, 166, 44, 216, + 47, 246, 179, 43, 171, 244, 247, 243, 192, 42, 245, 254, 177, 198, + 142, 62, 251, 111, 229, 233, 186, 60, 121, 59, 35, 200, 161, 185, + 116, 180, 215, 220, 8, 26, 94, 141, 59, 174, 193, 49, 158, 7, + 81, 30, 103, 123, 196, 65, 0, 111, 166, 104, 110, 179, 224, 228, + 58, 159, 108, 20, 234, 57, 66, 232, 156, 27, 186, 116, 125, 179, + 163, 34, 238, 17, 199, 131, 203, 133, 65, 16, 11, 150, 43, 79, + 215, 157, 117, 216, 119, 215, 55, 214, 137, 136, 89, 207, 119, 90, + 25, 221, 28, 162, 8, 121, 62, 43, 24, 21, 245, 235, 245, 117, + 89, 172, 124, 155, 138, 136, 14, 185, 11, 27, 235, 160, 145, 133, + 124, 77, 244, 27, 85, 236, 126, 185, 186, 31, 109, 125, 57, 49, + 120, 11, 210, 6, 117, 132, 51, 91, 34, 226, 221, 22, 203, 219, + 18, 128, 192, 128, 175, 94, 231, 70, 234, 123, 140, 221, 107, 131, + 175, 94, 146, 165, 208, 209, 6, 240, 136, 226, 128, 147, 237, 40, + 14, 154, 232, 190, 226, 250, 181, 0, 2, 245, 15, 71, 174, 11, + 32, 157, 187, 92, 221, 141, 95, 47, 192, 215, 158, 207, 56, 152, + 143, 93, 176, 76, 142, 48, 36, 183, 207, 225, 41, 124, 105, 223, + 229, 62, 137, 81, 231, 210, 146, 121, 49, 116, 27, 103, 78, 5, + 157, 130, 144, 176, 222, 143, 42, 194, 73, 196, 174, 22, 238, 38, + 46, 48, 175, 113, 128, 218, 169, 52, 82, 47, 39, 150, 19, 17, + 69, 191, 37, 6, 143, 177, 145, 251, 96, 221, 197, 155, 4, 132, + 194, 221, 241, 130, 54, 88, 208, 72, 22, 91, 168, 232, 192, 166, + 127, 95, 139, 157, 72, 32, 166, 138, 121, 185, 153, 240, 204, 14, + 157, 162, 147, 147, 34, 181, 145, 188, 160, 180, 78, 167, 232, 68, + 146, 124, 194, 114, 138, 228, 231, 226, 199, 30, 203, 116, 131, 168, + 15, 63, 157, 162, 175, 113, 9, 46, 119, 47, 6, 229, 57, 87, + 35, 1, 53, 228, 153, 137, 65, 165, 96, 237, 112, 218, 60, 201, + 239, 193, 140, 253, 148, 128, 186, 194, 11, 69, 252, 61, 169, 128, + 143, 133, 98, 77, 2, 194, 178, 252, 28, 89, 132, 209, 9, 45, + 224, 217, 136, 18, 142, 194, 48, 50, 69, 190, 124, 215, 63, 151, + 23, 3, 8, 82, 159, 138, 148, 197, 213, 99, 194, 95, 152, 43, + 77, 56, 179, 216, 112, 162, 56, 101, 153, 229, 16, 174, 81, 71, + 136, 4, 110, 164, 224, 80, 185, 223, 8, 135, 44, 94, 172, 240, + 214, 6, 189, 74, 106, 13, 229, 113, 241, 38, 107, 74, 56, 14, + 161, 91, 130, 32, 230, 176, 19, 97, 108, 0, 165, 134, 77, 37, + 3, 161, 219, 78, 29, 165, 250, 114, 62, 142, 164, 131, 19, 136, + 93, 3, 38, 161, 116, 184, 22, 42, 116, 175, 177, 151, 32, 214, + 66, 147, 226, 160, 197, 113, 32, 58, 39, 34, 68, 203, 172, 57, + 17, 222, 241, 104, 165, 84, 93, 233, 218, 41, 165, 62, 209, 43, + 105, 223, 199, 71, 62, 65, 185, 221, 104, 163, 142, 42, 85, 172, + 136, 169, 152, 42, 88, 44, 163, 40, 118, 157, 186, 74, 47, 215, + 169, 109, 131, 13, 225, 142, 87, 111, 59, 13, 209, 92, 146, 216, + 185, 240, 173, 76, 58, 116, 2, 136, 105, 151, 222, 240, 189, 9, + 47, 174, 121, 194, 153, 220, 4, 27, 60, 197, 123, 22, 216, 62, + 196, 77, 230, 82, 157, 229, 51, 157, 208, 90, 195, 117, 194, 198, + 158, 100, 160, 149, 240, 156, 200, 38, 3, 96, 140, 91, 107, 56, + 124, 18, 240, 6, 23, 151, 203, 5, 74, 203, 0, 71, 176, 7, + 109, 68, 2, 184, 155, 155, 108, 114, 5, 7, 116, 107, 76, 252, + 136, 80, 135, 139, 74, 55, 66, 5, 14, 42, 172, 82, 184, 232, + 119, 219, 98, 209, 221, 154, 46, 9, 154, 71, 176, 92, 148, 177, + 244, 246, 111, 243, 137, 113, 151, 112, 66, 227, 243, 22, 181, 44, + 132, 198, 78, 184, 229, 198, 42, 233, 217, 113, 132, 88, 226, 168, + 51, 194, 34, 235, 232, 16, 196, 54, 222, 84, 211, 229, 46, 140, + 119, 83, 48, 159, 195, 29, 135, 235, 113, 228, 134, 220, 125, 63, + 70, 123, 186, 134, 43, 208, 108, 97, 64, 35, 218, 246, 227, 160, + 93, 219, 102, 213, 194, 250, 149, 173, 243, 34, 218, 114, 34, 113, + 178, 4, 68, 170, 251, 185, 63, 28, 180, 149, 55, 33, 47, 207, + 10, 244, 238, 140, 58, 154, 231, 52, 26, 242, 124, 199, 189, 115, + 71, 61, 100, 224, 184, 16, 27, 200, 254, 93, 41, 233, 14, 55, + 197, 234, 164, 125, 30, 156, 119, 120, 117, 108, 202, 17, 176, 196, + 107, 181, 16, 186, 131, 47, 52, 137, 40, 208, 89, 3, 71, 189, + 134, 241, 145, 253, 47, 36, 251, 6, 233, 218, 42, 180, 173, 228, + 155, 37, 47, 99, 255, 46, 73, 215, 97, 151, 92, 239, 220, 38, + 59, 142, 221, 125, 35, 182, 175, 36, 57, 194, 56, 3, 145, 18, + 164, 11, 41, 0, 198, 91, 210, 67, 158, 53, 77, 55, 220, 74, + 160, 62, 20, 106, 40, 45, 33, 7, 209, 162, 211, 178, 13, 29, + 150, 148, 156, 188, 128, 46, 135, 114, 250, 44, 74, 159, 194, 221, + 14, 225, 218, 20, 125, 56, 241, 72, 57, 166, 252, 186, 50, 228, + 95, 160, 158, 241, 174, 69, 79, 42, 69, 3, 165, 188, 125, 164, + 245, 144, 183, 224, 236, 237, 67, 198, 223, 230, 242, 140, 205, 173, + 229, 30, 137, 175, 226, 14, 134, 96, 227, 139, 53, 233, 105, 125, + 207, 211, 201, 84, 247, 65, 227, 238, 38, 66, 7, 182, 237, 114, + 9, 3, 229, 120, 182, 251, 3, 173, 8, 52, 51, 117, 191, 35, + 201, 36, 102, 59, 129, 100, 176, 97, 89, 194, 196, 100, 236, 108, + 29, 65, 226, 216, 105, 45, 15, 204, 107, 2, 10, 173, 147, 89, + 81, 40, 215, 142, 192, 3, 86, 221, 113, 164, 229, 82, 250, 51, + 1, 171, 38, 145, 200, 80, 88, 146, 76, 54, 58, 231, 250, 53, + 136, 27, 189, 175, 61, 9, 59, 16, 168, 155, 85, 94, 82, 196, + 73, 34, 202, 8, 57, 235, 62, 12, 3, 209, 44, 165, 52, 165, + 213, 16, 202, 184, 30, 16, 206, 181, 136, 98, 177, 67, 145, 98, + 244, 4, 60, 186, 92, 208, 169, 9, 148, 226, 120, 2, 49, 123, + 145, 94, 221, 248, 28, 210, 149, 209, 81, 138, 76, 113, 58, 137, + 249, 130, 202, 232, 40, 124, 78, 194, 95, 203, 240, 201, 81, 109, + 219, 109, 58, 212, 221, 9, 26, 109, 177, 79, 120, 120, 134, 55, + 93, 199, 231, 251, 156, 188, 0, 185, 220, 44, 51, 225, 146, 30, + 251, 193, 174, 12, 189, 4, 150, 98, 96, 182, 197, 94, 109, 122, + 141, 6, 223, 90, 136, 42, 21, 151, 123, 15, 14, 30, 206, 2, + 47, 20, 35, 84, 144, 192, 84, 30, 59, 134, 118, 29, 63, 86, + 143, 104, 136, 64, 45, 120, 107, 33, 35, 103, 237, 229, 71, 34, + 187, 63, 97, 27, 129, 79, 220, 117, 246, 196, 54, 186, 71, 82, + 196, 203, 115, 25, 24, 216, 138, 241, 120, 209, 140, 192, 126, 16, + 131, 241, 94, 132, 12, 72, 138, 125, 227, 39, 90, 67, 24, 70, + 116, 78, 33, 56, 225, 147, 35, 49, 234, 114, 38, 38, 44, 23, + 18, 67, 172, 55, 180, 131, 139, 56, 235, 162, 242, 189, 143, 61, + 191, 14, 172, 88, 119, 86, 167, 203, 70, 69, 18, 123, 34, 100, + 33, 182, 3, 0, 87, 80, 110, 111, 192, 224, 92, 162, 51, 220, + 232, 77, 196, 21, 9, 66, 58, 183, 178, 178, 140, 44, 38, 94, + 112, 32, 45, 2, 94, 119, 57, 101, 57, 91, 195, 131, 51, 41, + 237, 144, 107, 159, 143, 242, 114, 113, 101, 102, 78, 114, 167, 193, + 38, 93, 94, 93, 73, 45, 102, 17, 139, 11, 106, 140, 220, 166, + 227, 199, 94, 45, 34, 116, 152, 101, 4, 89, 46, 28, 174, 66, + 176, 9, 55, 170, 118, 163, 193, 91, 20, 241, 123, 49, 92, 155, + 75, 226, 218, 28, 108, 170, 92, 28, 238, 102, 44, 71, 126, 223, + 218, 132, 155, 54, 15, 47, 207, 131, 51, 11, 156, 55, 116, 252, + 192, 123, 13, 90, 244, 112, 163, 63, 126, 247, 175, 5, 205, 166, + 83, 192, 138, 34, 148, 217, 122, 62, 50, 221, 96, 240, 204, 56, + 186, 90, 224, 239, 184, 194, 143, 117, 12, 12, 165, 25, 143, 16, + 142, 214, 156, 166, 11, 168, 42, 92, 228, 190, 227, 250, 18, 55, + 169, 136, 161, 204, 197, 249, 42, 76, 20, 59, 4, 210, 201, 20, + 146, 124, 178, 188, 7, 139, 119, 203, 97, 0, 54, 111, 242, 232, + 89, 141, 220, 16, 220, 233, 19, 155, 92, 74, 233, 242, 54, 187, + 87, 182, 224, 223, 187, 116, 242, 78, 234, 214, 43, 202, 130, 79, + 101, 65, 156, 70, 117, 47, 106, 53, 156, 189, 53, 232, 189, 90, + 36, 127, 239, 212, 235, 96, 43, 166, 150, 10, 163, 129, 87, 89, + 167, 147, 139, 89, 231, 45, 94, 135, 197, 221, 8, 2, 216, 102, + 163, 118, 109, 91, 118, 141, 101, 149, 205, 16, 98, 39, 214, 165, + 130, 218, 152, 92, 103, 14, 232, 93, 46, 213, 6, 156, 17, 210, + 184, 92, 76, 9, 53, 42, 15, 236, 173, 141, 96, 87, 212, 46, + 43, 110, 34, 254, 140, 90, 239, 162, 211, 116, 243, 157, 213, 164, + 175, 19, 108, 203, 92, 2, 227, 105, 156, 53, 29, 34, 41, 0, + 136, 82, 78, 33, 176, 179, 142, 232, 199, 108, 17, 56, 73, 160, + 14, 126, 72, 203, 101, 204, 111, 151, 157, 51, 163, 115, 50, 84, + 97, 62, 45, 240, 148, 236, 9, 26, 115, 3, 230, 58, 254, 84, + 248, 20, 62, 138, 124, 116, 111, 222, 73, 222, 84, 219, 27, 162, + 164, 168, 189, 177, 38, 234, 184, 75, 111, 223, 233, 34, 94, 88, + 73, 239, 85, 232, 5, 249, 244, 17, 85, 6, 145, 149, 176, 20, + 62, 61, 187, 210, 8, 229, 171, 228, 20, 228, 189, 220, 107, 9, + 13, 202, 112, 46, 233, 114, 78, 250, 162, 179, 141, 118, 132, 181, + 143, 131, 97, 114, 97, 26, 23, 111, 240, 237, 51, 25, 81, 250, + 142, 27, 74, 37, 27, 239, 103, 7, 135, 6, 219, 231, 158, 162, + 247, 229, 59, 231, 54, 236, 56, 137, 248, 2, 154, 166, 222, 65, + 136, 60, 44, 184, 244, 113, 135, 213, 181, 199, 45, 225, 184, 199, + 74, 74, 80, 139, 72, 120, 236, 242, 11, 183, 129, 245, 242, 226, + 59, 197, 249, 242, 236, 90, 177, 242, 96, 117, 161, 180, 184, 178, + 158, 28, 119, 172, 73, 194, 43, 163, 237, 55, 157, 86, 139, 187, + 4, 15, 160, 134, 216, 252, 99, 45, 123, 140, 228, 5, 138, 240, + 191, 209, 244, 115, 246, 5, 142, 129, 147, 72, 71, 113, 44, 4, + 105, 56, 44, 175, 9, 217, 101, 178, 135, 37, 7, 36, 104, 175, + 198, 146, 214, 105, 145, 52, 88, 82, 9, 161, 254, 123, 87, 200, + 133, 78, 101, 116, 189, 29, 170, 70, 207, 251, 84, 209, 83, 36, + 59, 203, 179, 88, 67, 164, 47, 114, 107, 129, 95, 71, 20, 121, + 163, 34, 146, 214, 9, 210, 227, 59, 126, 128, 145, 147, 123, 42, + 152, 152, 254, 198, 1, 58, 234, 195, 162, 68, 161, 162, 158, 120, + 78, 21, 181, 104, 236, 23, 210, 80, 255, 254, 37, 180, 229, 139, + 94, 40, 168, 95, 40, 168, 95, 40, 168, 95, 40, 168, 95, 40, + 168, 95, 40, 168, 191, 159, 10, 106, 169, 55, 102, 63, 133, 130, + 122, 78, 104, 152, 217, 79, 161, 160, 150, 170, 236, 43, 82, 149, + 125, 53, 83, 16, 170, 108, 246, 83, 40, 168, 165, 42, 251, 154, + 84, 101, 15, 39, 170, 108, 246, 243, 175, 15, 162, 191, 198, 102, + 38, 210, 236, 159, 28, 164, 69, 42, 78, 221, 14, 237, 52, 184, + 175, 230, 233, 166, 247, 196, 173, 143, 34, 226, 19, 141, 90, 142, + 47, 33, 51, 20, 150, 157, 224, 85, 14, 1, 58, 217, 238, 143, + 231, 63, 226, 220, 113, 20, 167, 40, 245, 34, 166, 192, 11, 64, + 18, 144, 58, 184, 84, 164, 192, 61, 136, 61, 95, 120, 171, 197, + 130, 155, 171, 57, 13, 215, 175, 59, 136, 161, 206, 67, 89, 176, + 109, 250, 177, 75, 115, 117, 103, 47, 7, 38, 128, 185, 102, 224, + 199, 219, 57, 81, 140, 192, 215, 139, 3, 5, 139, 218, 243, 147, + 19, 78, 120, 83, 215, 36, 120, 48, 1, 39, 224, 36, 183, 144, + 37, 176, 14, 74, 82, 177, 38, 120, 50, 118, 183, 83, 103, 91, + 121, 16, 74, 208, 42, 137, 141, 224, 36, 5, 21, 104, 5, 56, + 6, 212, 176, 134, 193, 19, 175, 137, 190, 108, 47, 143, 78, 140, + 231, 199, 199, 199, 233, 158, 235, 132, 92, 29, 82, 226, 248, 155, + 132, 136, 159, 116, 98, 10, 66, 99, 180, 99, 55, 105, 6, 226, + 47, 168, 205, 133, 115, 175, 21, 185, 237, 122, 0, 135, 111, 129, + 31, 210, 73, 127, 162, 216, 9, 99, 122, 151, 22, 10, 133, 59, + 157, 239, 92, 191, 158, 122, 35, 43, 18, 28, 150, 120, 139, 175, + 37, 147, 40, 134, 245, 46, 43, 65, 166, 70, 177, 46, 145, 190, + 211, 241, 17, 76, 0, 254, 9, 254, 22, 31, 64, 74, 84, 226, + 109, 210, 225, 125, 21, 189, 78, 199, 233, 213, 171, 157, 101, 221, + 163, 227, 35, 201, 45, 101, 223, 71, 47, 171, 119, 229, 142, 79, + 71, 239, 210, 137, 113, 241, 71, 220, 154, 169, 219, 96, 252, 85, + 183, 6, 220, 235, 218, 128, 215, 159, 222, 128, 209, 167, 52, 224, + 229, 110, 13, 80, 134, 127, 50, 25, 254, 100, 188, 96, 252, 147, + 228, 203, 201, 128, 125, 241, 89, 112, 224, 88, 31, 60, 71, 240, + 149, 58, 228, 119, 211, 67, 78, 95, 222, 71, 132, 59, 201, 71, + 98, 2, 40, 131, 174, 126, 176, 111, 22, 36, 223, 164, 233, 156, + 154, 115, 42, 137, 147, 15, 186, 82, 55, 25, 222, 36, 227, 61, + 53, 227, 1, 117, 188, 220, 189, 142, 174, 83, 72, 25, 193, 27, + 7, 45, 224, 186, 19, 187, 128, 250, 195, 254, 169, 187, 13, 184, + 98, 208, 229, 189, 120, 27, 185, 41, 246, 39, 102, 68, 223, 159, + 113, 184, 238, 236, 69, 119, 111, 228, 105, 211, 243, 219, 177, 27, + 221, 157, 24, 31, 73, 47, 51, 122, 87, 214, 54, 220, 241, 170, + 112, 63, 12, 154, 43, 178, 168, 184, 62, 146, 72, 245, 22, 156, + 86, 203, 243, 183, 18, 153, 13, 191, 233, 160, 232, 70, 182, 31, + 46, 208, 251, 36, 122, 40, 192, 8, 29, 206, 186, 58, 120, 53, + 70, 107, 132, 188, 130, 237, 194, 51, 130, 48, 86, 32, 131, 183, + 55, 55, 189, 39, 52, 23, 229, 232, 48, 199, 127, 2, 21, 25, + 146, 126, 4, 93, 22, 49, 214, 109, 205, 173, 39, 114, 86, 191, + 221, 220, 192, 72, 27, 60, 43, 191, 251, 36, 167, 76, 36, 124, + 40, 161, 153, 68, 158, 75, 78, 67, 124, 210, 97, 47, 115, 67, + 158, 86, 80, 210, 120, 170, 44, 197, 56, 73, 244, 221, 75, 17, + 138, 145, 34, 119, 35, 202, 1, 28, 3, 27, 253, 212, 161, 56, + 161, 20, 38, 1, 20, 54, 92, 165, 137, 221, 74, 43, 136, 217, + 53, 193, 202, 101, 229, 116, 148, 74, 104, 211, 171, 133, 233, 114, + 159, 183, 216, 137, 40, 7, 94, 139, 194, 92, 125, 51, 59, 72, + 254, 59, 17, 210, 200, 248, 88, 63, 97, 255, 151, 26, 173, 34, + 168, 133, 168, 148, 75, 196, 85, 182, 160, 64, 23, 56, 64, 47, + 204, 237, 209, 27, 19, 183, 242, 183, 94, 125, 133, 29, 112, 236, + 47, 104, 209, 95, 238, 120, 40, 64, 46, 118, 184, 206, 119, 138, + 149, 26, 185, 116, 35, 104, 67, 215, 66, 17, 92, 138, 223, 77, + 166, 8, 125, 101, 156, 53, 98, 172, 233, 249, 244, 58, 75, 52, + 61, 127, 108, 59, 164, 215, 233, 228, 77, 186, 29, 142, 213, 157, + 61, 122, 157, 222, 120, 229, 86, 97, 242, 22, 101, 107, 100, 140, + 29, 174, 244, 58, 174, 80, 60, 105, 85, 143, 201, 143, 101, 0, + 21, 214, 245, 143, 179, 71, 21, 143, 201, 143, 173, 227, 228, 27, + 134, 112, 153, 12, 117, 203, 254, 183, 186, 32, 68, 138, 185, 113, + 56, 93, 210, 220, 141, 194, 220, 168, 244, 34, 9, 193, 196, 106, + 138, 40, 56, 40, 75, 68, 19, 81, 90, 152, 226, 181, 112, 54, + 58, 116, 156, 208, 117, 62, 14, 235, 92, 50, 4, 110, 176, 92, + 103, 189, 3, 87, 60, 223, 221, 114, 224, 247, 58, 52, 136, 103, + 196, 137, 46, 182, 1, 4, 95, 86, 42, 4, 139, 186, 16, 240, + 3, 252, 192, 31, 253, 212, 13, 3, 174, 49, 20, 14, 198, 169, + 210, 4, 34, 179, 196, 112, 6, 193, 46, 227, 31, 133, 143, 70, + 71, 59, 59, 167, 200, 237, 219, 183, 243, 252, 47, 78, 15, 229, + 129, 50, 53, 84, 79, 211, 48, 21, 240, 38, 76, 5, 188, 9, + 7, 143, 73, 209, 214, 111, 191, 76, 166, 158, 211, 213, 31, 36, + 147, 50, 76, 241, 65, 129, 125, 159, 47, 110, 239, 129, 97, 127, + 191, 76, 220, 222, 220, 255, 173, 17, 75, 141, 186, 60, 235, 198, + 142, 215, 176, 78, 167, 226, 240, 66, 216, 86, 12, 194, 59, 148, + 132, 9, 69, 56, 1, 25, 33, 244, 52, 233, 131, 110, 122, 117, + 12, 2, 90, 233, 101, 201, 114, 221, 58, 67, 178, 161, 187, 185, + 182, 237, 68, 219, 60, 116, 107, 95, 232, 110, 206, 57, 209, 182, + 53, 69, 120, 28, 212, 181, 208, 221, 228, 145, 65, 207, 30, 20, + 38, 178, 226, 110, 86, 250, 35, 241, 211, 154, 198, 184, 162, 162, + 225, 67, 61, 240, 117, 151, 232, 141, 106, 247, 42, 169, 111, 114, + 63, 162, 147, 67, 234, 107, 203, 82, 251, 205, 187, 60, 69, 178, + 66, 83, 200, 67, 98, 30, 80, 201, 60, 207, 85, 145, 249, 173, + 25, 114, 120, 163, 189, 181, 198, 118, 152, 192, 119, 253, 24, 72, + 211, 181, 128, 233, 246, 214, 140, 200, 85, 57, 180, 161, 164, 120, + 148, 92, 142, 102, 190, 134, 186, 94, 32, 22, 70, 201, 229, 47, + 170, 240, 188, 35, 136, 109, 207, 115, 7, 177, 205, 85, 145, 20, + 162, 19, 140, 20, 161, 219, 10, 4, 41, 216, 111, 235, 44, 233, + 223, 244, 26, 46, 40, 100, 248, 248, 103, 217, 131, 69, 70, 39, + 139, 152, 16, 164, 216, 0, 121, 44, 252, 206, 253, 93, 141, 28, + 82, 123, 102, 45, 146, 195, 94, 20, 181, 221, 53, 118, 151, 121, + 236, 134, 60, 114, 231, 181, 46, 193, 156, 89, 182, 21, 204, 37, + 191, 159, 203, 84, 14, 121, 202, 11, 171, 72, 178, 205, 192, 15, + 66, 199, 107, 240, 193, 233, 18, 75, 117, 129, 231, 80, 139, 145, + 159, 77, 103, 73, 47, 34, 223, 228, 166, 200, 201, 174, 181, 90, + 47, 145, 67, 114, 8, 217, 4, 71, 81, 244, 128, 124, 86, 174, + 231, 102, 200, 177, 125, 213, 168, 171, 69, 75, 175, 150, 19, 164, + 7, 182, 61, 1, 202, 1, 137, 47, 3, 202, 241, 107, 57, 140, + 25, 250, 13, 237, 169, 168, 28, 227, 47, 80, 57, 94, 160, 114, + 124, 249, 152, 161, 87, 147, 152, 161, 35, 73, 204, 208, 187, 92, + 12, 116, 42, 129, 237, 96, 63, 199, 81, 10, 116, 38, 115, 83, + 179, 47, 211, 178, 143, 252, 32, 136, 54, 54, 130, 118, 44, 192, + 174, 149, 176, 253, 130, 47, 60, 147, 181, 201, 63, 214, 5, 95, + 152, 211, 239, 217, 127, 79, 63, 48, 210, 101, 71, 49, 93, 34, + 93, 202, 32, 72, 98, 127, 239, 136, 118, 73, 104, 142, 175, 199, + 104, 236, 179, 229, 202, 210, 155, 165, 153, 149, 207, 49, 210, 198, + 103, 149, 210, 253, 181, 185, 98, 117, 238, 115, 56, 188, 163, 177, + 207, 86, 43, 243, 107, 165, 234, 76, 113, 185, 52, 187, 182, 82, + 170, 174, 172, 149, 103, 63, 207, 21, 8, 191, 114, 116, 121, 11, + 46, 165, 120, 34, 82, 55, 170, 57, 45, 9, 26, 40, 212, 51, + 170, 238, 233, 241, 214, 152, 239, 198, 99, 237, 176, 49, 118, 105, + 217, 137, 183, 75, 240, 69, 225, 75, 199, 220, 204, 165, 98, 110, + 230, 82, 49, 55, 115, 131, 34, 80, 80, 38, 107, 25, 57, 235, + 110, 58, 228, 102, 238, 248, 235, 132, 10, 158, 244, 138, 126, 210, + 62, 158, 108, 30, 9, 210, 118, 194, 48, 93, 145, 85, 49, 134, + 233, 74, 191, 10, 205, 113, 229, 248, 9, 226, 241, 8, 129, 198, + 136, 126, 210, 254, 144, 22, 105, 219, 247, 62, 105, 167, 80, 239, + 129, 195, 69, 8, 116, 95, 4, 231, 145, 85, 209, 138, 24, 242, + 4, 133, 186, 32, 40, 203, 86, 64, 29, 152, 150, 36, 52, 146, + 158, 138, 57, 170, 67, 204, 209, 65, 37, 152, 224, 200, 241, 19, + 228, 107, 34, 54, 224, 168, 126, 218, 14, 233, 156, 251, 196, 169, + 187, 53, 175, 233, 52, 228, 165, 139, 113, 44, 226, 30, 41, 216, + 79, 201, 173, 64, 148, 64, 180, 148, 76, 30, 10, 75, 37, 246, + 37, 154, 108, 75, 158, 85, 176, 64, 60, 4, 169, 140, 30, 216, + 195, 90, 144, 85, 162, 7, 142, 246, 31, 83, 162, 7, 142, 158, + 56, 69, 30, 242, 224, 129, 198, 184, 126, 214, 94, 4, 211, 126, + 33, 87, 20, 55, 91, 161, 17, 243, 227, 48, 104, 8, 32, 183, + 52, 208, 169, 92, 40, 20, 227, 58, 48, 254, 184, 160, 198, 231, + 27, 215, 7, 148, 248, 124, 227, 135, 78, 41, 241, 249, 198, 207, + 216, 228, 138, 136, 191, 119, 67, 167, 246, 16, 140, 133, 90, 38, + 128, 76, 167, 66, 228, 221, 208, 143, 40, 33, 242, 110, 28, 61, + 171, 132, 200, 187, 113, 225, 34, 185, 6, 40, 243, 230, 171, 153, + 138, 102, 159, 61, 112, 159, 224, 219, 3, 155, 90, 175, 102, 79, + 144, 171, 28, 15, 222, 184, 173, 91, 246, 25, 152, 152, 65, 232, + 109, 121, 62, 135, 147, 20, 1, 1, 14, 9, 32, 120, 227, 54, + 39, 47, 128, 88, 27, 183, 249, 74, 0, 4, 107, 227, 246, 224, + 49, 178, 198, 65, 222, 141, 187, 250, 57, 187, 162, 216, 186, 11, + 72, 126, 30, 248, 130, 111, 48, 104, 166, 213, 112, 121, 69, 210, + 138, 172, 192, 56, 36, 186, 176, 90, 93, 73, 129, 194, 201, 166, + 104, 189, 172, 134, 35, 34, 197, 234, 59, 122, 90, 164, 12, 203, + 184, 107, 159, 37, 123, 28, 242, 221, 40, 234, 47, 217, 13, 180, + 62, 96, 12, 9, 229, 220, 18, 149, 28, 71, 215, 248, 33, 172, + 193, 121, 110, 13, 80, 32, 116, 186, 189, 149, 146, 82, 39, 51, + 1, 213, 118, 172, 23, 28, 180, 78, 52, 82, 239, 101, 117, 139, + 70, 50, 162, 20, 143, 158, 19, 41, 195, 50, 138, 23, 41, 249, + 87, 58, 135, 244, 54, 202, 250, 69, 251, 159, 235, 180, 44, 214, + 49, 135, 75, 68, 99, 68, 190, 98, 212, 232, 61, 137, 81, 40, + 103, 58, 69, 116, 2, 128, 238, 5, 194, 182, 27, 141, 189, 209, + 79, 218, 78, 3, 237, 165, 85, 36, 35, 1, 253, 40, 84, 232, + 168, 189, 46, 16, 234, 110, 21, 168, 224, 153, 130, 8, 118, 134, + 130, 211, 242, 128, 39, 159, 113, 34, 151, 205, 44, 34, 79, 5, + 180, 91, 188, 238, 7, 241, 117, 4, 46, 229, 88, 168, 251, 154, + 133, 116, 13, 93, 54, 148, 177, 8, 173, 76, 120, 247, 10, 116, + 54, 216, 245, 163, 56, 116, 157, 38, 95, 111, 168, 14, 221, 70, + 164, 76, 149, 27, 98, 101, 1, 123, 1, 202, 98, 142, 55, 78, + 246, 215, 7, 170, 137, 216, 13, 91, 161, 27, 43, 19, 135, 109, + 17, 101, 57, 135, 217, 22, 81, 238, 183, 69, 138, 141, 194, 249, + 11, 228, 191, 215, 56, 86, 186, 241, 182, 62, 108, 255, 206, 127, + 144, 240, 73, 124, 49, 126, 161, 192, 73, 93, 162, 147, 138, 133, + 145, 167, 251, 46, 53, 88, 140, 136, 160, 182, 127, 9, 177, 93, + 234, 109, 125, 72, 164, 52, 203, 120, 251, 204, 37, 145, 50, 44, + 227, 237, 171, 215, 72, 1, 128, 223, 205, 213, 204, 150, 102, 231, + 232, 124, 135, 137, 39, 76, 255, 196, 205, 133, 239, 45, 108, 158, + 175, 102, 79, 144, 223, 215, 56, 230, 186, 241, 80, 183, 236, 223, + 210, 4, 8, 38, 59, 221, 133, 188, 65, 57, 180, 16, 39, 153, + 45, 123, 201, 82, 192, 51, 229, 171, 41, 121, 108, 191, 190, 29, + 68, 241, 189, 177, 215, 249, 169, 118, 47, 101, 115, 79, 115, 207, + 142, 10, 38, 222, 140, 69, 97, 45, 71, 80, 204, 193, 216, 110, + 215, 231, 51, 53, 87, 216, 242, 98, 198, 145, 84, 231, 150, 86, + 231, 103, 187, 145, 16, 64, 223, 141, 135, 124, 50, 1, 230, 187, + 241, 144, 111, 136, 0, 249, 110, 60, 28, 60, 70, 254, 88, 32, + 190, 27, 53, 253, 180, 253, 63, 107, 169, 200, 19, 176, 245, 237, + 30, 180, 71, 114, 148, 200, 77, 232, 63, 28, 229, 140, 60, 145, + 135, 161, 169, 96, 120, 81, 59, 128, 45, 30, 27, 203, 73, 25, + 54, 6, 110, 19, 251, 91, 52, 214, 114, 246, 154, 240, 163, 22, + 132, 174, 72, 173, 113, 19, 170, 53, 118, 232, 172, 181, 99, 175, + 177, 214, 246, 189, 24, 166, 102, 13, 200, 226, 60, 225, 33, 100, + 166, 232, 173, 137, 201, 2, 193, 29, 89, 220, 79, 54, 156, 218, + 227, 168, 1, 167, 51, 240, 21, 120, 49, 144, 212, 97, 220, 76, + 77, 82, 135, 237, 209, 181, 126, 75, 164, 12, 203, 168, 157, 60, + 69, 222, 0, 226, 232, 150, 177, 169, 31, 179, 39, 233, 146, 239, + 142, 110, 56, 140, 55, 133, 232, 48, 92, 86, 252, 20, 2, 241, + 226, 216, 65, 186, 201, 37, 77, 58, 16, 123, 51, 123, 72, 164, + 12, 203, 216, 60, 58, 72, 28, 192, 169, 55, 31, 103, 34, 205, + 94, 165, 21, 85, 133, 154, 28, 4, 28, 145, 94, 61, 38, 10, + 16, 143, 95, 102, 128, 176, 209, 73, 80, 126, 54, 69, 33, 123, + 196, 167, 63, 219, 82, 30, 103, 79, 64, 188, 5, 35, 155, 177, + 204, 134, 30, 98, 84, 117, 35, 203, 102, 72, 35, 123, 132, 76, + 114, 36, 122, 195, 239, 25, 181, 175, 192, 30, 32, 108, 69, 160, + 230, 149, 206, 3, 138, 119, 20, 48, 228, 13, 191, 199, 22, 41, + 205, 50, 252, 179, 195, 34, 101, 88, 134, 255, 114, 30, 14, 117, + 131, 209, 224, 147, 158, 203, 252, 80, 23, 215, 243, 46, 37, 178, + 147, 244, 147, 158, 83, 34, 197, 62, 59, 125, 81, 164, 12, 203, + 248, 36, 119, 137, 124, 13, 16, 125, 205, 221, 204, 167, 154, 29, + 165, 201, 225, 119, 109, 121, 30, 60, 152, 1, 123, 24, 172, 225, + 65, 192, 56, 221, 222, 114, 124, 239, 83, 55, 204, 19, 234, 236, + 56, 94, 3, 17, 1, 99, 185, 170, 129, 142, 130, 234, 137, 137, + 21, 39, 44, 219, 161, 118, 179, 231, 201, 45, 14, 10, 108, 236, + 233, 103, 236, 225, 231, 32, 30, 4, 88, 130, 30, 153, 176, 98, + 247, 248, 68, 1, 168, 92, 99, 15, 198, 138, 35, 229, 26, 123, + 167, 135, 200, 71, 68, 55, 123, 172, 158, 63, 151, 249, 134, 166, + 217, 111, 119, 118, 87, 146, 50, 53, 73, 242, 169, 30, 37, 151, + 146, 141, 246, 86, 148, 18, 65, 240, 206, 48, 30, 238, 207, 101, + 207, 144, 235, 196, 52, 123, 244, 140, 101, 254, 128, 166, 159, 180, + 207, 165, 7, 139, 239, 110, 130, 9, 59, 76, 122, 88, 222, 30, + 200, 156, 21, 73, 141, 37, 121, 64, 156, 30, 48, 25, 252, 1, + 237, 248, 9, 82, 134, 130, 33, 204, 165, 126, 220, 190, 115, 192, + 44, 16, 33, 252, 17, 46, 112, 186, 225, 249, 143, 239, 21, 107, + 53, 55, 138, 188, 13, 175, 225, 197, 123, 57, 89, 175, 166, 70, + 208, 236, 1, 200, 220, 175, 139, 104, 56, 61, 0, 153, 251, 117, + 237, 152, 37, 229, 185, 223, 252, 152, 188, 246, 69, 228, 185, 248, + 248, 64, 105, 238, 51, 229, 181, 207, 176, 139, 124, 78, 113, 112, + 98, 180, 40, 141, 1, 190, 188, 56, 216, 254, 83, 8, 180, 237, + 59, 207, 249, 237, 166, 227, 53, 218, 33, 187, 47, 57, 145, 148, + 67, 255, 167, 189, 132, 36, 183, 59, 203, 78, 201, 159, 123, 191, + 87, 52, 190, 87, 236, 225, 242, 216, 115, 137, 160, 89, 23, 226, + 233, 30, 41, 109, 190, 68, 250, 177, 74, 41, 136, 102, 159, 247, + 124, 175, 168, 87, 178, 248, 162, 92, 183, 94, 35, 125, 60, 118, + 8, 23, 58, 159, 217, 47, 52, 124, 7, 51, 96, 233, 34, 187, + 117, 145, 100, 221, 39, 45, 0, 61, 7, 225, 106, 22, 223, 203, + 135, 214, 109, 210, 27, 197, 78, 220, 142, 134, 122, 169, 54, 124, + 100, 242, 92, 119, 89, 113, 21, 242, 240, 166, 227, 7, 214, 85, + 114, 40, 106, 55, 155, 78, 184, 183, 182, 29, 55, 27, 67, 125, + 73, 239, 6, 248, 139, 185, 184, 217, 176, 238, 17, 2, 135, 40, + 132, 115, 25, 202, 66, 7, 236, 125, 34, 94, 169, 85, 199, 18, + 250, 225, 19, 246, 208, 154, 34, 89, 49, 213, 134, 250, 121, 247, + 59, 191, 22, 122, 35, 222, 61, 145, 223, 186, 69, 204, 216, 217, + 138, 134, 8, 53, 134, 7, 186, 117, 174, 10, 247, 229, 101, 199, + 11, 241, 83, 200, 110, 141, 144, 67, 156, 130, 138, 30, 64, 142, + 235, 0, 127, 7, 58, 129, 25, 114, 56, 53, 187, 134, 14, 127, + 113, 193, 190, 117, 159, 28, 73, 79, 179, 161, 35, 80, 202, 197, + 253, 165, 220, 199, 124, 21, 200, 86, 57, 188, 169, 38, 59, 164, + 233, 71, 159, 91, 154, 110, 81, 210, 239, 69, 0, 184, 229, 214, + 135, 6, 197, 68, 49, 42, 89, 47, 90, 128, 135, 214, 93, 50, + 16, 61, 246, 90, 162, 125, 214, 65, 179, 165, 250, 216, 107, 241, + 198, 145, 72, 254, 126, 211, 204, 14, 12, 30, 202, 253, 75, 157, + 28, 101, 100, 40, 61, 9, 124, 238, 200, 243, 212, 181, 115, 186, + 99, 237, 200, 101, 115, 35, 89, 17, 198, 51, 86, 68, 178, 24, + 70, 201, 17, 55, 169, 152, 21, 106, 166, 234, 60, 172, 188, 45, + 215, 173, 2, 25, 116, 159, 180, 26, 142, 143, 217, 97, 142, 247, + 36, 115, 252, 168, 242, 18, 230, 249, 213, 142, 73, 211, 171, 172, + 7, 117, 198, 124, 133, 244, 114, 34, 246, 1, 17, 187, 104, 0, + 20, 250, 32, 253, 248, 202, 195, 239, 210, 163, 149, 237, 50, 90, + 215, 223, 195, 237, 9, 151, 173, 117, 138, 88, 213, 149, 226, 202, + 106, 117, 109, 117, 17, 108, 38, 239, 151, 75, 179, 131, 25, 43, + 75, 204, 229, 98, 181, 58, 168, 177, 95, 247, 139, 229, 249, 65, + 221, 234, 39, 61, 51, 149, 98, 117, 110, 208, 96, 63, 139, 211, + 75, 149, 149, 65, 147, 189, 175, 190, 85, 94, 30, 236, 185, 94, + 37, 36, 25, 98, 235, 44, 57, 205, 158, 175, 85, 74, 197, 234, + 210, 98, 71, 241, 195, 228, 114, 113, 117, 101, 105, 161, 184, 82, + 158, 41, 206, 207, 191, 191, 54, 91, 174, 22, 167, 231, 75, 179, + 107, 247, 151, 42, 107, 247, 231, 139, 111, 129, 125, 228, 160, 118, + 253, 39, 52, 114, 108, 95, 159, 173, 28, 185, 80, 122, 111, 105, + 177, 84, 65, 104, 223, 174, 117, 156, 34, 214, 210, 204, 204, 106, + 165, 186, 182, 180, 184, 182, 80, 44, 47, 206, 151, 23, 75, 131, + 154, 117, 154, 28, 79, 158, 131, 229, 227, 218, 204, 124, 117, 80, + 183, 6, 201, 161, 197, 165, 149, 181, 153, 74, 25, 90, 53, 104, + 88, 199, 201, 209, 213, 197, 210, 123, 203, 165, 153, 149, 210, 236, + 26, 16, 196, 252, 50, 170, 141, 63, 250, 0, 85, 27, 191, 162, + 63, 77, 181, 49, 113, 251, 133, 106, 227, 133, 106, 227, 203, 171, + 54, 70, 18, 213, 198, 112, 162, 218, 64, 133, 135, 97, 25, 39, + 121, 6, 211, 50, 78, 101, 238, 194, 207, 30, 203, 56, 157, 153, + 133, 159, 189, 150, 49, 36, 209, 50, 237, 68, 13, 194, 126, 254, + 152, 1, 122, 144, 158, 171, 153, 159, 215, 52, 251, 223, 233, 32, + 184, 5, 167, 114, 144, 118, 111, 182, 125, 97, 35, 4, 119, 196, + 154, 3, 147, 6, 34, 218, 38, 174, 139, 242, 21, 88, 66, 65, + 40, 42, 183, 222, 17, 43, 69, 58, 238, 202, 199, 34, 56, 48, + 233, 40, 40, 106, 123, 177, 155, 206, 42, 43, 128, 220, 126, 103, + 248, 98, 252, 130, 219, 162, 202, 250, 61, 63, 9, 21, 36, 3, + 158, 18, 58, 188, 84, 205, 211, 7, 203, 171, 121, 88, 24, 108, + 169, 108, 54, 156, 173, 40, 79, 221, 184, 54, 34, 163, 28, 73, + 63, 71, 225, 124, 44, 192, 154, 146, 235, 114, 29, 194, 199, 41, + 70, 70, 201, 85, 165, 3, 64, 10, 36, 90, 110, 115, 195, 5, + 199, 230, 164, 244, 20, 100, 250, 196, 171, 138, 142, 233, 106, 214, + 34, 103, 217, 239, 126, 203, 184, 166, 31, 201, 29, 69, 37, 141, + 16, 227, 18, 50, 64, 76, 51, 211, 159, 177, 140, 107, 3, 92, + 105, 210, 207, 190, 83, 82, 58, 166, 126, 93, 104, 170, 204, 9, + 253, 166, 105, 255, 226, 193, 170, 42, 140, 150, 167, 70, 30, 222, + 167, 171, 122, 224, 198, 9, 255, 187, 95, 79, 245, 20, 120, 246, + 167, 41, 168, 248, 246, 10, 250, 172, 234, 234, 252, 247, 71, 105, + 245, 165, 117, 86, 19, 41, 157, 213, 68, 74, 103, 53, 49, 40, + 93, 206, 178, 150, 57, 97, 221, 52, 210, 74, 171, 73, 115, 84, + 121, 160, 89, 198, 13, 243, 101, 242, 179, 61, 66, 141, 53, 167, + 191, 97, 255, 197, 30, 84, 90, 120, 245, 60, 117, 186, 43, 161, + 146, 41, 216, 85, 13, 181, 229, 62, 153, 162, 31, 61, 124, 56, + 53, 213, 10, 61, 63, 158, 154, 122, 244, 232, 179, 137, 252, 173, + 137, 201, 207, 47, 115, 89, 231, 110, 192, 99, 196, 9, 16, 48, + 184, 93, 137, 105, 77, 91, 161, 187, 233, 61, 225, 179, 86, 154, + 255, 57, 4, 140, 161, 156, 70, 107, 219, 241, 219, 77, 128, 191, + 149, 17, 145, 121, 36, 164, 36, 174, 9, 117, 104, 203, 9, 249, + 46, 178, 21, 6, 237, 86, 65, 218, 116, 67, 24, 246, 156, 51, + 182, 49, 86, 203, 201, 159, 245, 228, 167, 59, 245, 68, 77, 236, + 137, 196, 102, 142, 47, 78, 20, 83, 69, 29, 174, 72, 80, 11, + 22, 94, 108, 52, 168, 7, 210, 238, 13, 23, 194, 125, 1, 114, + 141, 139, 89, 232, 134, 91, 115, 218, 145, 20, 22, 242, 222, 243, + 94, 231, 156, 49, 168, 239, 93, 47, 222, 22, 118, 242, 240, 153, + 128, 154, 8, 163, 152, 222, 68, 151, 42, 196, 80, 121, 74, 161, + 236, 208, 76, 202, 221, 56, 176, 100, 217, 109, 216, 220, 100, 191, + 159, 86, 11, 43, 186, 107, 235, 217, 167, 57, 17, 151, 191, 166, + 172, 117, 207, 167, 171, 229, 2, 193, 9, 35, 247, 53, 41, 204, + 23, 195, 143, 34, 81, 127, 143, 187, 108, 97, 84, 177, 68, 143, + 58, 151, 210, 163, 206, 165, 244, 168, 115, 199, 79, 136, 84, 214, + 50, 230, 78, 222, 227, 147, 29, 3, 6, 27, 115, 167, 238, 146, + 109, 174, 102, 53, 231, 245, 37, 211, 254, 64, 85, 203, 56, 234, + 230, 195, 65, 186, 58, 163, 82, 203, 0, 214, 176, 251, 202, 185, + 158, 142, 68, 126, 3, 102, 122, 162, 101, 157, 79, 105, 89, 231, + 185, 176, 20, 181, 172, 243, 39, 79, 241, 21, 171, 103, 45, 115, + 254, 244, 146, 88, 177, 24, 105, 216, 88, 48, 95, 86, 30, 104, + 150, 177, 104, 94, 39, 59, 66, 45, 91, 213, 191, 98, 123, 116, + 22, 32, 24, 90, 66, 132, 15, 134, 132, 130, 31, 216, 117, 128, + 153, 10, 219, 190, 47, 162, 252, 128, 2, 140, 224, 230, 170, 224, + 75, 96, 20, 195, 188, 140, 25, 142, 182, 140, 201, 249, 150, 104, + 99, 123, 89, 197, 253, 138, 54, 182, 74, 84, 109, 108, 245, 132, + 8, 119, 97, 100, 45, 163, 122, 234, 13, 222, 1, 3, 123, 84, + 61, 125, 143, 252, 45, 67, 104, 107, 63, 212, 239, 217, 127, 201, + 80, 227, 47, 41, 231, 127, 114, 174, 39, 241, 37, 225, 132, 71, + 49, 2, 132, 64, 100, 109, 228, 40, 213, 34, 20, 61, 157, 153, + 207, 211, 219, 183, 175, 188, 44, 203, 80, 3, 151, 40, 95, 175, + 70, 110, 136, 15, 121, 17, 16, 127, 42, 118, 67, 12, 99, 202, + 227, 81, 33, 176, 133, 47, 190, 19, 133, 21, 16, 154, 102, 223, + 11, 250, 210, 93, 165, 225, 252, 166, 12, 128, 86, 33, 226, 93, + 37, 204, 4, 135, 100, 99, 92, 166, 44, 36, 14, 224, 155, 49, + 118, 139, 29, 171, 133, 78, 180, 141, 96, 88, 240, 213, 182, 19, + 250, 140, 39, 100, 156, 131, 35, 48, 166, 156, 90, 220, 118, 26, + 20, 229, 35, 36, 225, 177, 101, 145, 129, 239, 14, 163, 229, 118, + 135, 154, 169, 131, 218, 184, 154, 91, 78, 232, 69, 160, 245, 225, + 154, 237, 30, 54, 74, 189, 138, 214, 251, 195, 190, 163, 138, 214, + 251, 67, 235, 184, 72, 101, 45, 227, 195, 19, 194, 78, 194, 196, + 225, 254, 240, 228, 235, 16, 165, 23, 148, 226, 235, 250, 180, 61, + 79, 23, 156, 218, 182, 231, 187, 163, 161, 235, 212, 129, 93, 193, + 166, 167, 142, 22, 206, 232, 129, 94, 98, 113, 9, 180, 197, 251, + 47, 147, 41, 69, 250, 186, 126, 72, 81, 164, 175, 31, 62, 174, + 40, 210, 215, 79, 157, 22, 169, 172, 101, 172, 15, 21, 121, 27, + 123, 176, 141, 235, 103, 190, 66, 254, 4, 167, 100, 175, 101, 4, + 250, 172, 253, 47, 13, 58, 215, 110, 58, 126, 210, 70, 229, 222, + 173, 64, 161, 0, 155, 226, 249, 116, 110, 101, 97, 94, 52, 119, + 131, 177, 134, 190, 23, 131, 226, 143, 135, 246, 10, 93, 198, 103, + 99, 20, 71, 248, 118, 35, 12, 118, 35, 55, 148, 170, 66, 239, + 211, 68, 133, 139, 82, 44, 169, 46, 116, 63, 97, 195, 203, 78, + 144, 144, 70, 77, 12, 119, 15, 38, 202, 137, 18, 17, 156, 245, + 87, 87, 238, 143, 190, 134, 241, 173, 33, 240, 93, 36, 3, 100, + 35, 239, 7, 24, 33, 24, 227, 142, 35, 219, 197, 206, 22, 59, + 175, 174, 211, 215, 99, 247, 73, 60, 42, 178, 223, 227, 205, 141, + 132, 193, 66, 196, 225, 80, 100, 121, 16, 218, 239, 73, 12, 94, + 178, 171, 136, 186, 0, 222, 178, 43, 1, 86, 37, 102, 21, 34, + 7, 138, 207, 166, 58, 234, 97, 223, 136, 223, 163, 94, 253, 110, + 238, 117, 145, 90, 243, 234, 247, 114, 247, 58, 202, 84, 182, 225, + 63, 85, 185, 172, 32, 196, 52, 188, 39, 230, 79, 111, 15, 27, + 118, 177, 75, 247, 106, 150, 17, 244, 139, 77, 172, 215, 176, 140, + 96, 232, 140, 72, 101, 45, 35, 176, 103, 248, 252, 233, 197, 249, + 19, 156, 157, 38, 115, 48, 125, 250, 44, 51, 212, 163, 113, 123, + 10, 70, 181, 21, 120, 168, 92, 248, 127, 217, 123, 247, 48, 185, + 138, 235, 94, 180, 171, 106, 79, 79, 79, 141, 70, 51, 42, 205, + 75, 123, 70, 210, 86, 235, 53, 146, 230, 37, 1, 2, 4, 2, + 13, 163, 7, 131, 4, 136, 145, 48, 230, 96, 16, 123, 166, 247, + 72, 109, 245, 116, 79, 122, 247, 72, 26, 219, 240, 217, 16, 136, + 241, 193, 177, 143, 31, 56, 216, 113, 20, 28, 19, 95, 12, 247, + 114, 128, 128, 241, 35, 198, 62, 14, 78, 236, 112, 99, 135, 235, + 47, 55, 78, 184, 177, 113, 98, 39, 248, 149, 107, 28, 108, 98, + 62, 127, 62, 95, 173, 170, 85, 187, 118, 191, 102, 36, 241, 136, + 109, 248, 135, 89, 173, 189, 119, 189, 86, 173, 181, 106, 213, 90, + 191, 5, 233, 122, 199, 17, 53, 43, 146, 14, 224, 110, 212, 105, + 193, 234, 216, 96, 88, 186, 49, 41, 88, 145, 98, 52, 72, 35, + 17, 172, 216, 187, 14, 41, 38, 88, 113, 195, 70, 164, 82, 130, + 133, 201, 33, 221, 165, 70, 213, 165, 176, 113, 80, 111, 187, 148, + 112, 142, 211, 19, 195, 238, 222, 40, 105, 164, 124, 163, 69, 226, + 213, 226, 97, 155, 237, 14, 67, 17, 85, 205, 118, 195, 166, 143, + 169, 164, 96, 199, 169, 139, 20, 17, 236, 120, 207, 106, 164, 152, + 96, 199, 215, 173, 71, 42, 37, 216, 9, 211, 199, 148, 234, 227, + 137, 198, 65, 254, 187, 42, 193, 161, 73, 176, 155, 232, 101, 238, + 113, 15, 157, 147, 250, 100, 27, 63, 17, 168, 3, 207, 52, 248, + 52, 44, 40, 62, 128, 233, 43, 150, 178, 147, 128, 19, 98, 149, + 34, 46, 86, 200, 147, 17, 239, 168, 52, 19, 149, 85, 130, 88, + 96, 102, 60, 77, 142, 236, 134, 161, 146, 130, 221, 100, 74, 55, + 53, 17, 193, 110, 234, 196, 177, 54, 49, 193, 110, 90, 190, 18, + 169, 148, 96, 55, 121, 99, 122, 116, 77, 106, 116, 55, 173, 186, + 148, 191, 21, 6, 199, 69, 242, 86, 66, 111, 39, 142, 123, 212, + 187, 212, 15, 143, 224, 252, 155, 202, 220, 222, 145, 224, 68, 95, + 120, 196, 223, 114, 206, 214, 190, 16, 106, 102, 245, 173, 95, 63, + 248, 230, 66, 54, 223, 183, 126, 109, 184, 109, 109, 248, 166, 252, + 122, 152, 144, 163, 253, 222, 49, 201, 79, 248, 38, 216, 152, 125, + 27, 228, 127, 149, 71, 6, 101, 86, 240, 6, 225, 220, 138, 247, + 59, 9, 202, 137, 36, 155, 58, 144, 100, 146, 236, 118, 121, 171, + 34, 83, 178, 171, 61, 183, 19, 198, 219, 96, 44, 28, 198, 226, + 252, 46, 113, 6, 172, 95, 136, 112, 110, 35, 206, 38, 205, 243, + 205, 194, 185, 131, 208, 180, 187, 173, 74, 116, 146, 153, 127, 157, + 237, 169, 74, 189, 67, 150, 188, 205, 116, 186, 55, 205, 73, 248, + 212, 98, 36, 137, 36, 91, 123, 145, 100, 146, 92, 185, 138, 31, + 132, 102, 23, 9, 231, 78, 66, 215, 184, 187, 235, 53, 107, 212, + 239, 149, 82, 151, 27, 0, 214, 169, 248, 19, 192, 2, 170, 145, + 69, 73, 248, 108, 43, 146, 68, 146, 109, 43, 144, 100, 146, 92, + 181, 154, 127, 84, 177, 109, 139, 112, 222, 71, 232, 6, 247, 247, + 95, 177, 88, 18, 195, 249, 167, 22, 82, 162, 186, 219, 146, 132, + 254, 117, 35, 73, 36, 185, 108, 53, 146, 76, 146, 235, 250, 248, + 87, 213, 17, 125, 177, 112, 62, 70, 232, 37, 238, 103, 99, 229, + 48, 99, 70, 177, 65, 93, 83, 94, 96, 83, 239, 63, 91, 138, + 234, 79, 131, 213, 20, 133, 173, 234, 210, 111, 184, 171, 21, 202, + 143, 10, 10, 137, 142, 242, 210, 6, 2, 69, 148, 247, 167, 3, + 249, 127, 125, 186, 150, 127, 154, 139, 42, 73, 160, 77, 35, 255, + 70, 131, 103, 163, 23, 93, 244, 72, 10, 175, 97, 228, 223, 182, + 107, 92, 210, 21, 215, 106, 89, 184, 73, 2, 132, 24, 3, 231, + 211, 87, 42, 206, 230, 39, 49, 32, 108, 243, 217, 195, 209, 57, + 51, 220, 0, 237, 69, 87, 18, 53, 118, 221, 226, 6, 152, 204, + 36, 146, 68, 146, 141, 109, 72, 50, 73, 46, 197, 77, 184, 56, + 37, 201, 206, 17, 189, 195, 22, 171, 61, 247, 49, 210, 181, 131, + 63, 162, 248, 172, 85, 56, 159, 32, 116, 133, 251, 113, 226, 41, + 47, 181, 84, 226, 19, 193, 145, 172, 101, 163, 31, 205, 206, 128, + 41, 50, 93, 110, 93, 169, 226, 120, 210, 216, 85, 144, 210, 97, + 152, 13, 75, 94, 38, 138, 204, 242, 243, 126, 110, 46, 12, 194, + 126, 128, 156, 130, 20, 194, 217, 82, 65, 110, 40, 121, 42, 56, + 60, 48, 149, 205, 1, 110, 103, 20, 37, 162, 129, 206, 102, 149, + 127, 85, 155, 111, 217, 208, 59, 176, 119, 108, 191, 153, 131, 214, + 36, 244, 122, 17, 146, 68, 146, 45, 200, 140, 173, 76, 146, 61, + 203, 249, 249, 156, 54, 36, 68, 242, 126, 146, 248, 42, 33, 238, + 166, 122, 214, 161, 95, 182, 37, 154, 57, 107, 72, 16, 225, 220, + 79, 26, 90, 249, 219, 9, 119, 26, 192, 209, 244, 32, 161, 203, + 220, 162, 167, 174, 33, 160, 150, 95, 228, 64, 83, 110, 212, 43, + 10, 37, 4, 156, 213, 39, 83, 109, 68, 219, 167, 133, 11, 0, + 114, 47, 8, 85, 78, 101, 28, 185, 209, 96, 143, 230, 229, 60, + 232, 0, 61, 57, 178, 6, 133, 246, 243, 32, 161, 237, 72, 82, + 73, 118, 117, 243, 13, 208, 63, 34, 156, 135, 9, 109, 118, 123, + 34, 171, 30, 84, 176, 220, 90, 10, 108, 214, 124, 136, 168, 103, + 147, 72, 82, 73, 54, 113, 126, 143, 26, 41, 21, 206, 167, 228, + 151, 222, 71, 170, 124, 10, 197, 154, 119, 96, 246, 240, 97, 240, + 181, 152, 140, 123, 128, 132, 209, 126, 95, 29, 119, 147, 205, 79, + 22, 138, 69, 72, 14, 5, 4, 102, 248, 17, 156, 83, 88, 72, + 156, 71, 239, 87, 188, 4, 46, 106, 245, 138, 55, 149, 243, 143, + 6, 102, 4, 114, 180, 159, 138, 70, 160, 186, 220, 196, 249, 255, + 165, 70, 192, 132, 243, 57, 66, 23, 185, 39, 171, 141, 0, 206, + 62, 65, 70, 110, 103, 200, 81, 181, 76, 20, 136, 103, 157, 45, + 77, 22, 166, 3, 236, 8, 38, 169, 109, 171, 58, 68, 101, 50, + 20, 138, 250, 15, 197, 194, 220, 139, 13, 26, 135, 182, 9, 94, + 182, 199, 103, 134, 195, 8, 116, 184, 17, 73, 42, 73, 222, 204, + 15, 195, 104, 28, 225, 124, 65, 142, 230, 218, 42, 131, 209, 134, + 158, 106, 73, 114, 164, 63, 161, 74, 234, 234, 243, 193, 84, 54, + 159, 13, 143, 168, 93, 54, 130, 62, 21, 37, 97, 182, 129, 210, + 44, 204, 70, 221, 112, 8, 180, 132, 221, 112, 168, 36, 121, 51, + 255, 24, 133, 126, 52, 8, 231, 43, 146, 47, 222, 79, 203, 58, + 146, 201, 102, 84, 48, 28, 154, 154, 113, 143, 216, 193, 35, 246, + 57, 219, 28, 8, 115, 57, 5, 159, 31, 59, 144, 219, 178, 2, + 126, 149, 54, 183, 66, 251, 233, 143, 141, 111, 166, 24, 76, 251, + 82, 229, 229, 20, 14, 124, 172, 1, 40, 135, 96, 29, 135, 143, + 251, 161, 252, 142, 20, 101, 51, 192, 188, 3, 213, 142, 190, 249, + 169, 236, 97, 180, 100, 35, 208, 224, 56, 123, 194, 120, 181, 37, + 27, 251, 164, 158, 179, 6, 2, 147, 132, 140, 217, 64, 37, 217, + 196, 249, 255, 34, 92, 254, 91, 242, 107, 36, 241, 15, 132, 184, + 143, 144, 74, 113, 164, 86, 5, 209, 212, 161, 181, 104, 80, 114, + 232, 81, 247, 193, 232, 80, 207, 135, 90, 194, 228, 230, 148, 200, + 241, 139, 10, 119, 92, 199, 22, 67, 64, 242, 92, 97, 214, 203, + 7, 224, 187, 204, 7, 199, 245, 139, 220, 155, 201, 5, 114, 52, + 126, 6, 16, 47, 148, 27, 1, 224, 91, 65, 248, 143, 238, 195, + 168, 101, 128, 183, 57, 160, 197, 162, 148, 29, 95, 147, 98, 241, + 75, 114, 171, 17, 41, 22, 191, 33, 53, 200, 159, 17, 239, 192, + 209, 236, 12, 142, 162, 154, 112, 4, 199, 157, 13, 69, 146, 183, + 197, 156, 6, 114, 139, 110, 29, 12, 62, 101, 190, 144, 31, 144, + 99, 215, 252, 160, 77, 6, 37, 189, 131, 112, 208, 147, 182, 187, + 180, 188, 49, 116, 85, 137, 222, 41, 249, 158, 57, 251, 42, 159, + 31, 190, 195, 21, 24, 189, 94, 53, 8, 77, 151, 163, 88, 134, + 36, 149, 100, 239, 114, 254, 223, 213, 24, 137, 112, 190, 73, 232, + 38, 247, 38, 111, 103, 54, 148, 107, 149, 137, 20, 153, 246, 237, + 88, 213, 201, 10, 182, 230, 156, 129, 139, 178, 66, 46, 59, 57, + 167, 107, 95, 28, 205, 206, 132, 28, 196, 217, 156, 114, 86, 163, + 10, 149, 67, 5, 79, 83, 112, 229, 1, 111, 244, 42, 109, 69, + 66, 205, 8, 133, 110, 173, 58, 71, 84, 111, 214, 33, 73, 37, + 185, 97, 35, 255, 6, 129, 128, 254, 228, 183, 73, 226, 46, 74, + 220, 39, 137, 55, 166, 178, 236, 181, 55, 71, 59, 220, 148, 249, + 216, 167, 157, 116, 163, 251, 54, 128, 120, 157, 8, 11, 57, 196, + 135, 242, 38, 114, 96, 44, 33, 32, 120, 133, 31, 42, 82, 152, + 209, 65, 35, 150, 95, 111, 154, 211, 255, 14, 74, 35, 244, 38, + 10, 165, 35, 218, 229, 174, 163, 102, 165, 73, 61, 186, 175, 95, + 154, 123, 89, 172, 102, 192, 189, 209, 125, 235, 165, 158, 49, 170, + 216, 145, 67, 254, 54, 73, 117, 241, 111, 81, 157, 127, 144, 124, + 142, 208, 31, 18, 199, 253, 155, 133, 220, 250, 88, 113, 16, 230, + 234, 135, 87, 220, 253, 88, 23, 246, 229, 247, 63, 167, 123, 253, + 99, 53, 28, 14, 189, 213, 190, 252, 135, 186, 190, 117, 111, 128, + 112, 106, 95, 229, 235, 160, 22, 76, 220, 112, 158, 195, 179, 157, + 218, 30, 207, 145, 166, 22, 36, 153, 36, 219, 150, 192, 217, 142, + 208, 68, 74, 46, 135, 248, 161, 62, 219, 17, 125, 39, 228, 124, + 31, 207, 118, 68, 95, 10, 57, 63, 144, 103, 187, 243, 116, 194, + 135, 243, 239, 132, 118, 184, 27, 241, 82, 8, 239, 129, 250, 189, + 48, 8, 170, 164, 26, 153, 190, 145, 6, 120, 21, 251, 70, 224, + 75, 58, 158, 17, 114, 57, 156, 127, 39, 75, 219, 249, 179, 68, + 103, 115, 56, 255, 65, 104, 167, 251, 52, 41, 247, 102, 91, 7, + 101, 251, 92, 164, 218, 215, 193, 54, 128, 130, 49, 8, 247, 253, + 217, 163, 177, 94, 5, 39, 74, 69, 31, 23, 233, 208, 140, 159, + 45, 134, 26, 93, 78, 10, 29, 60, 61, 249, 10, 91, 55, 10, + 121, 231, 101, 45, 247, 171, 202, 216, 89, 171, 128, 254, 244, 68, + 54, 143, 105, 37, 81, 241, 249, 193, 9, 63, 12, 14, 197, 56, + 3, 39, 132, 38, 97, 140, 77, 72, 18, 73, 242, 37, 72, 50, + 73, 182, 119, 72, 91, 2, 242, 70, 146, 47, 18, 250, 18, 113, + 220, 107, 98, 87, 20, 121, 123, 151, 44, 232, 142, 66, 193, 48, + 129, 37, 91, 28, 128, 178, 145, 218, 229, 209, 130, 121, 19, 206, + 139, 209, 50, 73, 11, 231, 69, 210, 212, 133, 36, 147, 164, 219, + 163, 89, 136, 165, 100, 183, 122, 95, 50, 44, 164, 92, 250, 206, + 127, 70, 44, 196, 20, 11, 253, 66, 178, 80, 94, 167, 91, 56, + 191, 34, 244, 82, 247, 198, 202, 163, 139, 242, 82, 91, 187, 254, + 204, 60, 169, 170, 207, 78, 3, 52, 136, 35, 146, 198, 210, 175, + 72, 211, 50, 36, 153, 36, 123, 151, 35, 153, 146, 228, 138, 61, + 186, 247, 202, 103, 237, 252, 138, 172, 220, 205, 223, 12, 189, 111, + 16, 206, 173, 148, 238, 116, 223, 244, 138, 122, 110, 84, 103, 26, + 84, 99, 216, 115, 105, 163, 220, 74, 181, 171, 134, 208, 6, 38, + 201, 110, 28, 72, 67, 74, 146, 238, 168, 238, 185, 242, 100, 59, + 183, 210, 158, 75, 248, 7, 149, 248, 77, 10, 231, 14, 74, 199, + 220, 219, 233, 194, 102, 254, 21, 60, 56, 130, 73, 1, 133, 34, + 188, 76, 80, 138, 236, 73, 144, 242, 147, 197, 44, 40, 104, 125, + 39, 44, 149, 144, 94, 94, 105, 130, 204, 78, 76, 103, 225, 186, + 234, 152, 169, 84, 48, 7, 214, 211, 68, 160, 142, 5, 5, 205, + 210, 230, 110, 18, 158, 144, 95, 241, 100, 35, 96, 80, 140, 238, + 11, 205, 44, 39, 213, 188, 44, 69, 146, 72, 178, 221, 69, 146, + 73, 114, 249, 10, 36, 83, 146, 92, 121, 169, 158, 101, 229, 239, + 117, 238, 160, 222, 30, 254, 188, 146, 92, 141, 194, 249, 32, 165, + 35, 238, 63, 147, 74, 175, 137, 189, 87, 23, 234, 58, 225, 145, + 239, 100, 30, 215, 137, 173, 9, 235, 248, 79, 226, 193, 135, 213, + 156, 34, 229, 241, 134, 202, 235, 82, 211, 187, 65, 104, 99, 3, + 12, 58, 137, 36, 145, 100, 35, 202, 246, 70, 38, 201, 165, 237, + 72, 166, 36, 217, 177, 67, 79, 161, 242, 79, 59, 31, 164, 157, + 23, 195, 209, 159, 138, 228, 221, 52, 241, 89, 42, 143, 254, 227, + 218, 40, 61, 50, 87, 102, 185, 128, 157, 26, 45, 181, 182, 113, + 165, 8, 189, 155, 54, 116, 242, 219, 164, 253, 71, 165, 141, 251, + 81, 74, 215, 186, 199, 205, 135, 78, 249, 232, 111, 155, 2, 243, + 156, 255, 121, 153, 97, 172, 45, 63, 200, 23, 146, 253, 240, 144, + 164, 146, 92, 189, 134, 255, 79, 10, 189, 36, 194, 249, 56, 165, + 203, 220, 123, 168, 119, 32, 59, 157, 205, 249, 197, 42, 151, 139, + 222, 113, 105, 230, 23, 38, 20, 88, 45, 132, 149, 121, 211, 126, + 54, 15, 233, 51, 19, 69, 63, 63, 121, 132, 123, 125, 160, 148, + 252, 195, 126, 54, 31, 202, 179, 8, 220, 220, 26, 131, 109, 54, + 175, 246, 142, 252, 170, 194, 202, 53, 149, 197, 54, 12, 114, 175, + 79, 154, 130, 80, 25, 24, 11, 68, 100, 10, 179, 19, 37, 173, + 29, 13, 75, 130, 49, 40, 173, 224, 172, 58, 192, 113, 216, 192, + 197, 105, 121, 94, 69, 179, 186, 48, 57, 57, 91, 4, 145, 92, + 229, 150, 116, 3, 247, 70, 162, 226, 76, 85, 70, 106, 239, 243, + 161, 209, 171, 188, 226, 108, 62, 180, 216, 173, 1, 82, 140, 228, + 148, 181, 35, 73, 37, 217, 213, 205, 127, 168, 38, 148, 10, 231, + 1, 74, 93, 247, 255, 59, 133, 9, 181, 27, 149, 45, 246, 133, + 27, 96, 103, 129, 184, 232, 231, 222, 108, 30, 83, 66, 71, 247, + 245, 133, 27, 6, 189, 190, 131, 186, 74, 67, 168, 252, 41, 0, + 239, 163, 148, 129, 74, 24, 81, 226, 72, 31, 154, 184, 7, 85, + 74, 112, 189, 102, 45, 187, 33, 63, 149, 45, 78, 43, 160, 174, + 146, 185, 18, 70, 47, 11, 252, 123, 97, 54, 159, 201, 230, 15, + 115, 111, 202, 159, 44, 21, 164, 193, 2, 86, 13, 164, 68, 130, + 132, 4, 60, 162, 217, 188, 108, 99, 116, 95, 232, 29, 11, 171, + 254, 27, 47, 103, 152, 224, 101, 89, 12, 201, 191, 15, 80, 218, + 129, 36, 204, 126, 247, 50, 254, 36, 131, 197, 96, 194, 121, 148, + 210, 165, 238, 99, 204, 28, 221, 85, 167, 96, 244, 70, 210, 23, + 106, 157, 117, 228, 73, 103, 70, 106, 154, 72, 111, 76, 226, 73, + 19, 5, 252, 180, 180, 3, 20, 16, 116, 168, 231, 93, 187, 41, + 148, 162, 66, 14, 13, 188, 236, 20, 55, 13, 169, 110, 132, 37, + 117, 155, 155, 47, 204, 30, 62, 162, 5, 193, 180, 159, 9, 162, + 190, 65, 237, 145, 208, 43, 64, 136, 33, 228, 160, 170, 139, 124, + 56, 57, 205, 4, 197, 44, 96, 11, 231, 172, 200, 136, 80, 238, + 167, 177, 41, 157, 187, 170, 4, 50, 212, 22, 2, 20, 77, 68, + 80, 139, 247, 35, 170, 199, 17, 173, 2, 55, 33, 137, 38, 198, + 176, 198, 252, 169, 203, 49, 191, 164, 197, 116, 63, 135, 248, 155, + 64, 193, 70, 69, 33, 29, 232, 122, 168, 140, 85, 246, 10, 69, + 175, 74, 164, 178, 89, 101, 105, 7, 62, 74, 213, 77, 140, 36, + 169, 36, 151, 8, 254, 109, 37, 105, 29, 225, 124, 134, 210, 78, + 247, 111, 45, 199, 29, 214, 2, 242, 195, 178, 227, 168, 92, 206, + 65, 175, 47, 66, 165, 87, 198, 66, 153, 41, 27, 170, 106, 51, + 241, 3, 251, 100, 81, 87, 156, 42, 20, 203, 191, 40, 173, 14, + 237, 127, 86, 37, 101, 204, 103, 44, 159, 80, 65, 31, 31, 15, + 100, 243, 71, 241, 58, 16, 179, 175, 166, 253, 252, 172, 213, 8, + 156, 8, 54, 152, 9, 144, 102, 227, 103, 40, 93, 130, 36, 149, + 100, 123, 135, 201, 131, 250, 253, 183, 240, 115, 22, 152, 202, 83, + 12, 38, 161, 236, 199, 233, 39, 65, 245, 148, 167, 49, 65, 217, + 118, 253, 143, 243, 150, 49, 119, 23, 218, 81, 188, 37, 215, 175, + 157, 187, 192, 215, 162, 163, 135, 126, 241, 180, 19, 196, 210, 127, + 76, 120, 215, 40, 44, 71, 116, 164, 26, 87, 201, 172, 162, 143, + 183, 68, 45, 33, 190, 16, 100, 58, 208, 241, 69, 209, 191, 140, + 101, 196, 133, 156, 71, 180, 6, 60, 170, 146, 51, 98, 53, 97, + 61, 47, 150, 115, 142, 249, 179, 6, 165, 171, 73, 255, 50, 150, + 73, 223, 70, 248, 242, 75, 252, 210, 228, 145, 242, 126, 134, 216, + 209, 93, 60, 165, 31, 87, 165, 225, 155, 183, 108, 168, 108, 188, + 198, 40, 199, 205, 171, 101, 253, 160, 85, 250, 177, 162, 86, 63, + 148, 139, 75, 92, 196, 155, 45, 151, 136, 238, 75, 253, 137, 176, + 95, 16, 171, 121, 139, 42, 55, 115, 168, 84, 56, 26, 228, 195, + 110, 10, 133, 238, 23, 169, 31, 15, 194, 111, 233, 187, 9, 239, + 82, 197, 2, 43, 151, 108, 36, 182, 16, 100, 254, 133, 80, 171, + 105, 175, 198, 5, 188, 89, 247, 65, 50, 180, 94, 204, 202, 60, + 46, 83, 81, 98, 156, 171, 199, 229, 223, 233, 179, 249, 178, 221, + 217, 60, 220, 151, 86, 118, 174, 2, 189, 141, 170, 244, 159, 244, + 195, 132, 123, 56, 34, 85, 112, 162, 202, 34, 111, 229, 237, 202, + 70, 202, 230, 15, 31, 42, 27, 164, 254, 218, 82, 243, 64, 244, + 190, 88, 207, 91, 253, 76, 230, 144, 189, 46, 106, 86, 23, 251, + 25, 187, 29, 49, 192, 69, 49, 152, 46, 28, 11, 98, 207, 50, + 120, 118, 137, 250, 23, 235, 241, 244, 46, 190, 226, 114, 191, 120, + 52, 250, 233, 0, 26, 127, 216, 227, 213, 21, 139, 209, 84, 49, + 221, 233, 123, 204, 6, 140, 156, 40, 167, 242, 1, 113, 9, 111, + 182, 182, 117, 237, 205, 23, 125, 94, 127, 163, 20, 229, 53, 206, + 179, 3, 63, 25, 223, 129, 209, 151, 194, 83, 234, 169, 189, 77, + 105, 253, 109, 90, 49, 23, 53, 183, 105, 69, 103, 253, 216, 46, + 141, 245, 85, 239, 210, 139, 21, 68, 159, 158, 177, 58, 219, 212, + 234, 69, 115, 52, 91, 97, 250, 81, 194, 123, 163, 207, 199, 18, + 154, 78, 97, 58, 174, 226, 109, 208, 13, 75, 41, 235, 213, 91, + 85, 189, 43, 86, 67, 234, 107, 173, 165, 178, 28, 187, 121, 166, + 230, 207, 8, 79, 151, 205, 141, 245, 246, 169, 45, 230, 101, 21, + 139, 57, 88, 111, 49, 43, 39, 105, 225, 43, 58, 203, 87, 215, + 237, 181, 94, 214, 43, 248, 146, 242, 249, 196, 181, 157, 127, 66, + 199, 219, 202, 230, 50, 76, 255, 14, 239, 80, 45, 142, 104, 45, + 141, 243, 211, 195, 147, 51, 126, 49, 200, 151, 236, 185, 209, 63, + 137, 11, 120, 10, 181, 186, 145, 157, 21, 141, 227, 23, 213, 171, + 230, 133, 244, 4, 239, 177, 70, 138, 79, 153, 133, 25, 173, 152, + 243, 42, 0, 133, 85, 251, 28, 77, 118, 250, 141, 188, 183, 122, + 27, 122, 26, 207, 227, 77, 216, 31, 156, 190, 58, 35, 24, 143, + 30, 222, 242, 245, 38, 158, 26, 215, 166, 151, 184, 158, 183, 149, + 235, 73, 177, 112, 173, 236, 214, 85, 90, 233, 132, 184, 137, 119, + 86, 215, 197, 98, 168, 10, 136, 101, 61, 235, 193, 29, 94, 248, + 11, 106, 138, 210, 9, 57, 186, 114, 21, 92, 109, 116, 53, 212, + 244, 188, 163, 243, 185, 168, 84, 163, 98, 83, 149, 44, 225, 90, + 202, 118, 222, 38, 178, 124, 89, 77, 149, 43, 182, 212, 30, 74, + 45, 253, 236, 118, 86, 152, 8, 187, 164, 205, 156, 78, 136, 128, + 119, 213, 208, 148, 162, 202, 220, 215, 87, 170, 117, 154, 49, 28, + 103, 37, 236, 47, 92, 193, 84, 155, 176, 232, 161, 10, 142, 179, + 244, 202, 60, 28, 87, 169, 45, 231, 225, 184, 42, 42, 43, 157, + 16, 57, 148, 70, 229, 121, 213, 167, 40, 118, 221, 249, 101, 97, + 58, 33, 238, 36, 49, 73, 84, 46, 115, 197, 217, 243, 142, 160, + 138, 98, 113, 207, 57, 197, 183, 204, 224, 143, 243, 246, 106, 50, + 75, 12, 212, 253, 96, 185, 252, 116, 171, 76, 85, 61, 81, 152, + 78, 156, 78, 122, 240, 63, 189, 73, 165, 7, 255, 175, 215, 211, + 131, 95, 79, 15, 126, 53, 210, 131, 215, 70, 233, 193, 27, 163, + 244, 224, 139, 163, 244, 224, 145, 40, 61, 248, 18, 157, 19, 188, + 44, 202, 9, 150, 127, 126, 151, 114, 154, 76, 8, 103, 117, 226, + 70, 226, 254, 61, 245, 14, 232, 202, 183, 16, 54, 32, 21, 122, + 44, 76, 79, 50, 106, 185, 114, 140, 194, 60, 140, 35, 219, 143, + 110, 82, 142, 6, 115, 94, 90, 29, 19, 7, 224, 100, 155, 86, + 247, 164, 120, 231, 168, 107, 190, 67, 77, 221, 28, 86, 14, 155, + 45, 153, 152, 3, 235, 190, 171, 92, 70, 14, 114, 239, 74, 249, + 252, 241, 172, 198, 234, 139, 213, 1, 134, 75, 41, 96, 242, 171, + 175, 24, 185, 250, 224, 165, 187, 174, 56, 56, 54, 58, 114, 112, + 215, 78, 93, 162, 16, 43, 133, 200, 54, 148, 171, 12, 154, 13, + 0, 187, 202, 30, 28, 84, 59, 220, 61, 50, 182, 111, 215, 206, + 67, 251, 199, 119, 25, 86, 177, 190, 163, 239, 202, 236, 168, 8, + 15, 54, 159, 82, 209, 25, 149, 236, 155, 76, 16, 193, 86, 167, + 218, 248, 207, 40, 119, 146, 0, 40, 59, 68, 247, 184, 119, 83, + 61, 178, 80, 199, 34, 89, 62, 30, 21, 126, 103, 170, 52, 154, + 138, 255, 170, 66, 99, 212, 86, 70, 215, 232, 137, 178, 72, 48, + 136, 217, 44, 206, 145, 192, 151, 236, 21, 195, 199, 132, 64, 233, + 248, 234, 68, 59, 84, 149, 193, 45, 205, 202, 141, 167, 43, 225, + 246, 123, 230, 152, 141, 131, 211, 253, 212, 62, 89, 211, 35, 35, + 93, 212, 141, 249, 216, 78, 207, 207, 21, 3, 63, 51, 167, 157, + 181, 253, 122, 98, 67, 111, 100, 223, 248, 174, 145, 157, 215, 30, + 218, 245, 198, 177, 3, 7, 15, 240, 216, 234, 108, 185, 220, 219, + 190, 221, 186, 241, 15, 189, 237, 103, 240, 31, 228, 26, 36, 85, + 42, 239, 80, 178, 19, 41, 42, 216, 80, 215, 32, 82, 76, 176, + 161, 243, 71, 249, 123, 213, 18, 17, 225, 108, 165, 231, 110, 118, + 223, 17, 173, 145, 201, 83, 183, 92, 5, 42, 56, 64, 231, 181, + 23, 103, 38, 23, 62, 249, 190, 250, 222, 0, 220, 116, 101, 202, + 214, 130, 87, 91, 140, 121, 215, 66, 121, 137, 193, 97, 132, 21, + 177, 185, 9, 92, 136, 146, 233, 85, 117, 100, 63, 244, 170, 90, + 188, 90, 111, 14, 226, 217, 97, 16, 39, 143, 16, 193, 182, 38, + 123, 145, 162, 130, 109, 93, 190, 13, 41, 38, 216, 185, 173, 3, + 252, 66, 152, 59, 42, 216, 54, 186, 199, 29, 210, 254, 29, 29, + 80, 145, 13, 193, 65, 159, 47, 228, 7, 204, 246, 136, 113, 188, + 254, 22, 37, 130, 109, 51, 139, 4, 31, 51, 139, 68, 153, 96, + 219, 206, 31, 229, 123, 160, 29, 38, 216, 118, 186, 215, 221, 230, + 29, 44, 250, 249, 80, 23, 47, 140, 88, 207, 98, 74, 68, 191, + 133, 109, 190, 123, 236, 138, 145, 125, 99, 255, 13, 19, 219, 146, + 42, 187, 114, 123, 178, 27, 41, 42, 216, 246, 101, 91, 144, 146, + 173, 108, 223, 195, 47, 129, 38, 29, 225, 236, 160, 35, 125, 238, + 217, 102, 108, 186, 112, 3, 214, 186, 246, 231, 31, 160, 67, 4, + 219, 145, 92, 137, 20, 21, 108, 135, 183, 3, 41, 38, 216, 72, + 235, 26, 254, 97, 2, 205, 53, 8, 103, 23, 221, 221, 231, 254, + 119, 226, 141, 7, 147, 179, 197, 48, 123, 44, 200, 205, 121, 211, + 126, 241, 40, 220, 244, 199, 174, 111, 195, 170, 64, 172, 118, 200, + 74, 200, 61, 115, 91, 217, 239, 77, 7, 197, 195, 250, 202, 100, + 26, 106, 170, 151, 61, 191, 62, 246, 193, 9, 63, 12, 114, 217, + 124, 96, 134, 209, 64, 4, 219, 149, 92, 142, 20, 21, 108, 215, + 138, 11, 145, 98, 130, 237, 110, 93, 195, 223, 167, 134, 145, 20, + 108, 47, 221, 227, 110, 245, 70, 102, 84, 73, 242, 120, 18, 48, + 4, 9, 214, 158, 54, 37, 11, 14, 218, 25, 166, 47, 131, 44, + 72, 18, 193, 246, 26, 54, 75, 82, 193, 246, 26, 54, 75, 50, + 193, 246, 158, 63, 202, 175, 133, 222, 55, 10, 231, 114, 122, 197, + 102, 119, 175, 55, 82, 42, 76, 235, 59, 19, 223, 140, 100, 66, + 238, 162, 138, 28, 216, 121, 198, 164, 27, 106, 36, 130, 93, 110, + 246, 84, 35, 21, 236, 114, 179, 167, 26, 153, 96, 87, 180, 14, + 240, 49, 232, 68, 74, 56, 87, 209, 241, 180, 123, 65, 249, 28, + 218, 215, 59, 11, 107, 52, 69, 4, 187, 42, 217, 131, 20, 21, + 236, 170, 222, 243, 144, 98, 130, 141, 183, 174, 224, 135, 160, 209, + 38, 225, 92, 77, 223, 176, 213, 189, 106, 33, 35, 183, 93, 48, + 85, 122, 194, 171, 117, 165, 137, 8, 118, 117, 114, 21, 82, 84, + 176, 171, 211, 59, 145, 98, 130, 189, 161, 117, 11, 255, 150, 226, + 33, 46, 156, 27, 232, 161, 33, 247, 29, 68, 11, 228, 72, 30, + 27, 111, 132, 78, 22, 54, 9, 148, 136, 21, 162, 108, 185, 168, + 125, 149, 151, 8, 87, 85, 65, 88, 26, 80, 107, 166, 126, 212, + 230, 29, 158, 11, 6, 1, 245, 119, 74, 151, 138, 129, 187, 71, + 100, 72, 115, 116, 56, 35, 213, 20, 49, 36, 39, 130, 221, 144, + 116, 145, 162, 130, 221, 208, 179, 21, 41, 38, 216, 161, 214, 77, + 252, 118, 162, 240, 236, 131, 68, 137, 184, 27, 0, 197, 37, 94, + 243, 31, 194, 102, 203, 36, 250, 32, 223, 114, 229, 203, 169, 77, + 101, 151, 17, 193, 36, 72, 173, 228, 223, 55, 213, 147, 142, 210, + 221, 238, 51, 196, 106, 40, 22, 202, 56, 17, 40, 180, 239, 8, + 51, 34, 46, 111, 6, 53, 138, 53, 156, 143, 16, 199, 248, 242, + 145, 107, 245, 213, 97, 76, 237, 170, 162, 87, 217, 73, 41, 13, + 213, 117, 176, 148, 81, 99, 59, 35, 163, 145, 123, 105, 136, 212, + 24, 216, 188, 229, 172, 179, 207, 217, 122, 238, 121, 231, 15, 167, + 7, 1, 50, 66, 153, 154, 147, 185, 44, 196, 93, 131, 57, 42, + 79, 77, 123, 174, 30, 219, 9, 28, 100, 227, 13, 92, 175, 65, + 7, 14, 189, 105, 224, 250, 141, 107, 98, 8, 33, 71, 99, 8, + 33, 71, 155, 58, 45, 132, 144, 163, 203, 92, 11, 213, 254, 104, + 207, 174, 56, 64, 200, 209, 229, 163, 124, 3, 194, 129, 228, 105, + 175, 219, 107, 207, 25, 216, 9, 112, 18, 10, 131, 162, 5, 111, + 159, 148, 207, 46, 178, 96, 25, 242, 45, 93, 22, 44, 67, 222, + 237, 225, 159, 34, 136, 111, 31, 210, 110, 247, 62, 82, 21, 224, + 222, 228, 124, 106, 230, 25, 244, 198, 3, 121, 120, 194, 139, 253, + 179, 182, 122, 35, 7, 70, 199, 198, 172, 124, 44, 200, 151, 40, + 250, 249, 76, 97, 218, 187, 250, 106, 21, 152, 43, 15, 9, 211, + 211, 65, 62, 99, 135, 179, 43, 110, 204, 234, 252, 180, 108, 38, + 152, 158, 41, 148, 116, 50, 160, 239, 221, 24, 121, 124, 111, 84, + 213, 205, 84, 121, 224, 24, 90, 126, 24, 195, 113, 8, 155, 150, + 90, 56, 14, 97, 103, 23, 191, 0, 34, 187, 27, 142, 3, 192, + 232, 96, 141, 61, 80, 221, 153, 23, 193, 183, 31, 79, 173, 213, + 8, 231, 9, 193, 222, 70, 135, 221, 28, 126, 38, 188, 46, 123, + 253, 96, 212, 207, 40, 81, 87, 31, 8, 167, 103, 74, 115, 82, + 114, 152, 196, 93, 235, 217, 108, 158, 87, 32, 255, 92, 61, 35, + 31, 58, 103, 120, 216, 139, 91, 84, 178, 105, 71, 182, 109, 168, + 164, 96, 111, 107, 78, 91, 248, 240, 111, 91, 189, 201, 194, 135, + 127, 219, 224, 16, 255, 119, 130, 241, 194, 183, 16, 218, 237, 126, + 251, 215, 101, 129, 163, 160, 118, 238, 133, 165, 98, 33, 127, 24, + 82, 54, 204, 247, 101, 175, 102, 10, 51, 179, 57, 5, 128, 158, + 13, 237, 96, 47, 29, 230, 124, 75, 60, 204, 249, 22, 210, 180, + 212, 10, 115, 190, 133, 116, 118, 241, 75, 0, 112, 59, 249, 123, + 36, 241, 62, 66, 220, 179, 21, 202, 149, 178, 195, 231, 103, 14, + 21, 231, 14, 33, 246, 114, 130, 127, 143, 164, 214, 241, 53, 26, + 132, 219, 185, 131, 208, 117, 110, 103, 76, 132, 234, 168, 9, 221, + 71, 10, 197, 233, 239, 192, 226, 244, 84, 46, 167, 115, 7, 105, + 238, 64, 18, 178, 108, 59, 87, 33, 9, 89, 182, 107, 214, 242, + 47, 80, 13, 112, 237, 252, 15, 66, 215, 184, 15, 81, 239, 202, + 188, 54, 226, 189, 25, 201, 111, 254, 228, 17, 19, 160, 81, 126, + 62, 12, 117, 92, 147, 143, 53, 239, 74, 246, 209, 35, 155, 15, + 75, 129, 159, 129, 12, 133, 208, 170, 77, 130, 1, 62, 57, 191, + 120, 56, 224, 74, 139, 43, 67, 182, 8, 41, 48, 165, 50, 164, + 132, 178, 179, 76, 232, 77, 4, 115, 80, 176, 45, 151, 43, 28, + 7, 176, 233, 233, 108, 73, 123, 53, 212, 151, 117, 254, 167, 174, + 90, 59, 89, 156, 152, 61, 12, 184, 225, 155, 135, 183, 158, 125, + 246, 249, 91, 241, 84, 169, 47, 188, 175, 203, 94, 175, 114, 196, + 100, 51, 153, 80, 137, 62, 51, 207, 114, 59, 114, 111, 227, 206, + 2, 184, 183, 114, 133, 195, 186, 104, 158, 170, 87, 187, 209, 76, + 63, 113, 96, 10, 13, 217, 32, 201, 230, 37, 72, 194, 4, 139, + 149, 72, 50, 73, 166, 87, 131, 48, 97, 34, 121, 23, 73, 252, + 33, 33, 238, 64, 13, 105, 82, 238, 210, 183, 88, 133, 17, 225, + 220, 69, 82, 43, 161, 36, 5, 147, 172, 242, 7, 132, 238, 113, + 187, 108, 129, 94, 42, 232, 1, 235, 206, 2, 16, 181, 124, 110, + 17, 146, 68, 146, 45, 93, 72, 50, 73, 186, 61, 72, 166, 36, + 217, 187, 27, 66, 59, 25, 38, 20, 252, 1, 89, 177, 147, 111, + 214, 96, 213, 206, 71, 8, 237, 119, 87, 195, 1, 16, 11, 186, + 235, 72, 86, 29, 133, 9, 237, 103, 76, 7, 72, 18, 222, 193, + 38, 8, 124, 162, 119, 61, 146, 76, 146, 27, 55, 241, 237, 0, + 93, 157, 60, 73, 18, 31, 35, 196, 29, 170, 49, 61, 149, 23, + 18, 214, 4, 57, 68, 56, 39, 73, 106, 21, 63, 75, 35, 79, + 59, 247, 16, 186, 221, 93, 27, 67, 114, 143, 31, 213, 208, 102, + 212, 189, 5, 220, 105, 249, 86, 10, 73, 34, 73, 157, 129, 1, + 200, 211, 206, 61, 68, 99, 114, 57, 48, 93, 247, 16, 113, 33, + 76, 151, 131, 211, 117, 15, 105, 223, 198, 119, 2, 54, 117, 242, + 94, 146, 120, 140, 16, 121, 28, 169, 187, 218, 21, 183, 30, 214, + 168, 26, 136, 112, 238, 37, 169, 62, 254, 151, 4, 49, 168, 63, + 73, 232, 229, 238, 227, 164, 206, 184, 252, 76, 102, 72, 197, 20, + 216, 167, 198, 82, 97, 104, 170, 88, 152, 238, 231, 144, 107, 49, + 86, 97, 14, 197, 146, 137, 236, 34, 20, 96, 222, 40, 60, 33, + 29, 148, 106, 55, 7, 33, 96, 42, 125, 76, 123, 231, 0, 129, + 239, 184, 95, 156, 134, 67, 159, 31, 30, 141, 91, 228, 17, 64, + 246, 39, 227, 0, 217, 159, 36, 77, 203, 45, 128, 236, 79, 18, + 111, 21, 146, 41, 73, 166, 247, 193, 84, 55, 224, 84, 127, 146, + 172, 185, 140, 255, 159, 4, 33, 180, 31, 148, 162, 243, 143, 212, + 188, 132, 149, 19, 163, 247, 59, 244, 176, 191, 198, 20, 140, 169, + 202, 216, 234, 221, 48, 254, 182, 20, 128, 232, 97, 210, 159, 201, + 104, 156, 50, 237, 3, 241, 194, 108, 46, 200, 151, 114, 115, 220, + 203, 30, 206, 23, 208, 169, 98, 116, 215, 228, 92, 4, 211, 237, + 64, 127, 109, 212, 238, 7, 81, 136, 40, 212, 238, 7, 137, 88, + 101, 161, 118, 63, 40, 101, 248, 147, 106, 172, 84, 56, 143, 18, + 186, 193, 125, 172, 108, 172, 51, 197, 224, 88, 182, 48, 27, 230, + 162, 14, 150, 143, 95, 113, 5, 12, 159, 159, 198, 248, 21, 194, + 151, 254, 180, 158, 140, 211, 158, 3, 234, 192, 56, 12, 217, 32, + 73, 51, 7, 114, 69, 31, 37, 98, 13, 146, 76, 146, 235, 251, + 228, 33, 128, 58, 73, 145, 252, 28, 73, 60, 65, 136, 251, 143, + 164, 198, 230, 170, 113, 211, 167, 147, 204, 14, 22, 162, 11, 140, + 241, 253, 163, 253, 222, 36, 0, 241, 132, 144, 176, 9, 233, 179, + 230, 30, 199, 154, 131, 193, 48, 40, 69, 95, 50, 106, 208, 207, + 77, 195, 95, 166, 206, 197, 182, 29, 250, 47, 93, 156, 87, 225, + 182, 169, 56, 69, 141, 211, 132, 164, 94, 186, 124, 97, 58, 155, + 175, 80, 189, 32, 1, 146, 144, 165, 156, 90, 199, 119, 112, 199, + 73, 74, 1, 240, 121, 66, 71, 221, 45, 53, 246, 191, 206, 181, + 139, 131, 39, 102, 51, 55, 33, 68, 124, 18, 118, 222, 231, 113, + 231, 37, 97, 231, 125, 30, 109, 156, 36, 236, 188, 207, 75, 27, + 71, 147, 41, 73, 118, 95, 2, 59, 47, 137, 59, 239, 243, 196, + 221, 1, 42, 173, 81, 36, 191, 164, 114, 107, 107, 169, 180, 114, + 151, 186, 37, 219, 26, 137, 112, 190, 36, 85, 218, 40, 119, 156, + 70, 57, 178, 39, 229, 200, 206, 137, 141, 76, 69, 62, 196, 6, + 88, 117, 239, 66, 127, 27, 97, 112, 79, 226, 224, 26, 97, 112, + 79, 226, 224, 26, 97, 112, 79, 226, 224, 26, 97, 112, 79, 226, + 224, 26, 113, 112, 79, 202, 193, 189, 139, 66, 159, 136, 112, 158, + 34, 244, 82, 247, 165, 202, 200, 216, 82, 65, 155, 75, 146, 157, + 52, 212, 161, 159, 55, 233, 154, 89, 149, 20, 140, 9, 146, 153, + 32, 51, 59, 99, 252, 236, 161, 202, 64, 227, 202, 152, 141, 197, + 219, 162, 59, 45, 130, 35, 173, 252, 110, 204, 207, 173, 15, 3, + 113, 30, 40, 33, 56, 17, 54, 40, 79, 171, 147, 65, 144, 129, + 244, 135, 194, 204, 76, 193, 36, 110, 42, 31, 185, 74, 112, 140, + 123, 202, 149, 163, 220, 76, 173, 84, 229, 79, 161, 45, 209, 8, + 66, 234, 41, 4, 128, 104, 4, 33, 245, 20, 233, 233, 69, 50, + 37, 201, 229, 123, 244, 212, 42, 200, 62, 231, 41, 178, 114, 23, + 255, 79, 7, 166, 22, 50, 104, 105, 183, 251, 125, 231, 55, 254, + 108, 225, 141, 77, 207, 228, 164, 240, 4, 60, 3, 27, 178, 13, + 217, 67, 151, 99, 214, 183, 123, 126, 62, 31, 20, 181, 239, 200, + 44, 123, 191, 74, 213, 230, 74, 210, 170, 122, 109, 94, 105, 118, + 38, 23, 120, 125, 81, 143, 251, 189, 108, 62, 19, 156, 56, 84, + 152, 194, 178, 49, 27, 210, 70, 10, 13, 196, 206, 144, 161, 231, + 227, 108, 237, 129, 217, 154, 2, 249, 142, 195, 197, 74, 224, 179, + 97, 80, 148, 175, 150, 127, 87, 126, 96, 88, 10, 193, 106, 59, + 188, 31, 46, 50, 229, 27, 145, 113, 15, 111, 73, 81, 152, 205, + 123, 117, 67, 24, 76, 42, 32, 184, 253, 180, 192, 190, 114, 231, + 149, 125, 111, 158, 60, 146, 205, 231, 130, 96, 195, 54, 173, 200, + 116, 118, 11, 206, 174, 194, 228, 82, 105, 157, 147, 133, 252, 177, + 160, 168, 36, 106, 201, 84, 237, 87, 204, 41, 85, 205, 55, 35, + 33, 161, 50, 205, 141, 144, 144, 170, 230, 155, 82, 72, 188, 79, + 170, 154, 148, 72, 126, 139, 36, 158, 39, 196, 61, 107, 126, 23, + 128, 53, 22, 213, 111, 229, 16, 123, 185, 92, 202, 219, 183, 43, + 193, 153, 34, 194, 249, 22, 73, 173, 5, 193, 153, 146, 130, 243, + 217, 51, 20, 156, 41, 16, 156, 207, 226, 156, 164, 64, 112, 62, + 139, 115, 146, 2, 193, 249, 44, 10, 206, 20, 8, 206, 103, 81, + 112, 166, 80, 112, 62, 43, 5, 231, 79, 9, 244, 137, 8, 231, + 251, 132, 14, 187, 255, 66, 188, 113, 20, 65, 70, 98, 150, 93, + 248, 198, 60, 34, 150, 105, 57, 175, 71, 196, 190, 159, 204, 235, + 82, 101, 198, 35, 242, 170, 250, 89, 212, 180, 72, 171, 238, 251, + 104, 209, 164, 64, 96, 126, 159, 52, 167, 145, 132, 57, 89, 189, + 9, 73, 38, 201, 193, 33, 254, 255, 171, 25, 163, 194, 249, 137, + 148, 135, 207, 254, 230, 251, 90, 244, 12, 200, 109, 248, 147, 136, + 229, 36, 207, 252, 36, 98, 57, 185, 13, 127, 130, 206, 150, 38, + 145, 124, 129, 36, 94, 92, 160, 179, 165, 98, 27, 194, 174, 105, + 34, 194, 121, 65, 26, 82, 242, 4, 221, 36, 119, 205, 207, 9, + 93, 239, 118, 197, 183, 103, 220, 219, 210, 4, 222, 150, 159, 227, + 154, 54, 193, 129, 250, 231, 232, 109, 105, 130, 109, 242, 115, 210, + 153, 70, 146, 73, 114, 173, 180, 213, 168, 195, 69, 242, 37, 146, + 248, 61, 74, 220, 45, 243, 218, 70, 21, 48, 8, 208, 99, 78, + 132, 243, 18, 73, 173, 129, 125, 206, 101, 143, 127, 121, 134, 251, + 156, 195, 62, 255, 37, 78, 58, 135, 1, 252, 18, 39, 157, 195, + 0, 126, 137, 251, 156, 195, 62, 255, 37, 238, 115, 142, 251, 252, + 151, 114, 159, 15, 67, 151, 136, 72, 190, 157, 210, 119, 208, 205, + 174, 7, 6, 82, 249, 88, 44, 35, 73, 127, 82, 110, 138, 183, + 235, 76, 28, 73, 18, 73, 138, 52, 146, 76, 146, 107, 215, 33, + 153, 18, 206, 59, 104, 114, 88, 183, 175, 173, 136, 119, 208, 212, + 32, 127, 156, 64, 7, 168, 112, 110, 167, 191, 102, 46, 104, 53, + 54, 201, 253, 183, 83, 179, 16, 146, 251, 111, 167, 102, 33, 36, + 247, 223, 78, 59, 187, 248, 110, 78, 157, 102, 145, 124, 23, 77, + 252, 33, 37, 238, 121, 11, 211, 65, 118, 164, 155, 197, 79, 205, + 68, 56, 239, 162, 169, 141, 192, 79, 205, 146, 159, 238, 164, 103, + 198, 79, 205, 192, 79, 119, 226, 48, 154, 129, 159, 238, 196, 97, + 52, 3, 63, 221, 73, 53, 63, 53, 3, 63, 221, 73, 53, 63, + 53, 35, 63, 221, 73, 221, 29, 252, 231, 4, 250, 4, 185, 199, + 244, 28, 247, 223, 170, 234, 141, 242, 177, 253, 198, 232, 142, 102, + 208, 29, 31, 164, 212, 144, 73, 73, 54, 175, 71, 18, 230, 165, + 111, 24, 73, 200, 201, 62, 235, 108, 229, 167, 111, 150, 187, 224, + 35, 244, 183, 199, 79, 223, 12, 155, 231, 35, 17, 215, 129, 103, + 50, 226, 58, 185, 121, 62, 34, 185, 110, 15, 167, 206, 34, 145, + 60, 73, 19, 31, 163, 196, 61, 127, 129, 170, 163, 198, 238, 89, + 68, 132, 115, 146, 166, 54, 65, 53, 184, 69, 224, 96, 164, 116, + 179, 219, 171, 244, 71, 236, 86, 58, 174, 68, 22, 129, 18, 185, + 7, 23, 119, 17, 40, 145, 123, 104, 179, 139, 36, 145, 100, 79, + 63, 146, 76, 146, 67, 195, 252, 221, 210, 254, 108, 17, 201, 79, + 208, 196, 35, 180, 246, 21, 84, 213, 152, 124, 52, 61, 95, 174, + 203, 99, 52, 61, 91, 136, 112, 62, 65, 83, 203, 249, 87, 37, + 231, 181, 200, 89, 120, 128, 210, 139, 221, 207, 146, 106, 66, 164, + 168, 139, 121, 90, 181, 33, 205, 157, 57, 58, 140, 162, 185, 2, + 15, 100, 197, 229, 185, 185, 116, 239, 215, 150, 125, 153, 191, 211, + 242, 94, 86, 92, 178, 87, 127, 217, 58, 170, 88, 162, 172, 5, + 68, 217, 3, 200, 84, 45, 176, 44, 15, 208, 166, 86, 36, 153, + 36, 197, 82, 36, 83, 146, 108, 191, 8, 68, 89, 11, 138, 178, + 7, 104, 231, 133, 252, 164, 154, 26, 34, 156, 135, 165, 120, 125, + 47, 49, 171, 160, 60, 244, 185, 130, 159, 209, 113, 119, 170, 108, + 39, 206, 90, 20, 79, 128, 64, 205, 40, 112, 46, 220, 238, 157, + 179, 121, 203, 222, 236, 37, 131, 220, 60, 53, 104, 193, 32, 71, + 0, 43, 65, 201, 126, 4, 220, 184, 56, 211, 218, 33, 103, 198, + 43, 101, 204, 195, 200, 149, 45, 10, 159, 144, 54, 227, 0, 165, + 140, 121, 24, 69, 119, 11, 168, 226, 135, 81, 116, 183, 160, 42, + 126, 88, 138, 110, 105, 160, 45, 22, 201, 199, 104, 226, 207, 41, + 26, 104, 117, 85, 84, 121, 236, 180, 222, 96, 139, 137, 112, 30, + 163, 169, 213, 252, 139, 114, 2, 23, 75, 222, 250, 28, 165, 131, + 238, 195, 85, 117, 193, 72, 20, 140, 161, 176, 84, 103, 167, 35, + 148, 59, 152, 62, 61, 187, 177, 89, 220, 60, 124, 57, 76, 226, + 65, 195, 164, 10, 138, 50, 151, 139, 187, 75, 16, 75, 40, 19, + 20, 179, 6, 162, 203, 248, 101, 98, 78, 186, 218, 82, 125, 49, + 108, 252, 207, 225, 20, 47, 134, 141, 255, 57, 218, 236, 33, 73, + 36, 185, 106, 3, 146, 76, 146, 253, 3, 124, 17, 167, 78, 171, + 72, 62, 65, 33, 206, 91, 78, 77, 43, 17, 206, 19, 52, 181, + 134, 167, 185, 227, 180, 202, 153, 249, 34, 165, 105, 183, 221, 218, + 223, 113, 153, 211, 10, 77, 127, 17, 155, 110, 133, 166, 191, 136, + 171, 219, 10, 77, 127, 145, 182, 47, 71, 146, 73, 210, 91, 101, + 18, 162, 127, 182, 158, 159, 127, 42, 121, 191, 8, 132, 115, 218, + 73, 209, 175, 122, 233, 198, 211, 79, 107, 254, 50, 227, 205, 82, + 134, 104, 184, 42, 187, 192, 28, 169, 85, 96, 142, 46, 184, 192, + 220, 170, 178, 10, 112, 42, 99, 45, 86, 252, 237, 2, 83, 111, + 209, 169, 85, 252, 205, 234, 159, 2, 78, 53, 21, 23, 47, 228, + 141, 152, 155, 216, 0, 9, 88, 233, 186, 233, 156, 179, 249, 76, + 46, 24, 199, 87, 196, 46, 190, 40, 150, 2, 151, 92, 104, 10, + 92, 236, 181, 202, 130, 135, 141, 167, 81, 240, 112, 222, 10, 118, + 98, 57, 231, 74, 1, 133, 114, 113, 154, 84, 238, 159, 254, 101, + 44, 147, 190, 148, 183, 149, 143, 84, 156, 205, 147, 58, 217, 181, + 102, 130, 179, 149, 222, 163, 159, 77, 31, 224, 237, 214, 140, 239, + 47, 6, 10, 3, 208, 90, 41, 114, 202, 43, 181, 241, 143, 9, + 95, 82, 241, 175, 98, 53, 95, 9, 168, 117, 111, 24, 25, 31, + 27, 185, 226, 224, 161, 170, 69, 249, 22, 115, 30, 149, 163, 107, + 227, 162, 155, 183, 71, 244, 190, 107, 15, 29, 216, 59, 182, 127, + 255, 174, 157, 109, 237, 162, 137, 55, 236, 222, 55, 178, 247, 218, + 182, 21, 242, 37, 68, 203, 219, 181, 179, 173, 175, 172, 166, 221, + 229, 35, 7, 246, 182, 13, 136, 69, 60, 101, 190, 187, 229, 116, + 82, 88, 62, 176, 146, 39, 133, 179, 56, 145, 175, 151, 193, 178, + 101, 243, 235, 25, 44, 175, 103, 176, 188, 44, 25, 44, 219, 163, + 12, 150, 157, 81, 6, 11, 230, 170, 116, 69, 185, 42, 242, 207, + 81, 21, 246, 232, 38, 246, 18, 247, 220, 120, 245, 241, 105, 105, + 191, 192, 141, 118, 12, 201, 74, 114, 72, 86, 26, 17, 10, 192, + 56, 180, 170, 174, 185, 169, 165, 128, 101, 170, 98, 22, 87, 210, + 14, 247, 230, 170, 199, 179, 211, 173, 193, 181, 229, 156, 173, 80, + 131, 107, 28, 193, 55, 43, 241, 27, 97, 194, 51, 65, 201, 207, + 230, 194, 88, 80, 225, 202, 88, 80, 225, 74, 83, 119, 41, 193, + 4, 91, 185, 180, 93, 215, 36, 34, 130, 173, 166, 157, 175, 126, + 77, 34, 146, 148, 13, 55, 89, 33, 136, 171, 77, 77, 34, 194, + 4, 91, 221, 222, 193, 179, 24, 129, 184, 158, 186, 175, 48, 158, + 95, 20, 51, 184, 62, 22, 51, 184, 222, 84, 21, 161, 76, 176, + 245, 221, 170, 80, 56, 228, 11, 108, 164, 43, 221, 229, 136, 89, + 110, 47, 112, 132, 35, 25, 149, 95, 218, 72, 151, 90, 229, 151, + 54, 182, 187, 86, 249, 165, 141, 203, 87, 240, 126, 44, 175, 52, + 64, 251, 220, 149, 222, 149, 154, 213, 234, 126, 215, 129, 199, 13, + 149, 20, 108, 160, 185, 199, 170, 250, 51, 208, 187, 218, 170, 250, + 51, 176, 110, 61, 56, 133, 160, 172, 207, 48, 237, 119, 183, 86, + 57, 213, 102, 85, 116, 64, 140, 255, 179, 101, 64, 110, 186, 44, + 143, 35, 191, 98, 151, 243, 25, 110, 118, 173, 114, 62, 195, 61, + 235, 173, 114, 62, 195, 27, 55, 241, 183, 83, 172, 215, 115, 46, + 93, 229, 62, 79, 206, 160, 248, 4, 196, 222, 198, 98, 228, 177, + 18, 143, 185, 82, 197, 222, 235, 184, 149, 98, 48, 83, 40, 150, + 226, 207, 196, 129, 251, 84, 152, 128, 87, 12, 0, 108, 171, 144, + 215, 238, 148, 217, 92, 160, 239, 102, 213, 45, 170, 66, 39, 55, + 16, 127, 197, 194, 52, 247, 54, 250, 88, 74, 98, 99, 89, 117, + 166, 170, 235, 150, 132, 41, 88, 108, 213, 174, 57, 183, 181, 215, + 170, 93, 115, 238, 74, 143, 127, 129, 232, 234, 52, 108, 7, 29, + 145, 199, 35, 11, 170, 16, 244, 206, 64, 188, 39, 23, 120, 133, + 34, 254, 110, 225, 175, 70, 0, 169, 214, 3, 128, 16, 103, 122, + 103, 198, 34, 71, 89, 249, 30, 87, 37, 255, 108, 32, 68, 115, + 80, 42, 27, 93, 213, 2, 136, 141, 13, 114, 8, 73, 171, 42, + 206, 142, 198, 54, 171, 42, 206, 14, 83, 1, 174, 49, 37, 216, + 142, 142, 29, 241, 170, 56, 59, 58, 47, 230, 15, 49, 93, 22, + 135, 93, 70, 187, 221, 63, 81, 56, 101, 74, 184, 150, 230, 162, + 3, 97, 38, 240, 180, 221, 7, 29, 11, 50, 122, 85, 199, 118, + 218, 69, 237, 184, 148, 162, 185, 66, 225, 232, 236, 140, 57, 147, + 235, 114, 92, 250, 229, 108, 222, 187, 106, 54, 40, 206, 89, 118, + 153, 73, 233, 29, 212, 15, 157, 22, 15, 78, 72, 171, 161, 36, + 45, 132, 140, 201, 34, 2, 244, 71, 108, 185, 239, 88, 214, 151, + 63, 103, 139, 224, 196, 10, 38, 1, 180, 46, 58, 137, 246, 133, + 27, 54, 84, 178, 234, 236, 76, 1, 189, 155, 54, 163, 226, 71, + 97, 181, 252, 252, 194, 153, 20, 10, 62, 86, 159, 81, 19, 33, + 100, 10, 151, 246, 151, 221, 118, 79, 228, 252, 252, 209, 168, 220, + 80, 131, 92, 179, 148, 85, 110, 232, 50, 19, 131, 157, 98, 130, + 93, 102, 98, 176, 157, 43, 18, 87, 17, 119, 40, 38, 248, 32, + 213, 171, 12, 221, 190, 172, 175, 24, 131, 125, 69, 170, 155, 159, + 141, 49, 216, 251, 105, 183, 187, 94, 227, 136, 85, 123, 47, 38, + 74, 162, 128, 233, 253, 58, 32, 94, 5, 76, 239, 215, 229, 200, + 84, 192, 244, 254, 206, 46, 190, 30, 202, 94, 56, 7, 19, 135, + 137, 219, 99, 201, 253, 114, 200, 110, 217, 169, 6, 249, 137, 131, + 13, 157, 60, 163, 75, 92, 176, 107, 232, 58, 247, 154, 114, 144, + 76, 112, 65, 200, 249, 132, 61, 6, 51, 169, 14, 6, 232, 124, + 69, 167, 43, 4, 17, 192, 213, 183, 193, 45, 55, 169, 90, 106, + 16, 170, 140, 5, 187, 134, 174, 66, 138, 10, 118, 205, 154, 181, + 252, 160, 46, 98, 193, 174, 165, 194, 221, 19, 197, 184, 96, 31, + 142, 0, 228, 102, 76, 13, 40, 52, 59, 63, 151, 139, 149, 225, + 139, 224, 220, 76, 139, 4, 62, 187, 8, 41, 42, 216, 181, 173, + 75, 248, 13, 186, 216, 5, 187, 142, 246, 186, 87, 189, 44, 45, + 230, 230, 172, 130, 0, 139, 176, 82, 5, 187, 142, 118, 34, 37, + 155, 91, 214, 195, 39, 117, 153, 10, 118, 3, 109, 113, 223, 112, + 10, 109, 3, 218, 171, 20, 140, 6, 179, 78, 254, 90, 5, 234, + 207, 116, 64, 42, 242, 27, 104, 35, 82, 84, 176, 27, 248, 34, + 126, 137, 174, 44, 193, 110, 164, 194, 61, 167, 122, 7, 0, 62, + 95, 167, 1, 85, 228, 59, 153, 239, 75, 21, 126, 163, 153, 92, + 135, 10, 118, 99, 235, 18, 254, 12, 209, 37, 35, 88, 134, 118, + 185, 127, 67, 188, 17, 101, 124, 249, 57, 13, 116, 170, 178, 144, + 117, 32, 118, 133, 50, 87, 181, 0, 50, 133, 32, 204, 175, 55, + 108, 23, 152, 202, 60, 120, 238, 211, 82, 38, 202, 197, 214, 206, + 51, 127, 162, 112, 44, 176, 42, 4, 140, 105, 39, 111, 62, 56, + 22, 20, 33, 19, 91, 23, 108, 146, 138, 67, 73, 162, 8, 171, + 178, 223, 203, 150, 214, 107, 134, 6, 124, 64, 8, 63, 148, 175, + 104, 56, 125, 51, 116, 105, 64, 100, 232, 18, 164, 168, 96, 153, + 246, 78, 62, 14, 35, 79, 10, 54, 69, 219, 220, 93, 103, 192, + 87, 21, 124, 44, 117, 240, 20, 53, 20, 21, 108, 170, 165, 149, + 79, 64, 10, 128, 115, 52, 145, 39, 238, 27, 226, 39, 5, 172, + 114, 237, 89, 74, 194, 27, 184, 200, 155, 40, 20, 114, 131, 220, + 3, 72, 17, 227, 26, 53, 139, 81, 158, 100, 169, 5, 152, 228, + 228, 163, 169, 94, 16, 96, 84, 202, 138, 105, 186, 210, 93, 239, + 141, 84, 145, 21, 149, 114, 2, 132, 20, 164, 8, 176, 105, 109, + 99, 66, 134, 0, 155, 214, 54, 38, 36, 8, 176, 233, 229, 43, + 140, 227, 239, 127, 252, 19, 57, 5, 40, 68, 237, 198, 56, 109, + 175, 223, 127, 61, 180, 195, 173, 11, 124, 209, 48, 230, 153, 186, + 19, 221, 211, 247, 179, 158, 137, 255, 51, 61, 196, 219, 247, 4, + 165, 83, 0, 210, 83, 47, 84, 2, 201, 213, 67, 222, 235, 220, + 151, 13, 75, 167, 11, 233, 214, 195, 155, 102, 252, 195, 193, 161, + 48, 251, 150, 0, 28, 168, 13, 227, 41, 249, 195, 129, 236, 91, + 2, 177, 156, 115, 248, 71, 72, 237, 64, 88, 47, 249, 11, 0, + 25, 138, 115, 121, 83, 49, 240, 21, 39, 129, 151, 180, 62, 204, + 96, 74, 62, 12, 32, 131, 183, 16, 222, 85, 209, 233, 151, 9, + 219, 77, 172, 227, 173, 249, 224, 68, 233, 144, 213, 115, 133, 4, + 217, 34, 127, 222, 143, 189, 79, 15, 241, 101, 149, 245, 49, 112, + 238, 132, 61, 223, 122, 170, 111, 230, 61, 216, 233, 211, 6, 93, + 59, 131, 233, 78, 223, 69, 120, 111, 245, 14, 188, 50, 248, 105, + 11, 158, 201, 23, 8, 239, 50, 6, 123, 25, 19, 122, 149, 128, + 154, 77, 113, 200, 204, 81, 222, 100, 246, 185, 118, 225, 175, 173, + 183, 218, 198, 241, 59, 30, 189, 23, 159, 87, 167, 238, 188, 54, + 212, 101, 227, 228, 41, 176, 241, 173, 132, 119, 87, 142, 251, 213, + 230, 227, 191, 38, 188, 215, 244, 162, 26, 99, 206, 191, 4, 151, + 87, 46, 193, 198, 121, 25, 198, 172, 131, 226, 242, 151, 103, 49, + 210, 31, 34, 124, 121, 141, 209, 188, 198, 92, 190, 147, 123, 101, + 139, 45, 79, 32, 0, 233, 190, 240, 169, 78, 95, 197, 87, 213, + 249, 138, 30, 98, 63, 23, 165, 66, 201, 207, 29, 42, 227, 32, + 210, 199, 198, 219, 224, 95, 44, 142, 75, 15, 112, 177, 39, 40, + 149, 99, 28, 214, 212, 24, 5, 222, 46, 165, 72, 5, 54, 97, + 93, 80, 196, 51, 145, 91, 115, 188, 163, 172, 193, 51, 5, 42, + 92, 240, 154, 61, 78, 120, 7, 76, 119, 197, 104, 231, 223, 20, + 35, 149, 155, 162, 202, 205, 18, 126, 248, 229, 150, 74, 233, 183, + 240, 206, 242, 158, 191, 106, 211, 246, 97, 106, 9, 182, 200, 3, + 83, 117, 230, 104, 229, 204, 237, 180, 103, 78, 9, 212, 117, 117, + 239, 228, 170, 78, 222, 42, 190, 72, 215, 49, 133, 187, 9, 184, + 124, 108, 24, 111, 86, 191, 237, 147, 63, 189, 124, 82, 191, 241, + 20, 164, 254, 195, 148, 47, 171, 233, 158, 18, 151, 232, 75, 87, + 60, 97, 232, 5, 90, 94, 119, 252, 234, 206, 21, 191, 181, 208, + 101, 18, 227, 188, 81, 123, 135, 0, 228, 184, 121, 203, 121, 149, + 173, 212, 118, 164, 29, 80, 175, 238, 202, 151, 138, 115, 227, 248, + 33, 247, 106, 190, 200, 254, 7, 209, 198, 217, 209, 96, 78, 219, + 65, 242, 79, 49, 196, 27, 224, 156, 91, 251, 186, 93, 127, 96, + 92, 61, 183, 141, 158, 71, 210, 247, 81, 13, 71, 168, 77, 174, + 114, 166, 90, 81, 105, 60, 197, 236, 166, 35, 229, 211, 170, 208, + 83, 71, 107, 224, 1, 86, 111, 197, 158, 114, 83, 33, 170, 88, + 54, 249, 229, 108, 199, 42, 216, 206, 189, 158, 119, 84, 253, 146, + 232, 45, 11, 82, 208, 50, 84, 71, 42, 172, 43, 11, 58, 160, + 209, 35, 118, 228, 65, 250, 189, 84, 3, 188, 86, 140, 226, 101, + 228, 177, 171, 35, 222, 81, 83, 121, 193, 66, 167, 242, 181, 96, + 159, 207, 217, 150, 150, 137, 84, 208, 188, 179, 156, 55, 234, 123, + 60, 123, 214, 241, 55, 177, 171, 82, 142, 87, 1, 221, 181, 63, + 60, 191, 44, 103, 117, 101, 141, 83, 46, 203, 223, 77, 44, 145, + 17, 117, 95, 47, 231, 165, 60, 22, 114, 161, 87, 115, 77, 253, + 62, 238, 132, 251, 198, 178, 96, 141, 133, 202, 247, 73, 222, 3, + 221, 185, 34, 56, 94, 109, 51, 46, 232, 36, 179, 146, 167, 16, + 69, 202, 230, 100, 243, 99, 250, 86, 170, 237, 210, 138, 86, 244, + 184, 55, 242, 37, 217, 240, 16, 62, 127, 8, 242, 237, 160, 181, + 212, 120, 107, 54, 188, 68, 255, 62, 46, 127, 22, 89, 190, 36, + 31, 28, 63, 84, 77, 6, 108, 175, 33, 244, 106, 52, 59, 24, + 255, 125, 188, 53, 31, 127, 206, 221, 199, 23, 199, 31, 169, 29, + 123, 84, 30, 70, 68, 43, 194, 136, 182, 60, 183, 136, 167, 176, + 30, 163, 184, 134, 183, 196, 220, 1, 162, 138, 90, 172, 230, 47, + 152, 23, 11, 88, 125, 216, 130, 205, 173, 254, 225, 83, 199, 204, + 61, 194, 91, 203, 14, 234, 162, 175, 242, 149, 234, 14, 8, 183, + 10, 118, 111, 141, 83, 127, 58, 33, 166, 192, 138, 45, 199, 198, + 173, 130, 152, 92, 243, 208, 190, 48, 96, 220, 227, 202, 252, 173, + 0, 196, 173, 130, 68, 91, 231, 180, 95, 13, 137, 182, 222, 217, + 60, 157, 16, 71, 121, 91, 249, 97, 177, 26, 186, 113, 141, 131, + 180, 91, 229, 64, 86, 235, 236, 153, 78, 136, 183, 104, 187, 183, + 98, 152, 85, 250, 93, 239, 240, 232, 86, 129, 70, 174, 123, 60, + 75, 39, 196, 237, 182, 180, 43, 63, 227, 84, 67, 166, 158, 239, + 88, 229, 158, 117, 74, 239, 216, 160, 195, 213, 36, 65, 181, 165, + 174, 35, 14, 171, 45, 117, 61, 1, 147, 78, 136, 171, 120, 179, + 117, 34, 19, 85, 68, 121, 229, 129, 205, 173, 99, 195, 167, 19, + 98, 130, 183, 196, 14, 81, 213, 118, 120, 181, 99, 157, 91, 69, + 215, 85, 61, 141, 1, 204, 247, 226, 248, 145, 67, 84, 121, 185, + 234, 113, 202, 173, 34, 20, 170, 159, 94, 210, 9, 145, 231, 75, + 42, 172, 82, 81, 143, 189, 203, 23, 164, 138, 80, 168, 105, 230, + 90, 216, 211, 101, 150, 76, 77, 236, 233, 234, 198, 99, 77, 236, + 233, 26, 6, 82, 217, 64, 141, 142, 174, 55, 208, 50, 203, 166, + 238, 64, 203, 205, 136, 211, 195, 186, 254, 213, 3, 68, 129, 93, + 127, 193, 121, 29, 236, 250, 245, 80, 193, 87, 33, 84, 112, 99, + 20, 42, 120, 113, 20, 42, 56, 18, 129, 93, 239, 176, 193, 174, + 229, 159, 73, 193, 186, 19, 163, 240, 103, 163, 96, 203, 18, 59, + 117, 88, 97, 79, 20, 86, 40, 255, 220, 164, 16, 176, 87, 36, + 166, 137, 187, 50, 14, 128, 237, 87, 192, 95, 35, 142, 243, 138, + 84, 27, 95, 143, 48, 206, 30, 29, 113, 93, 111, 60, 40, 21, + 179, 193, 49, 133, 116, 91, 5, 230, 82, 190, 230, 37, 151, 90, + 184, 195, 94, 123, 159, 133, 59, 236, 157, 181, 157, 31, 211, 176, + 195, 108, 109, 249, 39, 237, 142, 188, 82, 104, 168, 68, 54, 108, + 122, 40, 23, 99, 173, 233, 33, 97, 130, 173, 61, 107, 59, 255, + 4, 209, 232, 190, 206, 38, 218, 191, 209, 253, 3, 98, 117, 50, + 22, 83, 163, 112, 112, 43, 18, 22, 229, 246, 191, 2, 192, 22, + 76, 182, 87, 166, 16, 152, 138, 141, 176, 25, 203, 99, 115, 170, + 1, 230, 168, 98, 185, 229, 158, 213, 16, 241, 206, 98, 64, 194, + 155, 146, 29, 22, 144, 240, 166, 206, 126, 11, 72, 184, 191, 117, + 29, 31, 208, 64, 194, 206, 16, 29, 102, 238, 202, 202, 105, 183, + 92, 198, 49, 184, 224, 161, 24, 92, 240, 80, 12, 46, 120, 104, + 251, 62, 254, 16, 65, 188, 224, 173, 244, 220, 33, 247, 99, 21, + 147, 21, 11, 225, 123, 149, 103, 44, 150, 73, 87, 62, 109, 14, + 224, 60, 187, 22, 60, 241, 86, 131, 67, 234, 0, 206, 243, 38, + 254, 136, 129, 39, 222, 78, 47, 218, 228, 126, 188, 54, 43, 232, + 64, 38, 59, 109, 181, 24, 33, 25, 75, 249, 50, 59, 51, 83, + 40, 194, 242, 89, 153, 159, 136, 142, 101, 63, 224, 103, 142, 73, + 145, 158, 137, 194, 105, 6, 185, 183, 75, 33, 99, 133, 219, 188, + 195, 5, 163, 181, 6, 138, 51, 147, 171, 127, 71, 142, 86, 118, + 70, 247, 197, 198, 45, 222, 110, 128, 127, 27, 168, 96, 219, 13, + 240, 111, 3, 19, 236, 162, 214, 245, 252, 102, 13, 91, 236, 140, + 210, 157, 195, 238, 76, 253, 181, 171, 24, 226, 25, 143, 202, 130, + 40, 30, 53, 64, 189, 73, 42, 216, 168, 1, 234, 77, 50, 193, + 118, 182, 246, 243, 7, 8, 98, 20, 143, 209, 203, 206, 118, 63, + 26, 91, 137, 50, 104, 156, 208, 88, 188, 58, 82, 43, 214, 229, + 209, 217, 98, 17, 32, 162, 188, 16, 251, 6, 247, 6, 94, 126, + 118, 122, 66, 135, 67, 219, 75, 59, 17, 228, 10, 249, 195, 94, + 5, 108, 116, 191, 84, 96, 197, 96, 178, 164, 74, 217, 66, 113, + 78, 69, 198, 96, 143, 199, 12, 2, 118, 35, 21, 108, 204, 32, + 96, 55, 50, 193, 46, 107, 29, 230, 247, 17, 196, 61, 190, 146, + 238, 31, 114, 63, 76, 188, 81, 63, 55, 169, 50, 79, 243, 193, + 241, 50, 228, 235, 137, 185, 88, 160, 115, 38, 59, 53, 21, 20, + 3, 105, 0, 76, 4, 165, 227, 129, 70, 221, 129, 58, 159, 28, + 42, 183, 106, 44, 147, 202, 178, 238, 186, 206, 47, 168, 56, 131, + 41, 5, 141, 29, 201, 134, 165, 66, 113, 14, 53, 32, 134, 0, + 198, 112, 149, 175, 52, 27, 39, 69, 5, 187, 210, 108, 156, 20, + 19, 108, 127, 235, 38, 30, 106, 92, 101, 118, 53, 189, 192, 237, + 142, 43, 14, 19, 42, 193, 183, 236, 123, 25, 115, 68, 227, 88, + 203, 75, 108, 172, 101, 177, 198, 194, 90, 190, 122, 232, 92, 254, + 127, 35, 214, 50, 187, 142, 238, 115, 159, 176, 153, 201, 92, 9, + 212, 18, 86, 67, 37, 171, 62, 3, 202, 173, 108, 60, 121, 61, + 44, 151, 5, 49, 124, 201, 114, 217, 198, 173, 70, 107, 73, 182, + 72, 176, 69, 211, 85, 46, 209, 56, 17, 236, 58, 163, 220, 56, + 21, 236, 58, 163, 220, 56, 19, 236, 186, 179, 46, 133, 220, 198, + 100, 130, 54, 11, 230, 211, 43, 221, 71, 106, 140, 124, 94, 105, + 54, 234, 67, 225, 8, 120, 51, 222, 251, 216, 222, 177, 134, 82, + 182, 123, 172, 205, 163, 160, 122, 204, 222, 153, 87, 166, 232, 17, + 53, 19, 193, 252, 100, 59, 82, 84, 48, 191, 99, 35, 82, 76, + 48, 255, 156, 189, 252, 8, 12, 118, 145, 96, 1, 125, 163, 123, + 93, 185, 120, 51, 187, 234, 204, 165, 183, 110, 119, 17, 17, 44, + 72, 118, 33, 69, 5, 11, 186, 135, 145, 98, 130, 5, 23, 28, + 228, 211, 208, 167, 22, 193, 178, 212, 119, 111, 156, 167, 79, 88, + 114, 193, 238, 89, 148, 9, 18, 153, 167, 16, 59, 44, 223, 31, + 219, 25, 98, 200, 224, 145, 32, 234, 88, 11, 17, 44, 107, 246, + 108, 11, 21, 44, 107, 246, 108, 11, 19, 44, 59, 114, 61, 63, + 0, 29, 91, 44, 88, 142, 190, 209, 221, 93, 222, 177, 88, 88, + 121, 89, 146, 72, 89, 159, 162, 216, 36, 108, 126, 49, 17, 44, + 103, 230, 101, 49, 21, 44, 103, 230, 101, 49, 19, 44, 119, 193, + 65, 190, 85, 229, 190, 204, 36, 66, 226, 110, 172, 145, 196, 27, + 243, 0, 234, 220, 120, 76, 119, 153, 73, 245, 242, 203, 48, 219, + 165, 72, 183, 187, 219, 225, 96, 150, 175, 9, 83, 169, 27, 168, + 133, 47, 17, 37, 171, 20, 99, 201, 42, 197, 166, 22, 43, 89, + 165, 216, 182, 196, 66, 192, 46, 138, 11, 227, 8, 216, 197, 246, + 109, 48, 48, 34, 156, 99, 137, 185, 186, 3, 171, 192, 168, 195, + 248, 225, 99, 169, 94, 190, 23, 227, 135, 79, 208, 237, 238, 69, + 21, 3, 43, 3, 134, 139, 141, 204, 202, 202, 177, 70, 70, 96, + 100, 39, 244, 200, 84, 88, 241, 9, 61, 50, 21, 86, 124, 66, + 143, 140, 192, 200, 78, 232, 145, 17, 28, 217, 137, 246, 109, 252, + 124, 8, 66, 108, 120, 91, 226, 3, 132, 184, 253, 53, 134, 86, + 230, 215, 180, 6, 39, 13, 215, 183, 165, 86, 240, 139, 49, 182, + 240, 230, 211, 4, 22, 212, 161, 132, 13, 242, 11, 41, 43, 204, + 240, 230, 166, 165, 86, 152, 225, 205, 157, 93, 72, 165, 4, 187, + 185, 251, 18, 24, 16, 197, 1, 221, 236, 238, 224, 63, 33, 136, + 82, 124, 27, 161, 157, 238, 119, 20, 236, 222, 180, 127, 34, 59, + 61, 59, 93, 203, 64, 48, 48, 118, 88, 20, 37, 212, 7, 44, + 121, 248, 214, 213, 117, 166, 130, 227, 112, 24, 244, 117, 234, 6, + 220, 223, 40, 196, 203, 217, 188, 217, 195, 253, 158, 95, 242, 166, + 11, 97, 201, 219, 60, 60, 28, 111, 4, 147, 232, 49, 110, 85, + 231, 144, 99, 215, 84, 120, 109, 54, 148, 47, 14, 95, 160, 65, + 131, 117, 68, 172, 252, 41, 130, 59, 40, 4, 197, 73, 117, 40, + 151, 191, 15, 218, 56, 194, 183, 17, 218, 104, 225, 8, 223, 70, + 82, 75, 44, 28, 225, 219, 72, 123, 135, 130, 73, 129, 50, 237, + 119, 18, 218, 237, 254, 27, 241, 70, 188, 25, 185, 210, 112, 165, + 2, 82, 51, 136, 18, 214, 125, 131, 9, 234, 221, 88, 198, 6, + 55, 2, 228, 229, 32, 247, 246, 43, 72, 14, 53, 45, 106, 42, + 149, 86, 209, 150, 73, 40, 89, 42, 95, 130, 86, 228, 4, 95, + 115, 36, 200, 75, 34, 155, 247, 149, 63, 33, 170, 170, 52, 227, + 23, 253, 233, 160, 20, 20, 35, 160, 15, 249, 197, 202, 166, 47, + 191, 250, 192, 65, 174, 100, 150, 202, 38, 80, 33, 196, 190, 133, + 62, 167, 180, 57, 14, 204, 76, 147, 60, 10, 220, 137, 240, 69, + 170, 124, 253, 157, 8, 95, 68, 1, 248, 227, 78, 210, 217, 197, + 255, 65, 77, 19, 19, 206, 251, 9, 221, 232, 254, 53, 241, 118, + 27, 148, 98, 173, 19, 203, 97, 172, 21, 51, 72, 171, 32, 12, + 74, 202, 96, 200, 4, 83, 190, 220, 209, 211, 128, 97, 27, 154, + 64, 251, 34, 160, 13, 76, 251, 197, 185, 67, 71, 74, 211, 57, + 85, 222, 221, 63, 12, 241, 195, 220, 11, 78, 40, 157, 139, 184, + 144, 90, 44, 228, 1, 170, 21, 216, 192, 207, 29, 247, 231, 66, + 128, 100, 64, 253, 28, 128, 121, 56, 229, 165, 33, 14, 70, 54, + 6, 153, 20, 88, 193, 64, 33, 60, 66, 88, 44, 206, 4, 75, + 194, 224, 122, 144, 36, 146, 236, 93, 139, 36, 12, 189, 111, 3, + 2, 79, 127, 136, 36, 254, 216, 160, 116, 86, 129, 64, 169, 46, + 36, 16, 120, 250, 67, 36, 181, 18, 164, 4, 0, 79, 223, 77, + 232, 122, 119, 115, 57, 32, 102, 104, 97, 36, 152, 146, 237, 21, + 192, 191, 12, 112, 9, 238, 70, 64, 45, 133, 80, 125, 55, 2, + 106, 41, 132, 234, 187, 17, 80, 75, 33, 84, 223, 77, 214, 174, + 227, 63, 34, 136, 64, 125, 146, 208, 229, 238, 63, 73, 190, 215, + 44, 175, 162, 214, 117, 22, 15, 196, 151, 251, 161, 119, 99, 116, + 207, 120, 99, 5, 87, 231, 131, 19, 200, 207, 42, 159, 197, 78, + 82, 41, 96, 217, 154, 18, 44, 244, 241, 0, 178, 90, 202, 119, + 66, 88, 150, 133, 102, 32, 131, 6, 77, 138, 76, 188, 82, 151, + 92, 78, 83, 163, 164, 95, 133, 247, 227, 196, 73, 57, 229, 207, + 204, 4, 126, 209, 147, 199, 142, 98, 132, 158, 221, 0, 227, 77, + 89, 232, 217, 39, 73, 83, 183, 133, 158, 125, 146, 244, 244, 34, + 122, 246, 159, 144, 196, 159, 214, 65, 207, 174, 188, 156, 42, 67, + 207, 254, 19, 146, 90, 197, 223, 128, 232, 217, 247, 18, 42, 220, + 75, 171, 107, 186, 178, 90, 48, 21, 234, 206, 106, 195, 70, 139, + 82, 0, 219, 247, 198, 1, 182, 239, 141, 3, 108, 223, 75, 218, + 150, 240, 139, 21, 126, 246, 125, 36, 241, 25, 66, 220, 205, 243, + 40, 182, 26, 120, 61, 13, 68, 56, 247, 145, 212, 106, 0, 206, + 5, 228, 236, 251, 207, 4, 56, 87, 65, 86, 223, 31, 135, 172, + 190, 31, 101, 143, 130, 172, 190, 31, 161, 211, 20, 100, 245, 253, + 8, 157, 102, 32, 171, 239, 39, 238, 14, 254, 146, 129, 172, 126, + 88, 42, 185, 31, 214, 85, 114, 229, 213, 110, 94, 57, 77, 23, + 107, 233, 149, 85, 119, 10, 241, 250, 97, 84, 119, 10, 241, 250, + 97, 84, 119, 10, 241, 250, 97, 169, 238, 222, 65, 17, 241, 250, + 211, 82, 221, 61, 127, 234, 234, 206, 102, 142, 215, 66, 231, 197, + 218, 231, 10, 138, 230, 212, 21, 159, 130, 199, 254, 116, 196, 124, + 146, 123, 62, 29, 49, 159, 212, 116, 159, 150, 204, 183, 67, 161, + 99, 255, 57, 73, 124, 153, 32, 240, 96, 29, 113, 95, 99, 235, + 36, 137, 112, 254, 156, 164, 214, 240, 157, 136, 57, 253, 4, 161, + 155, 221, 173, 145, 204, 175, 244, 76, 205, 35, 248, 147, 32, 248, + 159, 64, 193, 159, 4, 193, 255, 4, 209, 32, 88, 10, 134, 250, + 9, 162, 65, 176, 20, 12, 245, 19, 100, 104, 88, 9, 254, 36, + 5, 28, 231, 223, 22, 193, 159, 132, 237, 241, 100, 132, 209, 77, + 20, 140, 117, 55, 146, 0, 99, 221, 211, 139, 16, 220, 95, 33, + 137, 127, 171, 3, 193, 93, 225, 192, 142, 67, 112, 127, 69, 42, + 247, 239, 18, 196, 224, 254, 26, 161, 105, 247, 239, 34, 191, 68, + 93, 135, 66, 28, 35, 190, 191, 134, 79, 129, 171, 228, 85, 235, + 136, 135, 159, 57, 100, 189, 189, 65, 238, 180, 3, 192, 65, 115, + 242, 36, 91, 189, 12, 98, 232, 5, 191, 51, 155, 61, 230, 231, + 228, 130, 148, 10, 30, 120, 95, 229, 227, 133, 124, 220, 189, 1, + 187, 202, 228, 168, 65, 95, 35, 148, 112, 7, 198, 105, 131, 134, + 127, 13, 161, 231, 21, 104, 248, 215, 136, 88, 110, 129, 134, 127, + 141, 120, 171, 224, 112, 11, 144, 224, 79, 19, 186, 198, 189, 16, + 115, 176, 16, 161, 185, 172, 42, 10, 164, 100, 133, 126, 41, 27, + 78, 205, 41, 78, 179, 143, 229, 17, 164, 246, 211, 132, 118, 88, + 144, 218, 79, 147, 206, 149, 22, 164, 246, 211, 36, 189, 90, 157, + 138, 16, 49, 251, 183, 232, 84, 100, 144, 154, 27, 99, 72, 205, + 169, 37, 49, 164, 230, 246, 14, 254, 159, 106, 130, 152, 112, 190, + 13, 144, 226, 11, 87, 19, 229, 123, 227, 213, 84, 17, 149, 109, + 159, 238, 185, 168, 145, 178, 6, 24, 59, 66, 90, 75, 163, 253, + 219, 17, 164, 53, 131, 153, 193, 115, 81, 35, 117, 132, 243, 175, + 191, 153, 231, 162, 70, 169, 254, 228, 224, 122, 144, 36, 146, 212, + 231, 162, 70, 121, 22, 114, 254, 85, 158, 139, 46, 84, 216, 222, + 63, 32, 137, 255, 48, 229, 189, 170, 40, 202, 58, 178, 51, 69, + 132, 243, 3, 146, 242, 248, 13, 136, 194, 253, 99, 121, 48, 218, + 239, 93, 14, 41, 157, 229, 247, 186, 222, 149, 197, 76, 160, 175, + 234, 43, 124, 218, 222, 216, 206, 126, 244, 31, 218, 104, 255, 99, + 59, 35, 128, 110, 7, 26, 48, 100, 82, 146, 250, 220, 164, 240, + 186, 127, 140, 231, 38, 133, 215, 253, 99, 121, 110, 186, 207, 192, + 113, 255, 84, 170, 207, 15, 255, 23, 86, 159, 136, 139, 221, 0, + 125, 77, 89, 168, 217, 63, 69, 213, 167, 80, 179, 127, 42, 85, + 223, 14, 133, 10, 253, 115, 146, 120, 111, 29, 132, 229, 234, 55, + 145, 113, 76, 232, 159, 75, 67, 7, 106, 11, 54, 105, 136, 229, + 180, 251, 143, 229, 250, 47, 14, 132, 178, 96, 37, 200, 45, 45, + 248, 95, 75, 9, 42, 100, 235, 95, 90, 200, 214, 0, 12, 173, + 149, 96, 147, 6, 134, 214, 74, 176, 73, 3, 67, 123, 171, 248, + 85, 48, 79, 17, 238, 243, 8, 170, 65, 251, 76, 120, 234, 186, + 176, 9, 129, 161, 93, 36, 1, 24, 186, 103, 13, 146, 0, 12, + 189, 190, 15, 73, 27, 24, 186, 41, 6, 12, 253, 146, 90, 73, + 42, 156, 119, 210, 223, 206, 211, 85, 19, 168, 205, 119, 82, 173, + 54, 155, 64, 109, 190, 147, 166, 112, 105, 165, 158, 124, 39, 109, + 239, 224, 183, 82, 152, 42, 38, 156, 247, 80, 218, 237, 254, 199, + 105, 168, 205, 215, 234, 120, 85, 189, 3, 167, 125, 190, 106, 2, + 5, 250, 30, 4, 127, 109, 2, 5, 250, 30, 68, 20, 110, 2, + 5, 250, 30, 218, 217, 197, 71, 20, 176, 251, 251, 21, 28, 247, + 89, 243, 170, 141, 26, 114, 135, 19, 225, 188, 159, 166, 214, 242, + 183, 34, 178, 251, 93, 148, 110, 118, 167, 107, 28, 176, 106, 221, + 238, 156, 154, 78, 177, 119, 168, 81, 44, 28, 228, 192, 93, 8, + 20, 202, 65, 177, 220, 133, 224, 196, 10, 32, 254, 46, 4, 39, + 86, 0, 241, 119, 209, 33, 117, 109, 14, 0, 240, 206, 71, 232, + 175, 131, 98, 225, 160, 88, 62, 18, 1, 174, 19, 133, 25, 221, + 109, 33, 207, 127, 132, 246, 244, 66, 237, 182, 102, 192, 140, 254, + 83, 90, 187, 118, 91, 205, 24, 223, 50, 184, 245, 147, 52, 213, + 199, 159, 39, 136, 183, 126, 47, 165, 105, 247, 159, 45, 229, 18, + 15, 149, 176, 207, 19, 177, 176, 135, 50, 21, 83, 235, 242, 246, + 21, 84, 49, 122, 18, 78, 77, 201, 52, 3, 115, 221, 27, 193, + 154, 131, 255, 143, 106, 37, 163, 208, 226, 239, 165, 90, 201, 40, + 180, 248, 123, 169, 183, 138, 239, 82, 184, 221, 247, 209, 196, 3, + 148, 184, 231, 46, 208, 56, 171, 186, 8, 139, 136, 112, 238, 163, + 169, 13, 124, 0, 81, 187, 239, 167, 116, 165, 187, 210, 59, 88, + 39, 230, 36, 2, 238, 110, 128, 231, 27, 45, 164, 238, 251, 105, + 202, 181, 144, 186, 239, 167, 203, 87, 192, 13, 99, 139, 72, 62, + 72, 19, 15, 83, 226, 246, 213, 118, 192, 26, 32, 232, 168, 131, + 45, 68, 56, 15, 202, 111, 238, 65, 64, 237, 135, 40, 221, 238, + 158, 95, 225, 121, 245, 45, 16, 233, 152, 199, 53, 86, 67, 58, + 134, 102, 253, 80, 28, 205, 250, 33, 170, 93, 173, 10, 205, 250, + 33, 170, 107, 25, 42, 52, 235, 135, 168, 174, 101, 104, 208, 172, + 31, 162, 237, 219, 248, 121, 10, 221, 249, 81, 154, 248, 75, 90, + 251, 254, 52, 22, 183, 109, 141, 110, 49, 17, 206, 163, 52, 213, + 203, 103, 17, 210, 249, 113, 74, 47, 118, 15, 87, 65, 11, 215, + 14, 216, 88, 24, 128, 215, 87, 229, 110, 120, 3, 24, 86, 241, + 186, 89, 125, 85, 110, 90, 55, 68, 48, 204, 13, 208, 110, 202, + 194, 93, 126, 28, 145, 189, 21, 238, 242, 227, 136, 236, 189, 24, + 230, 226, 113, 68, 246, 94, 140, 115, 241, 56, 237, 188, 144, 255, + 64, 1, 83, 3, 24, 51, 237, 116, 159, 169, 101, 91, 68, 1, + 25, 175, 148, 77, 17, 181, 240, 202, 218, 18, 139, 65, 108, 62, + 129, 91, 96, 49, 136, 205, 39, 208, 150, 88, 12, 98, 243, 9, + 105, 75, 252, 84, 77, 13, 21, 206, 151, 165, 45, 241, 47, 167, + 230, 169, 53, 172, 243, 106, 187, 104, 173, 134, 79, 247, 240, 189, + 24, 204, 173, 47, 71, 236, 37, 249, 227, 203, 104, 59, 44, 6, + 115, 235, 203, 210, 118, 56, 95, 193, 122, 127, 149, 38, 254, 31, + 74, 220, 77, 245, 124, 179, 213, 182, 82, 43, 17, 206, 87, 105, + 106, 57, 63, 15, 49, 192, 159, 146, 218, 100, 35, 44, 119, 89, + 236, 80, 220, 25, 171, 246, 87, 12, 25, 252, 169, 56, 50, 248, + 83, 113, 100, 240, 167, 226, 200, 224, 79, 73, 153, 12, 142, 216, + 86, 112, 127, 209, 223, 22, 71, 108, 43, 112, 255, 211, 184, 180, + 173, 202, 67, 135, 70, 67, 171, 242, 208, 73, 163, 65, 46, 109, + 155, 72, 254, 29, 77, 252, 216, 44, 109, 13, 163, 161, 218, 210, + 182, 17, 225, 252, 157, 92, 90, 184, 239, 104, 147, 107, 251, 140, + 92, 219, 231, 45, 75, 193, 183, 194, 206, 94, 49, 31, 172, 194, + 121, 204, 250, 24, 25, 87, 230, 197, 120, 213, 78, 167, 109, 192, + 164, 207, 32, 147, 182, 129, 4, 127, 6, 13, 135, 54, 96, 210, + 103, 208, 112, 104, 3, 38, 125, 70, 50, 233, 165, 48, 125, 68, + 56, 223, 146, 211, 183, 205, 27, 137, 162, 29, 79, 227, 80, 218, + 6, 135, 210, 111, 81, 186, 20, 73, 248, 114, 59, 54, 43, 151, + 255, 91, 178, 89, 208, 11, 109, 82, 248, 125, 239, 183, 68, 47, + 180, 129, 208, 251, 30, 234, 133, 54, 16, 122, 223, 67, 189, 208, + 6, 66, 239, 123, 82, 47, 188, 160, 166, 134, 9, 231, 71, 82, + 47, 124, 239, 20, 207, 152, 175, 137, 98, 40, 111, 249, 116, 53, + 67, 27, 156, 42, 127, 132, 226, 163, 13, 78, 149, 63, 66, 205, + 208, 6, 167, 202, 31, 73, 205, 176, 141, 83, 103, 137, 72, 254, + 132, 38, 94, 162, 24, 200, 85, 203, 222, 173, 38, 63, 150, 16, + 225, 252, 132, 166, 86, 240, 143, 201, 217, 94, 34, 229, 199, 11, + 114, 3, 188, 159, 24, 103, 164, 111, 149, 203, 216, 157, 45, 134, + 165, 186, 149, 86, 84, 253, 208, 218, 229, 84, 184, 87, 56, 149, + 147, 167, 217, 131, 230, 216, 185, 4, 54, 248, 11, 184, 193, 151, + 128, 22, 122, 1, 181, 208, 18, 216, 224, 47, 224, 78, 91, 2, + 27, 252, 5, 185, 211, 238, 83, 3, 36, 194, 249, 197, 175, 197, + 177, 115, 9, 104, 144, 95, 32, 11, 44, 1, 17, 242, 11, 212, + 32, 75, 64, 132, 252, 66, 106, 144, 49, 78, 29, 33, 146, 191, + 162, 137, 255, 201, 136, 123, 193, 124, 199, 78, 76, 233, 211, 229, + 49, 175, 144, 35, 201, 102, 182, 121, 231, 107, 142, 16, 68, 56, + 191, 162, 41, 143, 127, 79, 78, 152, 144, 28, 113, 27, 163, 105, + 247, 255, 45, 119, 108, 154, 120, 215, 223, 132, 155, 61, 1, 92, + 117, 27, 163, 134, 108, 144, 164, 86, 27, 2, 184, 234, 54, 166, + 213, 134, 0, 174, 186, 141, 121, 171, 248, 5, 48, 71, 68, 56, + 239, 100, 116, 45, 220, 163, 86, 162, 43, 214, 213, 20, 2, 52, + 197, 59, 25, 237, 68, 18, 62, 214, 229, 33, 201, 36, 185, 122, + 13, 255, 18, 133, 166, 168, 112, 222, 203, 232, 50, 247, 207, 232, + 2, 175, 242, 236, 59, 17, 200, 37, 172, 130, 203, 235, 87, 34, + 94, 198, 140, 28, 173, 73, 2, 149, 37, 135, 49, 241, 211, 126, + 22, 210, 25, 48, 123, 69, 99, 118, 22, 74, 101, 202, 163, 182, + 214, 169, 184, 13, 172, 215, 211, 154, 74, 168, 82, 7, 213, 80, + 65, 102, 202, 165, 6, 122, 47, 211, 26, 72, 128, 6, 122, 47, + 75, 181, 35, 201, 36, 217, 213, 173, 46, 7, 133, 36, 63, 196, + 104, 167, 251, 253, 186, 14, 97, 179, 29, 94, 81, 103, 176, 105, + 101, 225, 74, 186, 191, 154, 154, 238, 175, 169, 168, 251, 135, 173, + 137, 146, 90, 232, 67, 209, 68, 65, 68, 31, 75, 225, 166, 96, + 48, 51, 237, 29, 202, 115, 46, 168, 35, 156, 63, 98, 180, 219, + 253, 225, 105, 184, 131, 81, 44, 189, 38, 174, 224, 168, 241, 211, + 85, 216, 130, 58, 13, 48, 250, 20, 146, 68, 146, 90, 97, 11, + 184, 61, 252, 35, 214, 217, 197, 31, 97, 48, 85, 13, 194, 121, + 144, 209, 141, 238, 199, 217, 203, 125, 143, 42, 59, 60, 165, 62, + 233, 23, 163, 29, 133, 204, 56, 85, 200, 229, 10, 199, 229, 182, + 213, 15, 101, 243, 198, 119, 181, 81, 39, 101, 43, 198, 184, 98, + 215, 27, 118, 141, 87, 94, 169, 30, 63, 18, 228, 121, 116, 68, + 220, 198, 189, 141, 158, 6, 18, 145, 127, 218, 208, 33, 22, 109, + 158, 194, 100, 4, 217, 155, 66, 24, 32, 95, 106, 229, 59, 85, + 152, 205, 155, 148, 19, 109, 29, 196, 68, 83, 97, 226, 205, 1, + 152, 34, 53, 70, 3, 61, 31, 217, 119, 205, 200, 181, 7, 170, + 119, 221, 187, 226, 202, 131, 11, 239, 189, 6, 48, 214, 139, 216, + 144, 132, 85, 235, 65, 146, 72, 82, 95, 16, 11, 218, 192, 36, + 217, 183, 1, 130, 42, 151, 138, 228, 35, 44, 241, 36, 195, 160, + 202, 122, 62, 200, 184, 70, 6, 37, 188, 148, 8, 231, 17, 150, + 90, 197, 111, 228, 142, 179, 84, 234, 224, 199, 24, 221, 224, 142, + 199, 111, 136, 35, 192, 95, 219, 157, 95, 81, 248, 167, 31, 71, + 168, 173, 179, 216, 32, 161, 243, 75, 65, 251, 61, 134, 218, 111, + 41, 216, 84, 143, 177, 230, 78, 36, 137, 36, 187, 214, 32, 201, + 36, 185, 190, 79, 217, 84, 75, 165, 248, 252, 44, 251, 117, 176, + 169, 150, 130, 77, 245, 89, 220, 165, 75, 65, 217, 126, 150, 105, + 155, 106, 41, 40, 219, 207, 178, 158, 94, 254, 44, 131, 129, 81, + 225, 252, 5, 163, 171, 221, 167, 85, 113, 128, 106, 208, 245, 186, + 214, 185, 1, 165, 142, 47, 140, 146, 255, 250, 13, 185, 29, 143, + 6, 115, 65, 134, 67, 210, 189, 52, 118, 245, 52, 249, 146, 139, + 193, 32, 153, 214, 42, 123, 178, 88, 8, 195, 129, 98, 160, 115, + 4, 181, 228, 180, 150, 118, 48, 42, 79, 101, 244, 140, 213, 142, + 233, 143, 194, 254, 207, 134, 222, 180, 63, 131, 105, 103, 82, 103, + 69, 86, 153, 218, 108, 214, 167, 161, 150, 129, 127, 172, 144, 205, + 0, 96, 65, 24, 102, 143, 89, 135, 223, 48, 251, 150, 96, 208, + 219, 229, 79, 30, 209, 13, 26, 166, 158, 196, 114, 4, 179, 80, + 214, 206, 151, 90, 142, 123, 71, 179, 185, 194, 196, 92, 41, 80, + 30, 2, 181, 124, 128, 194, 30, 206, 250, 185, 220, 156, 92, 69, + 133, 88, 46, 149, 161, 239, 29, 241, 243, 153, 169, 217, 156, 234, + 162, 74, 145, 44, 225, 200, 56, 78, 122, 54, 95, 158, 243, 21, + 22, 188, 76, 144, 153, 5, 28, 131, 146, 190, 239, 154, 246, 160, + 177, 98, 144, 153, 149, 211, 18, 31, 1, 50, 4, 77, 194, 26, + 35, 167, 75, 94, 254, 11, 214, 181, 2, 73, 38, 201, 85, 105, + 136, 43, 110, 23, 201, 191, 98, 137, 239, 176, 218, 113, 197, 213, + 160, 51, 172, 93, 221, 78, 132, 243, 87, 44, 181, 154, 47, 230, + 142, 211, 206, 18, 34, 249, 21, 70, 255, 150, 49, 104, 172, 157, + 201, 93, 246, 21, 198, 87, 242, 219, 8, 79, 74, 26, 60, 117, + 204, 185, 196, 157, 133, 245, 61, 213, 250, 63, 6, 24, 65, 21, + 71, 85, 232, 233, 53, 42, 253, 76, 205, 230, 114, 94, 166, 48, + 57, 43, 31, 196, 232, 203, 86, 222, 168, 186, 209, 0, 253, 176, + 126, 32, 242, 135, 102, 17, 253, 192, 228, 15, 29, 157, 209, 15, + 41, 249, 67, 215, 8, 23, 156, 235, 31, 192, 25, 254, 20, 91, + 118, 49, 127, 179, 30, 30, 17, 206, 215, 153, 179, 199, 253, 111, + 85, 107, 240, 84, 233, 190, 221, 123, 91, 138, 153, 33, 240, 154, + 99, 144, 27, 255, 235, 246, 24, 8, 180, 222, 220, 21, 253, 192, + 228, 15, 110, 79, 244, 67, 74, 254, 208, 187, 219, 140, 65, 7, + 11, 124, 157, 173, 216, 201, 119, 201, 37, 148, 11, 244, 13, 198, + 150, 185, 231, 214, 8, 13, 87, 166, 67, 121, 165, 8, 212, 204, + 154, 9, 219, 97, 130, 191, 193, 88, 19, 146, 68, 146, 188, 29, + 73, 38, 201, 174, 110, 254, 41, 2, 141, 18, 225, 124, 147, 209, + 179, 220, 255, 67, 138, 219, 92, 54, 44, 25, 27, 20, 83, 8, + 45, 67, 254, 72, 16, 246, 35, 203, 204, 225, 69, 176, 230, 93, + 45, 174, 184, 37, 175, 14, 100, 223, 2, 102, 35, 24, 250, 202, + 76, 58, 103, 120, 120, 208, 27, 201, 207, 25, 142, 159, 50, 69, + 6, 228, 150, 61, 103, 120, 216, 188, 175, 143, 0, 218, 200, 245, + 243, 94, 80, 44, 22, 138, 102, 152, 196, 129, 158, 27, 50, 41, + 73, 93, 211, 178, 29, 22, 228, 155, 108, 213, 32, 146, 76, 146, + 155, 183, 168, 131, 79, 187, 148, 197, 207, 190, 126, 240, 57, 163, + 131, 79, 59, 28, 124, 158, 69, 123, 190, 29, 164, 221, 179, 120, + 240, 105, 7, 105, 247, 172, 100, 180, 29, 156, 58, 29, 34, 249, + 93, 150, 248, 41, 171, 19, 11, 62, 143, 184, 235, 32, 194, 249, + 46, 75, 173, 225, 79, 75, 190, 237, 144, 155, 229, 57, 105, 197, + 124, 137, 168, 48, 62, 179, 27, 98, 65, 10, 166, 18, 42, 240, + 92, 116, 170, 146, 27, 73, 170, 253, 252, 250, 146, 54, 19, 33, + 54, 80, 27, 6, 209, 229, 133, 177, 154, 189, 209, 92, 22, 234, + 42, 168, 58, 57, 242, 189, 98, 16, 41, 60, 112, 67, 129, 147, + 96, 74, 151, 185, 1, 99, 163, 223, 83, 229, 30, 102, 252, 98, + 41, 59, 57, 155, 243, 139, 234, 73, 57, 229, 135, 103, 253, 162, + 159, 47, 5, 166, 86, 106, 7, 216, 77, 207, 33, 75, 119, 128, + 221, 244, 28, 218, 77, 29, 176, 145, 159, 67, 187, 169, 3, 54, + 242, 115, 210, 110, 2, 243, 162, 67, 206, 254, 243, 175, 155, 23, + 191, 193, 230, 69, 7, 200, 184, 231, 209, 188, 232, 0, 25, 247, + 60, 154, 23, 29, 32, 227, 158, 151, 230, 197, 133, 156, 58, 157, + 34, 249, 51, 150, 120, 151, 83, 187, 94, 119, 5, 76, 150, 181, + 217, 58, 137, 112, 126, 198, 82, 30, 20, 146, 235, 148, 123, 237, + 69, 70, 47, 114, 123, 35, 136, 171, 253, 202, 44, 48, 14, 50, + 221, 199, 78, 208, 62, 47, 162, 77, 220, 9, 76, 251, 34, 107, + 106, 67, 146, 73, 114, 105, 59, 146, 41, 73, 118, 108, 135, 59, + 238, 78, 84, 235, 47, 178, 206, 11, 33, 205, 175, 83, 50, 245, + 75, 140, 174, 115, 55, 123, 187, 1, 46, 4, 100, 177, 63, 51, + 147, 155, 67, 32, 142, 56, 51, 155, 226, 18, 216, 29, 57, 101, + 47, 49, 218, 133, 36, 124, 176, 123, 21, 146, 76, 146, 107, 214, + 242, 223, 165, 208, 28, 21, 206, 45, 14, 237, 116, 95, 168, 235, + 156, 49, 41, 240, 65, 94, 158, 56, 94, 49, 39, 205, 112, 141, + 230, 78, 225, 74, 101, 111, 165, 84, 223, 91, 67, 172, 239, 53, + 115, 38, 229, 250, 45, 142, 150, 235, 157, 32, 215, 111, 113, 180, + 159, 166, 19, 228, 250, 45, 14, 250, 105, 58, 37, 121, 135, 115, + 154, 126, 26, 100, 189, 215, 196, 79, 19, 53, 126, 186, 126, 154, + 78, 112, 105, 221, 225, 24, 110, 103, 68, 146, 218, 79, 211, 9, + 46, 173, 59, 156, 206, 46, 56, 196, 119, 137, 228, 187, 157, 196, + 7, 157, 133, 28, 226, 171, 108, 201, 46, 34, 156, 119, 59, 169, + 85, 124, 3, 119, 156, 46, 185, 37, 223, 227, 208, 33, 183, 71, + 47, 125, 116, 144, 191, 60, 190, 5, 186, 64, 171, 188, 199, 161, + 134, 76, 74, 178, 121, 57, 146, 68, 146, 43, 54, 34, 201, 36, + 57, 48, 168, 78, 227, 93, 114, 237, 63, 224, 252, 58, 156, 198, + 187, 192, 40, 255, 0, 174, 69, 23, 108, 245, 15, 56, 250, 52, + 222, 5, 91, 253, 3, 78, 79, 47, 255, 10, 229, 212, 233, 22, + 201, 143, 58, 137, 63, 117, 136, 251, 25, 90, 79, 62, 150, 1, + 88, 234, 107, 142, 131, 133, 8, 138, 111, 124, 255, 104, 63, 48, + 140, 100, 180, 124, 0, 94, 160, 1, 207, 224, 17, 34, 118, 111, + 56, 120, 56, 176, 238, 126, 253, 156, 178, 47, 46, 52, 216, 190, + 250, 156, 117, 209, 182, 29, 6, 76, 3, 92, 112, 220, 243, 188, + 242, 135, 228, 172, 149, 80, 18, 227, 111, 192, 175, 250, 190, 92, + 253, 51, 190, 54, 24, 235, 145, 85, 64, 99, 16, 236, 253, 88, + 167, 42, 15, 29, 106, 181, 179, 161, 55, 17, 100, 243, 135, 101, + 119, 164, 192, 7, 176, 60, 96, 204, 110, 34, 156, 143, 58, 58, + 191, 181, 91, 50, 230, 73, 231, 12, 242, 91, 187, 65, 131, 156, + 196, 117, 236, 6, 6, 61, 137, 123, 170, 27, 24, 244, 164, 163, + 243, 91, 187, 65, 131, 156, 116, 116, 126, 107, 55, 106, 144, 147, + 142, 187, 131, 255, 43, 129, 14, 17, 225, 220, 235, 208, 17, 247, + 239, 149, 76, 199, 73, 129, 18, 254, 133, 233, 25, 191, 88, 113, + 156, 82, 144, 72, 253, 242, 137, 140, 20, 32, 211, 242, 113, 133, + 236, 51, 167, 170, 11, 6, 199, 7, 117, 89, 217, 239, 188, 253, + 15, 245, 2, 132, 67, 111, 213, 127, 221, 52, 100, 86, 125, 232, + 173, 102, 237, 178, 153, 155, 190, 243, 246, 143, 14, 114, 111, 119, + 161, 232, 5, 10, 198, 171, 223, 120, 39, 245, 34, 166, 17, 154, + 50, 221, 31, 91, 66, 121, 178, 150, 202, 100, 34, 224, 94, 186, + 84, 156, 219, 150, 203, 230, 103, 79, 12, 20, 131, 92, 52, 111, + 146, 255, 239, 141, 230, 141, 192, 192, 155, 150, 32, 201, 36, 217, + 222, 129, 100, 74, 146, 157, 59, 244, 188, 233, 195, 232, 189, 78, + 247, 69, 96, 175, 47, 19, 201, 251, 156, 196, 23, 156, 58, 246, + 122, 237, 253, 1, 108, 177, 140, 8, 231, 62, 39, 181, 134, 23, + 184, 227, 44, 99, 9, 145, 124, 192, 161, 143, 57, 204, 61, 20, + 175, 82, 134, 216, 86, 70, 172, 32, 7, 79, 103, 243, 217, 105, + 63, 231, 101, 173, 10, 172, 165, 130, 246, 91, 228, 230, 204, 49, + 212, 243, 99, 166, 166, 154, 141, 101, 224, 255, 120, 192, 225, 221, + 252, 247, 9, 79, 74, 26, 66, 26, 29, 167, 235, 53, 175, 126, + 220, 202, 27, 85, 127, 26, 160, 67, 214, 15, 68, 254, 160, 29, + 33, 203, 180, 35, 228, 33, 167, 163, 147, 231, 244, 16, 136, 112, + 30, 117, 156, 222, 87, 184, 206, 48, 54, 47, 25, 234, 81, 187, + 131, 4, 218, 215, 94, 142, 101, 218, 203, 241, 168, 227, 246, 240, + 219, 228, 94, 91, 38, 167, 248, 51, 82, 91, 28, 247, 198, 242, + 186, 94, 158, 148, 98, 88, 20, 54, 218, 124, 80, 201, 48, 144, + 186, 187, 48, 3, 24, 103, 25, 133, 92, 234, 151, 188, 92, 224, + 135, 37, 239, 220, 45, 222, 145, 194, 108, 49, 228, 96, 92, 99, + 233, 87, 125, 36, 131, 195, 174, 214, 63, 80, 96, 52, 3, 5, + 70, 113, 237, 97, 102, 63, 227, 208, 36, 146, 68, 146, 141, 221, + 72, 50, 73, 246, 244, 242, 163, 208, 103, 34, 156, 39, 28, 58, + 236, 94, 95, 118, 142, 4, 121, 170, 119, 123, 191, 55, 29, 248, + 26, 109, 77, 169, 161, 57, 85, 230, 78, 29, 211, 193, 6, 209, + 137, 96, 190, 5, 163, 86, 156, 205, 123, 51, 197, 172, 113, 90, + 44, 3, 167, 197, 19, 168, 139, 151, 129, 117, 250, 132, 211, 188, + 12, 73, 232, 139, 187, 9, 73, 38, 201, 193, 33, 44, 138, 247, + 191, 3, 0, 0, 255, 255, 147, 108, 15, 207, 95, 210, 2, 0, + }, ) } diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/resultdb.pb.go b/vendor/go.chromium.org/luci/resultdb/proto/v1/resultdb.pb.go index 3d96129..77e5f5c 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/resultdb.pb.go +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/resultdb.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v3.21.12 +// protoc v3.21.7 // source: go.chromium.org/luci/resultdb/proto/v1/resultdb.proto package resultpb diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.pb.go b/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.pb.go index 20a36d6..6bdee57 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.pb.go +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.pb.go @@ -116,6 +116,62 @@ func (TestStatus) EnumDescriptor() ([]byte, []int) { return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{0} } +// Machine-readable reason that a test execution was skipped. +// Only reasons actually used are listed here, if you need a new reason +// please add it here and send a CL to the OWNERS. +type SkipReason int32 + +const ( + // Skip reason was not specified. + // This represents an unset field which should be used for non-skip test + // result statuses. It can also be used if none of the other statuses + // apply. + SkipReason_SKIP_REASON_UNSPECIFIED SkipReason = 0 + // Disabled automatically in response to a test skipping policy that skips + // flaky tests. + // Used for ChromeOS CQ test filtering. + SkipReason_AUTOMATICALLY_DISABLED_FOR_FLAKINESS SkipReason = 1 +) + +// Enum value maps for SkipReason. +var ( + SkipReason_name = map[int32]string{ + 0: "SKIP_REASON_UNSPECIFIED", + 1: "AUTOMATICALLY_DISABLED_FOR_FLAKINESS", + } + SkipReason_value = map[string]int32{ + "SKIP_REASON_UNSPECIFIED": 0, + "AUTOMATICALLY_DISABLED_FOR_FLAKINESS": 1, + } +) + +func (x SkipReason) Enum() *SkipReason { + p := new(SkipReason) + *p = x + return p +} + +func (x SkipReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SkipReason) Descriptor() protoreflect.EnumDescriptor { + return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[1].Descriptor() +} + +func (SkipReason) Type() protoreflect.EnumType { + return &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[1] +} + +func (x SkipReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SkipReason.Descriptor instead. +func (SkipReason) EnumDescriptor() ([]byte, []int) { + return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{1} +} + // Reason why a test variant was exonerated. type ExonerationReason int32 @@ -180,11 +236,11 @@ func (x ExonerationReason) String() string { } func (ExonerationReason) Descriptor() protoreflect.EnumDescriptor { - return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[1].Descriptor() + return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[2].Descriptor() } func (ExonerationReason) Type() protoreflect.EnumType { - return &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[1] + return &file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes[2] } func (x ExonerationReason) Number() protoreflect.EnumNumber { @@ -193,7 +249,7 @@ func (x ExonerationReason) Number() protoreflect.EnumNumber { // Deprecated: Use ExonerationReason.Descriptor instead. func (ExonerationReason) EnumDescriptor() ([]byte, []int) { - return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{1} + return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP(), []int{2} } // A result of a functional test case. @@ -305,9 +361,14 @@ type TestResult struct { // * duration // * variant_hash // * failure_reason.primary_error_message (truncated to 140 characters) + // * skip_reason // // Output only. IsMasked bool `protobuf:"varint,16,opt,name=is_masked,json=isMasked,proto3" json:"is_masked,omitempty"` + // Reasoning behind a test skip, in machine-readable form. + // Used to assist downstream analyses, such as automatic bug-filing. + // MUST not be set unless status is SKIP. + SkipReason SkipReason `protobuf:"varint,18,opt,name=skip_reason,json=skipReason,proto3,enum=luci.resultdb.v1.SkipReason" json:"skip_reason,omitempty"` } func (x *TestResult) Reset() { @@ -447,6 +508,13 @@ func (x *TestResult) GetIsMasked() bool { return false } +func (x *TestResult) GetSkipReason() SkipReason { + if x != nil { + return x.SkipReason + } + return SkipReason_SKIP_REASON_UNSPECIFIED +} + // Indicates the test subject (e.g. a CL) is absolved from blame // for an unexpected result of a test variant. // For example, the test variant fails both with and without CL, so it is not @@ -612,7 +680,7 @@ var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc = []by 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf5, 0x05, 0x0a, 0x0a, 0x54, + 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb4, 0x06, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, @@ -659,49 +727,58 @@ var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc = []by 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x0b, - 0x10, 0x0c, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, - 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, - 0x12, 0x2d, 0x0a, 0x0e, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, - 0x52, 0x0d, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, - 0x74, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, - 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x74, 0x6d, 0x6c, 0x12, - 0x26, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x6f, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, - 0x05, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x2a, 0x58, 0x0a, 0x0a, 0x54, - 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, - 0x41, 0x49, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x52, 0x41, 0x53, 0x48, 0x10, 0x03, - 0x12, 0x09, 0x0a, 0x05, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x53, - 0x4b, 0x49, 0x50, 0x10, 0x05, 0x2a, 0x8f, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x45, - 0x58, 0x4f, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x41, 0x03, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, + 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, + 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x0b, 0x10, + 0x0c, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, + 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, + 0x2d, 0x0a, 0x0e, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, + 0x0d, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, + 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x74, + 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x74, 0x6d, 0x6c, 0x12, 0x26, + 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x05, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x2a, 0x58, 0x0a, 0x0a, 0x54, 0x65, + 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x08, 0x0a, 0x04, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, + 0x49, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x52, 0x41, 0x53, 0x48, 0x10, 0x03, 0x12, + 0x09, 0x0a, 0x05, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4b, + 0x49, 0x50, 0x10, 0x05, 0x2a, 0x53, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4b, 0x49, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x16, 0x0a, 0x12, 0x4f, 0x43, 0x43, 0x55, 0x52, 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x49, - 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x43, 0x43, 0x55, 0x52, - 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x53, 0x10, 0x02, - 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, - 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, - 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x04, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, - 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, - 0x31, 0x3b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x28, 0x0a, 0x24, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x4c, 0x59, + 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x46, 0x4c, + 0x41, 0x4b, 0x49, 0x4e, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x8f, 0x01, 0x0a, 0x11, 0x45, 0x78, + 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x22, 0x0a, 0x1e, 0x45, 0x58, 0x4f, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x43, 0x43, 0x55, 0x52, 0x53, 0x5f, 0x4f, 0x4e, + 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4f, + 0x43, 0x43, 0x55, 0x52, 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x43, + 0x4c, 0x53, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x52, 0x49, 0x54, + 0x49, 0x43, 0x41, 0x4c, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x04, 0x42, 0x31, 0x5a, 0x2f, 0x67, + 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, + 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -716,37 +793,39 @@ func file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescGZIP() return file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDescData } -var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_msgTypes = make([]protoimpl.MessageInfo, 2) var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_goTypes = []interface{}{ (TestStatus)(0), // 0: luci.resultdb.v1.TestStatus - (ExonerationReason)(0), // 1: luci.resultdb.v1.ExonerationReason - (*TestResult)(nil), // 2: luci.resultdb.v1.TestResult - (*TestExoneration)(nil), // 3: luci.resultdb.v1.TestExoneration - (*Variant)(nil), // 4: luci.resultdb.v1.Variant - (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 6: google.protobuf.Duration - (*StringPair)(nil), // 7: luci.resultdb.v1.StringPair - (*TestMetadata)(nil), // 8: luci.resultdb.v1.TestMetadata - (*FailureReason)(nil), // 9: luci.resultdb.v1.FailureReason - (*structpb.Struct)(nil), // 10: google.protobuf.Struct + (SkipReason)(0), // 1: luci.resultdb.v1.SkipReason + (ExonerationReason)(0), // 2: luci.resultdb.v1.ExonerationReason + (*TestResult)(nil), // 3: luci.resultdb.v1.TestResult + (*TestExoneration)(nil), // 4: luci.resultdb.v1.TestExoneration + (*Variant)(nil), // 5: luci.resultdb.v1.Variant + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 7: google.protobuf.Duration + (*StringPair)(nil), // 8: luci.resultdb.v1.StringPair + (*TestMetadata)(nil), // 9: luci.resultdb.v1.TestMetadata + (*FailureReason)(nil), // 10: luci.resultdb.v1.FailureReason + (*structpb.Struct)(nil), // 11: google.protobuf.Struct } var file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_depIdxs = []int32{ - 4, // 0: luci.resultdb.v1.TestResult.variant:type_name -> luci.resultdb.v1.Variant + 5, // 0: luci.resultdb.v1.TestResult.variant:type_name -> luci.resultdb.v1.Variant 0, // 1: luci.resultdb.v1.TestResult.status:type_name -> luci.resultdb.v1.TestStatus - 5, // 2: luci.resultdb.v1.TestResult.start_time:type_name -> google.protobuf.Timestamp - 6, // 3: luci.resultdb.v1.TestResult.duration:type_name -> google.protobuf.Duration - 7, // 4: luci.resultdb.v1.TestResult.tags:type_name -> luci.resultdb.v1.StringPair - 8, // 5: luci.resultdb.v1.TestResult.test_metadata:type_name -> luci.resultdb.v1.TestMetadata - 9, // 6: luci.resultdb.v1.TestResult.failure_reason:type_name -> luci.resultdb.v1.FailureReason - 10, // 7: luci.resultdb.v1.TestResult.properties:type_name -> google.protobuf.Struct - 4, // 8: luci.resultdb.v1.TestExoneration.variant:type_name -> luci.resultdb.v1.Variant - 1, // 9: luci.resultdb.v1.TestExoneration.reason:type_name -> luci.resultdb.v1.ExonerationReason - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 6, // 2: luci.resultdb.v1.TestResult.start_time:type_name -> google.protobuf.Timestamp + 7, // 3: luci.resultdb.v1.TestResult.duration:type_name -> google.protobuf.Duration + 8, // 4: luci.resultdb.v1.TestResult.tags:type_name -> luci.resultdb.v1.StringPair + 9, // 5: luci.resultdb.v1.TestResult.test_metadata:type_name -> luci.resultdb.v1.TestMetadata + 10, // 6: luci.resultdb.v1.TestResult.failure_reason:type_name -> luci.resultdb.v1.FailureReason + 11, // 7: luci.resultdb.v1.TestResult.properties:type_name -> google.protobuf.Struct + 1, // 8: luci.resultdb.v1.TestResult.skip_reason:type_name -> luci.resultdb.v1.SkipReason + 5, // 9: luci.resultdb.v1.TestExoneration.variant:type_name -> luci.resultdb.v1.Variant + 2, // 10: luci.resultdb.v1.TestExoneration.reason:type_name -> luci.resultdb.v1.ExonerationReason + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init() } @@ -788,7 +867,7 @@ func file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_go_chromium_org_luci_resultdb_proto_v1_test_result_proto_rawDesc, - NumEnums: 2, + NumEnums: 3, NumMessages: 2, NumExtensions: 0, NumServices: 0, diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.proto b/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.proto index 68ad00e..f91c667 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.proto +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/test_result.proto @@ -157,9 +157,15 @@ message TestResult { // * duration // * variant_hash // * failure_reason.primary_error_message (truncated to 140 characters) + // * skip_reason // // Output only. bool is_masked = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Reasoning behind a test skip, in machine-readable form. + // Used to assist downstream analyses, such as automatic bug-filing. + // MUST not be set unless status is SKIP. + SkipReason skip_reason = 18; } // Machine-readable status of a test result. @@ -196,6 +202,22 @@ enum TestStatus { SKIP = 5; } +// Machine-readable reason that a test execution was skipped. +// Only reasons actually used are listed here, if you need a new reason +// please add it here and send a CL to the OWNERS. +enum SkipReason { + // Skip reason was not specified. + // This represents an unset field which should be used for non-skip test + // result statuses. It can also be used if none of the other statuses + // apply. + SKIP_REASON_UNSPECIFIED = 0; + + // Disabled automatically in response to a test skipping policy that skips + // flaky tests. + // Used for ChromeOS CQ test filtering. + AUTOMATICALLY_DISABLED_FOR_FLAKINESS = 1; +} + // Indicates the test subject (e.g. a CL) is absolved from blame // for an unexpected result of a test variant. // For example, the test variant fails both with and without CL, so it is not diff --git a/vendor/go.chromium.org/luci/resultdb/proto/v1/test_variant.pb.go b/vendor/go.chromium.org/luci/resultdb/proto/v1/test_variant.pb.go index 32d3c66..f028793 100644 --- a/vendor/go.chromium.org/luci/resultdb/proto/v1/test_variant.pb.go +++ b/vendor/go.chromium.org/luci/resultdb/proto/v1/test_variant.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v3.21.12 +// protoc v3.21.7 // source: go.chromium.org/luci/resultdb/proto/v1/test_variant.proto package resultpb diff --git a/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.pb.go b/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.pb.go index 9b37660..2724d39 100644 --- a/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.pb.go +++ b/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.pb.go @@ -35,7 +35,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Maps from directory paths to extra tags to attach to TestResults. +// Maps from directory paths to extra fields to attach to TestResults. // When converted to JSON format, it will look like below: // // { @@ -44,29 +44,40 @@ const ( // "dirs": { // ".": { // "tags": { -// "monorail_project": "chromium" +// "teamEmail": "team_email@chromium.org" // } // }, // "foo": { // "tags": { -// "monorail_project": "chromium", -// "monorail_component": "Monorail>Component", // "teamEmail": "team_email@chromium.org", // "os": "WINDOWS" +// }, +// "bug_component": { +// "issue_tracker": { +// "component_id": "17171717" +// } // } // } // } // "files": { // "./file.txt": { // "tags": { -// "monorail_project": "chromium", -// "monorail_component": "Monorail>Overridden>Component", +// "teamEmail": "other_email@chromium.org", +// "os": "WINDOWS" +// }, +// "bug_component": { +// "issue_tracker": { +// "component_id": "123456" +// } // } // } // } // } // } // } +// +// N.B. This message is called 'LocationTags' because it was previously +// only used for tags, but this is no longer true. type LocationTags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -190,6 +201,10 @@ type LocationTags_Dir struct { // // A key can be repeated. Tags []*v1.StringPair `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` + // The issue tracker component associated with the test, if any. + // Bugs related to the test may be filed here. + // Populated to test_metadata.bug_component. + BugComponent *v1.BugComponent `protobuf:"bytes,2,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"` } func (x *LocationTags_Dir) Reset() { @@ -231,6 +246,13 @@ func (x *LocationTags_Dir) GetTags() []*v1.StringPair { return nil } +func (x *LocationTags_Dir) GetBugComponent() *v1.BugComponent { + if x != nil { + return x.BugComponent + } + return nil +} + // Extra tags to attach to TestResults for a file. type LocationTags_File struct { state protoimpl.MessageState @@ -239,6 +261,10 @@ type LocationTags_File struct { // A key can be repeated. Tags []*v1.StringPair `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` + // The issue tracker component associated with the test, if any. + // Bugs related to the test may be filed here. + // Populated to test_metadata.bug_component. + BugComponent *v1.BugComponent `protobuf:"bytes,2,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"` } func (x *LocationTags_File) Reset() { @@ -280,6 +306,13 @@ func (x *LocationTags_File) GetTags() []*v1.StringPair { return nil } +func (x *LocationTags_File) GetBugComponent() *v1.BugComponent { + if x != nil { + return x.BugComponent + } + return nil +} + var File_go_chromium_org_luci_resultdb_sink_proto_v1_location_tag_proto protoreflect.FileDescriptor var file_go_chromium_org_luci_resultdb_sink_proto_v1_location_tag_proto_rawDesc = []byte{ @@ -291,51 +324,63 @@ var file_go_chromium_org_luci_resultdb_sink_proto_v1_location_tag_proto_rawDesc 0x6b, 0x2e, 0x76, 0x31, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfb, 0x04, 0x0a, 0x0c, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, - 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x1a, 0xd3, 0x02, - 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x43, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x2e, 0x44, 0x69, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x69, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6c, 0x75, 0x63, - 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, - 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x1a, 0x5d, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x67, 0x73, 0x2e, 0x44, 0x69, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x5f, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x67, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x03, 0x44, 0x69, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x38, 0x0a, 0x04, - 0x46, 0x69, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x5f, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x6f, 0x2e, 0x63, 0x68, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x73, 0x69, 0x6e, 0x6b, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x69, 0x6e, 0x6b, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x85, 0x06, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x1a, 0xd3, 0x02, 0x0a, 0x04, 0x52, 0x65, + 0x70, 0x6f, 0x12, 0x43, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, + 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x2e, 0x44, 0x69, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x64, 0x69, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x2e, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, + 0x5d, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, + 0x44, 0x69, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f, + 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x7c, 0x0a, 0x03, 0x44, 0x69, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, + 0x69, 0x72, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, + 0x0c, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x7d, 0x0a, + 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, + 0x72, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x0c, + 0x62, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x1a, 0x5f, 0x0a, 0x0a, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x75, + 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x69, 0x6e, 0x6b, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x34, 0x5a, + 0x32, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, + 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 0x73, + 0x69, 0x6e, 0x6b, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x69, 0x6e, + 0x6b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -360,21 +405,24 @@ var file_go_chromium_org_luci_resultdb_sink_proto_v1_location_tag_proto_goTypes nil, // 5: luci.resultsink.v1.LocationTags.Repo.DirsEntry nil, // 6: luci.resultsink.v1.LocationTags.Repo.FilesEntry (*v1.StringPair)(nil), // 7: luci.resultdb.v1.StringPair + (*v1.BugComponent)(nil), // 8: luci.resultdb.v1.BugComponent } var file_go_chromium_org_luci_resultdb_sink_proto_v1_location_tag_proto_depIdxs = []int32{ - 4, // 0: luci.resultsink.v1.LocationTags.repos:type_name -> luci.resultsink.v1.LocationTags.ReposEntry - 5, // 1: luci.resultsink.v1.LocationTags.Repo.dirs:type_name -> luci.resultsink.v1.LocationTags.Repo.DirsEntry - 6, // 2: luci.resultsink.v1.LocationTags.Repo.files:type_name -> luci.resultsink.v1.LocationTags.Repo.FilesEntry - 7, // 3: luci.resultsink.v1.LocationTags.Dir.tags:type_name -> luci.resultdb.v1.StringPair - 7, // 4: luci.resultsink.v1.LocationTags.File.tags:type_name -> luci.resultdb.v1.StringPair - 1, // 5: luci.resultsink.v1.LocationTags.ReposEntry.value:type_name -> luci.resultsink.v1.LocationTags.Repo - 2, // 6: luci.resultsink.v1.LocationTags.Repo.DirsEntry.value:type_name -> luci.resultsink.v1.LocationTags.Dir - 3, // 7: luci.resultsink.v1.LocationTags.Repo.FilesEntry.value:type_name -> luci.resultsink.v1.LocationTags.File - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 4, // 0: luci.resultsink.v1.LocationTags.repos:type_name -> luci.resultsink.v1.LocationTags.ReposEntry + 5, // 1: luci.resultsink.v1.LocationTags.Repo.dirs:type_name -> luci.resultsink.v1.LocationTags.Repo.DirsEntry + 6, // 2: luci.resultsink.v1.LocationTags.Repo.files:type_name -> luci.resultsink.v1.LocationTags.Repo.FilesEntry + 7, // 3: luci.resultsink.v1.LocationTags.Dir.tags:type_name -> luci.resultdb.v1.StringPair + 8, // 4: luci.resultsink.v1.LocationTags.Dir.bug_component:type_name -> luci.resultdb.v1.BugComponent + 7, // 5: luci.resultsink.v1.LocationTags.File.tags:type_name -> luci.resultdb.v1.StringPair + 8, // 6: luci.resultsink.v1.LocationTags.File.bug_component:type_name -> luci.resultdb.v1.BugComponent + 1, // 7: luci.resultsink.v1.LocationTags.ReposEntry.value:type_name -> luci.resultsink.v1.LocationTags.Repo + 2, // 8: luci.resultsink.v1.LocationTags.Repo.DirsEntry.value:type_name -> luci.resultsink.v1.LocationTags.Dir + 3, // 9: luci.resultsink.v1.LocationTags.Repo.FilesEntry.value:type_name -> luci.resultsink.v1.LocationTags.File + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_go_chromium_org_luci_resultdb_sink_proto_v1_location_tag_proto_init() } diff --git a/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.proto b/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.proto index 857516d..f414d31 100644 --- a/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.proto +++ b/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.proto @@ -17,10 +17,11 @@ syntax = "proto3"; package luci.resultsink.v1; import "go.chromium.org/luci/resultdb/proto/v1/common.proto"; +import "go.chromium.org/luci/resultdb/proto/v1/test_metadata.proto"; option go_package = "go.chromium.org/luci/resultdb/sink/proto/v1;sinkpb"; -// Maps from directory paths to extra tags to attach to TestResults. +// Maps from directory paths to extra fields to attach to TestResults. // When converted to JSON format, it will look like below: //{ // "repos": { @@ -28,29 +29,40 @@ option go_package = "go.chromium.org/luci/resultdb/sink/proto/v1;sinkpb"; // "dirs": { // ".": { // "tags": { -// "monorail_project": "chromium" +// "teamEmail": "team_email@chromium.org" // } // }, // "foo": { // "tags": { -// "monorail_project": "chromium", -// "monorail_component": "Monorail>Component", // "teamEmail": "team_email@chromium.org", // "os": "WINDOWS" +// }, +// "bug_component": { +// "issue_tracker": { +// "component_id": "17171717" +// } // } // } // } // "files": { // "./file.txt": { // "tags": { -// "monorail_project": "chromium", -// "monorail_component": "Monorail>Overridden>Component", +// "teamEmail": "other_email@chromium.org", +// "os": "WINDOWS" +// }, +// "bug_component": { +// "issue_tracker": { +// "component_id": "123456" +// } // } // } // } // } // } //} +// +// N.B. This message is called 'LocationTags' because it was previously +// only used for tags, but this is no longer true. message LocationTags { // Map from directory paths in a repo to extra tags to attach to TestResults. message Repo { @@ -71,12 +83,22 @@ message LocationTags { // // A key can be repeated. repeated luci.resultdb.v1.StringPair tags = 1; + + // The issue tracker component associated with the test, if any. + // Bugs related to the test may be filed here. + // Populated to test_metadata.bug_component. + luci.resultdb.v1.BugComponent bug_component = 2; } // Extra tags to attach to TestResults for a file. message File { // A key can be repeated. repeated luci.resultdb.v1.StringPair tags = 1; + + // The issue tracker component associated with the test, if any. + // Bugs related to the test may be filed here. + // Populated to test_metadata.bug_component. + luci.resultdb.v1.BugComponent bug_component = 2; } // The key is a Gitiles URL as the identifier for a repo. diff --git a/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/pb.discovery.go b/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/pb.discovery.go index f3fd914..a3a860a 100644 --- a/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/pb.discovery.go +++ b/vendor/go.chromium.org/luci/resultdb/sink/proto/v1/pb.discovery.go @@ -12,2838 +12,2951 @@ func init() { "luci.resultsink.v1.Sink", }, []byte{31, 139, - 8, 0, 0, 0, 0, 0, 0, 255, 236, 253, 125, 112, 28, 73, - 118, 32, 134, 163, 62, 186, 209, 72, 144, 96, 163, 0, 114, 192, - 230, 87, 178, 73, 14, 0, 178, 209, 248, 224, 199, 12, 201, 249, - 16, 8, 52, 201, 230, 128, 0, 213, 0, 102, 118, 102, 99, 6, - 44, 116, 103, 55, 106, 88, 93, 213, 83, 85, 13, 176, 103, 103, - 110, 37, 173, 118, 245, 147, 244, 147, 246, 86, 218, 213, 238, 157, - 118, 87, 23, 210, 234, 59, 188, 43, 75, 27, 62, 43, 238, 172, - 243, 89, 119, 97, 203, 150, 116, 94, 75, 103, 43, 36, 135, 195, - 94, 75, 103, 135, 44, 69, 220, 234, 172, 91, 235, 203, 114, 188, - 151, 31, 85, 221, 0, 56, 156, 89, 125, 252, 67, 198, 12, 217, - 47, 43, 243, 229, 203, 151, 47, 95, 190, 151, 31, 47, 201, 127, - 61, 75, 78, 53, 124, 191, 225, 178, 233, 86, 224, 71, 254, 102, - 187, 62, 29, 57, 77, 22, 70, 118, 179, 85, 196, 36, 235, 16, - 207, 80, 148, 25, 242, 215, 201, 192, 154, 204, 99, 141, 145, 254, - 144, 85, 125, 175, 22, 142, 105, 84, 155, 48, 42, 18, 180, 70, - 73, 202, 179, 61, 63, 28, 211, 169, 54, 145, 170, 112, 224, 198, - 199, 53, 50, 82, 245, 155, 197, 30, 164, 55, 134, 20, 202, 123, - 144, 116, 79, 123, 109, 78, 100, 105, 248, 174, 237, 53, 138, 126, - 208, 72, 208, 216, 105, 177, 112, 250, 129, 231, 239, 120, 49, 189, - 173, 205, 255, 71, 211, 126, 92, 55, 110, 221, 187, 241, 115, 250, - 201, 91, 188, 244, 61, 81, 164, 248, 10, 115, 221, 151, 160, 192, - 26, 148, 189, 243, 175, 167, 73, 191, 149, 58, 217, 247, 67, 154, - 70, 126, 253, 0, 209, 14, 88, 198, 201, 62, 107, 238, 95, 30, - 160, 88, 162, 234, 187, 244, 70, 187, 94, 103, 65, 72, 167, 40, - 199, 53, 30, 210, 154, 29, 217, 212, 241, 34, 22, 84, 183, 108, - 175, 193, 104, 221, 15, 154, 118, 68, 232, 130, 223, 234, 4, 78, - 99, 43, 162, 115, 51, 51, 207, 138, 2, 180, 236, 85, 139, 148, - 206, 187, 46, 197, 111, 33, 13, 88, 200, 130, 109, 86, 43, 18, - 186, 21, 69, 173, 240, 218, 244, 116, 141, 109, 51, 215, 111, 177, - 32, 148, 60, 169, 250, 77, 222, 210, 170, 239, 78, 109, 114, 34, - 166, 9, 161, 21, 86, 115, 194, 40, 112, 54, 219, 145, 227, 123, - 212, 246, 106, 180, 29, 50, 234, 120, 52, 244, 219, 65, 149, 97, - 202, 166, 227, 217, 65, 7, 233, 10, 11, 116, 199, 137, 182, 168, - 31, 224, 191, 126, 59, 34, 180, 233, 215, 156, 186, 83, 181, 1, - 67, 129, 218, 1, 163, 45, 22, 52, 157, 40, 98, 53, 218, 10, - 252, 109, 167, 198, 106, 52, 218, 178, 35, 26, 109, 65, 235, 92, - 215, 223, 113, 188, 6, 133, 46, 117, 160, 80, 8, 133, 8, 109, - 178, 232, 26, 33, 20, 254, 156, 239, 33, 44, 164, 126, 93, 82, - 84, 245, 107, 140, 54, 219, 97, 68, 3, 22, 217, 142, 135, 88, - 237, 77, 127, 27, 62, 9, 142, 17, 234, 249, 145, 83, 101, 5, - 26, 109, 57, 33, 117, 157, 48, 2, 12, 201, 26, 189, 90, 15, - 57, 53, 39, 172, 186, 182, 211, 100, 65, 113, 63, 34, 28, 47, - 201, 11, 73, 68, 43, 240, 107, 237, 42, 139, 233, 32, 49, 33, - 223, 18, 29, 132, 138, 214, 213, 252, 106, 187, 201, 188, 200, 150, - 157, 52, 237, 7, 212, 143, 182, 88, 64, 155, 118, 196, 2, 199, - 118, 195, 152, 213, 216, 65, 209, 22, 35, 52, 73, 189, 106, 212, - 50, 115, 176, 36, 32, 246, 236, 38, 3, 130, 146, 178, 229, 249, - 241, 55, 228, 187, 19, 133, 208, 34, 143, 163, 242, 131, 144, 54, - 237, 14, 221, 100, 32, 41, 53, 26, 249, 148, 121, 53, 63, 8, - 25, 8, 69, 43, 240, 155, 126, 196, 40, 231, 73, 20, 210, 26, - 11, 156, 109, 86, 163, 245, 192, 111, 18, 206, 133, 208, 175, 71, - 59, 32, 38, 66, 130, 104, 216, 98, 85, 144, 32, 218, 10, 28, - 16, 172, 0, 100, 199, 227, 82, 20, 134, 72, 59, 161, 107, 183, - 203, 171, 116, 117, 229, 230, 218, 43, 243, 149, 18, 45, 175, 210, - 123, 149, 149, 151, 203, 139, 165, 69, 122, 227, 85, 186, 118, 187, - 68, 23, 86, 238, 189, 90, 41, 223, 186, 189, 70, 111, 175, 44, - 45, 150, 42, 171, 116, 126, 121, 145, 46, 172, 44, 175, 85, 202, - 55, 214, 215, 86, 42, 171, 132, 230, 231, 87, 105, 121, 53, 143, - 95, 230, 151, 95, 165, 165, 15, 221, 171, 148, 86, 87, 233, 74, - 133, 150, 239, 222, 91, 42, 151, 22, 233, 43, 243, 149, 202, 252, - 242, 90, 185, 180, 90, 160, 229, 229, 133, 165, 245, 197, 242, 242, - 173, 2, 189, 177, 190, 70, 151, 87, 214, 8, 93, 42, 223, 45, - 175, 149, 22, 233, 218, 74, 1, 171, 221, 93, 142, 174, 220, 164, - 119, 75, 149, 133, 219, 243, 203, 107, 243, 55, 202, 75, 229, 181, - 87, 177, 194, 155, 229, 181, 101, 168, 236, 230, 74, 133, 208, 121, - 122, 111, 190, 178, 86, 94, 88, 95, 154, 175, 208, 123, 235, 149, - 123, 43, 171, 37, 10, 45, 91, 44, 175, 46, 44, 205, 151, 239, - 150, 22, 139, 180, 188, 76, 151, 87, 104, 233, 229, 210, 242, 26, - 93, 189, 61, 191, 180, 212, 221, 80, 66, 87, 94, 89, 46, 85, - 128, 250, 100, 51, 233, 141, 18, 93, 42, 207, 223, 88, 42, 65, - 85, 216, 206, 197, 114, 165, 180, 176, 6, 13, 138, 127, 45, 148, - 23, 75, 203, 107, 243, 75, 5, 66, 87, 239, 149, 22, 202, 243, - 75, 5, 90, 250, 80, 233, 238, 189, 165, 249, 202, 171, 5, 129, - 116, 181, 244, 237, 235, 165, 229, 181, 242, 252, 18, 93, 156, 191, - 59, 127, 171, 180, 74, 39, 222, 139, 43, 247, 42, 43, 11, 235, - 149, 210, 93, 160, 122, 229, 38, 93, 93, 191, 177, 186, 86, 94, - 91, 95, 43, 209, 91, 43, 43, 139, 200, 236, 213, 82, 229, 229, - 242, 66, 105, 245, 58, 93, 90, 89, 69, 134, 173, 175, 150, 10, - 132, 46, 206, 175, 205, 99, 213, 247, 42, 43, 55, 203, 107, 171, - 215, 225, 247, 141, 245, 213, 50, 50, 174, 188, 188, 86, 170, 84, - 214, 239, 173, 149, 87, 150, 39, 233, 237, 149, 87, 74, 47, 151, - 42, 116, 97, 126, 125, 181, 180, 136, 28, 94, 89, 134, 214, 130, - 172, 148, 86, 42, 175, 2, 90, 224, 3, 246, 64, 129, 190, 114, - 187, 180, 118, 187, 84, 1, 166, 34, 183, 230, 129, 13, 171, 107, - 149, 242, 194, 90, 50, 219, 74, 133, 174, 173, 84, 214, 72, 162, - 157, 116, 185, 116, 107, 169, 124, 171, 180, 188, 80, 130, 207, 43, - 128, 230, 149, 242, 106, 105, 146, 206, 87, 202, 171, 144, 161, 140, - 21, 211, 87, 230, 95, 165, 43, 235, 216, 106, 232, 168, 245, 213, - 18, 225, 191, 19, 162, 91, 192, 254, 164, 229, 155, 116, 126, 241, - 229, 50, 80, 46, 114, 223, 91, 89, 93, 45, 11, 113, 65, 182, - 45, 220, 22, 60, 47, 18, 146, 33, 154, 110, 25, 180, 111, 12, - 126, 101, 44, 35, 223, 119, 157, 12, 16, 61, 115, 142, 255, 228, - 137, 103, 250, 78, 97, 226, 41, 254, 147, 39, 158, 237, 43, 99, - 226, 32, 255, 201, 19, 207, 245, 21, 48, 81, 227, 63, 121, 226, - 211, 125, 211, 152, 40, 126, 242, 196, 241, 190, 60, 38, 18, 254, - 147, 39, 78, 244, 157, 198, 196, 179, 252, 231, 255, 114, 130, 232, - 102, 159, 149, 254, 30, 13, 166, 190, 220, 191, 57, 65, 231, 169, - 154, 122, 81, 65, 178, 144, 121, 81, 72, 109, 218, 242, 29, 47, - 66, 181, 230, 52, 97, 154, 169, 177, 22, 243, 106, 204, 67, 181, - 104, 123, 29, 158, 254, 182, 239, 161, 54, 113, 253, 170, 237, 18, - 90, 181, 93, 230, 213, 236, 160, 64, 153, 7, 218, 191, 70, 109, - 192, 85, 245, 219, 188, 156, 176, 14, 80, 151, 214, 3, 187, 26, - 207, 24, 242, 3, 76, 8, 96, 42, 32, 12, 51, 166, 239, 114, - 165, 72, 215, 182, 152, 64, 228, 192, 84, 234, 218, 145, 179, 205, - 64, 169, 217, 30, 101, 45, 191, 186, 69, 237, 136, 174, 175, 45, - 208, 166, 83, 243, 80, 163, 251, 30, 161, 119, 108, 175, 13, 211, - 192, 108, 129, 206, 94, 125, 102, 166, 32, 21, 117, 43, 240, 93, - 214, 138, 156, 42, 189, 21, 176, 134, 31, 56, 182, 167, 168, 167, - 59, 91, 78, 117, 139, 178, 135, 17, 3, 154, 80, 65, 239, 145, - 107, 211, 174, 62, 216, 177, 3, 200, 225, 211, 14, 179, 3, 234, - 123, 12, 20, 32, 76, 249, 77, 199, 107, 71, 12, 231, 75, 122, - 101, 70, 181, 207, 245, 189, 70, 145, 46, 49, 187, 21, 55, 57, - 96, 52, 31, 54, 153, 29, 176, 90, 158, 134, 62, 159, 128, 61, - 159, 186, 204, 110, 17, 145, 141, 70, 246, 166, 203, 160, 229, 30, - 99, 192, 215, 186, 31, 112, 83, 164, 5, 115, 43, 159, 208, 219, - 33, 204, 74, 54, 253, 240, 220, 165, 169, 45, 191, 29, 80, 215, - 241, 152, 29, 16, 138, 216, 95, 159, 120, 180, 209, 1, 253, 57, - 141, 57, 39, 81, 139, 111, 49, 26, 160, 149, 227, 132, 56, 39, - 208, 153, 153, 153, 217, 41, 252, 111, 109, 102, 230, 26, 254, 247, - 26, 52, 253, 234, 213, 171, 87, 167, 102, 231, 166, 46, 206, 174, - 205, 93, 188, 118, 249, 234, 181, 203, 87, 139, 87, 229, 159, 215, - 138, 244, 70, 135, 64, 71, 70, 129, 83, 141, 128, 192, 72, 52, - 17, 177, 23, 232, 14, 163, 204, 11, 219, 1, 227, 169, 59, 140, - 86, 129, 203, 190, 183, 205, 130, 136, 247, 47, 159, 148, 232, 135, - 43, 55, 23, 8, 189, 120, 241, 226, 213, 184, 45, 59, 59, 59, - 69, 135, 69, 117, 180, 16, 131, 122, 21, 254, 135, 28, 197, 232, - 97, 52, 9, 22, 27, 163, 80, 179, 215, 8, 161, 81, 103, 104, - 233, 161, 221, 108, 185, 44, 36, 68, 254, 164, 179, 215, 232, 130, - 223, 108, 181, 35, 150, 24, 11, 88, 225, 189, 149, 213, 242, 135, - 232, 125, 224, 204, 196, 228, 253, 162, 48, 121, 226, 76, 202, 248, - 188, 206, 191, 196, 198, 115, 200, 162, 13, 209, 193, 19, 88, 124, - 121, 125, 105, 105, 114, 114, 207, 124, 40, 239, 19, 51, 147, 215, - 19, 52, 205, 189, 23, 77, 13, 22, 1, 22, 191, 94, 179, 59, - 9, 218, 194, 40, 104, 87, 35, 172, 96, 219, 118, 105, 180, 45, - 106, 236, 202, 254, 116, 180, 93, 160, 72, 208, 245, 15, 218, 164, - 237, 98, 180, 13, 208, 163, 90, 196, 51, 181, 67, 86, 165, 231, - 233, 236, 204, 76, 119, 11, 47, 238, 219, 194, 87, 28, 239, 226, - 28, 189, 127, 139, 69, 171, 157, 48, 98, 77, 248, 60, 31, 222, - 116, 92, 182, 214, 221, 17, 55, 203, 75, 165, 181, 242, 221, 18, - 173, 71, 130, 140, 253, 202, 60, 93, 143, 36, 165, 235, 229, 229, - 181, 43, 151, 104, 228, 84, 31, 132, 244, 121, 58, 49, 49, 193, - 83, 38, 235, 81, 177, 182, 115, 219, 105, 108, 45, 218, 17, 150, - 154, 164, 207, 61, 71, 47, 206, 77, 210, 119, 40, 126, 91, 242, - 119, 228, 39, 201, 183, 233, 105, 58, 15, 244, 214, 252, 157, 16, - 81, 194, 96, 153, 157, 153, 73, 232, 176, 176, 168, 50, 112, 45, - 53, 123, 101, 247, 48, 82, 216, 160, 248, 236, 149, 75, 151, 46, - 61, 115, 241, 202, 76, 172, 54, 54, 89, 221, 15, 24, 93, 247, - 156, 135, 18, 203, 213, 103, 102, 122, 177, 20, 63, 88, 103, 78, - 240, 246, 211, 137, 9, 206, 148, 105, 236, 44, 248, 51, 73, 167, - 146, 228, 188, 135, 4, 3, 30, 96, 151, 196, 115, 46, 129, 7, - 5, 96, 178, 75, 0, 46, 237, 43, 0, 119, 236, 109, 155, 222, - 231, 29, 89, 172, 182, 131, 128, 121, 17, 100, 185, 235, 184, 174, - 19, 38, 4, 0, 180, 41, 109, 98, 42, 125, 158, 238, 95, 224, - 17, 98, 78, 159, 143, 83, 139, 30, 219, 185, 209, 118, 220, 26, - 11, 38, 38, 161, 97, 171, 130, 67, 162, 10, 206, 152, 73, 142, - 11, 254, 64, 158, 101, 222, 118, 199, 139, 160, 229, 34, 39, 111, - 186, 104, 54, 114, 96, 178, 184, 9, 152, 145, 150, 152, 7, 151, - 223, 131, 7, 101, 47, 140, 108, 47, 42, 122, 254, 78, 162, 217, - 34, 149, 122, 254, 14, 125, 158, 118, 229, 121, 100, 75, 99, 194, - 223, 187, 201, 158, 191, 83, 108, 176, 168, 4, 194, 198, 211, 38, - 38, 19, 45, 239, 110, 189, 200, 12, 192, 196, 62, 45, 189, 178, - 111, 75, 69, 127, 73, 59, 131, 222, 235, 68, 91, 220, 145, 232, - 18, 180, 100, 71, 77, 76, 246, 74, 225, 45, 22, 45, 196, 253, - 62, 49, 137, 186, 254, 206, 234, 202, 50, 189, 107, 183, 90, 142, - 215, 32, 132, 150, 61, 158, 194, 189, 246, 2, 154, 1, 9, 62, - 117, 90, 56, 213, 117, 25, 46, 124, 234, 16, 54, 3, 193, 9, - 232, 125, 205, 63, 188, 42, 176, 93, 108, 48, 91, 10, 28, 13, - 79, 133, 202, 242, 31, 1, 187, 225, 221, 169, 143, 52, 125, 47, - 218, 122, 119, 234, 35, 53, 187, 243, 238, 218, 71, 96, 242, 126, - 247, 218, 71, 154, 142, 247, 238, 181, 143, 132, 172, 250, 238, 135, - 139, 31, 1, 115, 9, 134, 236, 187, 175, 191, 150, 39, 116, 103, - 139, 5, 140, 242, 210, 128, 200, 118, 119, 236, 78, 72, 217, 67, - 176, 224, 192, 217, 227, 182, 64, 29, 172, 128, 154, 211, 112, 162, - 16, 140, 26, 151, 81, 81, 83, 129, 98, 85, 5, 66, 121, 101, - 5, 138, 181, 21, 112, 178, 197, 42, 209, 46, 121, 155, 5, 254, - 84, 203, 174, 213, 184, 251, 24, 237, 248, 18, 27, 179, 171, 91, - 220, 38, 147, 118, 28, 216, 127, 66, 165, 20, 132, 5, 5, 19, - 121, 195, 167, 237, 22, 154, 9, 178, 232, 132, 83, 100, 69, 145, - 56, 187, 183, 181, 55, 89, 32, 88, 191, 223, 226, 152, 121, 77, - 249, 215, 242, 52, 108, 215, 235, 206, 67, 176, 71, 157, 170, 13, - 6, 22, 244, 34, 200, 1, 90, 162, 19, 249, 245, 181, 133, 252, - 228, 245, 174, 84, 194, 13, 198, 183, 218, 78, 192, 106, 69, 58, - 79, 113, 121, 229, 34, 23, 134, 16, 125, 114, 231, 109, 22, 208, - 112, 203, 111, 187, 53, 201, 202, 118, 200, 208, 154, 156, 176, 67, - 85, 91, 141, 110, 118, 8, 144, 49, 9, 29, 224, 129, 23, 236, - 113, 147, 102, 183, 40, 1, 35, 237, 174, 170, 90, 118, 16, 198, - 213, 108, 50, 66, 209, 166, 3, 11, 167, 90, 101, 173, 136, 110, - 250, 209, 22, 214, 9, 101, 249, 162, 129, 108, 67, 184, 139, 14, - 48, 123, 253, 122, 61, 100, 17, 154, 107, 55, 253, 128, 50, 62, - 214, 10, 52, 63, 55, 51, 251, 12, 204, 14, 179, 151, 215, 102, - 102, 175, 93, 156, 185, 54, 123, 185, 56, 51, 251, 90, 94, 72, - 119, 72, 17, 86, 211, 75, 203, 14, 35, 66, 49, 39, 214, 239, - 123, 177, 221, 124, 185, 64, 1, 91, 81, 12, 32, 123, 219, 94, - 173, 6, 78, 43, 42, 128, 181, 219, 101, 170, 217, 20, 166, 71, - 234, 111, 190, 201, 170, 17, 183, 242, 192, 116, 228, 194, 206, 229, - 17, 197, 31, 212, 85, 205, 14, 106, 132, 126, 56, 242, 203, 171, - 43, 171, 56, 200, 38, 38, 247, 48, 80, 139, 77, 255, 109, 199, - 117, 109, 28, 93, 204, 155, 90, 95, 157, 174, 249, 213, 112, 250, - 21, 182, 57, 29, 147, 50, 93, 97, 117, 22, 48, 175, 202, 166, - 111, 185, 254, 166, 237, 110, 172, 32, 13, 225, 52, 16, 52, 157, - 168, 100, 18, 215, 174, 182, 252, 90, 17, 26, 195, 53, 77, 1, - 199, 57, 39, 137, 222, 7, 139, 17, 152, 94, 148, 63, 238, 203, - 6, 65, 83, 55, 153, 108, 45, 171, 145, 61, 155, 72, 232, 135, - 239, 135, 81, 80, 199, 162, 137, 22, 249, 213, 176, 216, 226, 154, - 13, 218, 50, 55, 237, 58, 155, 129, 29, 116, 208, 236, 46, 110, - 69, 77, 247, 12, 254, 146, 101, 39, 113, 205, 133, 40, 65, 150, - 149, 132, 45, 86, 165, 227, 231, 94, 157, 58, 215, 156, 58, 87, - 91, 59, 119, 251, 218, 185, 187, 215, 206, 173, 22, 207, 213, 95, - 27, 47, 210, 37, 231, 1, 219, 113, 66, 134, 110, 14, 48, 40, - 238, 165, 118, 200, 56, 182, 59, 126, 205, 70, 97, 29, 15, 233, - 135, 239, 151, 87, 87, 164, 81, 115, 147, 43, 171, 154, 0, 39, - 38, 239, 191, 62, 193, 87, 42, 133, 158, 123, 211, 175, 241, 158, - 128, 31, 83, 232, 47, 216, 45, 7, 59, 68, 166, 114, 47, 130, - 211, 58, 189, 27, 55, 182, 83, 86, 112, 110, 110, 241, 220, 220, - 34, 161, 147, 192, 72, 127, 19, 87, 8, 109, 209, 206, 136, 5, - 180, 106, 183, 112, 128, 248, 117, 218, 96, 30, 11, 108, 62, 212, - 228, 48, 11, 185, 90, 86, 252, 47, 18, 66, 200, 32, 49, 204, - 62, 205, 50, 191, 71, 203, 12, 147, 47, 104, 196, 52, 251, 244, - 62, 203, 252, 126, 77, 31, 205, 253, 160, 70, 43, 177, 135, 43, - 101, 223, 175, 163, 200, 35, 143, 67, 199, 171, 38, 173, 44, 178, - 183, 153, 69, 239, 182, 195, 8, 100, 225, 81, 110, 17, 217, 203, - 47, 122, 141, 58, 94, 213, 109, 135, 206, 54, 56, 138, 7, 73, - 10, 200, 75, 33, 125, 253, 18, 212, 0, 204, 28, 146, 160, 1, - 160, 53, 66, 254, 128, 55, 70, 179, 204, 79, 105, 186, 149, 251, - 31, 53, 186, 236, 123, 83, 30, 107, 112, 63, 184, 203, 155, 182, - 165, 215, 8, 142, 228, 222, 222, 244, 178, 40, 168, 28, 204, 109, - 219, 109, 179, 144, 47, 73, 198, 200, 112, 225, 52, 140, 28, 215, - 165, 91, 246, 54, 163, 94, 178, 78, 68, 45, 10, 18, 238, 189, - 113, 7, 189, 238, 7, 224, 24, 203, 213, 131, 94, 134, 9, 167, - 177, 32, 254, 39, 123, 48, 69, 75, 97, 59, 37, 83, 52, 108, - 118, 230, 160, 4, 13, 0, 179, 195, 155, 105, 174, 95, 201, 111, - 60, 75, 46, 54, 252, 98, 117, 43, 240, 155, 78, 187, 137, 66, - 234, 182, 171, 206, 116, 192, 194, 182, 27, 213, 54, 249, 146, 250, - 244, 246, 236, 116, 213, 111, 54, 125, 79, 236, 110, 100, 33, 83, - 81, 102, 42, 110, 207, 230, 222, 107, 67, 36, 191, 67, 250, 95, - 182, 3, 199, 246, 34, 235, 18, 49, 106, 172, 62, 166, 81, 99, - 98, 112, 46, 95, 236, 197, 85, 20, 249, 138, 139, 172, 94, 242, - 162, 160, 83, 129, 236, 185, 43, 36, 35, 19, 172, 44, 49, 30, - 176, 14, 238, 157, 12, 84, 224, 167, 53, 74, 82, 200, 80, 220, - 55, 25, 168, 112, 224, 154, 254, 172, 150, 191, 68, 8, 87, 98, - 247, 108, 39, 120, 220, 146, 249, 255, 191, 70, 14, 222, 114, 34, - 199, 101, 225, 130, 223, 108, 58, 145, 101, 17, 115, 203, 15, 35, - 81, 20, 127, 91, 99, 164, 191, 21, 248, 160, 230, 68, 105, 9, - 66, 61, 1, 171, 143, 25, 188, 158, 128, 213, 173, 83, 100, 176, - 138, 152, 54, 182, 236, 112, 107, 204, 196, 47, 132, 39, 221, 182, - 195, 45, 43, 71, 50, 45, 63, 196, 85, 243, 177, 20, 238, 10, - 41, 56, 223, 34, 7, 110, 177, 32, 112, 162, 5, 220, 65, 121, - 159, 196, 28, 33, 105, 190, 243, 130, 244, 24, 21, 1, 97, 141, - 118, 84, 221, 10, 89, 132, 244, 64, 141, 2, 206, 187, 100, 136, - 55, 252, 158, 160, 225, 91, 102, 64, 178, 125, 102, 79, 251, 126, - 64, 35, 35, 221, 213, 85, 144, 194, 231, 72, 134, 217, 129, 235, - 48, 81, 239, 224, 28, 221, 45, 47, 61, 5, 85, 9, 235, 89, - 146, 118, 193, 216, 225, 196, 61, 78, 89, 145, 63, 191, 195, 119, - 235, 56, 17, 87, 118, 17, 145, 235, 221, 137, 43, 42, 43, 38, - 81, 253, 92, 79, 245, 143, 42, 37, 43, 94, 33, 3, 171, 184, - 11, 84, 97, 117, 235, 89, 210, 223, 224, 50, 40, 234, 61, 190, - 187, 1, 66, 72, 43, 172, 126, 187, 175, 34, 179, 223, 200, 144, - 116, 136, 110, 93, 126, 137, 144, 56, 203, 183, 218, 135, 55, 102, - 95, 155, 126, 60, 125, 113, 157, 167, 180, 54, 239, 252, 111, 184, - 103, 56, 212, 247, 147, 154, 70, 254, 149, 137, 123, 134, 67, 125, - 214, 220, 47, 155, 93, 219, 127, 179, 87, 209, 84, 93, 90, 95, - 40, 211, 249, 118, 180, 229, 7, 184, 240, 180, 228, 84, 153, 135, - 118, 185, 87, 19, 59, 58, 243, 45, 187, 10, 57, 249, 151, 2, - 125, 153, 5, 161, 227, 123, 116, 174, 56, 67, 39, 32, 67, 94, - 124, 202, 131, 211, 221, 241, 219, 184, 153, 227, 249, 17, 154, 166, - 124, 226, 3, 139, 158, 61, 68, 227, 209, 1, 67, 172, 217, 114, - 29, 27, 230, 48, 185, 179, 36, 209, 23, 9, 125, 85, 96, 80, - 51, 109, 213, 111, 117, 96, 182, 72, 100, 163, 118, 36, 252, 174, - 228, 188, 111, 35, 165, 156, 73, 60, 95, 56, 189, 84, 94, 40, - 45, 175, 150, 166, 230, 138, 51, 132, 208, 117, 207, 101, 97, 108, - 100, 163, 121, 218, 106, 185, 78, 21, 39, 112, 215, 222, 161, 126, - 64, 237, 70, 192, 184, 31, 225, 120, 184, 117, 228, 120, 141, 130, - 218, 99, 74, 236, 129, 117, 177, 73, 82, 230, 132, 93, 25, 112, - 119, 77, 237, 18, 221, 152, 95, 45, 175, 22, 8, 125, 165, 188, - 118, 123, 101, 125, 173, 107, 139, 7, 119, 71, 22, 203, 107, 229, - 149, 101, 220, 191, 152, 95, 126, 149, 190, 84, 94, 94, 44, 80, - 177, 189, 38, 156, 38, 32, 209, 1, 6, 226, 6, 237, 42, 99, - 93, 213, 215, 197, 94, 155, 218, 1, 115, 109, 175, 209, 182, 27, - 140, 54, 252, 109, 22, 120, 96, 154, 196, 219, 96, 184, 194, 77, - 168, 235, 52, 29, 190, 56, 27, 238, 110, 145, 218, 43, 200, 246, - 29, 37, 3, 68, 55, 250, 44, 195, 234, 155, 20, 11, 247, 163, - 125, 55, 229, 102, 0, 252, 252, 3, 130, 11, 247, 230, 76, 223, - 101, 45, 247, 59, 132, 206, 211, 7, 172, 51, 133, 42, 158, 54, - 237, 22, 173, 177, 176, 26, 56, 155, 64, 5, 24, 124, 219, 124, - 230, 225, 182, 0, 140, 71, 90, 181, 177, 70, 20, 206, 208, 110, - 178, 56, 85, 26, 182, 236, 33, 171, 34, 107, 29, 143, 214, 156, - 58, 90, 212, 17, 5, 95, 168, 128, 173, 23, 222, 5, 174, 170, - 199, 223, 87, 86, 11, 244, 214, 189, 117, 185, 219, 28, 127, 0, - 97, 4, 241, 228, 46, 28, 114, 55, 104, 123, 220, 148, 117, 237, - 70, 88, 132, 70, 72, 58, 107, 172, 238, 120, 168, 185, 192, 234, - 139, 218, 1, 11, 147, 237, 192, 188, 49, 193, 88, 147, 29, 119, - 197, 30, 88, 156, 144, 86, 109, 215, 5, 113, 131, 98, 10, 15, - 161, 183, 218, 78, 141, 185, 14, 184, 84, 208, 170, 61, 202, 214, - 88, 232, 52, 188, 107, 132, 78, 209, 53, 24, 101, 65, 219, 101, - 180, 1, 197, 192, 137, 182, 35, 96, 125, 72, 239, 174, 175, 174, - 1, 219, 132, 65, 169, 54, 128, 21, 30, 92, 141, 155, 7, 155, - 178, 129, 163, 180, 197, 170, 192, 93, 174, 79, 120, 207, 52, 156, - 109, 230, 117, 81, 200, 87, 32, 252, 118, 99, 11, 198, 73, 213, - 247, 66, 7, 196, 198, 137, 0, 89, 203, 14, 209, 139, 154, 104, - 249, 17, 243, 34, 199, 118, 221, 14, 48, 243, 129, 227, 118, 38, - 139, 180, 92, 167, 14, 34, 112, 154, 45, 63, 192, 21, 162, 200, - 143, 123, 196, 1, 231, 204, 174, 6, 126, 24, 2, 50, 155, 86, - 89, 128, 154, 160, 230, 52, 153, 135, 170, 103, 130, 21, 27, 69, - 112, 109, 113, 92, 236, 176, 77, 164, 141, 111, 81, 40, 241, 216, - 117, 170, 128, 210, 208, 137, 240, 40, 1, 184, 187, 85, 24, 74, - 78, 232, 187, 54, 119, 228, 129, 43, 200, 154, 128, 41, 158, 217, - 192, 66, 97, 48, 202, 238, 70, 215, 144, 238, 34, 198, 230, 59, - 223, 104, 56, 2, 49, 27, 97, 219, 137, 24, 248, 82, 238, 36, - 114, 120, 5, 80, 115, 159, 199, 70, 14, 65, 79, 36, 199, 192, - 14, 26, 175, 78, 13, 170, 173, 219, 142, 219, 14, 24, 223, 194, - 226, 30, 182, 216, 179, 121, 239, 190, 94, 94, 121, 172, 254, 22, - 71, 67, 196, 231, 120, 148, 134, 44, 162, 44, 12, 85, 191, 1, - 154, 72, 44, 95, 48, 60, 157, 128, 114, 177, 229, 132, 145, 31, - 116, 16, 89, 151, 79, 239, 212, 233, 173, 101, 106, 7, 13, 222, - 29, 118, 211, 247, 26, 170, 141, 113, 53, 45, 219, 9, 66, 193, - 116, 187, 86, 195, 13, 33, 192, 229, 177, 29, 81, 94, 80, 200, - 171, 118, 106, 64, 80, 164, 230, 129, 46, 89, 180, 185, 207, 0, - 100, 58, 81, 24, 147, 134, 43, 1, 11, 98, 238, 44, 36, 137, - 64, 218, 112, 228, 108, 182, 171, 15, 88, 116, 141, 43, 60, 152, - 12, 121, 66, 129, 98, 175, 230, 171, 78, 158, 231, 194, 165, 199, - 174, 108, 152, 34, 243, 185, 142, 215, 126, 56, 21, 48, 23, 179, - 199, 2, 112, 45, 41, 24, 68, 76, 87, 224, 104, 87, 195, 238, - 89, 93, 2, 211, 97, 80, 157, 134, 242, 142, 215, 152, 198, 74, - 54, 253, 104, 186, 71, 162, 192, 131, 68, 255, 209, 152, 201, 28, - 34, 31, 21, 222, 163, 113, 73, 63, 153, 11, 80, 115, 38, 180, - 132, 96, 88, 172, 161, 94, 98, 29, 228, 152, 112, 164, 154, 194, - 229, 217, 182, 93, 167, 70, 99, 203, 93, 176, 73, 101, 44, 208, - 144, 79, 53, 78, 128, 103, 55, 194, 40, 176, 29, 47, 2, 171, - 225, 0, 247, 0, 211, 64, 193, 97, 9, 105, 150, 113, 233, 200, - 81, 9, 25, 150, 113, 233, 248, 9, 242, 50, 209, 77, 205, 50, - 159, 237, 123, 81, 203, 221, 1, 165, 195, 215, 45, 187, 197, 162, - 72, 215, 58, 45, 167, 138, 210, 135, 7, 66, 112, 78, 179, 27, - 13, 62, 15, 51, 70, 203, 222, 182, 207, 79, 7, 21, 35, 187, - 17, 114, 118, 104, 154, 101, 60, 155, 177, 200, 75, 196, 52, 53, - 96, 199, 117, 125, 56, 247, 2, 173, 176, 6, 123, 120, 141, 190, - 241, 97, 123, 234, 237, 215, 225, 175, 153, 169, 171, 27, 175, 159, - 159, 152, 238, 73, 152, 60, 127, 150, 208, 187, 246, 67, 234, 50, - 175, 17, 109, 93, 163, 87, 46, 137, 166, 105, 224, 250, 26, 215, - 245, 140, 132, 52, 203, 184, 62, 112, 64, 66, 134, 101, 92, 63, - 148, 37, 167, 176, 90, 205, 50, 94, 208, 71, 114, 86, 23, 166, - 185, 203, 87, 20, 42, 45, 5, 57, 36, 42, 160, 249, 133, 129, - 33, 9, 25, 150, 241, 194, 176, 69, 254, 161, 78, 116, 83, 183, - 204, 91, 125, 111, 104, 185, 143, 233, 180, 203, 47, 146, 211, 137, - 24, 24, 210, 162, 151, 253, 44, 12, 82, 202, 253, 28, 176, 61, - 28, 197, 44, 66, 3, 219, 163, 118, 195, 118, 188, 48, 194, 165, - 23, 155, 6, 12, 49, 248, 65, 103, 92, 21, 114, 253, 70, 145, - 222, 245, 131, 216, 138, 128, 190, 40, 96, 238, 186, 202, 70, 48, - 31, 12, 178, 136, 218, 110, 232, 247, 16, 6, 166, 238, 180, 48, - 108, 167, 3, 86, 135, 82, 155, 142, 199, 15, 28, 169, 179, 91, - 18, 21, 123, 232, 128, 2, 119, 188, 2, 204, 5, 226, 224, 17, - 30, 17, 98, 15, 249, 138, 137, 97, 2, 115, 111, 101, 14, 147, - 55, 136, 105, 234, 208, 193, 119, 116, 43, 247, 237, 40, 239, 189, - 234, 65, 114, 1, 136, 80, 67, 89, 14, 55, 238, 20, 240, 179, - 95, 197, 170, 223, 204, 23, 161, 227, 189, 154, 45, 180, 6, 116, - 134, 142, 125, 126, 71, 116, 148, 142, 125, 126, 103, 224, 160, 132, - 12, 203, 184, 147, 29, 70, 81, 211, 129, 172, 187, 250, 97, 20, - 53, 201, 75, 113, 12, 202, 83, 156, 232, 37, 2, 134, 121, 190, - 184, 71, 181, 32, 31, 119, 85, 181, 32, 31, 119, 7, 178, 18, - 50, 44, 227, 238, 200, 40, 249, 164, 134, 245, 234, 150, 81, 209, - 135, 115, 223, 169, 81, 33, 25, 1, 171, 203, 122, 2, 86, 15, - 167, 183, 152, 93, 11, 167, 155, 182, 227, 229, 249, 196, 196, 87, - 187, 99, 190, 211, 29, 59, 164, 117, 22, 85, 183, 208, 150, 92, - 246, 121, 167, 108, 6, 182, 87, 221, 194, 54, 20, 208, 136, 79, - 162, 227, 31, 243, 123, 177, 76, 79, 1, 69, 146, 118, 224, 75, - 69, 12, 19, 93, 215, 13, 203, 168, 28, 202, 146, 171, 72, 186, - 97, 25, 235, 250, 209, 92, 65, 82, 126, 187, 244, 33, 186, 122, - 123, 126, 182, 136, 103, 18, 92, 127, 135, 5, 104, 8, 238, 81, - 137, 145, 130, 178, 178, 18, 67, 179, 140, 245, 129, 81, 9, 1, - 222, 167, 198, 200, 63, 215, 177, 22, 211, 50, 94, 215, 15, 231, - 190, 172, 211, 69, 208, 135, 44, 4, 35, 211, 143, 108, 151, 250, - 1, 88, 43, 120, 110, 14, 234, 15, 101, 87, 5, 172, 142, 54, - 28, 31, 85, 219, 172, 64, 155, 190, 231, 71, 190, 39, 212, 145, - 227, 85, 3, 102, 135, 124, 175, 37, 98, 13, 22, 240, 21, 255, - 128, 1, 34, 230, 213, 88, 141, 128, 41, 10, 168, 185, 255, 194, - 87, 147, 193, 216, 9, 193, 219, 80, 203, 203, 180, 225, 71, 126, - 242, 88, 67, 195, 137, 166, 188, 118, 115, 147, 5, 44, 32, 148, - 47, 62, 208, 150, 219, 110, 56, 94, 145, 27, 15, 84, 174, 138, - 133, 210, 20, 70, 237, 104, 135, 116, 135, 185, 46, 120, 40, 184, - 209, 72, 32, 37, 146, 230, 115, 88, 221, 98, 77, 244, 74, 48, - 51, 90, 106, 33, 88, 101, 46, 30, 57, 228, 99, 122, 207, 1, - 96, 166, 128, 125, 253, 18, 210, 44, 227, 245, 140, 148, 68, 211, - 176, 140, 215, 71, 70, 9, 37, 240, 211, 180, 251, 222, 212, 114, - 163, 116, 94, 145, 45, 22, 53, 196, 192, 133, 78, 178, 51, 163, - 228, 54, 49, 77, 3, 6, 110, 85, 183, 114, 215, 101, 102, 24, - 30, 92, 212, 186, 135, 200, 84, 192, 182, 29, 182, 179, 215, 112, - 69, 42, 12, 28, 162, 85, 33, 10, 6, 14, 209, 170, 24, 162, - 6, 14, 209, 106, 118, 152, 92, 196, 58, 53, 203, 96, 250, 225, - 220, 211, 138, 64, 174, 151, 246, 30, 149, 18, 61, 12, 69, 166, - 208, 195, 80, 100, 98, 40, 26, 56, 20, 217, 200, 40, 153, 68, - 244, 186, 101, 52, 244, 145, 220, 113, 202, 87, 139, 40, 239, 71, - 129, 125, 118, 238, 226, 165, 203, 10, 41, 140, 145, 134, 224, 170, - 129, 99, 164, 145, 25, 146, 144, 97, 25, 141, 97, 139, 76, 32, - 82, 195, 50, 28, 253, 112, 238, 24, 189, 7, 220, 68, 187, 172, - 27, 175, 194, 9, 67, 194, 81, 56, 129, 219, 78, 70, 18, 10, - 67, 194, 25, 25, 37, 151, 136, 110, 154, 150, 217, 236, 219, 209, - 114, 19, 116, 145, 181, 2, 134, 59, 52, 215, 232, 122, 200, 122, - 102, 24, 152, 30, 152, 93, 19, 189, 7, 61, 223, 204, 28, 225, - 90, 199, 132, 238, 107, 233, 22, 104, 157, 181, 174, 67, 166, 117, - 135, 185, 181, 80, 104, 226, 122, 7, 189, 134, 40, 49, 189, 136, - 141, 38, 152, 9, 192, 34, 7, 215, 90, 106, 35, 2, 13, 99, - 1, 140, 177, 120, 62, 219, 100, 174, 191, 35, 209, 57, 56, 118, - 133, 139, 194, 199, 172, 104, 189, 137, 82, 208, 18, 221, 100, 162, - 20, 180, 132, 20, 152, 40, 5, 173, 236, 48, 25, 68, 210, 53, - 203, 120, 75, 24, 40, 38, 246, 238, 91, 170, 24, 244, 238, 91, - 162, 119, 77, 236, 221, 183, 70, 70, 69, 49, 221, 50, 2, 125, - 88, 124, 130, 254, 11, 84, 49, 64, 25, 8, 29, 199, 213, 90, - 112, 40, 75, 54, 176, 152, 97, 25, 219, 250, 225, 92, 5, 249, - 180, 71, 3, 197, 84, 85, 149, 60, 71, 200, 245, 27, 202, 133, - 239, 157, 65, 9, 63, 11, 172, 26, 14, 221, 190, 45, 186, 221, - 196, 110, 223, 206, 200, 22, 64, 183, 111, 143, 140, 146, 167, 9, - 140, 227, 212, 219, 125, 223, 161, 105, 185, 163, 93, 253, 190, 232, - 203, 69, 26, 209, 209, 41, 205, 50, 222, 206, 28, 35, 55, 136, - 105, 166, 160, 159, 223, 209, 79, 230, 46, 35, 249, 160, 145, 195, - 72, 210, 170, 154, 128, 75, 36, 85, 183, 93, 83, 126, 4, 158, - 149, 18, 20, 166, 208, 36, 124, 71, 207, 74, 72, 179, 140, 119, - 134, 143, 74, 200, 176, 140, 119, 142, 159, 32, 107, 88, 155, 102, - 25, 31, 213, 143, 231, 110, 209, 178, 192, 231, 123, 110, 167, 183, - 190, 80, 218, 13, 118, 132, 190, 5, 63, 170, 229, 118, 248, 132, - 1, 233, 124, 163, 69, 213, 175, 165, 1, 173, 172, 31, 250, 248, - 163, 195, 79, 73, 200, 176, 140, 143, 230, 142, 145, 107, 68, 55, - 211, 86, 250, 227, 90, 223, 247, 107, 90, 174, 64, 231, 197, 105, - 50, 232, 30, 181, 133, 3, 102, 142, 216, 183, 7, 163, 212, 3, - 93, 90, 228, 187, 56, 105, 205, 50, 63, 174, 101, 134, 201, 243, - 196, 52, 211, 122, 159, 101, 126, 143, 166, 79, 230, 166, 145, 111, - 190, 91, 3, 190, 197, 135, 3, 246, 231, 216, 65, 146, 130, 226, - 105, 44, 127, 76, 130, 184, 69, 116, 252, 172, 4, 13, 0, 199, - 39, 200, 29, 172, 75, 179, 204, 239, 211, 244, 241, 220, 115, 221, - 92, 75, 236, 60, 237, 102, 21, 80, 212, 205, 42, 142, 90, 75, - 35, 50, 89, 177, 134, 184, 143, 231, 37, 104, 0, 120, 238, 105, - 114, 131, 232, 102, 191, 149, 254, 164, 214, 247, 57, 77, 203, 93, - 74, 110, 84, 225, 216, 230, 219, 155, 220, 180, 84, 167, 235, 189, - 40, 240, 93, 202, 215, 71, 5, 215, 250, 53, 203, 252, 36, 112, - 237, 235, 160, 85, 250, 51, 125, 86, 250, 211, 154, 254, 89, 205, - 200, 125, 141, 43, 150, 61, 11, 83, 206, 119, 186, 2, 205, 148, - 54, 158, 19, 210, 176, 221, 106, 249, 1, 56, 253, 40, 30, 78, - 72, 155, 126, 147, 121, 17, 174, 53, 112, 247, 153, 35, 224, 199, - 18, 161, 23, 54, 25, 73, 20, 115, 60, 90, 111, 131, 127, 47, - 188, 121, 207, 247, 166, 36, 254, 134, 19, 21, 104, 216, 222, 220, - 230, 235, 158, 5, 202, 39, 36, 10, 78, 166, 221, 96, 68, 120, - 140, 33, 95, 66, 232, 200, 185, 153, 31, 70, 216, 98, 1, 227, - 44, 238, 207, 64, 103, 126, 90, 203, 12, 145, 105, 104, 50, 72, - 202, 143, 104, 230, 177, 220, 105, 58, 47, 45, 46, 199, 83, 173, - 138, 21, 167, 232, 162, 126, 148, 141, 31, 209, 204, 33, 9, 106, - 0, 30, 58, 34, 65, 3, 192, 163, 57, 242, 28, 209, 205, 140, - 149, 254, 81, 173, 239, 39, 53, 45, 87, 236, 238, 162, 184, 34, - 123, 239, 170, 160, 115, 50, 154, 101, 254, 168, 150, 177, 200, 2, - 49, 205, 12, 16, 250, 5, 77, 183, 132, 42, 120, 191, 166, 53, - 146, 151, 193, 221, 195, 47, 104, 122, 70, 130, 26, 128, 3, 7, - 37, 104, 0, 152, 29, 38, 37, 172, 81, 179, 204, 127, 162, 233, - 135, 115, 207, 96, 141, 66, 5, 74, 27, 237, 81, 4, 200, 9, - 156, 99, 213, 82, 136, 71, 214, 169, 33, 218, 129, 172, 4, 13, - 0, 71, 70, 201, 199, 52, 172, 84, 183, 204, 47, 105, 250, 112, - 174, 253, 247, 98, 78, 11, 162, 244, 20, 82, 33, 73, 6, 78, - 124, 73, 27, 56, 32, 65, 3, 192, 67, 89, 181, 159, 248, 137, - 99, 228, 133, 71, 239, 15, 132, 142, 247, 32, 222, 84, 116, 133, - 39, 184, 17, 217, 13, 177, 181, 104, 37, 118, 56, 32, 115, 113, - 123, 54, 247, 65, 246, 40, 243, 127, 97, 146, 3, 75, 2, 255, - 154, 221, 8, 173, 121, 146, 66, 209, 18, 27, 143, 23, 138, 187, - 107, 42, 38, 11, 20, 209, 127, 226, 59, 144, 188, 100, 238, 183, - 116, 98, 66, 170, 181, 64, 204, 154, 19, 72, 84, 211, 143, 133, - 170, 184, 232, 4, 2, 29, 22, 182, 110, 146, 84, 29, 55, 119, - 116, 196, 50, 243, 120, 88, 110, 66, 17, 65, 21, 22, 207, 189, - 78, 6, 20, 234, 61, 54, 56, 175, 37, 55, 56, 7, 231, 206, - 190, 103, 53, 139, 78, 144, 216, 64, 205, 109, 16, 18, 215, 185, - 7, 254, 235, 221, 248, 207, 189, 39, 126, 192, 150, 172, 224, 25, - 98, 44, 58, 129, 53, 67, 204, 200, 110, 72, 158, 238, 177, 213, - 21, 47, 6, 85, 48, 103, 238, 89, 98, 2, 174, 15, 80, 114, - 131, 144, 184, 119, 255, 38, 218, 4, 216, 18, 109, 186, 113, 233, - 181, 185, 247, 49, 16, 174, 3, 212, 218, 188, 243, 43, 163, 36, - 109, 153, 67, 125, 47, 63, 106, 171, 108, 110, 230, 201, 86, 217, - 147, 173, 178, 247, 185, 85, 118, 44, 222, 42, 123, 94, 109, 149, - 149, 227, 173, 178, 50, 249, 225, 52, 223, 42, 187, 220, 247, 178, - 150, 251, 68, 154, 222, 181, 91, 226, 2, 67, 205, 9, 88, 21, - 125, 166, 150, 29, 109, 225, 181, 13, 246, 48, 10, 108, 10, 67, - 9, 207, 225, 69, 145, 93, 197, 157, 151, 53, 22, 70, 21, 62, - 74, 138, 132, 190, 178, 197, 188, 248, 224, 23, 124, 239, 58, 72, - 234, 136, 77, 6, 215, 247, 31, 80, 215, 121, 192, 184, 147, 117, - 141, 124, 132, 80, 152, 148, 90, 126, 152, 191, 70, 63, 130, 210, - 146, 87, 11, 213, 251, 205, 237, 93, 75, 214, 121, 42, 11, 82, - 154, 7, 101, 155, 143, 97, 74, 243, 197, 46, 144, 210, 60, 180, - 164, 39, 141, 210, 124, 211, 247, 252, 192, 118, 220, 13, 49, 229, - 231, 175, 197, 83, 123, 62, 145, 245, 93, 245, 251, 221, 66, 92, - 73, 221, 247, 255, 6, 170, 41, 236, 147, 23, 70, 162, 239, 49, - 15, 115, 223, 21, 169, 47, 44, 168, 212, 158, 114, 17, 179, 155, - 165, 166, 237, 184, 144, 29, 128, 13, 6, 208, 183, 37, 53, 84, - 111, 25, 100, 127, 254, 149, 242, 242, 226, 202, 43, 171, 251, 180, - 151, 116, 255, 155, 199, 25, 169, 135, 217, 211, 144, 88, 140, 30, - 70, 127, 231, 236, 88, 217, 102, 65, 224, 212, 106, 204, 219, 135, - 51, 251, 181, 4, 254, 126, 151, 188, 27, 111, 108, 92, 206, 140, - 146, 215, 136, 105, 246, 25, 125, 150, 249, 140, 254, 109, 70, 110, - 9, 70, 200, 222, 3, 68, 173, 100, 63, 246, 80, 225, 251, 18, - 6, 212, 244, 12, 25, 34, 255, 72, 35, 105, 0, 113, 219, 192, - 60, 153, 251, 94, 238, 132, 60, 96, 29, 60, 180, 28, 95, 227, - 170, 57, 1, 214, 89, 36, 52, 159, 167, 77, 102, 123, 220, 126, - 166, 129, 239, 203, 141, 40, 101, 110, 215, 88, 221, 110, 187, 17, - 95, 103, 115, 93, 112, 34, 96, 104, 20, 9, 63, 103, 214, 230, - 58, 8, 79, 160, 133, 174, 29, 110, 241, 179, 220, 80, 69, 200, - 90, 118, 96, 71, 126, 80, 36, 100, 136, 244, 115, 210, 210, 64, - 219, 104, 12, 107, 150, 113, 253, 240, 209, 24, 54, 44, 227, 250, - 241, 19, 228, 158, 104, 138, 102, 25, 47, 154, 52, 55, 191, 79, - 75, 160, 21, 200, 32, 156, 114, 64, 61, 218, 77, 134, 251, 138, - 33, 42, 250, 14, 80, 83, 115, 146, 20, 128, 59, 253, 162, 121, - 56, 134, 161, 138, 35, 199, 98, 216, 176, 140, 23, 79, 158, 34, - 139, 216, 111, 154, 101, 46, 232, 101, 35, 119, 133, 150, 222, 187, - 71, 196, 90, 164, 234, 88, 213, 67, 80, 199, 2, 57, 72, 190, - 200, 123, 8, 55, 118, 110, 155, 115, 185, 31, 212, 192, 183, 179, - 101, 195, 96, 14, 197, 77, 47, 177, 93, 196, 89, 93, 160, 155, - 237, 238, 116, 27, 230, 152, 42, 3, 223, 141, 98, 134, 104, 139, - 121, 68, 236, 144, 185, 109, 54, 17, 78, 74, 199, 92, 229, 227, - 59, 213, 124, 18, 17, 39, 26, 164, 147, 23, 176, 22, 179, 35, - 252, 192, 153, 160, 233, 125, 38, 16, 120, 32, 134, 211, 150, 113, - 251, 224, 68, 12, 107, 150, 113, 123, 114, 42, 134, 13, 203, 184, - 61, 51, 75, 94, 68, 166, 233, 150, 185, 164, 175, 24, 185, 217, - 247, 193, 52, 222, 127, 130, 95, 208, 237, 75, 100, 136, 140, 35, - 187, 112, 155, 100, 217, 156, 203, 141, 189, 7, 221, 58, 210, 189, - 172, 232, 214, 145, 238, 101, 69, 55, 223, 1, 89, 86, 116, 243, - 61, 144, 229, 153, 89, 242, 53, 121, 120, 213, 88, 215, 79, 230, - 126, 181, 103, 224, 136, 133, 69, 186, 94, 89, 146, 203, 210, 106, - 73, 47, 80, 11, 208, 45, 191, 136, 39, 195, 155, 54, 31, 44, - 137, 82, 215, 212, 142, 233, 115, 224, 240, 189, 48, 253, 156, 208, - 82, 47, 116, 157, 37, 127, 223, 243, 149, 24, 131, 32, 55, 204, - 19, 135, 5, 242, 197, 134, 19, 229, 187, 54, 52, 215, 245, 145, - 196, 134, 230, 250, 104, 114, 67, 115, 253, 248, 9, 229, 136, 253, - 245, 48, 57, 214, 123, 34, 147, 53, 91, 81, 103, 191, 240, 20, - 253, 36, 85, 130, 239, 55, 222, 221, 59, 210, 4, 193, 175, 50, - 202, 68, 241, 49, 163, 76, 96, 149, 239, 43, 194, 196, 175, 100, - 193, 2, 62, 217, 55, 151, 125, 18, 96, 226, 73, 128, 137, 39, - 1, 38, 158, 4, 152, 120, 18, 96, 226, 73, 128, 137, 191, 195, - 0, 19, 37, 233, 19, 195, 79, 25, 96, 66, 197, 146, 56, 171, - 98, 73, 156, 235, 187, 32, 99, 73, 192, 79, 25, 96, 66, 197, - 146, 120, 90, 197, 146, 24, 143, 99, 73, 192, 79, 25, 96, 66, - 69, 178, 128, 159, 255, 76, 71, 231, 219, 152, 235, 203, 230, 190, - 162, 211, 121, 126, 115, 199, 169, 82, 156, 65, 105, 147, 133, 161, - 221, 16, 55, 253, 59, 126, 27, 237, 166, 128, 77, 225, 50, 141, - 79, 237, 109, 223, 169, 137, 67, 86, 160, 254, 218, 184, 46, 130, - 119, 173, 186, 202, 163, 250, 237, 248, 237, 128, 206, 223, 43, 135, - 69, 58, 79, 35, 126, 178, 73, 153, 45, 14, 90, 119, 56, 127, - 69, 210, 64, 10, 216, 91, 109, 22, 70, 132, 10, 173, 22, 176, - 176, 229, 123, 80, 115, 167, 37, 142, 4, 2, 62, 117, 67, 236, - 38, 134, 88, 8, 35, 48, 88, 229, 108, 4, 243, 171, 83, 101, - 244, 166, 239, 199, 238, 94, 208, 170, 210, 27, 118, 48, 209, 123, - 42, 30, 77, 141, 73, 152, 155, 218, 129, 23, 210, 125, 190, 139, - 27, 213, 232, 163, 9, 39, 109, 46, 115, 80, 89, 64, 191, 115, - 142, 156, 236, 181, 128, 106, 237, 128, 159, 210, 218, 199, 8, 186, - 70, 50, 139, 34, 203, 251, 14, 209, 245, 177, 125, 66, 116, 29, - 148, 24, 165, 237, 52, 251, 152, 182, 147, 36, 246, 125, 153, 79, - 191, 123, 134, 155, 79, 225, 147, 248, 92, 79, 204, 167, 39, 230, - 211, 19, 243, 233, 137, 249, 244, 196, 124, 250, 123, 143, 207, 117, - 59, 142, 207, 117, 251, 209, 241, 185, 138, 113, 124, 174, 226, 251, - 136, 207, 245, 197, 44, 223, 187, 168, 247, 133, 90, 238, 83, 89, - 58, 79, 229, 172, 219, 29, 156, 43, 116, 26, 30, 171, 21, 104, - 221, 121, 200, 106, 83, 252, 60, 52, 13, 91, 182, 39, 143, 215, - 196, 217, 193, 120, 122, 223, 65, 184, 18, 183, 134, 73, 215, 181, - 225, 50, 191, 96, 178, 59, 26, 152, 138, 138, 5, 88, 171, 190, - 87, 101, 173, 40, 228, 155, 33, 249, 154, 221, 201, 163, 213, 149, - 199, 224, 19, 121, 137, 6, 215, 76, 185, 226, 139, 131, 39, 56, - 137, 83, 204, 242, 238, 74, 149, 209, 77, 22, 237, 48, 92, 82, - 220, 73, 230, 22, 135, 237, 113, 77, 76, 177, 10, 72, 112, 162, - 238, 3, 35, 124, 237, 50, 130, 230, 2, 71, 112, 185, 219, 78, - 196, 65, 161, 21, 25, 235, 202, 110, 181, 2, 255, 161, 3, 211, - 129, 219, 161, 23, 166, 102, 103, 10, 51, 51, 51, 24, 224, 235, - 177, 98, 72, 41, 50, 248, 157, 149, 36, 185, 56, 239, 181, 66, - 214, 174, 249, 56, 249, 238, 142, 40, 21, 70, 118, 16, 209, 231, - 105, 177, 88, 188, 222, 251, 141, 121, 181, 174, 47, 170, 34, 105, - 97, 201, 175, 252, 179, 50, 18, 101, 183, 62, 15, 24, 20, 52, - 197, 235, 146, 240, 245, 158, 66, 252, 110, 55, 47, 194, 127, 203, - 2, 8, 201, 74, 156, 58, 157, 216, 85, 209, 115, 116, 134, 62, - 253, 116, 47, 174, 23, 232, 204, 100, 108, 51, 239, 42, 116, 225, - 121, 58, 123, 125, 215, 87, 81, 245, 243, 42, 148, 208, 204, 140, - 180, 151, 41, 115, 193, 190, 218, 139, 128, 23, 246, 36, 224, 185, - 71, 19, 48, 245, 8, 2, 46, 236, 69, 192, 99, 133, 235, 138, - 193, 11, 113, 135, 189, 127, 41, 216, 183, 175, 247, 151, 17, 254, - 41, 217, 229, 207, 119, 119, 57, 189, 176, 139, 9, 215, 227, 66, - 82, 0, 18, 157, 158, 44, 176, 75, 10, 226, 50, 221, 124, 238, - 146, 185, 36, 139, 227, 2, 123, 114, 55, 238, 222, 56, 227, 11, - 201, 140, 251, 212, 113, 97, 239, 58, 246, 20, 161, 189, 195, 145, - 117, 15, 96, 21, 16, 4, 254, 170, 49, 23, 93, 140, 222, 32, - 69, 192, 244, 221, 25, 39, 106, 118, 39, 124, 254, 98, 65, 6, - 3, 124, 126, 86, 6, 143, 74, 244, 162, 172, 109, 162, 231, 83, - 241, 102, 224, 99, 24, 51, 142, 42, 170, 61, 118, 76, 35, 69, - 255, 163, 66, 26, 5, 182, 48, 93, 113, 231, 134, 136, 32, 39, - 5, 17, 88, 8, 183, 239, 121, 70, 12, 129, 40, 172, 103, 17, - 124, 39, 31, 230, 233, 132, 136, 69, 3, 89, 4, 235, 39, 249, - 78, 190, 3, 6, 52, 171, 98, 148, 194, 205, 14, 55, 128, 241, - 124, 117, 98, 138, 17, 190, 79, 34, 74, 90, 34, 116, 145, 29, - 146, 68, 80, 33, 170, 194, 168, 117, 93, 135, 187, 168, 102, 43, - 196, 212, 21, 113, 45, 25, 98, 71, 182, 221, 233, 98, 20, 176, - 34, 127, 49, 204, 23, 68, 84, 164, 139, 93, 147, 98, 87, 80, - 34, 142, 139, 240, 27, 178, 146, 196, 189, 176, 21, 165, 116, 205, - 2, 94, 192, 211, 131, 149, 208, 166, 83, 13, 186, 241, 62, 46, - 218, 217, 48, 143, 167, 137, 229, 10, 65, 61, 147, 37, 255, 179, - 218, 33, 122, 83, 31, 205, 253, 166, 70, 87, 209, 42, 72, 70, - 54, 225, 199, 48, 98, 179, 160, 39, 18, 199, 212, 197, 217, 203, - 133, 203, 207, 92, 129, 9, 14, 254, 199, 144, 54, 23, 122, 18, - 19, 209, 57, 232, 178, 31, 49, 188, 172, 23, 50, 186, 233, 183, - 101, 248, 202, 42, 31, 57, 220, 55, 185, 70, 68, 192, 203, 233, - 166, 227, 209, 243, 0, 52, 29, 111, 122, 43, 160, 231, 233, 220, - 37, 186, 21, 76, 215, 236, 14, 61, 79, 47, 94, 185, 92, 156, - 187, 76, 97, 140, 76, 99, 244, 76, 17, 44, 141, 207, 180, 106, - 179, 40, 5, 205, 235, 79, 108, 22, 189, 153, 57, 148, 216, 44, - 122, 211, 26, 33, 31, 51, 68, 104, 20, 35, 208, 173, 220, 159, - 234, 146, 17, 239, 47, 38, 74, 146, 95, 36, 102, 152, 28, 77, - 33, 197, 115, 59, 56, 96, 124, 143, 41, 108, 65, 151, 173, 37, - 239, 38, 207, 16, 122, 95, 244, 195, 125, 126, 132, 95, 6, 132, - 18, 55, 96, 192, 32, 81, 129, 84, 238, 35, 65, 34, 35, 23, - 116, 169, 6, 66, 36, 37, 81, 161, 31, 208, 166, 31, 224, 109, - 87, 207, 247, 166, 222, 102, 129, 207, 173, 32, 117, 238, 166, 11, - 155, 188, 135, 72, 84, 243, 240, 246, 138, 211, 240, 228, 178, 88, - 15, 157, 189, 34, 210, 21, 168, 5, 196, 35, 145, 208, 21, 184, - 229, 128, 12, 220, 98, 4, 170, 191, 52, 232, 147, 204, 65, 9, - 25, 150, 17, 36, 162, 182, 252, 117, 158, 28, 239, 93, 218, 226, - 1, 44, 247, 91, 216, 250, 156, 70, 210, 171, 152, 195, 186, 78, - 210, 252, 106, 132, 56, 45, 119, 102, 87, 80, 10, 158, 177, 120, - 19, 115, 241, 131, 134, 162, 72, 238, 219, 201, 96, 34, 121, 143, - 115, 115, 133, 238, 115, 115, 71, 118, 33, 127, 25, 190, 38, 195, - 179, 252, 162, 78, 82, 152, 104, 93, 39, 196, 107, 187, 238, 6, - 71, 0, 72, 135, 246, 8, 153, 177, 220, 118, 93, 204, 127, 187, - 175, 50, 224, 73, 192, 58, 67, 14, 112, 109, 185, 17, 215, 175, - 221, 238, 171, 12, 242, 84, 149, 137, 107, 103, 145, 9, 3, 91, - 64, 38, 158, 202, 51, 157, 34, 100, 211, 247, 37, 25, 38, 213, - 38, 50, 80, 21, 164, 241, 12, 207, 33, 150, 118, 53, 18, 89, - 82, 216, 212, 167, 246, 225, 163, 64, 223, 174, 70, 170, 149, 174, - 19, 202, 178, 233, 125, 2, 131, 44, 57, 97, 164, 90, 233, 74, - 224, 70, 154, 152, 15, 28, 175, 150, 191, 78, 6, 84, 14, 171, - 72, 210, 220, 156, 23, 61, 186, 31, 211, 69, 174, 243, 199, 200, - 128, 98, 162, 53, 68, 200, 242, 250, 210, 210, 198, 203, 243, 75, - 235, 165, 108, 223, 141, 143, 238, 189, 138, 57, 200, 27, 35, 215, - 48, 167, 31, 115, 13, 147, 55, 252, 125, 173, 96, 254, 227, 19, - 124, 5, 243, 141, 39, 43, 152, 79, 86, 48, 159, 172, 96, 62, - 89, 193, 124, 178, 130, 249, 100, 5, 243, 239, 125, 5, 243, 102, - 188, 130, 121, 243, 209, 43, 152, 133, 120, 5, 179, 240, 62, 86, - 48, 127, 201, 224, 43, 152, 115, 125, 151, 181, 220, 79, 25, 244, - 62, 159, 112, 239, 247, 172, 95, 98, 98, 59, 96, 53, 62, 229, - 225, 140, 94, 144, 183, 168, 49, 138, 81, 93, 220, 124, 37, 226, - 58, 80, 211, 198, 91, 126, 181, 142, 103, 55, 197, 173, 113, 152, - 161, 101, 24, 13, 12, 232, 25, 250, 77, 166, 78, 155, 135, 5, - 85, 57, 120, 94, 160, 128, 55, 89, 226, 110, 218, 102, 7, 99, - 136, 160, 1, 174, 136, 227, 174, 119, 79, 228, 21, 143, 208, 16, - 3, 141, 2, 97, 10, 61, 95, 220, 188, 179, 170, 154, 195, 151, - 52, 99, 87, 0, 220, 109, 229, 89, 23, 69, 252, 144, 200, 118, - 92, 225, 154, 217, 81, 79, 189, 56, 95, 138, 72, 78, 168, 77, - 27, 24, 136, 135, 196, 87, 20, 112, 218, 150, 109, 80, 6, 191, - 36, 73, 198, 119, 66, 31, 178, 7, 53, 228, 85, 125, 225, 132, - 60, 143, 32, 45, 185, 241, 60, 132, 145, 4, 68, 216, 19, 154, - 43, 208, 117, 15, 47, 245, 179, 26, 246, 128, 95, 223, 191, 7, - 186, 3, 150, 140, 38, 3, 150, 28, 62, 150, 12, 88, 114, 242, - 20, 249, 87, 58, 143, 88, 242, 124, 223, 93, 45, 247, 79, 117, - 122, 31, 173, 184, 30, 41, 217, 167, 166, 68, 112, 97, 240, 158, - 29, 206, 35, 48, 161, 209, 41, 18, 119, 185, 229, 74, 7, 252, - 2, 155, 151, 217, 30, 143, 180, 81, 109, 7, 224, 177, 200, 78, - 19, 162, 231, 7, 212, 38, 106, 82, 150, 50, 53, 47, 38, 47, - 190, 120, 193, 107, 119, 194, 56, 152, 19, 116, 6, 139, 208, 61, - 227, 238, 85, 200, 136, 12, 9, 3, 197, 55, 67, 92, 188, 22, - 107, 228, 42, 198, 147, 10, 94, 108, 123, 148, 5, 1, 30, 71, - 126, 116, 207, 9, 246, 200, 142, 67, 74, 138, 113, 124, 150, 231, - 51, 7, 73, 158, 152, 166, 150, 233, 179, 204, 23, 245, 37, 35, - 55, 202, 207, 139, 58, 224, 49, 214, 85, 126, 140, 135, 146, 129, - 46, 121, 49, 115, 128, 140, 203, 136, 46, 243, 230, 137, 92, 174, - 251, 66, 35, 176, 179, 187, 24, 246, 235, 188, 121, 48, 17, 173, - 101, 126, 104, 44, 17, 173, 101, 254, 216, 113, 188, 183, 143, 209, - 90, 22, 204, 227, 185, 227, 221, 40, 107, 126, 123, 211, 101, 61, - 72, 193, 95, 92, 48, 73, 34, 110, 203, 194, 224, 83, 137, 184, - 45, 11, 185, 99, 2, 169, 110, 25, 165, 221, 72, 197, 42, 85, - 55, 82, 61, 5, 121, 21, 164, 89, 70, 73, 33, 213, 13, 203, - 40, 229, 142, 145, 243, 136, 212, 176, 140, 91, 230, 88, 238, 68, - 207, 109, 78, 46, 47, 61, 88, 141, 20, 100, 150, 33, 102, 12, - 205, 50, 110, 13, 140, 72, 8, 16, 29, 121, 138, 76, 33, 86, - 211, 50, 202, 230, 241, 28, 221, 69, 170, 84, 122, 221, 136, 205, - 52, 228, 87, 144, 102, 25, 101, 69, 174, 105, 88, 70, 57, 119, - 76, 32, 78, 89, 198, 75, 230, 137, 94, 196, 242, 212, 177, 20, - 19, 133, 56, 149, 134, 252, 178, 199, 82, 154, 101, 188, 164, 122, - 44, 101, 88, 198, 75, 199, 142, 147, 159, 213, 136, 158, 234, 179, - 204, 213, 190, 151, 181, 220, 231, 53, 122, 95, 249, 84, 247, 249, - 182, 10, 143, 14, 16, 249, 30, 101, 120, 219, 222, 150, 87, 212, - 149, 156, 138, 53, 62, 41, 48, 82, 47, 17, 37, 182, 184, 16, - 217, 246, 132, 245, 246, 104, 73, 239, 174, 30, 179, 221, 7, 220, - 247, 185, 184, 167, 64, 238, 86, 83, 67, 36, 71, 204, 148, 56, - 30, 61, 156, 59, 72, 151, 123, 228, 53, 37, 78, 22, 235, 7, - 36, 164, 91, 198, 250, 161, 44, 249, 46, 141, 7, 1, 250, 112, - 223, 27, 90, 110, 155, 222, 87, 254, 167, 104, 238, 78, 96, 183, - 90, 44, 160, 118, 224, 183, 69, 100, 5, 193, 93, 190, 158, 18, - 107, 135, 247, 26, 179, 221, 152, 49, 155, 29, 4, 118, 39, 17, - 118, 231, 195, 153, 97, 114, 77, 134, 221, 121, 93, 63, 158, 155, - 130, 158, 237, 169, 238, 61, 20, 46, 63, 98, 254, 186, 174, 160, - 180, 101, 188, 62, 152, 77, 4, 216, 121, 93, 92, 206, 231, 135, - 203, 95, 207, 29, 83, 43, 48, 127, 52, 70, 174, 63, 230, 157, - 84, 17, 58, 109, 35, 96, 118, 184, 127, 252, 220, 252, 239, 105, - 228, 224, 77, 158, 181, 130, 57, 173, 57, 114, 184, 21, 56, 77, - 59, 232, 108, 160, 174, 219, 16, 135, 184, 196, 114, 203, 136, 248, - 88, 130, 111, 119, 249, 39, 235, 121, 146, 198, 188, 242, 74, 233, - 185, 221, 87, 33, 187, 42, 41, 98, 233, 138, 40, 100, 93, 34, - 71, 162, 160, 237, 225, 209, 49, 94, 105, 184, 129, 219, 159, 184, - 82, 146, 170, 140, 170, 175, 88, 46, 92, 128, 111, 185, 211, 36, - 133, 160, 53, 70, 250, 187, 105, 148, 224, 7, 9, 27, 250, 157, - 71, 248, 85, 200, 91, 143, 188, 10, 57, 251, 228, 42, 228, 147, - 171, 144, 239, 59, 106, 40, 183, 192, 173, 216, 170, 135, 159, 223, - 205, 143, 96, 154, 99, 125, 183, 180, 220, 55, 53, 90, 246, 248, - 34, 18, 26, 152, 155, 224, 99, 239, 108, 117, 100, 88, 80, 24, - 213, 172, 86, 228, 193, 15, 157, 68, 78, 225, 214, 215, 156, 176, - 229, 218, 29, 17, 237, 62, 94, 75, 130, 206, 16, 17, 11, 183, - 29, 134, 107, 21, 235, 101, 190, 130, 129, 87, 33, 49, 112, 89, - 98, 89, 160, 234, 182, 195, 8, 204, 180, 208, 105, 58, 174, 29, - 200, 72, 140, 161, 178, 114, 139, 61, 111, 24, 160, 168, 34, 174, - 170, 239, 113, 217, 11, 67, 22, 112, 245, 42, 194, 56, 170, 227, - 160, 80, 111, 24, 217, 213, 7, 52, 10, 236, 42, 170, 70, 105, - 210, 142, 101, 14, 147, 255, 206, 148, 54, 237, 89, 253, 76, 238, - 191, 48, 113, 176, 161, 94, 232, 62, 145, 218, 118, 35, 185, 239, - 95, 181, 57, 233, 50, 38, 98, 228, 99, 173, 130, 83, 114, 83, - 8, 227, 130, 108, 242, 62, 239, 198, 103, 199, 91, 60, 48, 248, - 100, 112, 18, 48, 3, 187, 9, 165, 243, 158, 58, 181, 186, 35, - 183, 132, 0, 159, 196, 196, 143, 42, 120, 180, 132, 35, 86, 108, - 31, 219, 252, 129, 24, 32, 173, 136, 187, 128, 24, 45, 193, 14, - 69, 67, 186, 122, 151, 214, 218, 120, 186, 182, 9, 205, 107, 169, - 88, 164, 118, 146, 149, 97, 1, 72, 35, 212, 105, 54, 89, 205, - 225, 44, 168, 219, 145, 237, 42, 94, 199, 251, 85, 213, 45, 63, - 100, 30, 154, 204, 190, 12, 190, 201, 215, 173, 156, 32, 196, 152, - 115, 187, 208, 3, 141, 117, 169, 125, 96, 90, 3, 35, 186, 217, - 138, 58, 5, 177, 116, 37, 162, 28, 77, 112, 62, 241, 88, 94, - 126, 40, 227, 126, 110, 177, 196, 245, 172, 73, 210, 187, 230, 36, - 132, 139, 211, 32, 200, 141, 99, 45, 241, 176, 39, 206, 219, 210, - 68, 87, 140, 149, 17, 26, 217, 91, 109, 219, 197, 55, 8, 2, - 26, 54, 109, 215, 149, 251, 162, 179, 51, 115, 151, 232, 102, 39, - 194, 243, 198, 132, 174, 175, 221, 156, 122, 182, 152, 220, 152, 58, - 43, 2, 22, 113, 91, 227, 236, 192, 201, 132, 151, 115, 246, 116, - 158, 248, 242, 162, 229, 132, 62, 103, 228, 108, 138, 211, 75, 207, - 51, 123, 129, 191, 233, 178, 166, 12, 134, 202, 35, 143, 117, 137, - 92, 129, 134, 237, 170, 184, 195, 88, 13, 236, 112, 11, 143, 210, - 236, 201, 228, 196, 237, 203, 9, 114, 136, 252, 154, 30, 223, 190, - 156, 53, 159, 202, 253, 178, 190, 91, 240, 187, 4, 250, 209, 242, - 76, 30, 75, 160, 247, 147, 103, 242, 62, 4, 154, 112, 162, 84, - 71, 237, 221, 221, 242, 248, 208, 30, 170, 228, 111, 190, 211, 213, - 109, 208, 20, 240, 146, 116, 221, 22, 157, 29, 180, 186, 110, 139, - 206, 30, 62, 66, 254, 185, 41, 247, 36, 111, 232, 199, 115, 95, - 78, 168, 156, 137, 112, 178, 171, 183, 119, 169, 24, 34, 6, 11, - 11, 112, 254, 106, 250, 252, 105, 60, 190, 237, 200, 123, 133, 71, - 211, 121, 156, 113, 141, 47, 233, 64, 15, 193, 148, 26, 250, 1, - 223, 176, 87, 99, 25, 3, 255, 208, 249, 100, 160, 61, 190, 158, - 237, 215, 123, 11, 57, 33, 6, 118, 189, 137, 90, 129, 27, 85, - 116, 66, 252, 27, 183, 167, 171, 57, 17, 76, 109, 158, 29, 177, - 110, 189, 2, 106, 2, 47, 47, 243, 75, 162, 83, 244, 21, 30, - 184, 12, 21, 206, 180, 231, 123, 83, 245, 68, 37, 5, 164, 0, - 140, 3, 176, 187, 60, 223, 245, 27, 120, 212, 31, 151, 37, 0, - 203, 132, 12, 84, 47, 152, 131, 248, 241, 81, 156, 87, 196, 97, - 134, 164, 218, 105, 249, 173, 54, 202, 77, 65, 224, 255, 240, 204, - 235, 69, 41, 29, 225, 150, 237, 186, 180, 105, 71, 213, 45, 66, - 247, 180, 90, 165, 108, 241, 120, 135, 60, 246, 38, 171, 41, 81, - 131, 226, 146, 55, 54, 72, 176, 29, 182, 133, 105, 131, 166, 97, - 113, 213, 121, 155, 77, 76, 78, 162, 28, 18, 126, 77, 242, 97, - 21, 12, 156, 139, 133, 217, 103, 230, 184, 224, 197, 155, 169, 38, - 136, 143, 130, 210, 150, 113, 67, 24, 246, 124, 107, 245, 134, 48, - 236, 249, 214, 234, 141, 220, 49, 242, 38, 74, 157, 110, 25, 55, - 245, 51, 185, 215, 101, 136, 52, 113, 248, 34, 217, 89, 54, 48, - 70, 90, 193, 177, 154, 21, 89, 112, 29, 132, 239, 163, 112, 33, - 227, 87, 121, 177, 149, 104, 158, 196, 52, 130, 79, 122, 83, 109, - 248, 130, 192, 223, 204, 72, 61, 8, 238, 245, 205, 211, 121, 229, - 110, 252, 15, 223, 107, 16, 186, 235, 50, 3, 227, 139, 107, 126, - 176, 223, 174, 239, 93, 50, 124, 211, 113, 217, 162, 202, 184, 202, - 34, 235, 89, 98, 130, 33, 43, 246, 10, 207, 238, 218, 43, 236, - 46, 129, 155, 110, 21, 44, 145, 255, 125, 147, 140, 236, 241, 213, - 178, 136, 233, 217, 77, 105, 243, 227, 111, 124, 83, 192, 174, 62, - 0, 87, 64, 190, 41, 192, 65, 235, 36, 33, 242, 16, 100, 181, - 51, 102, 80, 99, 98, 160, 146, 72, 177, 46, 144, 225, 86, 123, - 211, 117, 170, 27, 137, 108, 132, 26, 19, 169, 74, 150, 127, 88, - 140, 51, 143, 147, 67, 59, 204, 126, 144, 204, 58, 136, 89, 135, - 32, 57, 145, 113, 129, 28, 16, 130, 184, 1, 174, 224, 152, 137, - 173, 167, 187, 90, 223, 219, 242, 65, 81, 106, 173, 211, 98, 214, - 60, 25, 0, 87, 158, 99, 72, 237, 195, 191, 146, 215, 110, 246, - 98, 201, 64, 49, 129, 162, 95, 92, 133, 25, 75, 35, 130, 241, - 221, 219, 198, 252, 123, 47, 14, 89, 206, 90, 32, 3, 248, 194, - 42, 88, 190, 99, 253, 194, 205, 219, 221, 139, 204, 173, 245, 162, - 136, 203, 89, 87, 72, 191, 8, 48, 63, 150, 17, 47, 75, 236, - 37, 8, 43, 60, 79, 69, 102, 182, 202, 36, 203, 183, 16, 55, - 170, 126, 141, 109, 128, 229, 59, 54, 128, 8, 78, 237, 110, 8, - 102, 92, 240, 107, 12, 76, 233, 202, 80, 216, 5, 91, 71, 72, - 58, 236, 120, 145, 253, 112, 236, 0, 74, 136, 128, 242, 191, 156, - 38, 135, 30, 71, 196, 174, 147, 20, 42, 39, 229, 234, 62, 22, - 15, 120, 153, 110, 38, 166, 63, 32, 19, 231, 201, 160, 199, 66, - 240, 149, 81, 34, 140, 199, 148, 41, 194, 11, 237, 22, 41, 243, - 3, 137, 212, 135, 200, 33, 69, 210, 6, 70, 239, 19, 178, 57, - 253, 94, 148, 20, 75, 178, 28, 30, 226, 173, 12, 177, 46, 216, - 90, 36, 196, 247, 152, 95, 223, 168, 177, 170, 59, 150, 217, 135, - 75, 43, 144, 101, 23, 151, 124, 158, 90, 117, 173, 171, 177, 168, - 245, 239, 35, 41, 98, 249, 98, 151, 180, 173, 147, 33, 185, 51, - 47, 90, 54, 128, 68, 20, 223, 179, 101, 21, 81, 140, 55, 236, - 96, 144, 4, 173, 51, 68, 37, 108, 160, 88, 17, 212, 66, 7, - 100, 226, 178, 221, 100, 185, 183, 201, 80, 55, 123, 172, 81, 146, - 194, 67, 157, 40, 133, 169, 10, 7, 172, 44, 49, 152, 87, 19, - 119, 193, 224, 167, 245, 109, 113, 131, 13, 108, 240, 211, 187, 123, - 180, 11, 115, 111, 187, 115, 207, 144, 131, 93, 13, 120, 220, 170, - 243, 239, 144, 195, 123, 162, 182, 62, 68, 70, 219, 158, 122, 247, - 152, 213, 54, 120, 85, 99, 255, 71, 255, 62, 50, 183, 158, 204, - 205, 177, 84, 70, 218, 187, 19, 207, 15, 100, 254, 207, 254, 236, - 119, 124, 199, 119, 124, 135, 158, 255, 151, 105, 50, 186, 215, 152, - 217, 115, 248, 30, 33, 105, 62, 195, 138, 181, 37, 1, 89, 243, - 36, 229, 218, 155, 204, 197, 147, 55, 67, 115, 23, 30, 107, 84, - 22, 151, 160, 72, 133, 151, 180, 94, 32, 166, 80, 209, 128, 225, - 252, 227, 97, 128, 177, 84, 193, 114, 214, 49, 50, 0, 255, 114, - 217, 72, 35, 205, 25, 72, 0, 185, 176, 114, 36, 195, 31, 184, - 102, 114, 106, 83, 48, 8, 150, 136, 177, 34, 142, 247, 244, 99, - 134, 3, 34, 81, 158, 47, 26, 228, 163, 202, 241, 106, 236, 33, - 106, 207, 84, 133, 15, 180, 50, 164, 64, 245, 111, 134, 190, 39, - 69, 19, 171, 128, 4, 172, 254, 153, 94, 197, 125, 98, 239, 230, - 237, 26, 75, 227, 228, 16, 183, 38, 54, 228, 227, 144, 99, 195, - 84, 155, 200, 84, 134, 120, 242, 138, 72, 205, 255, 103, 58, 49, - 81, 177, 28, 34, 131, 107, 175, 222, 43, 109, 44, 174, 172, 223, - 88, 42, 101, 53, 107, 136, 16, 76, 184, 185, 180, 50, 191, 150, - 213, 21, 140, 239, 224, 102, 13, 85, 128, 63, 12, 156, 53, 147, - 25, 46, 206, 101, 83, 86, 150, 28, 224, 8, 202, 31, 42, 45, - 94, 185, 148, 77, 119, 167, 92, 156, 203, 246, 91, 7, 201, 0, - 166, 220, 88, 89, 89, 202, 102, 20, 206, 213, 181, 74, 121, 249, - 86, 118, 64, 225, 188, 85, 89, 89, 191, 151, 37, 10, 195, 221, - 210, 234, 234, 252, 173, 82, 118, 80, 229, 184, 241, 234, 90, 105, - 53, 123, 160, 139, 172, 139, 115, 217, 131, 170, 138, 210, 242, 250, - 221, 236, 144, 53, 76, 14, 242, 42, 36, 17, 135, 122, 146, 174, - 92, 202, 102, 99, 66, 56, 150, 225, 174, 132, 43, 151, 178, 86, - 126, 129, 164, 80, 12, 45, 139, 12, 45, 205, 223, 40, 45, 109, - 172, 224, 54, 251, 252, 82, 86, 139, 211, 42, 165, 111, 95, 47, - 87, 74, 139, 89, 61, 153, 118, 175, 52, 191, 86, 90, 204, 26, - 249, 42, 25, 221, 75, 161, 238, 57, 132, 18, 178, 160, 239, 35, - 11, 136, 171, 87, 22, 242, 255, 187, 78, 70, 246, 152, 84, 246, - 172, 228, 197, 248, 68, 31, 104, 138, 201, 61, 103, 39, 148, 236, - 93, 83, 45, 150, 75, 154, 26, 198, 62, 166, 6, 160, 216, 37, - 176, 175, 239, 82, 254, 124, 126, 188, 242, 56, 243, 35, 166, 189, - 191, 73, 32, 181, 199, 36, 112, 157, 12, 239, 66, 244, 216, 202, - 248, 99, 26, 25, 219, 143, 57, 239, 161, 18, 245, 46, 149, 120, - 189, 151, 131, 167, 247, 239, 132, 93, 125, 253, 211, 26, 57, 178, - 183, 73, 185, 39, 13, 47, 144, 52, 191, 199, 45, 250, 123, 247, - 220, 117, 23, 63, 247, 118, 182, 40, 149, 156, 237, 141, 253, 236, - 66, 78, 205, 46, 74, 191, 87, 39, 135, 247, 68, 190, 39, 161, - 39, 8, 113, 188, 86, 59, 226, 166, 19, 215, 196, 3, 152, 130, - 202, 11, 180, 108, 59, 82, 223, 249, 19, 102, 132, 39, 97, 134, - 103, 99, 66, 77, 36, 244, 228, 62, 45, 221, 37, 152, 51, 36, - 91, 117, 29, 230, 69, 27, 97, 20, 48, 187, 233, 120, 13, 156, - 106, 50, 215, 82, 117, 219, 13, 89, 229, 16, 255, 188, 42, 191, + 8, 0, 0, 0, 0, 0, 0, 255, 236, 189, 109, 116, 92, 199, + 117, 32, 136, 247, 209, 141, 70, 225, 171, 241, 64, 81, 96, 147, + 20, 139, 77, 81, 0, 200, 70, 3, 4, 41, 74, 36, 245, 49, + 32, 208, 36, 155, 2, 1, 166, 1, 72, 150, 124, 36, 240, 161, + 187, 186, 241, 196, 215, 239, 181, 223, 123, 13, 176, 101, 121, 156, + 177, 199, 201, 56, 222, 140, 199, 142, 20, 121, 29, 59, 74, 28, + 59, 113, 146, 179, 118, 54, 113, 50, 201, 102, 79, 178, 179, 153, + 57, 179, 217, 77, 102, 54, 155, 76, 118, 38, 179, 103, 63, 28, + 103, 214, 155, 153, 36, 227, 204, 122, 18, 231, 99, 189, 231, 222, + 250, 120, 175, 27, 160, 68, 217, 86, 242, 71, 60, 150, 209, 183, + 94, 213, 173, 91, 183, 110, 221, 186, 85, 117, 235, 22, 249, 231, + 103, 200, 177, 134, 239, 55, 92, 54, 219, 10, 252, 200, 223, 106, + 215, 103, 35, 167, 201, 194, 200, 110, 182, 138, 152, 100, 141, 242, + 12, 69, 153, 33, 127, 137, 12, 172, 203, 60, 214, 4, 233, 15, + 89, 213, 247, 106, 225, 132, 70, 181, 41, 163, 34, 65, 235, 0, + 73, 121, 182, 231, 135, 19, 58, 213, 166, 82, 21, 14, 92, 254, + 144, 70, 198, 171, 126, 179, 216, 131, 244, 242, 136, 66, 121, 19, + 146, 110, 106, 207, 205, 139, 44, 13, 223, 181, 189, 70, 209, 15, + 26, 9, 26, 59, 45, 22, 206, 222, 246, 252, 93, 47, 166, 183, + 181, 245, 231, 154, 246, 25, 221, 184, 122, 243, 242, 79, 233, 15, + 92, 229, 165, 111, 138, 34, 197, 103, 152, 235, 62, 5, 5, 214, + 161, 236, 245, 127, 54, 75, 250, 173, 212, 3, 125, 31, 215, 52, + 242, 27, 67, 68, 27, 178, 140, 7, 250, 172, 249, 127, 50, 68, + 177, 68, 213, 119, 233, 229, 118, 189, 206, 130, 144, 206, 80, 142, + 107, 50, 164, 53, 59, 178, 169, 227, 69, 44, 168, 110, 219, 94, + 131, 209, 186, 31, 52, 237, 136, 208, 69, 191, 213, 9, 156, 198, + 118, 68, 231, 231, 230, 30, 21, 5, 104, 217, 171, 22, 41, 93, + 112, 93, 138, 223, 66, 26, 176, 144, 5, 59, 172, 86, 36, 116, + 59, 138, 90, 225, 197, 217, 217, 26, 219, 97, 174, 223, 98, 65, + 40, 121, 82, 245, 155, 188, 165, 85, 223, 157, 217, 226, 68, 204, + 18, 66, 43, 172, 230, 132, 81, 224, 108, 181, 35, 199, 247, 168, + 237, 213, 104, 59, 100, 212, 241, 104, 232, 183, 131, 42, 195, 148, + 45, 199, 179, 131, 14, 210, 21, 22, 232, 174, 19, 109, 83, 63, + 192, 191, 126, 59, 34, 180, 233, 215, 156, 186, 83, 181, 1, 67, + 129, 218, 1, 163, 45, 22, 52, 157, 40, 98, 53, 218, 10, 252, + 29, 167, 198, 106, 52, 218, 182, 35, 26, 109, 67, 235, 92, 215, + 223, 117, 188, 6, 133, 46, 117, 160, 80, 8, 133, 8, 109, 178, + 232, 34, 33, 20, 254, 157, 234, 33, 44, 164, 126, 93, 82, 84, + 245, 107, 140, 54, 219, 97, 68, 3, 22, 217, 142, 135, 88, 237, + 45, 127, 7, 62, 9, 142, 17, 234, 249, 145, 83, 101, 5, 26, + 109, 59, 33, 117, 157, 48, 2, 12, 201, 26, 189, 90, 15, 57, + 53, 39, 172, 186, 182, 211, 100, 65, 241, 110, 68, 56, 94, 146, + 23, 146, 136, 86, 224, 215, 218, 85, 22, 211, 65, 98, 66, 190, + 45, 58, 8, 21, 173, 171, 249, 213, 118, 147, 121, 145, 45, 59, + 105, 214, 15, 168, 31, 109, 179, 128, 54, 237, 136, 5, 142, 237, + 134, 49, 171, 177, 131, 162, 109, 70, 104, 146, 122, 213, 168, 21, + 230, 96, 73, 64, 236, 217, 77, 6, 4, 37, 101, 203, 243, 227, + 111, 200, 119, 39, 10, 161, 69, 30, 71, 229, 7, 33, 109, 218, + 29, 186, 197, 64, 82, 106, 52, 242, 41, 243, 106, 126, 16, 50, + 16, 138, 86, 224, 55, 253, 136, 81, 206, 147, 40, 164, 53, 22, + 56, 59, 172, 70, 235, 129, 223, 36, 156, 11, 161, 95, 143, 118, + 65, 76, 132, 4, 209, 176, 197, 170, 32, 65, 180, 21, 56, 32, + 88, 1, 200, 142, 199, 165, 40, 12, 145, 118, 66, 215, 175, 149, + 215, 232, 218, 234, 149, 245, 103, 22, 42, 37, 90, 94, 163, 55, + 43, 171, 79, 151, 151, 74, 75, 244, 242, 179, 116, 253, 90, 137, + 46, 174, 222, 124, 182, 82, 190, 122, 109, 157, 94, 91, 93, 94, + 42, 85, 214, 232, 194, 202, 18, 93, 92, 93, 89, 175, 148, 47, + 111, 172, 175, 86, 214, 8, 205, 47, 172, 209, 242, 90, 30, 191, + 44, 172, 60, 75, 75, 239, 186, 89, 41, 173, 173, 209, 213, 10, + 45, 223, 184, 185, 92, 46, 45, 209, 103, 22, 42, 149, 133, 149, + 245, 114, 105, 173, 64, 203, 43, 139, 203, 27, 75, 229, 149, 171, + 5, 122, 121, 99, 157, 174, 172, 174, 19, 186, 92, 190, 81, 94, + 47, 45, 209, 245, 213, 2, 86, 187, 183, 28, 93, 189, 66, 111, + 148, 42, 139, 215, 22, 86, 214, 23, 46, 151, 151, 203, 235, 207, + 98, 133, 87, 202, 235, 43, 80, 217, 149, 213, 10, 161, 11, 244, + 230, 66, 101, 189, 188, 184, 177, 188, 80, 161, 55, 55, 42, 55, + 87, 215, 74, 20, 90, 182, 84, 94, 91, 92, 94, 40, 223, 40, + 45, 21, 105, 121, 133, 174, 172, 210, 210, 211, 165, 149, 117, 186, + 118, 109, 97, 121, 185, 187, 161, 132, 174, 62, 179, 82, 170, 0, + 245, 201, 102, 210, 203, 37, 186, 92, 94, 184, 188, 92, 130, 170, + 176, 157, 75, 229, 74, 105, 113, 29, 26, 20, 255, 90, 44, 47, + 149, 86, 214, 23, 150, 11, 132, 174, 221, 44, 45, 150, 23, 150, + 11, 180, 244, 174, 210, 141, 155, 203, 11, 149, 103, 11, 2, 233, + 90, 233, 187, 54, 74, 43, 235, 229, 133, 101, 186, 180, 112, 99, + 225, 106, 105, 141, 78, 189, 25, 87, 110, 86, 86, 23, 55, 42, + 165, 27, 64, 245, 234, 21, 186, 182, 113, 121, 109, 189, 188, 190, + 177, 94, 162, 87, 87, 87, 151, 144, 217, 107, 165, 202, 211, 229, + 197, 210, 218, 37, 186, 188, 186, 134, 12, 219, 88, 43, 21, 8, + 93, 90, 88, 95, 192, 170, 111, 86, 86, 175, 148, 215, 215, 46, + 193, 239, 203, 27, 107, 101, 100, 92, 121, 101, 189, 84, 169, 108, + 220, 92, 47, 175, 174, 76, 211, 107, 171, 207, 148, 158, 46, 85, + 232, 226, 194, 198, 90, 105, 9, 57, 188, 186, 2, 173, 5, 89, + 41, 173, 86, 158, 5, 180, 192, 7, 236, 129, 2, 125, 230, 90, + 105, 253, 90, 169, 2, 76, 69, 110, 45, 0, 27, 214, 214, 43, + 229, 197, 245, 100, 182, 213, 10, 93, 95, 173, 172, 147, 68, 59, + 233, 74, 233, 234, 114, 249, 106, 105, 101, 177, 4, 159, 87, 1, + 205, 51, 229, 181, 210, 52, 93, 168, 148, 215, 32, 67, 25, 43, + 166, 207, 44, 60, 75, 87, 55, 176, 213, 208, 81, 27, 107, 37, + 194, 127, 39, 68, 183, 128, 253, 73, 203, 87, 232, 194, 210, 211, + 101, 160, 92, 228, 190, 185, 186, 182, 86, 22, 226, 130, 108, 91, + 188, 38, 120, 94, 36, 36, 67, 52, 221, 50, 104, 223, 4, 252, + 202, 88, 70, 190, 239, 18, 25, 32, 122, 230, 36, 255, 201, 19, + 79, 244, 29, 195, 196, 99, 252, 39, 79, 124, 176, 175, 140, 137, + 131, 252, 39, 79, 60, 217, 87, 192, 68, 141, 255, 228, 137, 15, + 245, 205, 98, 162, 248, 201, 19, 39, 251, 242, 152, 72, 248, 79, + 158, 56, 213, 119, 28, 19, 31, 228, 63, 255, 247, 163, 68, 55, + 251, 172, 244, 247, 106, 48, 245, 229, 254, 229, 81, 186, 64, 213, + 212, 139, 10, 146, 133, 204, 139, 66, 106, 211, 150, 239, 120, 17, + 170, 53, 167, 9, 211, 76, 141, 181, 152, 87, 99, 30, 170, 69, + 219, 235, 240, 244, 151, 124, 15, 181, 137, 235, 87, 109, 151, 208, + 170, 237, 50, 175, 102, 7, 5, 202, 60, 208, 254, 53, 106, 3, + 174, 170, 223, 230, 229, 132, 117, 128, 186, 180, 30, 216, 213, 120, + 198, 144, 31, 96, 66, 0, 83, 1, 97, 152, 49, 125, 151, 43, + 69, 186, 190, 205, 4, 34, 7, 166, 82, 215, 142, 156, 29, 6, + 74, 205, 246, 40, 107, 249, 213, 109, 106, 71, 116, 99, 125, 145, + 54, 157, 154, 135, 26, 221, 247, 8, 189, 110, 123, 109, 152, 6, + 206, 20, 232, 153, 11, 143, 204, 21, 164, 162, 110, 5, 190, 203, + 90, 145, 83, 165, 87, 3, 214, 240, 3, 199, 246, 20, 245, 116, + 119, 219, 169, 110, 83, 118, 39, 98, 64, 19, 42, 232, 125, 114, + 109, 217, 213, 219, 187, 118, 0, 57, 124, 218, 97, 118, 64, 125, + 143, 129, 2, 132, 41, 191, 233, 120, 237, 136, 225, 124, 73, 207, + 207, 169, 246, 185, 190, 215, 40, 210, 101, 102, 183, 226, 38, 7, + 140, 230, 195, 38, 179, 3, 86, 203, 211, 208, 231, 19, 176, 231, + 83, 151, 217, 45, 34, 178, 209, 200, 222, 114, 25, 180, 220, 99, + 12, 248, 90, 247, 3, 110, 138, 180, 96, 110, 229, 19, 122, 59, + 132, 89, 201, 166, 239, 158, 63, 55, 179, 237, 183, 3, 234, 58, + 30, 179, 3, 66, 17, 251, 243, 83, 111, 108, 116, 64, 127, 206, + 98, 206, 105, 212, 226, 219, 140, 6, 104, 229, 56, 33, 206, 9, + 116, 110, 110, 238, 204, 12, 254, 111, 125, 110, 238, 34, 254, 239, + 57, 104, 250, 133, 11, 23, 46, 204, 156, 153, 159, 57, 123, 102, + 125, 254, 236, 197, 135, 47, 92, 124, 248, 66, 241, 130, 252, 247, + 92, 145, 94, 238, 16, 232, 200, 40, 112, 170, 17, 16, 24, 137, + 38, 34, 246, 2, 221, 101, 148, 121, 97, 59, 96, 60, 117, 151, + 209, 42, 112, 217, 247, 118, 88, 16, 241, 254, 229, 147, 18, 125, + 119, 229, 202, 34, 161, 103, 207, 158, 189, 16, 183, 101, 119, 119, + 183, 232, 176, 168, 142, 22, 98, 80, 175, 194, 127, 144, 163, 24, + 221, 137, 166, 193, 98, 99, 20, 106, 246, 26, 33, 52, 234, 4, + 45, 221, 177, 155, 45, 151, 133, 132, 200, 159, 244, 204, 69, 186, + 232, 55, 91, 237, 136, 37, 198, 2, 86, 120, 115, 117, 173, 252, + 46, 122, 11, 56, 51, 53, 125, 171, 40, 76, 158, 56, 147, 50, + 62, 47, 241, 47, 177, 241, 28, 178, 104, 83, 116, 240, 20, 22, + 95, 217, 88, 94, 158, 158, 222, 55, 31, 202, 251, 212, 220, 244, + 165, 4, 77, 243, 111, 70, 83, 131, 69, 128, 197, 175, 215, 236, + 78, 130, 182, 48, 10, 218, 213, 8, 43, 216, 177, 93, 26, 237, + 136, 26, 187, 178, 63, 20, 237, 20, 40, 18, 116, 233, 91, 109, + 210, 78, 49, 218, 1, 232, 141, 90, 196, 51, 181, 67, 86, 165, + 167, 232, 153, 185, 185, 238, 22, 158, 189, 107, 11, 159, 113, 188, + 179, 243, 244, 214, 85, 22, 173, 117, 194, 136, 53, 225, 243, 66, + 120, 197, 113, 217, 122, 119, 71, 92, 41, 47, 151, 214, 203, 55, + 74, 180, 30, 9, 50, 238, 86, 230, 161, 122, 36, 41, 221, 40, + 175, 172, 159, 63, 71, 35, 167, 122, 59, 164, 143, 211, 169, 169, + 41, 158, 50, 93, 143, 138, 181, 221, 107, 78, 99, 123, 201, 142, + 176, 212, 52, 125, 236, 49, 122, 118, 126, 154, 190, 76, 241, 219, + 178, 191, 43, 63, 73, 190, 205, 206, 210, 5, 160, 183, 230, 239, + 134, 136, 18, 6, 203, 153, 185, 185, 132, 14, 11, 139, 42, 3, + 215, 82, 103, 206, 239, 29, 70, 10, 27, 20, 63, 115, 254, 220, + 185, 115, 143, 156, 61, 63, 23, 171, 141, 45, 86, 247, 3, 70, + 55, 60, 231, 142, 196, 114, 225, 145, 185, 94, 44, 197, 111, 173, + 51, 167, 120, 251, 233, 212, 20, 103, 202, 44, 118, 22, 252, 155, + 166, 51, 73, 114, 222, 68, 130, 1, 15, 176, 75, 226, 57, 153, + 192, 131, 2, 48, 221, 37, 0, 231, 238, 42, 0, 215, 237, 29, + 155, 222, 226, 29, 89, 172, 182, 131, 128, 121, 17, 100, 185, 225, + 184, 174, 19, 38, 4, 0, 180, 41, 109, 98, 42, 125, 156, 222, + 189, 192, 27, 136, 57, 125, 60, 78, 45, 122, 108, 247, 114, 219, + 113, 107, 44, 152, 154, 134, 134, 173, 9, 14, 137, 42, 56, 99, + 166, 57, 46, 248, 7, 121, 86, 120, 219, 29, 47, 130, 150, 139, + 156, 188, 233, 162, 217, 200, 129, 233, 226, 22, 96, 70, 90, 98, + 30, 60, 252, 38, 60, 40, 123, 97, 100, 123, 81, 209, 243, 119, + 19, 205, 22, 169, 212, 243, 119, 233, 227, 180, 43, 207, 27, 182, + 52, 38, 252, 205, 155, 236, 249, 187, 197, 6, 139, 74, 32, 108, + 60, 109, 106, 58, 209, 242, 238, 214, 139, 204, 0, 76, 221, 165, + 165, 231, 239, 218, 82, 209, 95, 210, 206, 160, 55, 59, 209, 54, + 95, 72, 116, 9, 90, 178, 163, 166, 166, 123, 165, 240, 42, 139, + 22, 227, 126, 159, 154, 70, 93, 127, 125, 109, 117, 133, 222, 176, + 91, 45, 199, 107, 16, 66, 203, 30, 79, 225, 171, 246, 2, 154, + 1, 9, 62, 117, 90, 56, 213, 117, 25, 46, 124, 234, 16, 54, + 3, 193, 9, 232, 45, 205, 63, 188, 42, 176, 93, 108, 48, 91, + 10, 28, 13, 79, 133, 202, 242, 239, 5, 187, 225, 125, 51, 239, + 109, 250, 94, 180, 253, 190, 153, 247, 214, 236, 206, 251, 214, 223, + 11, 147, 247, 251, 46, 190, 183, 233, 120, 239, 187, 248, 222, 144, + 85, 223, 247, 238, 226, 123, 193, 92, 130, 33, 251, 190, 231, 159, + 203, 19, 186, 187, 205, 2, 70, 121, 105, 64, 100, 187, 187, 118, + 39, 164, 236, 14, 88, 112, 176, 216, 227, 182, 64, 29, 172, 128, + 154, 211, 112, 162, 16, 140, 26, 151, 81, 81, 83, 129, 98, 85, + 5, 66, 121, 101, 5, 138, 181, 21, 112, 178, 197, 42, 209, 46, + 121, 137, 5, 254, 76, 203, 174, 213, 248, 242, 49, 218, 245, 37, + 54, 102, 87, 183, 185, 77, 38, 237, 56, 176, 255, 132, 74, 41, + 8, 11, 10, 38, 242, 134, 79, 219, 45, 52, 19, 100, 209, 41, + 167, 200, 138, 34, 241, 204, 254, 214, 222, 116, 129, 96, 253, 126, + 139, 99, 230, 53, 229, 159, 203, 211, 176, 93, 175, 59, 119, 192, + 30, 117, 170, 54, 24, 88, 208, 139, 32, 7, 104, 137, 78, 229, + 55, 214, 23, 243, 211, 151, 186, 82, 9, 55, 24, 223, 211, 118, + 2, 86, 43, 210, 5, 138, 219, 43, 103, 185, 48, 132, 184, 38, + 119, 94, 98, 1, 13, 183, 253, 182, 91, 147, 172, 108, 135, 12, + 173, 201, 41, 59, 84, 181, 213, 232, 86, 135, 0, 25, 211, 208, + 1, 30, 172, 130, 61, 110, 210, 236, 21, 37, 96, 164, 221, 85, + 85, 203, 14, 194, 184, 154, 45, 70, 40, 218, 116, 96, 225, 84, + 171, 172, 21, 209, 45, 63, 218, 198, 58, 161, 44, 223, 52, 144, + 109, 8, 247, 208, 1, 102, 175, 95, 175, 135, 44, 66, 115, 237, + 138, 31, 80, 198, 199, 90, 129, 230, 231, 231, 206, 60, 2, 179, + 195, 153, 135, 215, 231, 206, 92, 60, 59, 119, 241, 204, 195, 197, + 185, 51, 207, 229, 133, 116, 135, 20, 97, 53, 189, 180, 236, 48, + 34, 20, 115, 98, 253, 190, 23, 219, 205, 15, 23, 40, 96, 43, + 138, 1, 100, 239, 216, 107, 213, 192, 105, 69, 5, 176, 118, 187, + 76, 53, 155, 194, 244, 72, 253, 173, 23, 89, 53, 226, 86, 30, + 152, 142, 92, 216, 185, 60, 162, 248, 131, 186, 170, 217, 65, 141, + 208, 119, 71, 126, 121, 109, 117, 13, 7, 217, 212, 244, 62, 6, + 106, 177, 233, 191, 228, 184, 174, 141, 163, 139, 121, 51, 27, 107, + 179, 53, 191, 26, 206, 62, 195, 182, 102, 99, 82, 102, 43, 172, + 206, 2, 230, 85, 217, 236, 85, 215, 223, 178, 221, 205, 85, 164, + 33, 156, 5, 130, 102, 19, 149, 76, 227, 222, 213, 182, 95, 43, + 66, 99, 184, 166, 41, 224, 56, 231, 36, 209, 91, 96, 49, 2, + 211, 139, 242, 199, 45, 217, 32, 104, 234, 22, 147, 173, 101, 53, + 178, 111, 19, 9, 125, 247, 173, 48, 10, 234, 88, 52, 209, 34, + 191, 26, 22, 91, 92, 179, 65, 91, 230, 103, 93, 103, 43, 176, + 131, 14, 154, 221, 197, 237, 168, 233, 158, 192, 95, 178, 236, 52, + 238, 185, 16, 37, 200, 178, 146, 176, 197, 170, 116, 242, 228, 179, + 51, 39, 155, 51, 39, 107, 235, 39, 175, 93, 60, 121, 227, 226, + 201, 181, 226, 201, 250, 115, 147, 69, 186, 236, 220, 102, 187, 78, + 200, 112, 153, 3, 12, 138, 123, 169, 29, 50, 142, 237, 186, 95, + 179, 81, 88, 39, 67, 250, 238, 91, 229, 181, 85, 105, 212, 92, + 225, 202, 170, 38, 192, 169, 233, 91, 207, 79, 241, 157, 74, 161, + 231, 94, 244, 107, 188, 39, 224, 199, 12, 174, 23, 236, 150, 131, + 29, 34, 83, 249, 42, 130, 211, 58, 187, 23, 55, 182, 83, 86, + 112, 114, 126, 233, 228, 252, 18, 161, 211, 192, 72, 127, 11, 119, + 8, 109, 209, 206, 136, 5, 180, 106, 183, 112, 128, 248, 117, 218, + 96, 30, 11, 108, 62, 212, 228, 48, 11, 185, 90, 86, 252, 47, + 18, 66, 200, 32, 49, 204, 62, 205, 50, 191, 87, 203, 140, 145, + 79, 107, 196, 52, 251, 244, 62, 203, 252, 136, 166, 31, 200, 253, + 67, 141, 86, 226, 21, 174, 148, 125, 191, 142, 34, 143, 60, 14, + 29, 175, 154, 180, 178, 200, 254, 102, 22, 189, 209, 14, 35, 144, + 133, 55, 90, 22, 145, 253, 214, 69, 207, 81, 199, 171, 186, 237, + 208, 217, 129, 133, 226, 48, 73, 1, 121, 41, 164, 175, 95, 130, + 26, 128, 153, 81, 9, 26, 0, 90, 227, 228, 15, 120, 99, 52, + 203, 252, 152, 166, 91, 185, 223, 213, 232, 138, 239, 205, 120, 172, + 193, 215, 193, 93, 171, 105, 91, 174, 26, 97, 33, 185, 255, 106, + 122, 69, 20, 84, 11, 204, 29, 219, 109, 179, 144, 111, 73, 198, + 200, 112, 227, 52, 140, 28, 215, 165, 219, 246, 14, 163, 94, 178, + 78, 68, 45, 10, 18, 190, 122, 227, 11, 244, 186, 31, 192, 194, + 88, 238, 30, 244, 50, 76, 44, 26, 11, 226, 63, 178, 15, 83, + 180, 20, 182, 83, 50, 69, 195, 102, 103, 134, 37, 104, 0, 152, + 29, 219, 74, 115, 253, 74, 126, 243, 81, 114, 182, 225, 23, 171, + 219, 129, 223, 116, 218, 77, 20, 82, 183, 93, 117, 102, 3, 22, + 182, 221, 168, 182, 197, 183, 212, 103, 119, 206, 204, 86, 253, 102, + 211, 247, 196, 233, 70, 22, 50, 21, 101, 166, 226, 206, 153, 220, + 155, 29, 136, 228, 119, 73, 255, 211, 118, 224, 216, 94, 100, 157, + 35, 70, 141, 213, 39, 52, 106, 76, 13, 206, 231, 139, 189, 184, + 138, 34, 95, 113, 137, 213, 75, 94, 20, 116, 42, 144, 61, 119, + 158, 100, 100, 130, 149, 37, 198, 109, 214, 193, 179, 147, 129, 10, + 252, 180, 14, 144, 20, 50, 20, 207, 77, 6, 42, 28, 184, 168, + 63, 170, 229, 207, 17, 194, 149, 216, 77, 219, 9, 238, 181, 100, + 254, 191, 208, 200, 240, 85, 39, 114, 92, 22, 46, 250, 205, 166, + 19, 89, 22, 49, 183, 253, 48, 18, 69, 241, 183, 53, 65, 250, + 91, 129, 15, 106, 78, 148, 150, 32, 212, 19, 176, 250, 132, 193, + 235, 9, 88, 221, 58, 70, 6, 171, 136, 105, 115, 219, 14, 183, + 39, 76, 252, 66, 120, 210, 53, 59, 220, 182, 114, 36, 211, 242, + 67, 220, 53, 159, 72, 225, 169, 144, 130, 243, 45, 50, 116, 149, + 5, 129, 19, 45, 226, 9, 202, 91, 36, 230, 32, 73, 243, 147, + 23, 164, 199, 168, 8, 8, 107, 180, 163, 234, 118, 200, 34, 164, + 7, 106, 20, 112, 222, 37, 35, 188, 225, 55, 5, 13, 223, 54, + 3, 146, 237, 51, 123, 218, 247, 253, 26, 25, 239, 174, 174, 130, + 20, 62, 70, 50, 204, 14, 92, 135, 137, 122, 7, 231, 233, 94, + 121, 233, 41, 168, 74, 88, 143, 146, 180, 11, 198, 14, 39, 238, + 94, 202, 138, 252, 249, 93, 126, 90, 199, 137, 56, 191, 135, 136, + 92, 239, 73, 92, 81, 89, 49, 137, 234, 231, 123, 170, 127, 163, + 82, 178, 226, 85, 50, 176, 134, 167, 64, 21, 86, 183, 30, 37, + 253, 13, 46, 131, 162, 222, 35, 123, 27, 32, 132, 180, 194, 234, + 215, 250, 42, 50, 251, 229, 12, 73, 135, 184, 172, 203, 47, 19, + 18, 103, 249, 118, 251, 240, 242, 153, 231, 102, 239, 77, 95, 92, + 226, 41, 173, 173, 235, 255, 23, 158, 25, 142, 244, 125, 78, 211, + 200, 63, 53, 241, 204, 112, 164, 207, 154, 255, 37, 179, 235, 248, + 239, 204, 5, 52, 85, 151, 55, 22, 203, 116, 161, 29, 109, 251, + 1, 110, 60, 45, 59, 85, 230, 161, 93, 238, 213, 196, 137, 206, + 66, 203, 174, 66, 78, 254, 165, 64, 159, 102, 65, 232, 248, 30, + 157, 47, 206, 209, 41, 200, 144, 23, 159, 242, 176, 232, 238, 248, + 109, 60, 204, 241, 252, 8, 77, 83, 62, 241, 129, 69, 207, 238, + 160, 241, 232, 128, 33, 214, 108, 185, 142, 13, 115, 152, 60, 89, + 146, 232, 139, 132, 62, 43, 48, 168, 153, 182, 234, 183, 58, 48, + 91, 36, 178, 81, 59, 18, 235, 174, 228, 188, 111, 35, 165, 156, + 73, 60, 95, 56, 187, 92, 94, 44, 173, 172, 149, 102, 230, 139, + 115, 132, 208, 13, 207, 101, 97, 108, 100, 163, 121, 218, 106, 185, + 78, 21, 39, 112, 215, 222, 165, 126, 64, 237, 70, 192, 248, 58, + 194, 241, 240, 232, 200, 241, 26, 5, 117, 198, 148, 56, 3, 235, + 98, 147, 164, 204, 9, 187, 50, 224, 233, 154, 58, 37, 186, 188, + 176, 86, 94, 43, 16, 250, 76, 121, 253, 218, 234, 198, 122, 215, + 17, 15, 158, 142, 44, 149, 215, 203, 171, 43, 120, 126, 177, 176, + 242, 44, 125, 170, 188, 178, 84, 160, 226, 120, 77, 44, 154, 128, + 68, 7, 24, 136, 7, 180, 107, 140, 117, 85, 95, 23, 103, 109, + 234, 4, 204, 181, 189, 70, 219, 110, 48, 218, 240, 119, 88, 224, + 129, 105, 18, 31, 131, 225, 14, 55, 161, 174, 211, 116, 248, 230, + 108, 184, 183, 69, 234, 172, 32, 219, 119, 136, 12, 16, 221, 232, + 179, 12, 171, 111, 90, 108, 220, 31, 232, 187, 34, 15, 3, 224, + 231, 31, 16, 220, 184, 55, 231, 250, 30, 214, 114, 255, 154, 208, + 5, 122, 155, 117, 102, 80, 197, 211, 166, 221, 162, 53, 22, 86, + 3, 103, 11, 168, 0, 131, 111, 135, 207, 60, 220, 22, 128, 241, + 72, 171, 54, 214, 136, 194, 25, 218, 77, 22, 167, 74, 195, 150, + 221, 97, 85, 100, 173, 227, 209, 154, 83, 71, 139, 58, 162, 176, + 22, 42, 96, 235, 197, 234, 2, 119, 213, 227, 239, 171, 107, 5, + 122, 245, 230, 134, 60, 109, 142, 63, 128, 48, 130, 120, 242, 37, + 28, 114, 55, 104, 123, 220, 148, 117, 237, 70, 88, 132, 70, 72, + 58, 107, 172, 238, 120, 168, 185, 192, 234, 139, 218, 1, 11, 147, + 237, 192, 188, 49, 193, 88, 147, 29, 119, 197, 62, 88, 156, 144, + 86, 109, 215, 5, 113, 131, 98, 10, 15, 161, 87, 219, 78, 141, + 185, 14, 44, 169, 160, 85, 251, 148, 173, 177, 208, 105, 120, 23, + 9, 157, 161, 235, 48, 202, 130, 182, 203, 104, 3, 138, 193, 34, + 218, 142, 128, 245, 33, 189, 177, 177, 182, 14, 108, 19, 6, 165, + 58, 0, 86, 120, 112, 55, 110, 1, 108, 202, 6, 142, 210, 22, + 171, 2, 119, 185, 62, 225, 61, 211, 112, 118, 152, 215, 69, 33, + 223, 129, 240, 219, 141, 109, 24, 39, 85, 223, 11, 29, 16, 27, + 39, 2, 100, 45, 59, 196, 85, 212, 84, 203, 143, 152, 23, 57, + 182, 235, 118, 128, 153, 183, 29, 183, 51, 93, 164, 229, 58, 117, + 16, 129, 211, 108, 249, 1, 238, 16, 69, 126, 220, 35, 14, 44, + 206, 236, 106, 224, 135, 33, 32, 179, 105, 149, 5, 168, 9, 106, + 78, 147, 121, 168, 122, 166, 88, 177, 81, 132, 165, 45, 142, 139, + 93, 182, 133, 180, 241, 35, 10, 37, 30, 123, 188, 10, 40, 13, + 157, 8, 93, 9, 96, 185, 91, 133, 161, 228, 132, 190, 107, 243, + 133, 60, 112, 5, 89, 19, 48, 197, 51, 27, 88, 40, 12, 70, + 217, 221, 184, 52, 164, 123, 136, 177, 249, 201, 55, 26, 142, 64, + 204, 102, 216, 118, 34, 6, 107, 41, 119, 26, 57, 188, 10, 168, + 249, 154, 199, 70, 14, 65, 79, 36, 199, 192, 46, 26, 175, 78, + 13, 170, 173, 219, 142, 219, 14, 24, 63, 194, 226, 43, 108, 113, + 102, 243, 230, 125, 189, 178, 122, 79, 253, 45, 92, 67, 196, 231, + 120, 148, 134, 44, 162, 44, 12, 85, 191, 1, 154, 72, 108, 95, + 48, 244, 78, 64, 185, 216, 118, 194, 200, 15, 58, 136, 172, 107, + 77, 239, 212, 233, 213, 21, 106, 7, 13, 222, 29, 118, 211, 247, + 26, 170, 141, 113, 53, 45, 219, 9, 66, 193, 116, 187, 86, 195, + 3, 33, 192, 229, 177, 93, 81, 94, 80, 200, 171, 118, 106, 64, + 80, 164, 230, 129, 46, 89, 180, 249, 154, 1, 200, 116, 162, 48, + 38, 13, 119, 2, 22, 197, 220, 89, 72, 18, 129, 180, 225, 200, + 217, 106, 87, 111, 179, 232, 34, 87, 120, 48, 25, 242, 132, 2, + 197, 94, 205, 87, 157, 60, 207, 133, 91, 143, 93, 217, 48, 69, + 230, 115, 29, 175, 125, 103, 38, 96, 46, 102, 143, 5, 224, 98, + 82, 48, 136, 152, 174, 96, 161, 93, 13, 187, 103, 117, 9, 204, + 134, 65, 117, 22, 202, 59, 94, 99, 22, 43, 217, 242, 163, 217, + 30, 137, 130, 21, 36, 174, 31, 141, 185, 204, 40, 121, 191, 88, + 61, 26, 231, 244, 7, 114, 1, 106, 206, 132, 150, 16, 12, 139, + 53, 212, 83, 172, 131, 28, 19, 11, 169, 166, 88, 242, 236, 216, + 174, 83, 163, 177, 229, 46, 216, 164, 50, 22, 104, 200, 167, 26, + 39, 64, 223, 141, 48, 10, 108, 199, 139, 192, 106, 24, 226, 43, + 192, 52, 80, 112, 159, 132, 52, 203, 56, 119, 240, 144, 132, 12, + 203, 56, 119, 228, 40, 121, 154, 232, 166, 102, 153, 143, 246, 61, + 169, 229, 174, 131, 210, 225, 251, 150, 221, 98, 81, 164, 235, 157, + 150, 83, 69, 233, 67, 135, 16, 156, 211, 236, 70, 131, 207, 195, + 140, 209, 178, 183, 227, 115, 239, 160, 98, 100, 55, 66, 206, 14, + 77, 179, 140, 71, 51, 22, 121, 138, 152, 166, 6, 236, 184, 164, + 143, 229, 158, 160, 21, 214, 96, 119, 46, 210, 23, 222, 109, 207, + 188, 244, 60, 252, 223, 220, 204, 133, 205, 231, 79, 77, 205, 246, + 36, 76, 159, 122, 144, 208, 27, 246, 29, 234, 50, 175, 17, 109, + 95, 164, 231, 207, 137, 166, 105, 176, 244, 53, 46, 233, 25, 9, + 105, 150, 113, 105, 96, 72, 66, 134, 101, 92, 26, 205, 146, 99, + 88, 173, 102, 25, 79, 232, 227, 57, 171, 11, 211, 252, 195, 231, + 21, 42, 45, 5, 57, 36, 42, 160, 249, 137, 129, 17, 9, 25, + 150, 241, 196, 152, 69, 254, 145, 78, 116, 83, 183, 204, 171, 125, + 47, 104, 185, 15, 234, 180, 107, 93, 36, 167, 19, 49, 48, 164, + 69, 47, 251, 89, 24, 164, 148, 175, 115, 192, 246, 112, 20, 179, + 8, 13, 108, 143, 218, 13, 219, 241, 194, 8, 183, 94, 108, 26, + 48, 196, 224, 7, 157, 73, 85, 200, 245, 27, 69, 122, 195, 15, + 98, 43, 2, 250, 162, 128, 185, 235, 42, 27, 193, 124, 48, 200, + 34, 106, 187, 161, 223, 67, 24, 152, 186, 179, 194, 176, 157, 13, + 88, 29, 74, 109, 57, 30, 119, 56, 82, 190, 91, 18, 21, 187, + 227, 128, 2, 119, 188, 2, 204, 5, 194, 241, 8, 93, 132, 216, + 29, 190, 99, 98, 152, 192, 220, 171, 153, 251, 200, 11, 196, 52, + 117, 232, 224, 235, 186, 149, 251, 46, 148, 247, 94, 245, 32, 185, + 0, 68, 168, 161, 44, 135, 27, 95, 20, 112, 223, 175, 98, 213, + 111, 230, 139, 208, 241, 94, 205, 22, 90, 3, 58, 67, 199, 62, + 191, 46, 58, 74, 199, 62, 191, 62, 48, 44, 33, 195, 50, 174, + 103, 199, 80, 212, 116, 32, 235, 134, 126, 31, 138, 154, 228, 165, + 112, 131, 242, 20, 39, 122, 137, 128, 97, 158, 47, 238, 83, 45, + 200, 199, 13, 85, 45, 200, 199, 141, 129, 172, 132, 12, 203, 184, + 49, 126, 128, 124, 84, 195, 122, 117, 203, 168, 232, 99, 185, 191, + 167, 81, 33, 25, 1, 171, 203, 122, 2, 86, 15, 103, 183, 153, + 93, 11, 103, 155, 182, 227, 229, 249, 196, 196, 119, 187, 99, 190, + 211, 93, 59, 164, 117, 22, 85, 183, 209, 150, 92, 241, 121, 167, + 108, 5, 182, 87, 221, 198, 54, 20, 208, 136, 79, 162, 227, 31, + 243, 251, 177, 76, 79, 1, 69, 146, 118, 224, 75, 69, 12, 19, + 93, 215, 13, 203, 168, 140, 102, 201, 5, 36, 221, 176, 140, 13, + 253, 80, 174, 32, 41, 191, 86, 122, 23, 93, 187, 182, 112, 166, + 136, 62, 9, 174, 191, 203, 2, 52, 4, 247, 169, 196, 72, 65, + 89, 89, 137, 161, 89, 198, 198, 192, 1, 9, 1, 222, 251, 39, + 200, 127, 171, 99, 45, 166, 101, 60, 175, 223, 151, 251, 130, 78, + 151, 64, 31, 178, 16, 140, 76, 63, 178, 93, 234, 7, 96, 173, + 160, 223, 28, 212, 31, 202, 174, 10, 88, 29, 109, 56, 62, 170, + 118, 88, 129, 54, 125, 207, 143, 124, 79, 168, 35, 199, 171, 6, + 204, 14, 249, 89, 75, 196, 26, 44, 224, 59, 254, 1, 3, 68, + 204, 171, 177, 26, 1, 83, 20, 80, 243, 245, 11, 223, 77, 6, + 99, 39, 132, 213, 134, 218, 94, 166, 13, 63, 242, 147, 110, 13, + 13, 39, 154, 241, 218, 205, 45, 22, 176, 128, 80, 190, 249, 64, + 91, 110, 187, 225, 120, 69, 110, 60, 80, 185, 43, 22, 74, 83, + 24, 181, 163, 29, 210, 93, 230, 186, 176, 66, 193, 131, 70, 2, + 41, 145, 52, 159, 195, 234, 54, 107, 226, 170, 4, 51, 163, 165, + 22, 130, 85, 230, 162, 203, 33, 31, 211, 251, 14, 0, 51, 5, + 236, 235, 151, 144, 102, 25, 207, 103, 164, 36, 154, 134, 101, 60, + 63, 126, 128, 80, 2, 63, 77, 187, 239, 69, 45, 119, 128, 46, + 40, 178, 197, 166, 134, 24, 184, 208, 73, 118, 230, 0, 185, 70, + 76, 211, 128, 129, 91, 213, 173, 220, 37, 153, 25, 134, 7, 23, + 181, 238, 33, 50, 19, 176, 29, 135, 237, 238, 55, 92, 145, 10, + 3, 135, 104, 85, 136, 130, 129, 67, 180, 42, 134, 168, 129, 67, + 180, 154, 29, 35, 103, 177, 78, 205, 50, 152, 126, 95, 238, 33, + 69, 32, 215, 75, 251, 143, 74, 137, 30, 134, 34, 83, 232, 97, + 40, 50, 49, 20, 13, 28, 138, 108, 252, 0, 153, 70, 244, 186, + 101, 52, 244, 241, 220, 17, 202, 119, 139, 40, 239, 71, 129, 253, + 204, 252, 217, 115, 15, 43, 164, 48, 70, 26, 130, 171, 6, 142, + 145, 70, 102, 68, 66, 134, 101, 52, 198, 44, 50, 133, 72, 13, + 203, 112, 244, 251, 114, 135, 233, 77, 224, 38, 218, 101, 221, 120, + 21, 78, 24, 18, 142, 194, 9, 220, 118, 50, 146, 80, 24, 18, + 206, 248, 1, 114, 142, 232, 166, 105, 153, 205, 190, 93, 45, 55, + 69, 151, 88, 43, 96, 120, 66, 115, 145, 110, 132, 172, 103, 134, + 129, 233, 129, 217, 53, 209, 123, 208, 243, 205, 204, 65, 174, 117, + 76, 232, 190, 150, 110, 129, 214, 89, 239, 114, 50, 173, 59, 204, + 173, 133, 66, 19, 215, 59, 184, 106, 136, 18, 211, 139, 56, 104, + 130, 153, 0, 44, 114, 88, 90, 75, 109, 68, 160, 97, 44, 128, + 49, 22, 207, 103, 91, 204, 245, 119, 37, 58, 7, 199, 174, 88, + 162, 240, 49, 43, 90, 111, 162, 20, 180, 68, 55, 153, 40, 5, + 45, 33, 5, 38, 74, 65, 43, 59, 70, 6, 145, 116, 205, 50, + 222, 35, 12, 20, 19, 123, 247, 61, 170, 24, 244, 238, 123, 68, + 239, 154, 216, 187, 239, 25, 63, 32, 138, 233, 150, 17, 232, 99, + 226, 19, 244, 95, 160, 138, 1, 202, 64, 232, 56, 174, 214, 130, + 209, 44, 217, 196, 98, 134, 101, 236, 232, 247, 229, 42, 200, 167, + 125, 26, 40, 166, 170, 170, 228, 57, 66, 174, 223, 80, 75, 248, + 222, 25, 148, 112, 95, 96, 213, 112, 232, 246, 29, 209, 237, 38, + 118, 251, 78, 70, 182, 0, 186, 125, 103, 252, 0, 121, 136, 192, + 56, 78, 189, 212, 247, 221, 154, 150, 59, 212, 213, 239, 75, 190, + 220, 164, 17, 29, 157, 210, 44, 227, 165, 204, 97, 114, 153, 152, + 102, 10, 250, 249, 101, 253, 129, 220, 195, 72, 62, 104, 228, 48, + 146, 180, 170, 38, 224, 22, 73, 213, 109, 215, 212, 58, 2, 125, + 165, 4, 133, 41, 52, 9, 95, 214, 179, 18, 210, 44, 227, 229, + 177, 67, 18, 50, 44, 227, 229, 35, 71, 201, 58, 214, 166, 89, + 198, 251, 245, 35, 185, 171, 180, 44, 240, 249, 158, 219, 233, 173, + 47, 148, 118, 131, 29, 225, 218, 130, 187, 106, 185, 29, 62, 97, + 64, 58, 63, 104, 81, 245, 107, 105, 64, 43, 235, 135, 62, 126, + 255, 216, 253, 18, 50, 44, 227, 253, 185, 195, 228, 34, 209, 205, + 180, 149, 254, 144, 214, 247, 17, 77, 203, 21, 232, 130, 240, 38, + 131, 238, 81, 71, 56, 96, 230, 136, 115, 123, 48, 74, 61, 208, + 165, 69, 126, 138, 147, 214, 44, 243, 67, 90, 102, 140, 60, 78, + 76, 51, 173, 247, 89, 230, 247, 106, 250, 116, 110, 22, 249, 230, + 187, 53, 224, 91, 236, 28, 112, 119, 142, 13, 147, 20, 20, 79, + 99, 249, 195, 18, 196, 35, 162, 35, 15, 74, 208, 0, 112, 114, + 138, 92, 199, 186, 52, 203, 252, 62, 77, 159, 204, 61, 214, 205, + 181, 196, 201, 211, 94, 86, 1, 69, 221, 172, 226, 168, 181, 52, + 34, 147, 21, 107, 136, 251, 72, 94, 130, 6, 128, 39, 31, 34, + 151, 137, 110, 246, 91, 233, 143, 106, 125, 159, 208, 180, 220, 185, + 228, 65, 21, 142, 109, 126, 188, 201, 77, 75, 229, 93, 239, 69, + 129, 239, 82, 190, 63, 42, 184, 214, 175, 89, 230, 71, 129, 107, + 95, 6, 173, 210, 159, 233, 179, 210, 175, 104, 250, 107, 154, 145, + 251, 45, 174, 88, 246, 45, 76, 57, 223, 233, 42, 52, 83, 218, + 120, 78, 72, 195, 118, 171, 229, 7, 176, 232, 71, 241, 112, 66, + 218, 244, 155, 204, 139, 112, 175, 129, 47, 159, 57, 2, 238, 150, + 8, 189, 176, 197, 72, 162, 152, 227, 209, 122, 27, 214, 247, 98, + 53, 239, 249, 222, 140, 196, 223, 112, 162, 2, 13, 219, 91, 59, + 124, 223, 179, 64, 249, 132, 68, 97, 145, 105, 55, 24, 17, 43, + 198, 144, 111, 33, 116, 228, 220, 204, 157, 17, 182, 89, 192, 56, + 139, 251, 51, 208, 153, 175, 104, 153, 17, 50, 11, 77, 6, 73, + 249, 65, 205, 60, 156, 59, 78, 23, 164, 197, 229, 120, 170, 85, + 177, 226, 20, 93, 212, 143, 178, 241, 131, 154, 57, 34, 65, 13, + 192, 209, 131, 18, 52, 0, 60, 148, 35, 143, 17, 221, 204, 88, + 233, 31, 210, 250, 62, 167, 105, 185, 98, 119, 23, 197, 21, 217, + 251, 87, 5, 157, 147, 209, 44, 243, 135, 180, 140, 69, 22, 137, + 105, 102, 128, 208, 79, 107, 186, 37, 84, 193, 91, 53, 173, 145, + 188, 12, 158, 30, 126, 90, 211, 51, 18, 212, 0, 28, 24, 150, + 160, 1, 96, 118, 140, 148, 176, 70, 205, 50, 127, 68, 211, 239, + 203, 61, 130, 53, 10, 21, 40, 109, 180, 55, 34, 64, 78, 224, + 28, 171, 150, 66, 60, 178, 78, 13, 209, 14, 100, 37, 104, 0, + 56, 126, 128, 124, 80, 195, 74, 117, 203, 252, 172, 166, 143, 229, + 218, 127, 43, 230, 180, 32, 74, 79, 33, 21, 146, 100, 224, 196, + 103, 181, 129, 33, 9, 26, 0, 142, 102, 213, 121, 226, 55, 243, + 228, 72, 239, 65, 32, 119, 173, 188, 219, 181, 168, 79, 104, 36, + 189, 134, 57, 172, 75, 36, 205, 39, 109, 113, 50, 120, 98, 207, + 113, 9, 207, 88, 188, 130, 185, 248, 209, 160, 40, 146, 251, 46, + 50, 152, 72, 222, 231, 152, 175, 144, 60, 230, 27, 156, 63, 184, + 7, 249, 211, 240, 53, 121, 112, 248, 179, 58, 73, 97, 162, 117, + 137, 16, 175, 237, 186, 155, 28, 1, 32, 29, 217, 231, 48, 103, + 165, 237, 186, 152, 255, 90, 95, 101, 192, 147, 128, 117, 130, 12, + 113, 59, 105, 51, 174, 95, 187, 214, 87, 25, 228, 169, 42, 19, + 223, 123, 16, 153, 240, 200, 5, 50, 241, 84, 158, 233, 24, 33, + 91, 190, 47, 201, 48, 169, 54, 149, 129, 170, 32, 141, 103, 120, + 12, 177, 180, 171, 145, 200, 146, 194, 166, 222, 127, 23, 62, 10, + 244, 237, 106, 164, 90, 233, 58, 161, 44, 155, 190, 203, 145, 213, + 178, 19, 70, 170, 149, 174, 4, 46, 167, 137, 121, 219, 241, 106, + 249, 75, 100, 64, 229, 176, 138, 36, 205, 55, 107, 68, 143, 222, + 141, 233, 34, 215, 169, 195, 100, 64, 49, 209, 26, 33, 100, 101, + 99, 121, 121, 243, 233, 133, 229, 141, 82, 182, 239, 242, 251, 247, + 191, 2, 55, 200, 27, 35, 239, 191, 205, 222, 227, 253, 55, 222, + 240, 183, 116, 249, 237, 147, 71, 73, 218, 50, 31, 232, 123, 225, + 157, 187, 111, 239, 220, 125, 123, 231, 238, 219, 59, 119, 223, 222, + 185, 251, 246, 206, 221, 183, 191, 245, 187, 111, 87, 226, 187, 111, + 87, 222, 248, 238, 91, 33, 190, 251, 86, 120, 11, 119, 223, 126, + 206, 224, 71, 232, 243, 125, 15, 107, 185, 31, 55, 232, 45, 62, + 225, 222, 234, 190, 246, 198, 231, 211, 118, 192, 106, 124, 202, 195, + 25, 189, 32, 247, 247, 240, 124, 189, 46, 246, 100, 136, 48, 84, + 155, 54, 174, 63, 107, 29, 207, 110, 138, 253, 76, 152, 161, 229, + 1, 15, 186, 154, 134, 126, 147, 41, 151, 129, 176, 160, 42, 39, + 180, 137, 10, 120, 139, 37, 86, 77, 91, 29, 60, 221, 66, 31, + 59, 69, 28, 63, 150, 233, 57, 19, 244, 8, 13, 209, 5, 22, + 8, 83, 232, 169, 235, 220, 102, 244, 250, 154, 106, 14, 119, 128, + 22, 136, 132, 111, 187, 71, 132, 99, 107, 81, 156, 108, 69, 182, + 227, 134, 124, 247, 196, 142, 122, 234, 197, 249, 82, 248, 24, 160, + 54, 109, 224, 17, 49, 137, 253, 76, 112, 218, 150, 109, 80, 91, + 45, 146, 36, 233, 121, 128, 126, 208, 61, 168, 33, 175, 234, 11, + 39, 228, 121, 4, 105, 241, 129, 220, 124, 102, 4, 247, 184, 197, + 129, 28, 205, 21, 232, 134, 135, 219, 205, 172, 134, 61, 224, 215, + 239, 222, 3, 221, 71, 105, 7, 146, 71, 105, 247, 29, 78, 30, + 165, 61, 112, 140, 252, 83, 157, 159, 165, 61, 222, 119, 67, 203, + 253, 99, 157, 222, 66, 43, 174, 71, 74, 238, 82, 83, 194, 237, + 125, 139, 9, 247, 18, 66, 193, 132, 46, 64, 143, 138, 93, 70, + 121, 173, 0, 126, 129, 205, 203, 108, 143, 159, 1, 85, 219, 65, + 8, 125, 46, 58, 77, 136, 158, 31, 80, 155, 168, 73, 89, 202, + 212, 130, 152, 188, 248, 118, 59, 175, 221, 9, 99, 55, 3, 232, + 12, 22, 225, 65, 56, 223, 16, 11, 25, 145, 135, 149, 80, 124, + 43, 196, 13, 5, 113, 151, 83, 121, 31, 40, 183, 122, 219, 163, + 44, 8, 252, 224, 77, 123, 78, 176, 71, 118, 28, 82, 82, 140, + 79, 14, 31, 207, 12, 147, 60, 49, 77, 45, 211, 103, 153, 79, + 234, 203, 70, 238, 0, 226, 3, 35, 91, 81, 46, 79, 241, 96, + 41, 111, 60, 153, 25, 34, 147, 242, 172, 113, 193, 60, 154, 203, + 117, 47, 181, 129, 157, 221, 197, 176, 95, 23, 204, 225, 196, 57, + 226, 194, 200, 68, 226, 28, 113, 225, 240, 17, 220, 81, 198, 115, + 196, 69, 243, 72, 238, 72, 55, 202, 154, 223, 222, 114, 89, 15, + 82, 45, 5, 121, 73, 226, 68, 113, 113, 240, 254, 196, 137, 226, + 98, 238, 176, 64, 170, 91, 70, 105, 47, 82, 113, 6, 219, 141, + 84, 79, 65, 94, 5, 105, 150, 81, 82, 72, 117, 195, 50, 74, + 185, 195, 228, 20, 34, 53, 44, 227, 170, 57, 145, 59, 218, 179, + 207, 192, 229, 165, 7, 171, 145, 130, 204, 242, 240, 211, 208, 44, + 227, 234, 192, 184, 132, 0, 209, 193, 251, 201, 12, 98, 53, 45, + 163, 108, 30, 201, 209, 61, 164, 74, 165, 215, 141, 216, 76, 67, + 126, 5, 105, 150, 81, 86, 228, 154, 134, 101, 148, 115, 135, 5, + 226, 148, 101, 60, 101, 30, 237, 69, 28, 176, 22, 195, 251, 10, + 66, 76, 20, 226, 84, 26, 242, 203, 30, 75, 105, 150, 241, 148, + 234, 177, 148, 97, 25, 79, 29, 62, 66, 126, 82, 35, 122, 170, + 207, 50, 215, 250, 158, 214, 114, 159, 210, 232, 45, 181, 166, 66, + 113, 147, 251, 214, 145, 239, 81, 134, 251, 192, 182, 220, 60, 85, + 114, 202, 77, 68, 37, 48, 82, 47, 17, 37, 182, 120, 85, 163, + 237, 9, 235, 237, 141, 37, 189, 187, 122, 204, 118, 11, 112, 223, + 226, 226, 158, 2, 185, 91, 75, 141, 144, 28, 49, 83, 168, 166, + 54, 244, 177, 220, 48, 93, 233, 145, 215, 20, 215, 60, 27, 250, + 144, 132, 116, 203, 216, 24, 205, 146, 15, 104, 252, 120, 250, 221, + 125, 47, 104, 185, 29, 122, 75, 173, 63, 69, 115, 119, 3, 187, + 213, 98, 1, 181, 3, 191, 45, 246, 252, 5, 119, 113, 62, 74, + 104, 135, 55, 27, 179, 221, 152, 49, 155, 29, 4, 118, 39, 113, + 32, 252, 238, 204, 24, 185, 40, 15, 132, 159, 215, 143, 228, 102, + 160, 103, 123, 170, 123, 19, 133, 171, 235, 125, 120, 84, 168, 160, + 180, 101, 60, 63, 152, 77, 28, 253, 62, 47, 182, 141, 249, 209, + 239, 243, 185, 195, 106, 7, 230, 127, 249, 176, 65, 104, 239, 22, + 12, 159, 129, 90, 145, 31, 220, 109, 27, 230, 6, 25, 187, 226, + 184, 108, 73, 101, 92, 99, 145, 245, 40, 49, 235, 142, 203, 196, + 226, 253, 193, 61, 139, 247, 238, 18, 184, 10, 174, 96, 137, 252, + 87, 76, 50, 190, 207, 87, 203, 34, 38, 44, 60, 164, 251, 41, + 252, 70, 247, 83, 187, 122, 219, 110, 48, 229, 126, 202, 65, 235, + 1, 66, 228, 237, 249, 106, 103, 194, 160, 198, 212, 64, 37, 145, + 98, 157, 38, 99, 173, 246, 150, 235, 84, 55, 19, 217, 8, 53, + 166, 82, 149, 44, 255, 176, 20, 103, 158, 36, 163, 187, 204, 190, + 157, 204, 58, 136, 89, 71, 32, 57, 145, 113, 145, 12, 53, 89, + 24, 218, 13, 182, 9, 125, 51, 97, 98, 235, 233, 158, 214, 247, + 182, 124, 80, 148, 90, 239, 180, 152, 181, 64, 6, 96, 108, 113, + 12, 169, 187, 240, 175, 228, 181, 155, 189, 88, 50, 80, 76, 160, + 232, 135, 165, 191, 83, 101, 19, 105, 68, 48, 185, 119, 31, 135, + 127, 239, 197, 33, 203, 89, 139, 100, 0, 47, 227, 195, 42, 107, + 162, 31, 145, 156, 220, 167, 23, 153, 91, 235, 69, 17, 151, 179, + 206, 147, 126, 225, 139, 56, 145, 17, 78, 200, 251, 9, 194, 42, + 207, 83, 145, 153, 173, 50, 201, 242, 53, 253, 38, 172, 233, 55, + 29, 175, 238, 79, 12, 32, 130, 99, 123, 27, 130, 25, 23, 253, + 26, 43, 123, 117, 191, 50, 18, 118, 193, 214, 65, 146, 14, 59, + 94, 100, 223, 153, 24, 66, 9, 17, 80, 254, 151, 210, 100, 244, + 94, 68, 236, 18, 73, 225, 216, 155, 208, 223, 10, 15, 120, 153, + 110, 38, 166, 191, 69, 38, 46, 144, 65, 143, 133, 17, 171, 113, + 137, 48, 238, 81, 166, 8, 47, 180, 87, 164, 204, 111, 73, 164, + 222, 69, 70, 21, 73, 155, 120, 208, 35, 100, 115, 246, 205, 40, + 41, 150, 100, 57, 116, 137, 175, 140, 176, 46, 216, 90, 34, 196, + 247, 152, 95, 223, 172, 177, 170, 59, 145, 185, 11, 151, 86, 33, + 203, 30, 46, 249, 60, 181, 234, 90, 23, 98, 81, 235, 191, 139, + 164, 220, 224, 131, 108, 143, 180, 109, 144, 17, 185, 85, 38, 90, + 54, 128, 68, 20, 223, 180, 101, 21, 81, 140, 55, 108, 56, 72, + 130, 214, 9, 162, 18, 54, 81, 172, 8, 106, 161, 33, 153, 184, + 98, 55, 89, 238, 37, 50, 210, 205, 30, 235, 0, 73, 133, 145, + 29, 112, 63, 251, 84, 133, 3, 86, 150, 24, 204, 171, 137, 200, + 94, 240, 211, 250, 59, 113, 131, 13, 108, 240, 67, 123, 123, 180, + 11, 115, 111, 187, 115, 143, 144, 225, 174, 6, 220, 107, 213, 249, + 151, 201, 125, 251, 162, 182, 222, 69, 14, 180, 61, 21, 34, 131, + 213, 54, 121, 85, 19, 255, 119, 255, 93, 100, 110, 35, 153, 155, + 99, 169, 140, 183, 247, 38, 158, 26, 200, 124, 181, 63, 251, 221, + 223, 253, 221, 223, 173, 231, 255, 73, 154, 28, 216, 111, 204, 236, + 59, 124, 15, 146, 52, 95, 3, 32, 147, 82, 21, 1, 89, 11, + 36, 229, 218, 91, 204, 197, 173, 240, 145, 249, 211, 247, 52, 42, + 139, 203, 80, 164, 194, 75, 90, 79, 16, 83, 168, 104, 192, 112, + 234, 222, 48, 192, 88, 170, 96, 57, 235, 48, 25, 128, 191, 92, + 54, 210, 72, 115, 6, 18, 64, 46, 172, 28, 201, 240, 88, 40, + 76, 78, 109, 10, 6, 193, 170, 177, 186, 221, 118, 229, 126, 123, + 63, 102, 24, 18, 137, 114, 195, 127, 144, 143, 42, 199, 171, 177, + 59, 168, 61, 83, 21, 62, 208, 202, 144, 2, 213, 191, 24, 250, + 158, 20, 77, 172, 2, 18, 176, 250, 71, 122, 21, 247, 209, 253, + 155, 183, 103, 44, 77, 146, 81, 110, 77, 108, 202, 123, 196, 19, + 99, 84, 155, 202, 84, 70, 120, 242, 170, 72, 205, 255, 130, 78, + 76, 84, 44, 163, 100, 112, 253, 217, 155, 165, 205, 165, 213, 141, + 203, 203, 165, 172, 102, 141, 16, 130, 9, 87, 150, 87, 23, 214, + 179, 186, 130, 49, 100, 66, 214, 80, 5, 120, 12, 137, 172, 153, + 204, 112, 118, 62, 155, 178, 178, 100, 136, 35, 40, 191, 171, 180, + 116, 254, 92, 54, 221, 157, 114, 118, 62, 219, 111, 13, 147, 1, + 76, 185, 188, 186, 186, 156, 205, 40, 156, 107, 235, 149, 242, 202, + 213, 236, 128, 194, 121, 181, 178, 186, 113, 51, 75, 20, 134, 27, + 165, 181, 181, 133, 171, 165, 236, 160, 202, 113, 249, 217, 245, 210, + 90, 118, 168, 139, 172, 179, 243, 217, 97, 85, 69, 105, 101, 227, + 70, 118, 196, 26, 35, 195, 188, 10, 73, 196, 104, 79, 210, 249, + 115, 217, 108, 76, 8, 199, 50, 214, 149, 112, 254, 92, 214, 202, + 47, 146, 20, 138, 161, 101, 145, 145, 229, 133, 203, 165, 229, 205, + 85, 220, 247, 90, 88, 206, 106, 113, 90, 165, 244, 93, 27, 229, + 74, 105, 41, 171, 39, 211, 110, 150, 22, 214, 75, 75, 89, 35, + 95, 37, 7, 246, 83, 168, 251, 14, 161, 132, 44, 232, 119, 145, + 5, 196, 213, 43, 11, 249, 223, 215, 201, 248, 62, 147, 202, 190, + 149, 60, 25, 31, 177, 129, 166, 152, 222, 119, 118, 66, 201, 222, + 51, 213, 98, 185, 164, 169, 97, 220, 197, 212, 0, 20, 123, 4, + 246, 249, 61, 202, 159, 207, 143, 231, 239, 101, 126, 196, 180, 183, + 54, 9, 164, 246, 153, 4, 46, 145, 177, 61, 136, 238, 89, 25, + 127, 80, 35, 19, 119, 99, 206, 155, 168, 68, 189, 75, 37, 94, + 234, 229, 224, 241, 187, 119, 194, 158, 190, 254, 9, 141, 28, 220, + 223, 164, 220, 151, 134, 39, 72, 154, 95, 10, 23, 253, 189, 119, + 238, 186, 129, 159, 123, 59, 91, 148, 74, 206, 246, 198, 221, 236, + 66, 78, 205, 30, 74, 63, 172, 147, 251, 246, 69, 190, 47, 161, + 71, 9, 113, 188, 86, 59, 226, 166, 19, 215, 196, 3, 152, 130, + 202, 11, 180, 108, 59, 82, 223, 249, 109, 55, 194, 147, 48, 195, + 163, 49, 161, 38, 18, 250, 192, 93, 90, 186, 71, 48, 231, 72, + 182, 234, 58, 204, 139, 54, 195, 40, 96, 118, 211, 241, 26, 56, + 213, 100, 46, 166, 234, 182, 27, 178, 202, 40, 255, 188, 38, 191, 66, 9, 20, 160, 32, 81, 34, 221, 85, 130, 127, 86, 37, 242, - 159, 26, 32, 131, 9, 3, 220, 58, 77, 14, 188, 105, 111, 219, - 27, 210, 169, 226, 156, 24, 132, 180, 123, 194, 177, 154, 33, 163, - 152, 197, 111, 71, 44, 216, 168, 186, 118, 24, 34, 211, 50, 152, - 213, 130, 111, 43, 240, 105, 65, 126, 177, 46, 147, 17, 44, 33, - 23, 66, 54, 120, 52, 82, 146, 164, 108, 24, 114, 220, 21, 25, - 48, 12, 168, 181, 72, 78, 96, 49, 241, 184, 40, 219, 192, 53, - 161, 112, 195, 246, 106, 252, 105, 195, 81, 64, 112, 67, 31, 211, - 42, 71, 33, 227, 45, 145, 175, 132, 217, 230, 189, 26, 190, 118, - 120, 141, 28, 65, 44, 226, 64, 110, 117, 139, 85, 31, 108, 180, - 163, 250, 179, 99, 199, 146, 245, 35, 133, 60, 124, 231, 2, 100, - 89, 143, 234, 207, 90, 171, 228, 0, 116, 70, 211, 121, 155, 109, - 212, 253, 0, 231, 208, 161, 61, 84, 83, 130, 131, 197, 21, 81, - 224, 174, 95, 99, 215, 82, 171, 247, 74, 165, 197, 202, 160, 196, - 114, 211, 15, 64, 160, 26, 190, 98, 240, 32, 23, 168, 134, 47, - 217, 123, 153, 140, 84, 171, 27, 34, 44, 195, 134, 112, 198, 194, - 177, 108, 23, 179, 170, 213, 91, 60, 131, 144, 241, 208, 186, 74, - 14, 199, 204, 74, 22, 28, 222, 213, 202, 222, 162, 151, 201, 72, - 171, 179, 187, 160, 213, 85, 99, 171, 211, 91, 236, 25, 50, 218, - 218, 106, 237, 46, 119, 62, 89, 206, 106, 109, 181, 122, 11, 158, - 67, 207, 92, 196, 99, 31, 123, 42, 153, 61, 241, 193, 42, 146, - 108, 181, 186, 193, 60, 123, 211, 101, 27, 118, 192, 60, 59, 28, - 59, 133, 153, 205, 40, 104, 179, 202, 80, 181, 90, 194, 143, 243, - 248, 205, 58, 79, 134, 253, 205, 55, 171, 92, 34, 55, 90, 1, - 171, 59, 15, 199, 206, 34, 123, 15, 193, 7, 148, 199, 123, 152, - 108, 77, 146, 108, 53, 220, 178, 131, 22, 170, 228, 176, 101, 87, - 217, 216, 57, 158, 149, 167, 47, 203, 100, 24, 17, 225, 142, 83, - 143, 36, 198, 113, 62, 34, 48, 77, 96, 155, 32, 89, 224, 68, - 87, 197, 19, 152, 109, 168, 181, 213, 74, 214, 123, 134, 28, 132, - 156, 113, 165, 147, 220, 112, 107, 109, 37, 106, 188, 68, 142, 64, - 166, 38, 139, 236, 154, 29, 217, 137, 220, 5, 204, 13, 108, 191, - 43, 62, 118, 209, 25, 180, 55, 59, 74, 176, 166, 56, 157, 144, - 38, 69, 235, 111, 205, 56, 207, 95, 35, 7, 146, 114, 111, 13, - 16, 46, 249, 89, 13, 140, 160, 133, 149, 69, 48, 95, 94, 43, - 101, 117, 48, 163, 150, 202, 107, 165, 141, 202, 250, 242, 90, 249, - 110, 41, 107, 36, 12, 251, 59, 102, 230, 233, 236, 56, 88, 13, - 67, 221, 158, 154, 245, 28, 121, 74, 46, 171, 132, 44, 218, 216, - 113, 2, 28, 144, 77, 155, 79, 142, 74, 126, 70, 69, 174, 85, - 22, 189, 226, 4, 226, 85, 99, 107, 137, 156, 242, 252, 13, 249, - 134, 244, 70, 188, 160, 181, 97, 87, 171, 44, 12, 125, 62, 17, - 42, 44, 199, 61, 127, 85, 100, 142, 103, 136, 121, 145, 181, 71, - 124, 141, 253, 196, 247, 24, 25, 104, 218, 173, 13, 230, 69, 65, - 7, 237, 243, 76, 37, 211, 180, 91, 252, 66, 195, 223, 133, 155, - 116, 199, 204, 152, 217, 212, 29, 51, 147, 202, 166, 239, 152, 153, - 116, 182, 255, 142, 153, 201, 100, 7, 238, 152, 153, 129, 44, 201, - 255, 144, 73, 14, 36, 45, 120, 112, 136, 170, 56, 135, 241, 27, - 17, 187, 239, 107, 36, 115, 23, 23, 96, 114, 187, 150, 230, 230, - 114, 133, 151, 4, 195, 2, 196, 143, 113, 243, 36, 83, 17, 144, - 117, 139, 164, 223, 12, 17, 119, 26, 113, 239, 181, 26, 152, 192, - 125, 103, 21, 145, 15, 220, 89, 221, 88, 94, 169, 220, 157, 95, - 170, 136, 226, 214, 81, 98, 186, 246, 219, 157, 238, 105, 16, 147, - 172, 34, 57, 212, 246, 182, 89, 224, 212, 29, 86, 219, 192, 92, - 135, 146, 185, 134, 226, 175, 75, 144, 255, 49, 187, 241, 40, 49, - 119, 152, 253, 160, 123, 178, 194, 164, 191, 197, 225, 52, 77, 82, - 200, 95, 139, 16, 193, 225, 108, 159, 149, 33, 230, 194, 74, 5, - 134, 84, 150, 28, 224, 169, 27, 247, 202, 165, 133, 82, 86, 207, - 95, 38, 105, 206, 52, 24, 110, 138, 109, 217, 62, 1, 10, 28, - 154, 252, 186, 126, 247, 70, 169, 146, 213, 119, 9, 75, 62, 36, - 7, 146, 150, 252, 223, 141, 59, 255, 95, 106, 100, 48, 97, 153, - 131, 73, 101, 187, 174, 191, 179, 97, 187, 142, 29, 10, 81, 34, - 152, 52, 15, 41, 143, 219, 117, 127, 71, 131, 44, 149, 77, 231, - 191, 168, 145, 108, 175, 105, 220, 67, 166, 246, 247, 73, 102, 254, - 243, 26, 25, 234, 182, 135, 123, 200, 59, 253, 247, 74, 222, 255, - 170, 147, 131, 93, 86, 240, 227, 82, 247, 22, 25, 118, 106, 172, - 137, 15, 110, 86, 59, 27, 46, 219, 102, 238, 88, 30, 149, 204, - 238, 101, 201, 174, 26, 138, 229, 184, 220, 18, 20, 187, 54, 82, - 94, 44, 221, 189, 183, 178, 86, 90, 94, 120, 117, 99, 125, 249, - 165, 229, 149, 87, 150, 43, 89, 167, 39, 219, 223, 226, 176, 191, - 71, 178, 189, 68, 89, 79, 145, 189, 200, 202, 246, 89, 35, 228, - 208, 242, 202, 198, 106, 121, 177, 180, 81, 186, 121, 179, 180, 176, - 182, 202, 87, 78, 84, 238, 181, 174, 1, 158, 255, 199, 6, 25, - 217, 131, 18, 107, 94, 248, 60, 220, 13, 155, 122, 28, 234, 139, - 96, 117, 220, 179, 131, 72, 184, 72, 147, 36, 27, 7, 55, 77, - 94, 121, 171, 28, 138, 211, 249, 162, 84, 129, 88, 242, 134, 229, - 134, 227, 69, 137, 203, 111, 102, 37, 43, 191, 148, 189, 72, 229, - 150, 119, 48, 19, 185, 249, 155, 229, 89, 249, 69, 229, 62, 77, - 14, 240, 35, 172, 137, 59, 111, 90, 101, 144, 167, 169, 44, 93, - 23, 243, 96, 94, 62, 208, 125, 45, 111, 156, 28, 178, 27, 141, - 0, 144, 75, 68, 220, 179, 25, 82, 201, 152, 49, 119, 135, 100, - 36, 31, 96, 178, 7, 78, 108, 180, 184, 187, 174, 79, 12, 84, - 50, 158, 252, 120, 154, 28, 112, 194, 141, 120, 27, 64, 167, 250, - 68, 166, 50, 232, 132, 106, 9, 53, 255, 211, 58, 25, 234, 222, - 198, 176, 22, 73, 70, 190, 90, 33, 246, 208, 38, 222, 99, 231, - 67, 61, 20, 80, 81, 37, 115, 191, 169, 145, 140, 76, 182, 142, - 16, 179, 101, 71, 91, 136, 46, 117, 67, 207, 106, 21, 132, 33, - 61, 108, 217, 30, 138, 128, 72, 7, 24, 250, 213, 101, 118, 13, - 221, 38, 220, 125, 142, 66, 217, 175, 34, 125, 65, 36, 91, 23, - 200, 112, 20, 216, 142, 219, 149, 151, 63, 61, 159, 149, 31, 84, - 230, 107, 228, 168, 196, 91, 99, 145, 93, 221, 98, 181, 184, 80, - 26, 151, 71, 158, 18, 25, 22, 197, 119, 89, 54, 255, 53, 141, - 12, 75, 71, 175, 166, 152, 117, 151, 16, 219, 243, 252, 40, 201, - 174, 221, 162, 188, 171, 92, 113, 94, 21, 170, 36, 16, 228, 154, - 132, 196, 95, 246, 101, 219, 41, 50, 40, 246, 168, 112, 163, 147, - 47, 13, 16, 158, 132, 207, 69, 140, 146, 212, 38, 107, 56, 158, - 88, 121, 230, 128, 92, 192, 49, 213, 2, 206, 141, 127, 176, 247, - 93, 200, 108, 207, 242, 68, 120, 91, 123, 109, 234, 61, 47, 68, - 198, 214, 109, 215, 117, 200, 92, 239, 117, 200, 10, 171, 187, 12, - 175, 95, 223, 249, 189, 223, 208, 73, 191, 149, 26, 239, 251, 92, - 191, 70, 126, 238, 16, 30, 130, 28, 127, 114, 25, 242, 201, 101, - 200, 39, 151, 33, 159, 92, 134, 124, 114, 25, 242, 201, 101, 200, - 15, 126, 25, 114, 238, 247, 116, 113, 96, 254, 26, 125, 192, 188, - 200, 247, 190, 45, 86, 236, 116, 226, 37, 76, 162, 47, 219, 65, - 205, 158, 36, 148, 222, 176, 67, 126, 10, 220, 15, 156, 134, 227, - 217, 238, 238, 9, 136, 191, 254, 79, 55, 59, 132, 210, 85, 219, - 123, 211, 238, 208, 91, 91, 172, 105, 239, 216, 81, 129, 222, 97, - 245, 58, 93, 228, 87, 201, 188, 26, 215, 52, 234, 34, 72, 50, - 56, 109, 124, 208, 94, 222, 231, 235, 121, 45, 62, 164, 117, 188, - 95, 226, 120, 148, 207, 200, 152, 27, 207, 3, 139, 39, 195, 19, - 201, 242, 174, 91, 20, 216, 94, 200, 15, 61, 242, 23, 29, 220, - 14, 127, 106, 98, 143, 227, 76, 68, 105, 17, 219, 235, 8, 157, - 152, 60, 224, 45, 222, 250, 23, 121, 2, 110, 14, 225, 59, 239, - 78, 179, 229, 7, 81, 56, 169, 142, 154, 79, 170, 171, 166, 23, - 250, 22, 229, 81, 115, 248, 201, 19, 11, 241, 5, 210, 130, 186, - 43, 58, 213, 55, 43, 47, 144, 194, 79, 158, 88, 236, 123, 70, - 222, 84, 133, 159, 60, 113, 58, 190, 64, 58, 173, 194, 10, 207, - 196, 215, 87, 103, 212, 245, 213, 75, 125, 199, 201, 71, 137, 158, - 25, 192, 159, 185, 136, 246, 30, 29, 83, 167, 59, 229, 122, 184, - 120, 180, 162, 197, 88, 141, 110, 50, 126, 64, 49, 80, 134, 201, - 212, 38, 136, 3, 161, 182, 219, 240, 3, 39, 218, 106, 134, 180, - 230, 123, 227, 17, 221, 241, 131, 7, 180, 214, 198, 155, 101, 155, - 190, 31, 133, 81, 192, 35, 46, 21, 9, 121, 147, 159, 174, 127, - 182, 239, 154, 150, 123, 67, 190, 163, 199, 69, 168, 234, 55, 91, - 142, 203, 2, 236, 46, 190, 69, 179, 171, 111, 86, 89, 36, 15, - 180, 203, 23, 139, 57, 237, 132, 11, 0, 197, 103, 126, 131, 176, - 235, 12, 251, 179, 153, 163, 248, 102, 42, 158, 228, 189, 170, 79, - 200, 99, 198, 38, 64, 201, 107, 151, 87, 7, 79, 38, 14, 36, - 95, 61, 117, 38, 113, 32, 249, 234, 211, 227, 100, 90, 222, 186, - 124, 77, 203, 157, 161, 139, 66, 52, 121, 116, 192, 102, 203, 101, - 17, 75, 138, 93, 215, 5, 195, 99, 120, 49, 20, 175, 11, 190, - 160, 31, 203, 23, 184, 96, 242, 199, 247, 212, 227, 39, 145, 120, - 176, 37, 54, 74, 162, 128, 49, 117, 129, 208, 132, 178, 201, 199, - 223, 95, 24, 28, 78, 92, 39, 124, 193, 58, 146, 184, 78, 248, - 194, 209, 156, 184, 164, 167, 89, 198, 139, 250, 201, 252, 9, 241, - 104, 96, 221, 247, 243, 5, 252, 167, 184, 105, 7, 249, 2, 101, - 81, 53, 190, 79, 104, 66, 230, 228, 237, 194, 23, 85, 29, 248, - 174, 138, 117, 52, 113, 187, 240, 197, 227, 39, 200, 37, 121, 187, - 240, 134, 126, 58, 55, 78, 151, 229, 236, 46, 186, 163, 25, 95, - 23, 86, 131, 58, 190, 104, 152, 56, 160, 201, 175, 29, 222, 80, - 181, 225, 217, 95, 235, 120, 226, 218, 225, 141, 83, 148, 124, 187, - 188, 118, 184, 168, 79, 228, 22, 41, 158, 148, 96, 42, 86, 19, - 63, 24, 24, 87, 42, 104, 16, 198, 142, 58, 6, 152, 56, 159, - 25, 223, 78, 52, 1, 103, 242, 174, 226, 162, 56, 43, 202, 239, - 42, 46, 14, 231, 19, 119, 21, 23, 207, 141, 147, 183, 229, 93, - 197, 91, 250, 211, 185, 102, 47, 41, 59, 204, 126, 240, 120, 132, - 136, 155, 27, 220, 84, 154, 66, 131, 29, 52, 107, 211, 105, 136, - 187, 130, 190, 231, 118, 138, 221, 239, 226, 138, 203, 141, 88, 185, - 130, 82, 150, 113, 75, 209, 108, 106, 150, 113, 107, 152, 38, 174, - 65, 222, 58, 115, 142, 92, 145, 215, 32, 239, 232, 133, 220, 36, - 90, 251, 145, 223, 154, 194, 117, 153, 46, 237, 154, 212, 193, 241, - 125, 72, 19, 10, 38, 111, 71, 222, 25, 204, 37, 110, 71, 222, - 57, 54, 158, 184, 29, 121, 231, 252, 5, 28, 117, 154, 158, 182, - 140, 151, 244, 41, 241, 41, 109, 2, 36, 145, 164, 225, 155, 24, - 117, 154, 158, 214, 44, 227, 165, 83, 19, 18, 50, 44, 227, 165, - 11, 5, 129, 164, 223, 50, 150, 244, 162, 248, 212, 111, 2, 36, - 145, 244, 167, 45, 99, 105, 240, 180, 132, 52, 203, 88, 202, 79, - 74, 200, 176, 140, 165, 194, 148, 64, 146, 177, 140, 187, 10, 73, - 198, 4, 72, 34, 201, 164, 45, 227, 238, 224, 41, 9, 105, 150, - 113, 151, 74, 36, 25, 195, 50, 238, 42, 36, 3, 150, 177, 162, - 159, 17, 159, 6, 76, 128, 36, 146, 129, 180, 101, 172, 12, 202, - 97, 56, 160, 89, 198, 202, 83, 178, 113, 3, 134, 101, 172, 156, - 206, 147, 255, 91, 67, 44, 196, 50, 214, 245, 233, 220, 191, 211, - 248, 97, 125, 126, 192, 90, 168, 182, 144, 202, 195, 57, 93, 115, - 14, 191, 126, 4, 34, 164, 230, 223, 132, 239, 146, 184, 109, 22, - 218, 117, 230, 118, 104, 192, 154, 224, 189, 96, 71, 50, 47, 114, - 2, 38, 170, 145, 211, 214, 150, 29, 52, 49, 154, 93, 219, 139, - 156, 38, 35, 180, 222, 246, 68, 220, 56, 39, 82, 215, 212, 226, - 105, 34, 164, 83, 83, 252, 177, 156, 4, 85, 14, 127, 189, 150, - 201, 235, 15, 29, 34, 47, 58, 53, 241, 114, 171, 239, 187, 161, - 18, 33, 98, 66, 179, 21, 148, 182, 140, 245, 65, 169, 81, 136, - 102, 25, 235, 185, 243, 18, 50, 44, 99, 125, 170, 72, 94, 71, - 110, 13, 90, 198, 171, 250, 201, 220, 61, 126, 49, 1, 79, 136, - 170, 65, 159, 80, 184, 252, 179, 138, 81, 32, 194, 155, 130, 79, - 144, 199, 108, 115, 121, 52, 60, 56, 112, 49, 175, 200, 26, 52, - 1, 191, 130, 82, 150, 241, 170, 82, 68, 131, 154, 101, 188, 106, - 201, 123, 191, 131, 134, 101, 188, 122, 236, 4, 25, 231, 215, 96, - 95, 239, 123, 87, 203, 29, 235, 154, 10, 212, 149, 168, 78, 139, - 37, 238, 170, 190, 158, 121, 10, 229, 7, 239, 170, 190, 161, 31, - 75, 92, 62, 125, 35, 190, 124, 154, 178, 140, 55, 68, 205, 252, - 242, 233, 27, 66, 169, 243, 203, 167, 111, 28, 205, 9, 36, 154, - 101, 220, 215, 207, 139, 79, 160, 181, 239, 43, 36, 90, 218, 50, - 238, 11, 73, 214, 81, 107, 223, 167, 231, 36, 100, 88, 198, 253, - 137, 73, 129, 68, 183, 12, 91, 12, 7, 29, 149, 177, 173, 144, - 192, 160, 181, 21, 18, 168, 206, 22, 195, 65, 71, 101, 108, 139, - 225, 128, 64, 85, 191, 32, 62, 129, 26, 173, 42, 36, 70, 218, - 50, 170, 66, 69, 232, 168, 70, 171, 199, 158, 150, 16, 148, 155, - 60, 47, 144, 152, 150, 81, 19, 42, 66, 71, 189, 86, 83, 72, - 204, 180, 101, 212, 132, 138, 224, 15, 254, 215, 132, 138, 224, 15, - 254, 215, 46, 20, 200, 1, 64, 98, 244, 89, 102, 93, 127, 96, - 240, 111, 120, 141, 167, 78, 198, 200, 49, 146, 6, 8, 216, 222, - 48, 79, 228, 15, 240, 87, 169, 69, 212, 181, 33, 210, 207, 63, - 154, 240, 245, 64, 12, 167, 44, 163, 113, 208, 138, 97, 205, 50, - 26, 35, 99, 49, 108, 88, 70, 227, 216, 113, 133, 92, 179, 140, - 45, 243, 88, 254, 0, 45, 61, 220, 141, 28, 186, 103, 43, 129, - 28, 166, 213, 173, 4, 114, 232, 162, 173, 145, 35, 49, 108, 88, - 198, 214, 209, 28, 57, 40, 144, 235, 150, 241, 166, 57, 173, 62, - 3, 179, 222, 76, 160, 131, 174, 122, 243, 96, 62, 134, 53, 203, - 120, 243, 204, 249, 24, 54, 44, 227, 205, 169, 162, 224, 116, 202, - 50, 92, 213, 231, 160, 209, 93, 197, 105, 208, 232, 174, 24, 142, - 58, 106, 116, 55, 39, 251, 28, 52, 186, 171, 250, 60, 109, 25, - 158, 62, 45, 62, 129, 70, 247, 20, 18, 208, 232, 158, 18, 28, - 208, 232, 30, 149, 114, 10, 26, 221, 83, 148, 244, 91, 70, 75, - 151, 226, 0, 26, 189, 165, 144, 128, 70, 111, 41, 74, 64, 163, - 183, 114, 167, 37, 100, 88, 70, 235, 236, 57, 242, 115, 26, 225, - 239, 203, 155, 109, 253, 161, 145, 251, 81, 77, 196, 32, 246, 235, - 106, 233, 138, 70, 118, 67, 92, 224, 8, 139, 180, 178, 71, 170, - 186, 222, 43, 151, 29, 64, 125, 137, 219, 116, 120, 77, 76, 44, - 1, 243, 247, 208, 227, 72, 158, 118, 147, 197, 87, 192, 20, 98, - 145, 169, 105, 119, 248, 221, 20, 127, 155, 5, 174, 221, 146, 55, - 205, 241, 213, 184, 54, 121, 74, 72, 13, 26, 131, 219, 251, 136, - 36, 55, 247, 182, 85, 55, 115, 131, 111, 91, 73, 13, 55, 249, - 182, 149, 72, 114, 163, 111, 91, 137, 36, 154, 125, 59, 251, 136, - 36, 183, 243, 118, 18, 200, 65, 36, 119, 18, 200, 129, 210, 29, - 37, 146, 220, 218, 219, 81, 202, 39, 99, 25, 29, 189, 32, 250, - 3, 166, 209, 142, 234, 57, 152, 70, 59, 131, 99, 18, 210, 44, - 163, 115, 116, 92, 66, 134, 101, 116, 206, 95, 32, 223, 133, 61, - 7, 243, 232, 59, 250, 185, 92, 59, 230, 31, 159, 157, 112, 129, - 168, 160, 226, 214, 244, 246, 143, 236, 158, 189, 186, 2, 220, 191, - 134, 179, 205, 60, 190, 2, 133, 55, 175, 197, 157, 60, 37, 19, - 190, 87, 101, 234, 238, 63, 76, 223, 239, 40, 226, 7, 82, 150, - 241, 142, 82, 191, 48, 125, 191, 99, 73, 73, 134, 233, 251, 157, - 252, 89, 50, 72, 64, 235, 164, 62, 218, 247, 9, 77, 67, 229, - 14, 106, 237, 163, 153, 19, 100, 133, 152, 166, 161, 247, 89, 230, - 119, 106, 250, 53, 241, 190, 33, 186, 34, 1, 190, 201, 206, 228, - 164, 142, 62, 74, 205, 103, 33, 184, 74, 1, 171, 250, 13, 207, - 121, 155, 225, 147, 236, 69, 188, 1, 45, 13, 211, 131, 36, 5, - 8, 77, 196, 168, 192, 52, 128, 131, 39, 37, 168, 1, 120, 234, - 162, 4, 13, 0, 175, 92, 37, 175, 1, 97, 41, 203, 252, 184, - 166, 31, 205, 221, 165, 11, 120, 18, 45, 68, 207, 138, 191, 59, - 72, 171, 237, 48, 242, 155, 49, 77, 94, 44, 236, 194, 136, 141, - 175, 16, 118, 211, 5, 202, 214, 72, 245, 1, 242, 131, 99, 188, - 226, 20, 208, 241, 113, 237, 224, 176, 4, 117, 0, 15, 143, 145, - 139, 4, 180, 121, 250, 123, 181, 190, 63, 214, 180, 220, 185, 174, - 137, 50, 182, 69, 240, 2, 99, 124, 67, 108, 144, 24, 38, 248, - 89, 223, 171, 101, 142, 147, 33, 98, 154, 166, 217, 103, 165, 191, - 79, 211, 127, 86, 51, 176, 2, 19, 220, 58, 243, 251, 180, 254, - 65, 178, 74, 210, 38, 247, 236, 204, 31, 208, 204, 209, 220, 2, - 157, 225, 129, 132, 164, 72, 193, 40, 198, 91, 89, 69, 66, 87, - 130, 26, 195, 135, 19, 119, 152, 19, 240, 111, 91, 14, 116, 14, - 222, 136, 227, 161, 25, 192, 86, 57, 68, 250, 57, 82, 13, 177, - 30, 138, 19, 116, 72, 176, 70, 200, 144, 168, 86, 179, 204, 31, - 212, 204, 17, 149, 65, 227, 9, 67, 113, 130, 14, 9, 195, 22, - 217, 17, 37, 116, 203, 252, 148, 102, 142, 228, 26, 248, 16, 251, - 107, 78, 227, 53, 187, 33, 195, 236, 22, 41, 93, 150, 65, 77, - 165, 130, 138, 236, 7, 140, 206, 206, 136, 171, 109, 148, 174, 135, - 140, 38, 14, 28, 83, 167, 78, 226, 72, 168, 9, 131, 199, 117, - 30, 48, 183, 147, 104, 12, 208, 250, 169, 36, 105, 156, 148, 97, - 75, 53, 198, 176, 204, 31, 210, 204, 81, 149, 1, 116, 235, 15, - 37, 155, 111, 232, 144, 96, 141, 168, 198, 152, 150, 249, 153, 191, - 177, 198, 92, 156, 123, 252, 198, 128, 120, 124, 38, 217, 24, 48, - 198, 62, 147, 108, 76, 202, 50, 127, 68, 51, 15, 171, 12, 41, - 13, 19, 178, 113, 130, 14, 9, 35, 163, 170, 68, 218, 50, 63, - 155, 44, 145, 214, 48, 33, 46, 145, 214, 33, 33, 81, 162, 223, - 50, 63, 167, 153, 150, 202, 208, 175, 97, 194, 193, 56, 65, 135, - 132, 236, 176, 42, 145, 177, 204, 127, 148, 100, 113, 70, 195, 132, - 152, 197, 25, 29, 18, 172, 17, 242, 117, 77, 20, 25, 176, 204, - 47, 130, 100, 127, 77, 163, 107, 118, 99, 170, 198, 240, 6, 33, - 171, 81, 181, 225, 89, 36, 244, 86, 224, 183, 91, 42, 98, 117, - 188, 3, 143, 230, 46, 232, 207, 216, 40, 118, 60, 110, 50, 95, - 44, 210, 219, 254, 14, 219, 102, 65, 129, 47, 227, 93, 36, 24, - 138, 129, 169, 29, 1, 117, 175, 57, 140, 28, 215, 197, 199, 0, - 54, 93, 92, 165, 64, 189, 134, 234, 183, 129, 21, 239, 160, 111, - 33, 194, 46, 123, 53, 66, 163, 128, 217, 145, 248, 40, 244, 181, - 29, 210, 182, 135, 241, 64, 69, 74, 162, 59, 7, 52, 108, 100, - 220, 157, 3, 58, 36, 12, 143, 144, 41, 193, 5, 98, 153, 63, - 166, 153, 71, 242, 39, 232, 18, 62, 215, 176, 55, 31, 84, 121, - 162, 97, 254, 184, 239, 136, 14, 9, 35, 135, 201, 25, 129, 112, - 208, 50, 127, 28, 216, 58, 66, 151, 217, 14, 48, 101, 91, 133, - 2, 137, 209, 12, 106, 152, 43, 166, 107, 80, 135, 132, 225, 88, - 1, 28, 176, 204, 159, 72, 10, 205, 1, 13, 19, 226, 14, 61, - 160, 67, 130, 21, 11, 205, 65, 203, 252, 82, 82, 101, 28, 212, - 48, 33, 22, 154, 131, 58, 36, 100, 99, 81, 30, 178, 204, 159, - 212, 204, 167, 84, 134, 33, 13, 19, 134, 227, 4, 29, 18, 70, - 143, 168, 18, 135, 44, 243, 167, 146, 37, 14, 105, 152, 16, 151, - 56, 164, 67, 194, 232, 17, 124, 144, 21, 18, 178, 150, 249, 211, - 154, 121, 56, 255, 20, 140, 201, 176, 107, 40, 243, 133, 59, 89, - 50, 171, 97, 206, 184, 129, 89, 29, 18, 172, 81, 133, 106, 216, - 50, 127, 230, 177, 80, 13, 107, 152, 51, 70, 53, 172, 67, 2, - 242, 10, 148, 190, 102, 165, 127, 94, 211, 127, 65, 41, 125, 80, - 174, 63, 175, 245, 31, 32, 231, 177, 38, 176, 159, 204, 255, 68, - 51, 159, 202, 229, 246, 85, 250, 178, 50, 52, 151, 32, 179, 21, - 39, 232, 144, 112, 88, 50, 13, 12, 38, 243, 203, 49, 211, 208, - 6, 130, 132, 184, 4, 232, 242, 47, 39, 75, 232, 150, 249, 149, - 100, 9, 64, 241, 149, 100, 9, 158, 227, 240, 17, 156, 51, 77, - 160, 247, 23, 53, 253, 24, 111, 14, 206, 236, 191, 40, 103, 118, - 19, 236, 59, 243, 23, 181, 193, 97, 9, 106, 0, 90, 71, 36, - 104, 0, 120, 52, 39, 48, 105, 150, 249, 75, 154, 126, 92, 124, - 212, 76, 4, 37, 38, 45, 5, 224, 96, 86, 130, 152, 121, 248, - 41, 9, 26, 0, 230, 142, 9, 76, 186, 101, 126, 53, 166, 9, - 52, 250, 87, 99, 76, 160, 19, 191, 26, 99, 130, 106, 191, 170, - 13, 75, 154, 96, 194, 248, 42, 208, 244, 121, 13, 81, 25, 150, - 249, 159, 131, 189, 241, 3, 248, 8, 178, 186, 59, 5, 93, 19, - 178, 72, 236, 85, 122, 140, 213, 164, 69, 23, 178, 168, 72, 33, - 239, 166, 143, 91, 139, 142, 216, 183, 148, 37, 9, 42, 255, 184, - 172, 90, 159, 230, 1, 227, 212, 237, 157, 2, 77, 222, 253, 1, - 195, 61, 190, 27, 84, 148, 109, 49, 76, 36, 79, 129, 105, 0, - 7, 15, 73, 80, 3, 48, 59, 42, 65, 108, 203, 83, 99, 228, - 159, 234, 216, 52, 211, 50, 255, 133, 166, 211, 220, 207, 232, 184, - 88, 151, 12, 83, 194, 188, 118, 19, 73, 14, 5, 149, 78, 216, - 181, 7, 138, 55, 250, 59, 45, 198, 91, 42, 191, 16, 254, 50, - 68, 40, 35, 158, 143, 23, 199, 241, 37, 124, 39, 164, 245, 182, - 235, 118, 166, 222, 106, 219, 46, 30, 135, 44, 82, 186, 34, 227, - 132, 20, 232, 194, 133, 11, 83, 24, 57, 49, 172, 250, 248, 136, - 129, 124, 27, 59, 136, 247, 77, 235, 142, 216, 252, 197, 249, 96, - 194, 41, 178, 34, 191, 213, 207, 107, 199, 107, 167, 156, 98, 105, - 125, 1, 221, 113, 132, 9, 206, 116, 59, 168, 110, 177, 26, 127, - 138, 58, 206, 135, 54, 45, 243, 162, 2, 245, 61, 218, 198, 152, - 146, 248, 24, 160, 239, 71, 132, 170, 163, 208, 147, 138, 235, 38, - 231, 156, 2, 83, 0, 42, 33, 135, 105, 252, 95, 104, 150, 148, - 62, 211, 0, 240, 228, 41, 242, 15, 144, 233, 41, 203, 252, 85, - 77, 63, 149, 107, 137, 208, 54, 210, 60, 125, 52, 159, 233, 38, - 195, 135, 23, 248, 109, 60, 96, 31, 62, 151, 35, 30, 226, 217, - 230, 51, 96, 236, 57, 216, 158, 199, 2, 12, 230, 46, 165, 78, - 209, 158, 50, 145, 0, 5, 34, 61, 138, 118, 48, 40, 126, 85, - 179, 114, 18, 52, 0, 60, 113, 146, 124, 138, 75, 76, 218, 50, - 127, 77, 211, 207, 230, 190, 139, 75, 12, 198, 126, 115, 170, 82, - 80, 212, 66, 95, 215, 106, 94, 196, 30, 238, 10, 106, 41, 90, - 38, 98, 179, 33, 46, 17, 95, 47, 44, 208, 124, 20, 180, 89, - 30, 223, 6, 194, 195, 119, 121, 145, 131, 159, 152, 234, 173, 71, - 62, 252, 142, 213, 192, 23, 244, 9, 38, 48, 138, 66, 88, 181, - 91, 156, 53, 182, 215, 161, 59, 118, 103, 82, 86, 6, 166, 90, - 15, 162, 5, 149, 159, 147, 197, 207, 141, 240, 168, 31, 47, 60, - 79, 103, 231, 158, 69, 25, 18, 153, 20, 63, 211, 38, 242, 68, - 129, 41, 0, 21, 63, 193, 220, 250, 53, 205, 58, 37, 65, 3, - 192, 252, 25, 242, 221, 92, 185, 244, 91, 230, 111, 104, 250, 233, - 220, 54, 140, 34, 84, 9, 224, 232, 137, 183, 187, 189, 26, 123, - 200, 95, 41, 192, 11, 148, 178, 135, 147, 59, 69, 157, 22, 27, - 15, 105, 124, 145, 153, 71, 171, 44, 210, 228, 242, 171, 195, 215, - 239, 100, 192, 7, 60, 91, 130, 37, 84, 19, 250, 77, 36, 67, - 129, 41, 0, 149, 126, 4, 251, 239, 55, 180, 97, 169, 150, 251, - 13, 0, 79, 81, 242, 231, 188, 9, 25, 203, 252, 45, 104, 194, - 255, 165, 241, 112, 118, 177, 228, 74, 10, 120, 152, 83, 21, 40, - 51, 100, 145, 10, 125, 145, 220, 33, 43, 10, 77, 66, 96, 200, - 7, 116, 203, 230, 89, 109, 154, 87, 55, 70, 243, 194, 179, 131, - 97, 26, 227, 47, 136, 54, 225, 167, 241, 144, 215, 68, 120, 156, - 40, 21, 206, 36, 161, 109, 156, 104, 28, 172, 201, 90, 187, 154, - 140, 114, 129, 168, 198, 67, 78, 255, 102, 7, 216, 188, 205, 48, - 202, 9, 1, 21, 22, 249, 180, 106, 55, 153, 187, 96, 135, 241, - 88, 202, 152, 216, 120, 5, 166, 0, 84, 125, 15, 102, 240, 111, - 197, 122, 32, 99, 0, 120, 146, 138, 41, 106, 192, 50, 255, 173, - 166, 159, 21, 31, 7, 76, 4, 37, 166, 129, 52, 128, 131, 114, - 118, 3, 75, 242, 223, 106, 99, 82, 138, 6, 12, 0, 243, 103, - 200, 47, 13, 32, 42, 98, 153, 127, 164, 233, 231, 114, 95, 26, - 64, 22, 6, 109, 22, 43, 19, 91, 216, 197, 52, 47, 87, 223, - 243, 69, 250, 10, 104, 63, 245, 69, 137, 137, 204, 1, 44, 34, - 24, 187, 231, 1, 190, 219, 194, 3, 150, 130, 57, 26, 212, 48, - 58, 155, 12, 196, 43, 151, 131, 57, 194, 158, 43, 184, 168, 202, - 98, 90, 186, 94, 158, 160, 155, 204, 245, 65, 128, 125, 37, 221, - 145, 79, 240, 9, 10, 17, 129, 199, 173, 73, 242, 170, 194, 205, - 199, 78, 86, 212, 32, 114, 60, 233, 47, 2, 170, 37, 165, 13, - 20, 163, 24, 51, 33, 229, 214, 57, 134, 74, 202, 135, 29, 47, - 218, 98, 145, 83, 205, 243, 239, 5, 113, 164, 104, 23, 125, 78, - 20, 210, 208, 119, 241, 160, 21, 142, 156, 9, 102, 87, 183, 36, - 73, 170, 137, 188, 80, 131, 69, 33, 150, 128, 138, 84, 21, 188, - 134, 201, 34, 93, 149, 41, 130, 168, 144, 178, 135, 78, 24, 197, - 59, 103, 114, 39, 2, 151, 117, 56, 73, 53, 190, 49, 38, 175, - 161, 161, 254, 154, 191, 87, 222, 11, 153, 178, 31, 68, 72, 94, - 187, 30, 129, 238, 119, 93, 154, 15, 152, 237, 138, 150, 226, 137, - 132, 228, 44, 207, 221, 149, 194, 174, 94, 147, 139, 56, 85, 112, - 118, 68, 44, 39, 214, 180, 61, 104, 17, 63, 115, 87, 128, 142, - 130, 62, 240, 124, 111, 74, 69, 194, 236, 198, 75, 109, 119, 199, - 238, 136, 62, 82, 189, 166, 156, 51, 24, 81, 232, 127, 145, 68, - 224, 91, 156, 190, 100, 85, 60, 42, 50, 72, 218, 206, 22, 83, - 71, 176, 80, 51, 236, 4, 126, 196, 18, 242, 140, 207, 166, 248, - 81, 81, 68, 136, 18, 231, 34, 218, 33, 171, 183, 93, 20, 14, - 140, 218, 57, 21, 5, 14, 238, 215, 39, 246, 215, 249, 6, 11, - 178, 69, 132, 153, 198, 13, 204, 29, 70, 80, 15, 239, 106, 83, - 111, 231, 98, 72, 187, 2, 101, 219, 12, 186, 210, 111, 55, 182, - 132, 181, 3, 125, 39, 67, 24, 98, 148, 188, 94, 62, 172, 137, - 225, 201, 240, 56, 23, 134, 241, 228, 251, 170, 182, 23, 169, 83, - 9, 81, 188, 216, 86, 181, 189, 113, 24, 147, 204, 117, 169, 83, - 87, 235, 76, 78, 114, 111, 198, 15, 48, 118, 176, 215, 110, 22, - 104, 232, 3, 37, 40, 26, 162, 39, 100, 127, 146, 222, 70, 128, - 96, 160, 171, 60, 215, 35, 215, 161, 148, 66, 80, 195, 124, 140, - 184, 118, 163, 144, 36, 175, 67, 109, 55, 96, 118, 173, 163, 186, - 145, 196, 72, 208, 8, 188, 223, 125, 91, 252, 190, 210, 157, 196, - 68, 173, 165, 192, 20, 128, 202, 114, 5, 87, 247, 143, 180, 172, - 212, 120, 196, 0, 48, 127, 150, 228, 9, 88, 91, 233, 127, 175, - 245, 253, 7, 77, 203, 141, 118, 45, 189, 201, 214, 12, 18, 195, - 4, 59, 230, 223, 107, 153, 227, 168, 108, 83, 224, 163, 124, 67, - 250, 3, 41, 244, 81, 190, 33, 171, 78, 161, 143, 242, 13, 169, - 182, 83, 232, 163, 124, 67, 250, 40, 41, 244, 81, 190, 33, 125, - 148, 20, 56, 11, 127, 34, 213, 118, 10, 125, 148, 63, 137, 49, - 105, 105, 0, 133, 218, 78, 161, 143, 242, 39, 82, 109, 167, 208, - 71, 249, 19, 80, 219, 227, 68, 55, 211, 86, 250, 63, 106, 125, - 255, 80, 215, 114, 71, 147, 141, 240, 98, 203, 91, 180, 4, 44, - 136, 255, 168, 101, 184, 103, 147, 134, 150, 124, 83, 182, 36, 141, - 45, 249, 166, 172, 63, 141, 45, 249, 166, 108, 73, 26, 91, 242, - 77, 217, 146, 52, 182, 228, 155, 178, 37, 105, 104, 201, 159, 105, - 122, 81, 124, 132, 150, 252, 89, 140, 9, 90, 242, 103, 218, 224, - 25, 9, 98, 230, 179, 147, 18, 52, 0, 44, 76, 9, 76, 186, - 101, 254, 133, 166, 203, 188, 224, 86, 252, 69, 140, 9, 108, 198, - 191, 208, 6, 37, 17, 80, 237, 95, 104, 79, 157, 148, 160, 1, - 224, 233, 60, 249, 10, 24, 152, 105, 163, 207, 74, 127, 76, 215, - 63, 161, 27, 185, 47, 234, 123, 108, 125, 72, 131, 83, 198, 226, - 86, 139, 236, 98, 89, 109, 175, 141, 15, 230, 69, 129, 211, 179, - 203, 1, 76, 222, 115, 139, 163, 103, 135, 3, 31, 183, 146, 199, - 113, 249, 136, 173, 97, 48, 250, 106, 196, 45, 135, 71, 198, 102, - 81, 239, 86, 194, 116, 138, 177, 52, 197, 158, 5, 143, 222, 39, - 62, 161, 194, 194, 7, 38, 91, 129, 136, 134, 214, 29, 69, 89, - 236, 114, 59, 94, 116, 113, 142, 208, 154, 223, 180, 29, 79, 12, - 163, 180, 1, 125, 252, 49, 157, 28, 35, 199, 73, 26, 64, 16, - 144, 239, 214, 119, 237, 191, 128, 239, 158, 230, 91, 130, 240, 249, - 64, 156, 144, 130, 132, 131, 86, 156, 160, 65, 194, 200, 88, 156, - 96, 64, 194, 177, 227, 170, 6, 205, 50, 63, 174, 227, 38, 204, - 94, 53, 128, 32, 125, 60, 89, 3, 56, 238, 31, 79, 214, 160, - 33, 130, 145, 35, 113, 130, 1, 9, 71, 115, 124, 247, 43, 13, - 50, 241, 253, 186, 62, 179, 247, 238, 215, 190, 34, 208, 253, 161, - 87, 20, 8, 216, 116, 56, 182, 228, 243, 160, 61, 226, 64, 193, - 126, 182, 197, 59, 123, 251, 137, 6, 73, 200, 6, 23, 96, 112, - 192, 191, 95, 87, 210, 14, 14, 248, 247, 235, 131, 199, 37, 168, - 1, 120, 226, 130, 4, 177, 101, 197, 105, 226, 98, 59, 77, 203, - 252, 164, 174, 159, 205, 189, 17, 87, 23, 83, 184, 239, 142, 81, - 192, 100, 128, 190, 61, 54, 133, 200, 94, 187, 66, 188, 114, 147, - 87, 167, 192, 20, 128, 74, 87, 128, 211, 250, 73, 93, 56, 42, - 105, 116, 90, 63, 169, 231, 207, 144, 89, 162, 155, 253, 86, 250, - 135, 245, 190, 207, 233, 189, 231, 195, 68, 228, 125, 177, 215, 193, - 85, 151, 208, 90, 224, 52, 252, 176, 158, 225, 198, 110, 63, 8, - 229, 167, 117, 161, 181, 250, 81, 8, 63, 45, 41, 233, 71, 17, - 252, 180, 164, 164, 31, 5, 240, 211, 186, 208, 90, 253, 40, 126, - 159, 214, 133, 214, 234, 7, 225, 251, 140, 46, 214, 136, 250, 81, - 216, 62, 19, 99, 2, 81, 251, 140, 46, 60, 151, 126, 20, 180, - 207, 232, 98, 141, 168, 31, 197, 236, 51, 186, 88, 35, 234, 7, - 173, 245, 89, 93, 159, 16, 31, 161, 51, 62, 27, 99, 194, 117, - 115, 125, 80, 82, 12, 213, 126, 86, 63, 126, 70, 130, 6, 128, - 79, 143, 147, 179, 68, 55, 51, 86, 250, 71, 245, 190, 127, 162, - 107, 185, 35, 93, 220, 17, 151, 211, 5, 67, 192, 25, 248, 81, - 29, 163, 224, 153, 102, 6, 24, 242, 121, 201, 144, 12, 50, 228, - 243, 178, 242, 12, 50, 228, 243, 146, 33, 25, 100, 200, 231, 37, - 67, 50, 200, 144, 207, 75, 134, 100, 128, 178, 47, 232, 122, 65, - 124, 4, 134, 124, 33, 198, 4, 106, 252, 11, 250, 32, 149, 32, - 102, 62, 61, 46, 65, 3, 192, 243, 23, 4, 38, 221, 50, 127, - 76, 215, 159, 22, 31, 129, 33, 63, 22, 99, 2, 134, 252, 152, - 62, 120, 84, 130, 26, 128, 185, 211, 18, 52, 0, 60, 123, 142, - 204, 16, 221, 28, 176, 210, 63, 161, 247, 253, 167, 186, 150, 203, - 247, 156, 33, 137, 182, 252, 154, 124, 119, 47, 201, 28, 240, 111, - 126, 66, 207, 156, 64, 66, 6, 128, 57, 95, 146, 204, 25, 64, - 230, 124, 73, 18, 50, 128, 204, 249, 146, 100, 206, 0, 50, 231, - 75, 146, 57, 3, 200, 156, 47, 1, 115, 62, 171, 33, 42, 205, - 50, 127, 70, 215, 79, 231, 254, 127, 26, 45, 123, 120, 246, 210, - 171, 201, 99, 152, 184, 174, 130, 163, 12, 29, 102, 22, 50, 241, - 114, 223, 30, 43, 42, 59, 118, 7, 223, 160, 220, 51, 188, 146, - 90, 100, 41, 208, 205, 118, 36, 111, 58, 212, 193, 102, 245, 119, - 159, 157, 225, 132, 66, 71, 253, 76, 220, 42, 144, 220, 159, 137, - 91, 165, 33, 221, 214, 113, 9, 26, 0, 158, 162, 130, 63, 186, - 101, 254, 172, 174, 231, 197, 71, 232, 168, 159, 141, 49, 233, 41, - 0, 21, 38, 224, 192, 207, 234, 214, 9, 9, 26, 0, 210, 211, - 2, 147, 97, 153, 63, 175, 235, 231, 196, 71, 208, 101, 63, 31, - 99, 2, 93, 246, 243, 250, 224, 152, 4, 53, 0, 143, 82, 9, - 98, 217, 51, 103, 73, 9, 49, 153, 150, 249, 101, 93, 127, 38, - 247, 12, 45, 203, 235, 119, 33, 88, 170, 220, 123, 163, 60, 54, - 72, 24, 199, 37, 21, 233, 242, 124, 180, 172, 211, 228, 120, 20, - 152, 2, 80, 88, 133, 3, 168, 164, 190, 172, 103, 37, 9, 160, - 164, 190, 12, 36, 8, 48, 3, 224, 185, 43, 18, 236, 7, 112, - 230, 178, 32, 48, 101, 153, 191, 176, 23, 129, 60, 58, 201, 110, - 2, 69, 122, 47, 129, 41, 19, 241, 40, 16, 209, 42, 2, 193, - 236, 252, 133, 152, 192, 148, 1, 160, 34, 48, 149, 1, 80, 17, - 152, 234, 7, 112, 230, 50, 249, 202, 16, 209, 77, 98, 165, 127, - 91, 239, 251, 55, 134, 54, 183, 76, 159, 255, 214, 255, 16, 42, - 238, 156, 146, 185, 255, 254, 32, 45, 129, 243, 170, 78, 190, 197, - 39, 34, 249, 77, 32, 152, 60, 182, 236, 109, 229, 83, 133, 121, - 106, 71, 252, 14, 92, 114, 100, 16, 250, 38, 250, 19, 234, 150, - 90, 152, 152, 156, 184, 75, 128, 215, 141, 34, 140, 242, 45, 93, - 215, 26, 13, 93, 167, 177, 21, 185, 29, 245, 116, 119, 4, 243, - 20, 184, 162, 118, 71, 5, 242, 222, 114, 192, 199, 175, 163, 39, - 86, 19, 38, 87, 211, 246, 28, 30, 152, 53, 140, 151, 139, 100, - 135, 128, 117, 38, 79, 0, 0, 162, 189, 79, 0, 216, 225, 174, - 19, 0, 140, 158, 23, 172, 73, 224, 18, 173, 76, 228, 149, 51, - 110, 135, 225, 172, 43, 86, 17, 248, 65, 108, 244, 34, 29, 24, - 239, 161, 223, 227, 165, 161, 145, 128, 71, 35, 226, 21, 78, 105, - 108, 52, 139, 148, 150, 121, 12, 106, 238, 0, 227, 1, 10, 248, - 192, 163, 29, 11, 159, 206, 235, 34, 50, 94, 193, 174, 218, 174, - 139, 1, 237, 119, 95, 4, 46, 38, 23, 252, 80, 255, 96, 127, - 42, 245, 37, 246, 29, 170, 129, 31, 134, 184, 52, 176, 155, 5, - 244, 21, 198, 87, 197, 19, 111, 2, 224, 18, 143, 175, 194, 227, - 242, 213, 185, 4, 143, 118, 112, 21, 157, 209, 205, 182, 227, 214, - 168, 157, 88, 202, 40, 0, 171, 184, 116, 180, 124, 199, 139, 176, - 82, 236, 195, 144, 147, 182, 137, 15, 183, 35, 223, 248, 126, 110, - 232, 243, 64, 185, 49, 118, 80, 198, 200, 246, 34, 190, 201, 44, - 15, 45, 201, 109, 119, 148, 149, 238, 222, 22, 87, 173, 120, 48, - 114, 232, 123, 126, 81, 44, 188, 70, 232, 121, 244, 242, 101, 70, - 78, 25, 174, 16, 202, 163, 52, 232, 47, 168, 115, 27, 252, 129, - 19, 249, 244, 0, 95, 115, 196, 192, 194, 126, 208, 176, 61, 231, - 109, 113, 127, 207, 15, 248, 182, 220, 195, 22, 11, 28, 220, 98, - 118, 101, 29, 5, 100, 164, 56, 252, 35, 72, 190, 60, 131, 15, - 234, 82, 26, 109, 5, 184, 90, 112, 21, 254, 200, 197, 124, 177, - 243, 208, 241, 219, 252, 158, 88, 216, 14, 196, 64, 128, 164, 154, - 159, 120, 177, 129, 1, 18, 222, 179, 60, 146, 47, 80, 161, 84, - 151, 160, 160, 248, 136, 86, 111, 138, 115, 229, 225, 150, 96, 63, - 54, 159, 31, 53, 199, 243, 174, 10, 27, 212, 148, 124, 219, 31, - 116, 103, 228, 128, 101, 202, 166, 154, 182, 35, 122, 117, 179, 93, - 159, 106, 184, 254, 166, 237, 78, 169, 30, 156, 10, 88, 195, 9, - 163, 160, 147, 184, 126, 131, 141, 247, 165, 133, 154, 56, 138, 166, - 14, 180, 173, 58, 205, 150, 219, 145, 23, 244, 160, 233, 120, 81, - 238, 77, 86, 141, 184, 169, 139, 151, 84, 0, 207, 10, 190, 84, - 229, 108, 179, 169, 5, 218, 114, 219, 13, 199, 195, 215, 166, 187, - 139, 236, 176, 205, 208, 137, 24, 157, 112, 234, 212, 222, 182, 29, - 215, 222, 116, 217, 164, 56, 242, 27, 176, 241, 144, 122, 62, 32, - 243, 196, 131, 18, 236, 97, 203, 69, 125, 228, 239, 32, 219, 97, - 172, 121, 248, 69, 112, 190, 89, 164, 235, 97, 27, 87, 108, 224, - 59, 138, 15, 22, 246, 61, 228, 85, 111, 147, 138, 120, 128, 153, - 159, 81, 2, 7, 131, 237, 234, 39, 113, 73, 20, 16, 97, 52, - 111, 137, 0, 201, 226, 221, 187, 217, 161, 173, 118, 20, 137, 213, - 43, 161, 46, 194, 246, 230, 84, 215, 89, 38, 220, 197, 224, 35, - 66, 14, 239, 144, 223, 106, 161, 126, 93, 196, 214, 166, 53, 191, - 26, 10, 161, 197, 128, 236, 48, 56, 232, 251, 189, 12, 11, 72, - 120, 234, 25, 95, 170, 41, 170, 194, 249, 71, 237, 0, 148, 109, - 59, 18, 83, 1, 215, 31, 248, 254, 214, 14, 219, 148, 182, 159, - 18, 196, 144, 69, 180, 221, 18, 146, 97, 183, 35, 191, 105, 71, - 226, 105, 27, 59, 196, 139, 87, 98, 213, 95, 202, 8, 55, 26, - 137, 102, 153, 191, 173, 103, 70, 248, 217, 115, 2, 86, 227, 239, - 234, 250, 153, 220, 31, 104, 116, 149, 69, 124, 57, 17, 227, 199, - 139, 232, 68, 226, 25, 115, 140, 152, 196, 194, 196, 252, 36, 182, - 0, 156, 80, 174, 10, 10, 194, 8, 109, 185, 118, 21, 231, 192, - 27, 29, 185, 207, 84, 72, 28, 207, 150, 136, 97, 232, 134, 172, - 198, 173, 63, 185, 78, 224, 215, 35, 208, 112, 142, 151, 112, 237, - 213, 210, 89, 87, 121, 181, 206, 230, 249, 65, 19, 155, 205, 223, - 250, 71, 177, 216, 180, 171, 15, 118, 236, 160, 22, 74, 207, 95, - 88, 172, 220, 0, 33, 104, 29, 255, 174, 180, 71, 8, 90, 199, - 191, 43, 173, 63, 130, 214, 241, 239, 234, 214, 73, 9, 26, 0, - 158, 206, 147, 111, 232, 200, 50, 205, 50, 191, 174, 235, 23, 114, - 95, 215, 233, 130, 239, 69, 129, 239, 238, 222, 125, 148, 111, 31, - 33, 43, 145, 121, 73, 214, 137, 235, 175, 197, 158, 243, 234, 118, - 36, 178, 138, 135, 63, 248, 10, 164, 152, 234, 123, 10, 140, 3, - 194, 40, 182, 169, 39, 38, 165, 167, 0, 6, 247, 14, 3, 4, - 33, 174, 67, 199, 183, 58, 18, 179, 4, 159, 247, 213, 180, 217, - 77, 73, 185, 78, 247, 136, 2, 39, 150, 113, 64, 19, 200, 173, - 96, 152, 122, 112, 215, 18, 151, 154, 165, 140, 200, 205, 33, 210, - 117, 241, 78, 202, 173, 216, 115, 118, 188, 208, 169, 137, 185, 150, - 207, 26, 146, 101, 24, 173, 142, 35, 83, 253, 5, 118, 255, 215, - 227, 254, 2, 187, 255, 235, 113, 127, 105, 216, 35, 214, 211, 18, - 52, 0, 156, 60, 79, 126, 202, 192, 254, 210, 45, 243, 15, 117, - 253, 122, 238, 179, 6, 180, 140, 135, 41, 147, 45, 80, 226, 142, - 246, 147, 232, 34, 188, 121, 238, 186, 137, 125, 4, 26, 178, 150, - 141, 63, 139, 192, 25, 126, 195, 140, 235, 3, 176, 17, 99, 22, - 11, 205, 82, 16, 11, 202, 56, 69, 139, 129, 187, 39, 203, 137, - 88, 76, 167, 107, 91, 109, 220, 204, 6, 123, 74, 238, 199, 131, - 197, 225, 249, 209, 249, 189, 217, 38, 249, 133, 156, 226, 27, 238, - 120, 38, 118, 175, 144, 127, 69, 26, 31, 240, 218, 85, 150, 215, - 36, 15, 118, 145, 132, 160, 70, 126, 151, 248, 189, 151, 220, 37, - 197, 142, 60, 150, 220, 137, 59, 69, 188, 223, 192, 27, 250, 195, - 184, 147, 193, 247, 248, 67, 233, 36, 16, 116, 201, 254, 80, 207, - 158, 145, 160, 1, 224, 211, 19, 18, 204, 0, 56, 121, 77, 130, - 253, 0, 94, 186, 138, 15, 222, 17, 200, 251, 199, 186, 94, 202, - 29, 227, 6, 159, 80, 140, 53, 159, 225, 158, 195, 22, 63, 138, - 196, 75, 130, 55, 247, 199, 49, 17, 70, 10, 64, 69, 4, 120, - 115, 127, 172, 103, 167, 36, 136, 136, 103, 230, 36, 152, 1, 240, - 226, 34, 30, 10, 2, 16, 63, 95, 90, 32, 255, 142, 43, 14, - 211, 50, 255, 84, 215, 95, 200, 253, 79, 186, 216, 184, 86, 59, - 125, 9, 73, 156, 123, 180, 40, 42, 59, 159, 160, 57, 180, 195, - 87, 191, 213, 251, 31, 96, 91, 226, 86, 145, 13, 102, 119, 196, - 154, 45, 180, 145, 154, 54, 247, 48, 196, 204, 192, 31, 188, 199, - 7, 57, 8, 238, 213, 211, 144, 189, 213, 198, 29, 66, 244, 189, - 197, 83, 128, 124, 103, 144, 80, 17, 226, 45, 113, 223, 147, 19, - 85, 243, 149, 173, 92, 36, 177, 128, 217, 137, 243, 195, 194, 148, - 227, 194, 101, 87, 129, 204, 48, 174, 188, 187, 238, 80, 238, 69, - 137, 254, 217, 178, 33, 43, 101, 245, 58, 152, 36, 162, 113, 177, - 197, 201, 31, 236, 4, 43, 69, 220, 89, 82, 125, 104, 114, 70, - 43, 48, 5, 160, 234, 67, 112, 135, 255, 84, 207, 74, 109, 1, - 238, 240, 159, 234, 147, 23, 36, 152, 1, 176, 240, 188, 4, 251, - 1, 124, 230, 57, 178, 4, 61, 104, 246, 89, 233, 63, 211, 245, - 255, 87, 55, 114, 207, 81, 21, 163, 68, 41, 62, 177, 135, 182, - 215, 149, 89, 233, 161, 133, 206, 219, 138, 78, 60, 185, 252, 103, - 122, 255, 8, 89, 4, 121, 225, 39, 151, 255, 92, 55, 135, 242, - 151, 20, 242, 248, 54, 41, 22, 7, 132, 194, 149, 42, 128, 98, - 113, 108, 87, 90, 213, 124, 45, 153, 136, 163, 202, 127, 174, 155, - 3, 113, 130, 14, 9, 7, 14, 146, 91, 162, 30, 205, 50, 255, - 82, 55, 173, 92, 154, 95, 248, 204, 79, 227, 233, 219, 56, 206, - 200, 74, 43, 196, 103, 194, 228, 17, 80, 161, 151, 248, 64, 151, - 135, 53, 137, 56, 227, 252, 151, 186, 56, 176, 72, 196, 25, 231, - 191, 212, 179, 195, 170, 42, 221, 50, 255, 74, 55, 15, 231, 159, - 73, 54, 169, 6, 142, 3, 72, 152, 144, 172, 37, 39, 98, 42, - 76, 69, 79, 151, 74, 204, 64, 244, 95, 233, 226, 24, 39, 17, - 103, 150, 255, 74, 31, 25, 197, 69, 25, 2, 218, 226, 175, 117, - 253, 186, 232, 183, 148, 137, 160, 20, 129, 84, 26, 64, 177, 197, - 68, 112, 193, 225, 175, 245, 177, 179, 18, 52, 0, 28, 151, 186, - 36, 149, 1, 80, 233, 146, 84, 63, 128, 151, 174, 146, 175, 243, - 81, 156, 182, 204, 79, 24, 122, 62, 247, 91, 122, 108, 49, 221, - 242, 123, 236, 37, 254, 66, 229, 251, 179, 151, 202, 117, 234, 243, - 152, 38, 133, 93, 72, 197, 228, 153, 12, 117, 209, 29, 211, 3, - 237, 209, 41, 60, 51, 178, 105, 135, 44, 105, 139, 40, 131, 11, - 183, 74, 105, 203, 142, 182, 10, 212, 169, 171, 104, 30, 69, 94, - 52, 113, 214, 35, 89, 42, 140, 236, 136, 11, 193, 110, 91, 65, - 160, 193, 77, 151, 189, 177, 244, 210, 210, 85, 88, 222, 61, 84, - 218, 66, 141, 224, 180, 137, 76, 86, 96, 10, 64, 53, 223, 167, - 53, 0, 197, 58, 31, 193, 227, 65, 159, 48, 78, 157, 38, 191, - 109, 98, 7, 245, 91, 230, 103, 12, 253, 122, 238, 95, 155, 116, - 149, 31, 90, 22, 145, 79, 229, 84, 28, 118, 175, 180, 56, 30, - 159, 197, 229, 139, 114, 47, 82, 154, 23, 145, 80, 243, 170, 8, - 63, 127, 136, 251, 186, 50, 148, 8, 168, 74, 175, 3, 227, 49, - 114, 170, 96, 170, 211, 202, 189, 5, 26, 118, 194, 8, 215, 44, - 214, 112, 163, 55, 72, 214, 132, 55, 159, 25, 161, 104, 145, 118, - 171, 249, 112, 23, 25, 116, 66, 133, 29, 168, 241, 80, 46, 182, - 43, 60, 182, 112, 178, 72, 232, 173, 222, 70, 237, 48, 177, 124, - 130, 78, 145, 124, 176, 86, 154, 31, 162, 38, 80, 172, 201, 151, - 155, 9, 101, 118, 224, 118, 228, 145, 103, 92, 237, 233, 141, 198, - 68, 246, 168, 140, 115, 99, 135, 159, 0, 224, 71, 40, 18, 71, - 205, 241, 9, 162, 109, 31, 143, 78, 241, 145, 46, 8, 39, 220, - 53, 239, 158, 206, 146, 28, 229, 110, 232, 254, 44, 13, 88, 221, - 15, 88, 129, 8, 149, 164, 206, 177, 249, 20, 79, 189, 21, 41, - 93, 193, 203, 179, 53, 249, 184, 49, 247, 193, 67, 152, 63, 118, - 137, 129, 124, 124, 14, 220, 87, 167, 234, 68, 224, 68, 224, 174, - 61, 107, 242, 227, 7, 237, 120, 82, 233, 55, 81, 172, 20, 152, - 2, 80, 77, 42, 253, 26, 128, 202, 58, 233, 55, 0, 84, 214, - 73, 127, 6, 64, 165, 81, 250, 81, 66, 47, 93, 21, 154, 43, - 99, 153, 63, 98, 232, 114, 198, 201, 152, 8, 202, 122, 50, 41, - 0, 85, 61, 25, 13, 192, 236, 57, 9, 26, 0, 78, 156, 151, - 32, 162, 186, 240, 156, 4, 251, 1, 188, 114, 93, 212, 51, 96, - 153, 159, 53, 148, 134, 28, 48, 17, 148, 245, 12, 164, 0, 84, - 245, 12, 104, 0, 170, 246, 12, 24, 0, 170, 246, 12, 100, 0, - 84, 237, 25, 232, 7, 80, 181, 135, 88, 230, 231, 12, 93, 18, - 65, 76, 4, 101, 61, 36, 5, 160, 170, 7, 220, 209, 207, 25, - 89, 169, 137, 137, 1, 224, 248, 164, 4, 51, 0, 158, 151, 36, - 147, 126, 0, 47, 95, 35, 255, 129, 251, 174, 131, 150, 249, 69, - 67, 159, 203, 253, 190, 70, 203, 97, 87, 160, 16, 41, 136, 47, - 18, 202, 159, 252, 193, 135, 208, 185, 254, 138, 236, 160, 193, 34, - 208, 186, 81, 221, 15, 154, 226, 160, 21, 204, 221, 172, 233, 68, - 144, 63, 190, 48, 161, 214, 108, 9, 55, 246, 183, 89, 208, 65, - 123, 49, 105, 192, 226, 130, 150, 19, 41, 37, 45, 167, 108, 183, - 67, 157, 134, 231, 7, 172, 118, 93, 102, 135, 242, 132, 186, 204, - 14, 163, 228, 97, 51, 188, 46, 33, 103, 114, 172, 73, 54, 129, - 155, 97, 110, 194, 117, 29, 52, 177, 213, 10, 76, 1, 168, 248, - 57, 168, 1, 152, 205, 73, 208, 0, 240, 196, 41, 9, 102, 0, - 164, 179, 18, 236, 7, 240, 194, 12, 249, 40, 178, 243, 128, 101, - 254, 184, 161, 63, 147, 123, 139, 242, 104, 205, 161, 60, 60, 132, - 155, 79, 24, 186, 89, 185, 174, 34, 72, 200, 94, 113, 90, 196, - 170, 42, 46, 2, 178, 80, 188, 236, 24, 249, 9, 53, 168, 28, - 69, 63, 160, 11, 23, 46, 168, 166, 29, 48, 145, 2, 5, 166, - 0, 84, 77, 59, 160, 1, 40, 118, 9, 136, 126, 192, 0, 240, - 140, 28, 9, 7, 50, 0, 62, 125, 69, 130, 253, 0, 206, 94, - 38, 63, 196, 69, 229, 160, 101, 254, 180, 161, 79, 230, 62, 150, - 88, 230, 240, 229, 74, 24, 173, 10, 71, 136, 71, 132, 22, 138, - 195, 65, 184, 197, 95, 114, 139, 248, 58, 107, 162, 8, 217, 171, - 65, 61, 115, 124, 145, 107, 44, 126, 182, 73, 234, 42, 213, 220, - 131, 38, 18, 165, 192, 20, 128, 106, 146, 59, 168, 1, 104, 201, - 17, 120, 208, 0, 240, 233, 9, 82, 198, 246, 12, 89, 230, 207, - 25, 250, 68, 238, 58, 85, 113, 165, 145, 157, 187, 104, 186, 46, - 171, 13, 229, 249, 108, 49, 177, 43, 50, 134, 76, 196, 165, 192, - 20, 128, 138, 140, 33, 13, 64, 43, 47, 65, 3, 192, 115, 227, - 252, 104, 51, 209, 15, 89, 230, 47, 24, 252, 104, 115, 188, 218, - 67, 87, 119, 156, 122, 148, 156, 219, 112, 104, 224, 141, 175, 221, - 235, 64, 96, 247, 45, 200, 67, 162, 120, 232, 35, 96, 96, 18, - 129, 232, 143, 23, 199, 185, 173, 143, 175, 183, 134, 85, 63, 96, - 42, 128, 28, 63, 95, 226, 203, 78, 147, 103, 190, 195, 233, 176, - 211, 220, 244, 221, 144, 72, 103, 83, 156, 220, 140, 98, 215, 34, - 228, 157, 203, 205, 159, 2, 63, 146, 133, 36, 170, 85, 124, 113, - 238, 150, 111, 59, 144, 71, 85, 163, 106, 145, 12, 60, 100, 34, - 79, 20, 152, 2, 80, 241, 243, 144, 6, 160, 90, 91, 58, 100, - 0, 120, 250, 12, 30, 115, 39, 122, 214, 50, 191, 10, 221, 218, - 138, 165, 180, 181, 213, 122, 92, 233, 132, 172, 187, 4, 128, 236, - 33, 149, 139, 162, 159, 228, 219, 161, 138, 246, 172, 137, 4, 40, - 48, 5, 160, 162, 61, 171, 1, 168, 100, 33, 107, 0, 120, 110, - 156, 252, 10, 31, 99, 195, 150, 249, 203, 134, 126, 46, 247, 21, - 13, 221, 137, 4, 191, 113, 33, 129, 71, 30, 84, 97, 223, 80, - 100, 253, 250, 222, 68, 43, 18, 73, 76, 227, 174, 94, 76, 60, - 125, 154, 52, 88, 209, 220, 76, 30, 99, 134, 129, 1, 194, 192, - 223, 80, 148, 103, 25, 21, 17, 170, 241, 195, 38, 54, 64, 129, - 41, 0, 85, 227, 135, 53, 0, 45, 169, 74, 135, 13, 0, 243, - 103, 201, 127, 203, 27, 111, 89, 230, 175, 24, 122, 49, 247, 207, - 190, 133, 198, 203, 56, 242, 138, 11, 100, 119, 79, 189, 39, 23, - 226, 21, 183, 36, 35, 136, 226, 196, 99, 48, 194, 50, 177, 49, - 10, 76, 1, 168, 24, 97, 105, 0, 90, 210, 22, 176, 12, 0, - 47, 76, 145, 255, 138, 51, 98, 196, 50, 127, 21, 52, 194, 47, - 189, 23, 35, 100, 127, 249, 117, 26, 180, 55, 59, 223, 130, 16, - 136, 211, 150, 31, 72, 12, 176, 234, 94, 149, 56, 98, 98, 35, - 20, 152, 2, 80, 49, 96, 68, 3, 80, 13, 225, 17, 3, 192, - 211, 103, 200, 59, 216, 254, 81, 203, 252, 111, 12, 253, 90, 206, - 251, 64, 183, 190, 227, 135, 175, 187, 3, 50, 202, 121, 55, 191, - 34, 247, 154, 229, 30, 69, 242, 138, 56, 209, 71, 77, 172, 94, - 129, 105, 0, 7, 37, 169, 163, 26, 128, 226, 138, 56, 209, 71, - 13, 0, 175, 92, 37, 223, 163, 17, 195, 4, 203, 236, 215, 13, - 253, 104, 238, 237, 111, 249, 142, 248, 7, 111, 5, 90, 144, 169, - 62, 160, 68, 92, 40, 39, 120, 161, 252, 215, 13, 113, 161, 156, - 224, 133, 242, 95, 55, 14, 143, 241, 237, 140, 1, 203, 252, 77, - 67, 31, 226, 5, 7, 250, 0, 26, 60, 200, 115, 14, 64, 193, - 36, 168, 11, 240, 0, 209, 205, 65, 43, 253, 53, 163, 239, 135, - 77, 13, 209, 128, 217, 244, 53, 35, 115, 132, 252, 78, 138, 152, - 230, 160, 222, 103, 153, 191, 111, 232, 47, 228, 126, 45, 5, 138, - 24, 29, 129, 196, 102, 86, 124, 206, 126, 86, 174, 96, 64, 174, - 228, 205, 215, 122, 215, 45, 37, 185, 176, 149, 152, 117, 48, 135, - 218, 166, 152, 2, 155, 209, 142, 156, 77, 7, 163, 237, 168, 229, - 173, 30, 236, 68, 160, 47, 82, 220, 30, 75, 60, 34, 28, 111, - 63, 227, 121, 102, 25, 166, 142, 223, 99, 191, 70, 105, 57, 26, - 15, 169, 203, 194, 144, 80, 86, 175, 59, 85, 7, 239, 109, 109, - 129, 69, 199, 118, 88, 64, 235, 204, 142, 228, 227, 213, 53, 245, - 86, 46, 127, 208, 30, 141, 225, 158, 208, 124, 234, 252, 188, 92, - 208, 101, 15, 109, 12, 162, 215, 181, 125, 76, 255, 63, 246, 222, - 5, 56, 142, 228, 60, 19, 68, 189, 26, 141, 196, 59, 1, 146, - 96, 145, 51, 76, 54, 31, 120, 176, 209, 32, 64, 142, 70, 4, - 135, 51, 2, 65, 144, 196, 8, 67, 112, 0, 80, 175, 25, 9, - 83, 221, 93, 0, 106, 208, 168, 106, 85, 117, 19, 196, 76, 204, - 122, 79, 179, 146, 86, 227, 149, 117, 146, 245, 112, 200, 246, 205, - 74, 94, 109, 216, 123, 142, 187, 243, 41, 60, 97, 217, 142, 221, - 59, 159, 55, 20, 235, 231, 201, 182, 20, 150, 111, 125, 214, 73, - 246, 158, 228, 135, 44, 89, 171, 91, 135, 189, 90, 93, 228, 255, - 103, 102, 101, 53, 64, 14, 57, 26, 58, 246, 226, 52, 161, 16, - 241, 87, 87, 101, 101, 102, 253, 153, 249, 63, 191, 95, 221, 126, - 57, 138, 216, 243, 8, 15, 42, 214, 237, 109, 170, 68, 176, 11, - 48, 219, 231, 241, 94, 141, 199, 206, 66, 129, 94, 239, 22, 252, - 242, 66, 54, 198, 212, 215, 188, 253, 92, 102, 71, 103, 57, 159, - 6, 217, 61, 12, 205, 62, 175, 77, 104, 34, 34, 255, 224, 86, - 253, 83, 17, 200, 96, 202, 114, 55, 104, 165, 16, 249, 36, 199, - 205, 149, 90, 80, 80, 165, 12, 124, 30, 49, 213, 64, 150, 144, - 17, 13, 101, 17, 127, 154, 160, 63, 32, 1, 77, 161, 53, 246, - 31, 94, 121, 81, 69, 135, 11, 157, 64, 186, 239, 112, 83, 195, - 136, 147, 198, 54, 248, 128, 27, 113, 80, 81, 152, 182, 88, 248, - 54, 92, 139, 226, 138, 208, 231, 27, 123, 1, 233, 137, 13, 162, - 19, 60, 95, 127, 42, 55, 136, 78, 240, 124, 253, 169, 148, 177, - 59, 193, 116, 248, 167, 86, 223, 176, 36, 45, 78, 142, 157, 146, - 100, 158, 147, 194, 54, 218, 105, 182, 181, 115, 242, 225, 71, 200, - 95, 24, 176, 104, 12, 106, 127, 195, 50, 47, 187, 255, 222, 96, - 151, 208, 79, 132, 18, 140, 102, 121, 16, 86, 32, 89, 224, 131, - 21, 170, 154, 35, 161, 192, 100, 145, 15, 25, 191, 89, 241, 66, - 128, 133, 93, 171, 5, 149, 134, 76, 143, 68, 139, 178, 108, 73, - 198, 105, 200, 236, 45, 216, 133, 60, 0, 155, 98, 91, 92, 224, - 84, 224, 105, 66, 16, 18, 235, 214, 247, 146, 192, 143, 207, 179, - 208, 223, 22, 70, 8, 92, 76, 222, 205, 40, 144, 236, 34, 124, - 42, 90, 39, 11, 106, 30, 13, 27, 70, 171, 72, 135, 147, 106, - 30, 13, 152, 139, 190, 9, 73, 90, 156, 156, 58, 35, 201, 60, - 39, 207, 206, 73, 178, 157, 147, 143, 93, 34, 223, 196, 121, 52, - 169, 253, 215, 150, 57, 233, 254, 73, 170, 214, 74, 246, 190, 111, - 154, 173, 182, 134, 238, 81, 157, 21, 218, 44, 185, 107, 117, 86, - 99, 123, 28, 191, 105, 195, 128, 21, 233, 112, 82, 77, 37, 103, - 171, 191, 150, 26, 109, 39, 248, 125, 254, 218, 122, 224, 65, 73, - 230, 57, 121, 228, 180, 36, 219, 57, 57, 54, 129, 155, 122, 7, - 181, 191, 109, 153, 3, 112, 54, 116, 242, 179, 225, 219, 86, 103, - 23, 222, 9, 103, 131, 78, 154, 130, 196, 123, 225, 199, 30, 209, - 133, 14, 163, 133, 52, 5, 137, 247, 2, 213, 79, 197, 143, 166, - 145, 37, 229, 175, 255, 60, 7, 223, 214, 162, 246, 63, 181, 205, - 7, 221, 15, 231, 184, 36, 163, 50, 116, 228, 247, 197, 149, 159, - 245, 230, 107, 242, 161, 87, 135, 184, 252, 29, 220, 138, 196, 119, - 35, 252, 186, 76, 227, 146, 233, 74, 234, 10, 110, 195, 140, 95, - 121, 228, 205, 254, 206, 202, 78, 221, 47, 50, 128, 197, 231, 127, - 62, 202, 175, 175, 226, 138, 186, 192, 38, 207, 147, 84, 104, 169, - 234, 41, 86, 181, 40, 218, 76, 0, 122, 67, 54, 39, 58, 252, - 132, 87, 135, 224, 78, 40, 150, 35, 119, 120, 125, 151, 151, 133, - 117, 178, 251, 122, 122, 135, 87, 99, 162, 91, 108, 211, 223, 17, - 157, 216, 117, 139, 234, 176, 80, 204, 46, 176, 41, 113, 219, 11, - 248, 143, 218, 84, 179, 29, 106, 25, 29, 97, 243, 45, 168, 22, - 16, 76, 183, 17, 69, 9, 110, 164, 154, 153, 2, 191, 139, 236, - 254, 5, 16, 1, 212, 10, 41, 55, 27, 32, 81, 51, 143, 133, - 136, 80, 194, 191, 77, 144, 89, 134, 202, 142, 219, 136, 216, 6, - 151, 24, 248, 111, 155, 254, 14, 38, 182, 139, 64, 124, 156, 112, - 205, 177, 54, 115, 125, 30, 164, 43, 200, 117, 216, 133, 193, 1, - 110, 52, 25, 116, 3, 216, 170, 94, 66, 88, 176, 150, 230, 98, - 226, 10, 220, 59, 191, 12, 82, 51, 22, 87, 230, 166, 37, 130, - 164, 48, 118, 42, 81, 186, 5, 65, 151, 205, 96, 8, 130, 20, - 123, 128, 171, 16, 113, 143, 72, 221, 24, 211, 84, 69, 3, 98, - 15, 149, 193, 97, 193, 86, 198, 172, 138, 214, 111, 161, 161, 200, - 131, 73, 68, 179, 165, 7, 148, 101, 195, 18, 81, 164, 195, 73, - 181, 27, 88, 6, 39, 251, 14, 74, 18, 214, 211, 225, 7, 200, - 113, 177, 222, 95, 178, 205, 238, 194, 1, 240, 129, 215, 130, 6, - 151, 46, 132, 143, 172, 92, 243, 137, 88, 176, 22, 191, 77, 173, - 124, 222, 162, 78, 154, 130, 60, 34, 90, 252, 81, 222, 34, 133, - 22, 67, 47, 140, 86, 189, 100, 149, 183, 44, 27, 179, 249, 29, - 234, 105, 219, 200, 146, 166, 32, 23, 97, 241, 219, 212, 254, 144, - 253, 250, 1, 66, 117, 98, 114, 66, 58, 87, 118, 142, 147, 157, - 114, 111, 132, 228, 4, 251, 136, 60, 117, 32, 57, 193, 22, 128, - 80, 157, 14, 181, 63, 98, 223, 31, 64, 168, 78, 46, 191, 127, - 196, 22, 242, 123, 39, 200, 239, 31, 177, 133, 252, 222, 9, 242, - 251, 71, 236, 125, 67, 32, 134, 119, 209, 220, 199, 236, 182, 191, - 23, 98, 120, 151, 65, 237, 143, 217, 249, 65, 242, 51, 38, 177, - 237, 46, 46, 134, 127, 210, 54, 75, 238, 71, 77, 152, 49, 40, - 93, 149, 50, 171, 244, 177, 65, 0, 215, 169, 83, 173, 126, 115, - 33, 175, 123, 105, 0, 45, 185, 77, 66, 189, 8, 217, 220, 240, - 66, 62, 253, 42, 158, 104, 155, 51, 115, 137, 41, 93, 70, 186, - 41, 136, 154, 152, 178, 95, 139, 182, 165, 228, 145, 213, 71, 119, - 252, 70, 186, 124, 211, 128, 135, 168, 238, 203, 186, 7, 188, 55, - 252, 236, 244, 217, 248, 56, 75, 162, 56, 222, 41, 178, 109, 127, - 184, 86, 99, 176, 195, 71, 152, 248, 84, 245, 33, 57, 18, 2, - 93, 155, 92, 68, 151, 158, 154, 163, 248, 213, 187, 64, 162, 251, - 164, 100, 130, 46, 64, 5, 251, 164, 45, 178, 57, 186, 64, 162, - 251, 164, 45, 112, 58, 186, 64, 162, 251, 164, 125, 208, 149, 100, - 158, 147, 135, 198, 37, 217, 206, 201, 147, 69, 0, 93, 233, 178, - 219, 104, 238, 39, 109, 243, 211, 54, 130, 174, 116, 129, 191, 250, - 39, 237, 118, 190, 54, 114, 156, 228, 223, 231, 167, 109, 187, 215, - 237, 85, 118, 138, 45, 64, 31, 5, 31, 109, 151, 112, 69, 255, - 180, 109, 107, 23, 76, 126, 161, 187, 7, 66, 36, 186, 208, 21, - 253, 178, 45, 28, 200, 93, 194, 163, 252, 178, 109, 231, 211, 11, - 38, 191, 208, 217, 165, 158, 48, 169, 253, 41, 91, 192, 236, 116, - 9, 199, 240, 167, 108, 225, 24, 238, 18, 142, 225, 79, 217, 3, - 131, 228, 143, 144, 139, 12, 106, 255, 172, 109, 30, 114, 127, 211, - 20, 235, 14, 242, 159, 197, 231, 18, 62, 123, 17, 21, 132, 137, - 175, 114, 243, 172, 199, 193, 22, 148, 185, 145, 242, 32, 4, 152, - 194, 86, 194, 60, 212, 144, 148, 50, 181, 139, 181, 240, 123, 115, - 205, 166, 196, 150, 60, 113, 210, 123, 161, 106, 157, 235, 30, 219, - 113, 32, 163, 19, 1, 137, 80, 34, 158, 164, 145, 69, 62, 50, - 80, 81, 79, 105, 243, 226, 216, 219, 1, 147, 8, 162, 107, 193, - 25, 160, 130, 111, 107, 173, 152, 72, 229, 90, 84, 46, 177, 121, - 153, 105, 94, 196, 237, 89, 186, 188, 248, 206, 220, 64, 188, 114, - 72, 38, 7, 47, 154, 8, 64, 3, 81, 88, 184, 239, 112, 210, - 52, 228, 30, 228, 24, 72, 200, 72, 153, 15, 18, 50, 228, 110, - 221, 133, 9, 25, 118, 159, 100, 62, 72, 200, 224, 204, 247, 73, - 7, 62, 140, 73, 237, 95, 180, 205, 51, 238, 143, 58, 240, 97, - 176, 114, 156, 138, 206, 17, 134, 26, 63, 141, 73, 92, 6, 113, - 4, 103, 72, 153, 179, 68, 172, 120, 36, 80, 16, 68, 54, 187, - 126, 42, 113, 173, 91, 85, 11, 129, 193, 243, 231, 222, 112, 150, - 149, 97, 101, 53, 252, 245, 216, 171, 193, 220, 175, 5, 183, 36, - 28, 10, 97, 35, 65, 216, 120, 195, 217, 34, 107, 138, 127, 19, - 241, 47, 220, 4, 23, 196, 95, 163, 37, 198, 102, 52, 8, 59, - 57, 16, 85, 206, 141, 32, 34, 145, 224, 15, 248, 96, 250, 120, - 48, 218, 70, 234, 60, 48, 235, 9, 171, 69, 136, 24, 192, 229, - 230, 0, 34, 105, 48, 232, 135, 243, 235, 134, 87, 231, 219, 200, - 54, 226, 17, 212, 184, 184, 145, 2, 69, 8, 4, 6, 97, 21, - 102, 107, 181, 8, 197, 110, 12, 40, 79, 95, 91, 34, 108, 25, - 54, 180, 29, 254, 171, 170, 53, 167, 180, 1, 49, 8, 80, 75, - 51, 122, 156, 95, 213, 59, 47, 114, 23, 136, 18, 18, 180, 223, - 10, 24, 122, 90, 144, 152, 55, 16, 156, 224, 111, 120, 55, 131, - 40, 214, 242, 42, 96, 227, 192, 111, 69, 152, 42, 137, 7, 169, - 159, 25, 249, 71, 161, 101, 55, 208, 24, 145, 217, 115, 85, 14, - 112, 36, 62, 182, 238, 53, 199, 128, 58, 12, 171, 245, 170, 96, - 243, 199, 112, 232, 245, 40, 90, 47, 109, 121, 141, 141, 210, 60, - 231, 3, 37, 134, 116, 129, 82, 242, 139, 41, 99, 155, 57, 78, - 10, 19, 96, 23, 236, 57, 191, 104, 211, 33, 73, 90, 156, 60, - 116, 88, 146, 121, 78, 62, 48, 37, 201, 118, 78, 142, 76, 138, - 93, 213, 160, 185, 87, 108, 243, 223, 168, 93, 149, 47, 146, 87, - 236, 246, 110, 0, 205, 234, 66, 40, 171, 95, 178, 109, 234, 30, - 16, 6, 84, 205, 203, 141, 185, 80, 184, 209, 33, 142, 213, 47, - 165, 155, 39, 226, 88, 253, 146, 221, 215, 79, 70, 69, 83, 6, - 181, 127, 133, 55, 117, 16, 154, 218, 197, 115, 137, 214, 152, 129, - 247, 166, 141, 241, 141, 247, 87, 244, 198, 76, 106, 255, 235, 61, - 27, 75, 35, 140, 229, 179, 252, 197, 255, 90, 111, 12, 31, 238, - 235, 39, 95, 130, 73, 224, 19, 246, 53, 219, 60, 229, 126, 190, - 71, 198, 104, 104, 201, 19, 101, 165, 130, 212, 188, 231, 130, 218, - 206, 99, 140, 45, 120, 207, 237, 72, 151, 162, 242, 40, 10, 9, - 100, 156, 79, 139, 132, 106, 197, 180, 128, 45, 223, 11, 5, 246, - 197, 182, 12, 174, 195, 184, 82, 77, 211, 130, 124, 30, 56, 233, - 241, 109, 69, 220, 65, 2, 64, 1, 18, 247, 13, 39, 41, 58, - 14, 108, 138, 34, 157, 84, 244, 175, 220, 108, 72, 65, 24, 5, - 57, 140, 38, 193, 125, 25, 173, 117, 130, 239, 51, 173, 138, 253, - 181, 210, 192, 136, 248, 180, 61, 232, 172, 128, 126, 2, 148, 38, - 180, 136, 72, 243, 155, 136, 145, 230, 195, 247, 32, 247, 135, 143, - 182, 69, 71, 240, 98, 159, 173, 197, 190, 143, 214, 118, 208, 108, - 20, 22, 4, 72, 68, 132, 249, 222, 186, 31, 115, 45, 191, 198, - 103, 85, 166, 230, 100, 145, 74, 84, 26, 142, 146, 247, 100, 206, - 140, 10, 244, 35, 234, 236, 200, 24, 249, 185, 162, 148, 52, 215, - 215, 253, 68, 194, 143, 100, 44, 82, 30, 212, 24, 225, 162, 83, - 224, 35, 104, 143, 7, 186, 20, 111, 39, 211, 159, 12, 90, 13, - 32, 117, 70, 177, 48, 139, 106, 75, 187, 28, 69, 155, 155, 190, - 143, 248, 87, 209, 77, 63, 222, 224, 223, 162, 177, 83, 23, 218, - 179, 192, 35, 207, 68, 179, 5, 187, 54, 16, 25, 10, 202, 60, - 12, 54, 108, 104, 21, 4, 194, 134, 31, 175, 9, 127, 141, 23, - 102, 252, 20, 81, 149, 43, 180, 94, 173, 38, 99, 96, 1, 138, - 5, 12, 169, 44, 246, 183, 60, 45, 23, 178, 196, 216, 229, 102, - 204, 63, 3, 151, 27, 56, 171, 197, 190, 87, 29, 79, 188, 53, - 95, 193, 171, 19, 237, 101, 129, 222, 31, 173, 104, 2, 118, 248, - 60, 196, 221, 52, 100, 68, 158, 124, 25, 111, 13, 54, 99, 62, - 118, 52, 119, 169, 180, 9, 124, 33, 176, 115, 165, 25, 99, 62, - 25, 156, 57, 53, 132, 36, 201, 54, 200, 153, 62, 8, 155, 62, - 193, 188, 19, 192, 228, 96, 190, 68, 15, 22, 108, 89, 34, 153, - 92, 255, 86, 109, 117, 183, 110, 13, 37, 189, 21, 196, 135, 148, - 170, 48, 125, 136, 192, 81, 246, 220, 78, 54, 65, 3, 163, 226, - 131, 164, 8, 67, 226, 108, 49, 159, 204, 227, 186, 13, 158, 243, - 171, 35, 163, 82, 208, 202, 172, 110, 2, 239, 142, 253, 70, 51, - 22, 12, 9, 96, 35, 66, 79, 206, 46, 197, 13, 47, 97, 80, - 3, 10, 150, 64, 166, 103, 154, 217, 62, 244, 249, 128, 189, 120, - 71, 37, 35, 68, 50, 208, 109, 143, 54, 65, 115, 16, 201, 100, - 17, 198, 248, 225, 250, 14, 66, 4, 156, 17, 199, 20, 148, 248, - 2, 116, 42, 62, 49, 69, 190, 207, 251, 158, 146, 8, 235, 205, - 184, 30, 97, 244, 5, 159, 24, 34, 87, 6, 23, 55, 194, 214, - 179, 81, 24, 76, 97, 186, 147, 59, 206, 55, 81, 54, 108, 133, - 222, 210, 16, 245, 4, 130, 134, 62, 227, 210, 149, 160, 69, 99, - 105, 223, 70, 238, 150, 217, 110, 64, 211, 162, 250, 215, 24, 102, - 48, 140, 137, 110, 4, 80, 72, 46, 211, 21, 48, 53, 142, 65, - 192, 242, 24, 185, 211, 109, 217, 189, 73, 238, 103, 136, 96, 147, - 49, 160, 109, 112, 89, 184, 236, 251, 161, 152, 113, 48, 231, 195, - 67, 83, 167, 167, 38, 139, 200, 97, 98, 181, 179, 74, 20, 199, - 126, 165, 17, 242, 102, 225, 229, 137, 228, 38, 140, 75, 134, 228, - 86, 81, 189, 70, 159, 125, 96, 10, 206, 97, 53, 216, 107, 34, - 86, 137, 189, 100, 3, 19, 99, 185, 24, 137, 130, 25, 87, 81, - 177, 254, 144, 222, 90, 144, 240, 147, 42, 212, 142, 29, 214, 172, - 71, 97, 186, 162, 216, 202, 226, 165, 197, 145, 242, 196, 212, 228, - 228, 185, 211, 111, 152, 156, 60, 51, 58, 205, 68, 64, 14, 150, - 51, 82, 250, 5, 140, 69, 225, 167, 162, 172, 97, 217, 112, 176, - 42, 210, 225, 164, 146, 199, 45, 131, 147, 2, 217, 176, 11, 172, - 39, 95, 179, 15, 72, 41, 198, 202, 115, 242, 224, 152, 36, 219, - 57, 121, 124, 148, 252, 143, 6, 28, 217, 54, 181, 191, 110, 155, - 15, 187, 255, 220, 96, 45, 229, 155, 239, 109, 66, 69, 124, 144, - 140, 189, 203, 102, 18, 66, 184, 12, 180, 9, 146, 52, 190, 166, - 162, 170, 75, 212, 227, 104, 35, 40, 11, 157, 44, 138, 229, 26, - 242, 66, 84, 167, 37, 104, 51, 14, 192, 198, 30, 43, 210, 225, - 164, 154, 11, 219, 224, 164, 192, 202, 233, 2, 235, 200, 215, 237, - 194, 113, 73, 230, 57, 41, 146, 142, 187, 32, 12, 252, 235, 246, - 233, 135, 200, 215, 113, 46, 28, 106, 127, 211, 54, 39, 221, 47, - 235, 145, 103, 252, 152, 186, 111, 6, 122, 233, 26, 73, 94, 155, - 121, 94, 192, 58, 222, 85, 180, 89, 134, 161, 28, 27, 134, 170, - 72, 24, 185, 154, 68, 199, 224, 100, 159, 52, 39, 56, 22, 39, - 133, 113, 190, 11, 2, 169, 191, 105, 11, 227, 124, 23, 4, 82, - 127, 211, 30, 155, 32, 143, 193, 28, 230, 168, 253, 109, 219, 44, - 186, 147, 247, 94, 243, 6, 219, 203, 217, 208, 130, 34, 29, 78, - 170, 174, 229, 12, 78, 42, 94, 207, 89, 156, 60, 112, 80, 146, - 121, 78, 186, 167, 36, 217, 206, 201, 19, 99, 96, 168, 235, 226, - 2, 251, 119, 95, 71, 67, 93, 23, 4, 143, 126, 55, 237, 106, - 123, 142, 147, 157, 114, 158, 218, 13, 78, 10, 67, 93, 23, 4, - 143, 126, 87, 26, 234, 186, 28, 106, 255, 237, 125, 50, 212, 117, - 57, 109, 188, 113, 97, 168, 235, 2, 67, 221, 223, 74, 67, 93, - 23, 24, 234, 254, 214, 222, 55, 68, 14, 243, 126, 116, 80, 251, - 239, 108, 179, 187, 208, 43, 106, 201, 84, 217, 179, 32, 119, 99, - 75, 29, 109, 252, 103, 97, 248, 236, 2, 239, 138, 78, 154, 130, - 236, 34, 166, 221, 77, 115, 223, 179, 219, 94, 116, 208, 228, 215, - 109, 80, 251, 123, 118, 126, 16, 102, 190, 155, 235, 62, 223, 127, - 29, 103, 190, 27, 172, 99, 223, 151, 51, 223, 13, 214, 177, 239, - 203, 153, 239, 6, 13, 234, 251, 114, 230, 187, 193, 58, 246, 125, - 57, 243, 221, 14, 181, 223, 227, 220, 159, 153, 239, 230, 51, 255, - 30, 71, 204, 124, 55, 204, 252, 123, 28, 49, 243, 221, 48, 243, - 239, 113, 132, 137, 180, 135, 230, 222, 235, 180, 253, 132, 152, 175, - 30, 131, 218, 239, 117, 242, 3, 228, 25, 98, 219, 61, 124, 190, - 62, 224, 152, 204, 93, 194, 56, 133, 108, 176, 141, 12, 91, 128, - 130, 236, 108, 11, 11, 175, 165, 230, 80, 44, 126, 1, 69, 186, - 26, 105, 38, 15, 145, 248, 162, 208, 151, 30, 152, 192, 15, 56, - 166, 34, 29, 78, 138, 85, 214, 3, 19, 248, 1, 167, 239, 144, - 36, 45, 78, 62, 120, 132, 252, 153, 1, 221, 51, 168, 253, 33, - 199, 156, 116, 191, 148, 238, 147, 2, 53, 232, 62, 250, 49, 49, - 245, 238, 254, 238, 146, 224, 206, 87, 115, 100, 216, 48, 78, 69, - 58, 156, 84, 115, 100, 192, 44, 136, 77, 178, 7, 172, 96, 31, - 114, 196, 38, 217, 3, 206, 224, 15, 57, 98, 147, 236, 1, 103, - 240, 135, 156, 177, 9, 240, 63, 244, 116, 80, 251, 195, 206, 29, - 252, 15, 61, 124, 221, 125, 216, 17, 11, 173, 7, 214, 157, 78, - 154, 130, 92, 132, 175, 97, 82, 251, 163, 206, 235, 183, 184, 122, - 192, 72, 242, 209, 116, 220, 124, 75, 255, 168, 211, 41, 71, 198, - 191, 254, 71, 29, 177, 184, 122, 192, 72, 242, 81, 71, 44, 174, - 30, 135, 218, 159, 184, 79, 139, 171, 135, 47, 174, 79, 200, 197, - 213, 3, 139, 235, 19, 114, 113, 245, 192, 226, 250, 132, 92, 92, - 189, 52, 247, 73, 167, 237, 95, 138, 197, 213, 107, 80, 251, 147, - 78, 126, 136, 252, 39, 206, 190, 189, 124, 117, 189, 204, 217, 247, - 235, 45, 236, 139, 138, 241, 125, 103, 98, 124, 207, 253, 246, 199, - 107, 240, 94, 226, 195, 246, 194, 162, 127, 89, 126, 216, 94, 88, - 244, 47, 75, 134, 238, 133, 69, 255, 178, 100, 232, 94, 88, 244, - 47, 75, 134, 238, 5, 159, 194, 203, 146, 161, 123, 193, 167, 240, - 50, 103, 232, 69, 152, 82, 131, 218, 159, 126, 29, 121, 176, 23, - 214, 222, 167, 211, 174, 26, 57, 78, 118, 202, 206, 24, 240, 62, - 193, 131, 189, 176, 246, 62, 45, 121, 176, 215, 161, 246, 103, 238, - 19, 15, 246, 114, 30, 252, 140, 228, 193, 94, 224, 193, 207, 72, - 30, 236, 5, 30, 252, 140, 228, 193, 62, 154, 251, 89, 167, 237, - 151, 5, 15, 246, 25, 212, 254, 89, 39, 191, 159, 124, 217, 34, - 182, 221, 199, 121, 240, 179, 142, 57, 165, 71, 131, 164, 25, 197, - 247, 145, 1, 197, 75, 238, 55, 247, 201, 92, 156, 18, 153, 250, - 186, 1, 198, 132, 105, 134, 120, 81, 10, 255, 99, 82, 1, 127, - 156, 153, 146, 88, 83, 41, 184, 191, 42, 114, 174, 68, 199, 165, - 235, 179, 132, 49, 182, 22, 123, 91, 254, 118, 20, 111, 150, 24, - 123, 171, 207, 188, 122, 84, 139, 214, 57, 39, 65, 173, 151, 200, - 139, 171, 66, 209, 78, 180, 162, 36, 17, 139, 154, 113, 226, 215, - 110, 250, 137, 240, 242, 51, 182, 237, 99, 106, 149, 4, 237, 68, - 91, 21, 36, 9, 1, 28, 111, 25, 82, 146, 248, 109, 85, 191, - 18, 8, 107, 147, 244, 237, 201, 170, 184, 188, 33, 81, 24, 87, - 176, 110, 31, 172, 178, 207, 74, 214, 237, 131, 85, 246, 89, 185, - 202, 250, 96, 149, 125, 86, 174, 178, 62, 88, 101, 159, 117, 68, - 42, 71, 31, 172, 178, 207, 58, 34, 149, 163, 15, 86, 217, 103, - 157, 83, 167, 97, 149, 245, 241, 85, 246, 202, 235, 184, 202, 250, - 96, 149, 189, 146, 118, 149, 175, 178, 87, 228, 42, 235, 131, 85, - 246, 138, 92, 101, 125, 176, 202, 94, 145, 171, 172, 207, 161, 246, - 231, 238, 211, 42, 235, 227, 171, 236, 115, 114, 149, 245, 193, 42, - 251, 156, 92, 101, 125, 176, 202, 62, 39, 87, 89, 63, 205, 253, - 170, 211, 246, 101, 177, 202, 250, 13, 106, 255, 170, 147, 223, 71, - 190, 196, 87, 89, 63, 95, 101, 159, 231, 171, 236, 223, 235, 49, - 87, 96, 210, 187, 207, 33, 87, 252, 29, 247, 63, 226, 74, 228, - 237, 254, 255, 109, 137, 245, 195, 18, 251, 188, 228, 219, 126, 88, - 98, 159, 151, 75, 172, 31, 150, 216, 231, 229, 18, 235, 135, 37, - 246, 121, 185, 196, 250, 97, 137, 125, 94, 46, 177, 126, 88, 98, - 159, 231, 75, 236, 91, 92, 56, 232, 183, 219, 104, 238, 183, 28, - 243, 127, 119, 172, 108, 160, 158, 176, 3, 87, 253, 113, 76, 92, - 31, 7, 99, 252, 72, 20, 163, 117, 54, 8, 217, 213, 149, 149, - 235, 124, 77, 214, 188, 176, 226, 143, 226, 199, 175, 250, 91, 245, - 168, 225, 135, 252, 179, 70, 49, 11, 209, 132, 246, 24, 222, 11, - 197, 149, 33, 19, 178, 213, 218, 150, 90, 88, 175, 204, 173, 112, - 230, 40, 99, 206, 185, 183, 6, 24, 220, 240, 217, 49, 164, 247, - 250, 13, 237, 247, 244, 117, 202, 224, 43, 189, 24, 45, 110, 185, - 235, 139, 203, 43, 114, 50, 193, 255, 255, 91, 78, 251, 1, 112, - 197, 247, 163, 255, 255, 183, 29, 251, 48, 120, 121, 250, 133, 187, - 255, 183, 29, 81, 5, 165, 95, 184, 251, 127, 219, 113, 15, 145, - 227, 226, 9, 131, 218, 191, 227, 216, 67, 133, 65, 12, 14, 242, - 19, 173, 47, 68, 61, 102, 224, 109, 3, 233, 5, 147, 95, 216, - 127, 128, 60, 44, 218, 49, 169, 253, 187, 142, 61, 80, 24, 214, - 167, 14, 113, 4, 37, 44, 27, 0, 101, 224, 55, 72, 210, 166, - 121, 15, 126, 215, 17, 101, 124, 250, 69, 180, 192, 239, 58, 80, - 45, 138, 111, 4, 6, 205, 125, 193, 49, 127, 207, 57, 41, 190, - 58, 223, 248, 190, 144, 50, 16, 223, 248, 190, 224, 8, 132, 203, - 126, 232, 232, 23, 156, 195, 227, 146, 180, 56, 41, 240, 32, 250, - 65, 180, 255, 61, 39, 119, 66, 146, 237, 156, 236, 63, 14, 123, - 116, 63, 127, 239, 23, 95, 199, 61, 186, 31, 164, 241, 47, 166, - 93, 229, 210, 248, 23, 229, 30, 221, 15, 3, 255, 162, 220, 163, - 251, 65, 26, 255, 162, 220, 163, 251, 29, 106, 255, 225, 125, 218, - 163, 251, 249, 30, 253, 135, 114, 143, 238, 135, 61, 250, 15, 229, - 30, 221, 15, 123, 244, 31, 242, 61, 250, 71, 45, 98, 218, 148, - 230, 190, 234, 180, 253, 63, 142, 225, 254, 103, 147, 205, 40, 171, - 174, 242, 157, 243, 93, 193, 83, 26, 110, 58, 109, 202, 127, 163, - 102, 73, 88, 25, 49, 198, 219, 171, 215, 125, 15, 83, 172, 229, - 40, 4, 170, 26, 226, 123, 203, 204, 108, 21, 149, 54, 61, 125, - 93, 96, 211, 33, 12, 141, 142, 88, 28, 69, 53, 137, 118, 153, - 136, 189, 13, 12, 190, 0, 231, 198, 59, 120, 73, 131, 166, 135, - 124, 193, 164, 148, 201, 92, 110, 233, 66, 16, 102, 192, 236, 241, - 9, 81, 84, 30, 93, 24, 216, 191, 180, 217, 233, 105, 209, 196, - 200, 40, 110, 23, 245, 56, 194, 186, 12, 45, 183, 205, 70, 245, - 157, 149, 104, 100, 116, 84, 248, 46, 1, 25, 4, 22, 199, 13, - 29, 14, 79, 97, 230, 73, 192, 61, 132, 138, 162, 6, 181, 191, - 234, 228, 15, 145, 223, 52, 137, 109, 83, 171, 141, 230, 190, 238, - 152, 127, 225, 88, 238, 47, 99, 36, 141, 158, 216, 159, 193, 215, - 75, 125, 133, 0, 161, 40, 224, 68, 212, 87, 68, 156, 215, 117, - 1, 42, 64, 152, 199, 170, 81, 99, 92, 66, 236, 84, 101, 60, - 119, 144, 172, 166, 56, 34, 162, 44, 2, 11, 214, 214, 180, 167, - 245, 38, 67, 13, 100, 143, 141, 84, 253, 48, 106, 72, 164, 16, - 172, 83, 195, 63, 85, 134, 7, 146, 186, 95, 73, 90, 163, 30, - 71, 75, 132, 205, 149, 214, 75, 197, 231, 217, 83, 162, 64, 58, - 196, 196, 188, 179, 200, 158, 42, 148, 189, 184, 84, 246, 158, 43, - 20, 161, 51, 112, 105, 75, 187, 133, 189, 160, 245, 136, 96, 97, - 245, 17, 241, 204, 104, 137, 223, 41, 22, 43, 5, 4, 234, 175, - 59, 4, 43, 123, 81, 68, 160, 254, 134, 99, 23, 96, 95, 162, - 2, 115, 250, 27, 142, 64, 132, 166, 2, 115, 250, 27, 78, 247, - 64, 122, 193, 224, 23, 6, 31, 72, 47, 88, 252, 2, 59, 170, - 218, 52, 168, 253, 231, 142, 125, 76, 221, 192, 55, 179, 63, 215, - 219, 52, 28, 126, 161, 187, 63, 189, 0, 143, 208, 7, 211, 11, - 22, 191, 112, 180, 0, 107, 153, 242, 94, 254, 165, 99, 34, 46, - 42, 133, 62, 254, 165, 220, 113, 40, 24, 215, 254, 210, 233, 28, - 144, 164, 193, 201, 193, 33, 73, 90, 156, 60, 116, 24, 75, 68, - 81, 222, 185, 111, 57, 230, 176, 251, 65, 67, 171, 116, 114, 7, - 110, 42, 242, 47, 181, 189, 225, 53, 128, 139, 33, 56, 5, 36, - 176, 104, 211, 231, 11, 62, 38, 252, 40, 64, 136, 82, 0, 138, - 244, 18, 225, 186, 73, 61, 55, 115, 34, 73, 69, 20, 141, 194, - 197, 43, 130, 86, 69, 13, 42, 57, 22, 62, 85, 223, 74, 135, - 198, 39, 234, 91, 142, 136, 255, 160, 48, 77, 223, 114, 68, 38, - 36, 133, 73, 250, 150, 115, 226, 164, 152, 36, 147, 218, 223, 118, - 204, 81, 241, 35, 223, 150, 191, 157, 182, 100, 58, 156, 84, 45, - 65, 188, 184, 67, 143, 75, 210, 226, 228, 240, 136, 104, 201, 162, - 246, 223, 56, 2, 109, 153, 130, 115, 231, 111, 210, 150, 44, 135, - 147, 34, 210, 143, 130, 115, 231, 111, 156, 254, 99, 146, 132, 103, - 79, 14, 139, 150, 108, 106, 127, 199, 49, 229, 143, 54, 146, 178, - 37, 219, 225, 164, 234, 147, 109, 112, 82, 36, 184, 81, 112, 141, - 124, 39, 101, 1, 135, 218, 255, 209, 49, 229, 208, 29, 27, 72, - 217, 146, 3, 191, 170, 62, 57, 6, 39, 251, 37, 191, 56, 22, - 39, 5, 142, 46, 229, 7, 212, 119, 29, 1, 157, 76, 193, 156, - 255, 221, 180, 165, 156, 195, 73, 213, 167, 156, 193, 73, 122, 84, - 146, 22, 39, 143, 159, 32, 127, 100, 16, 211, 30, 160, 185, 239, - 57, 109, 255, 37, 103, 184, 207, 178, 185, 176, 226, 213, 19, 129, - 127, 122, 119, 37, 211, 17, 204, 43, 142, 182, 100, 8, 22, 97, - 151, 131, 154, 223, 2, 88, 204, 182, 61, 13, 207, 165, 68, 166, - 158, 121, 61, 17, 103, 179, 5, 220, 161, 227, 184, 11, 15, 24, - 212, 254, 158, 147, 223, 79, 222, 211, 79, 108, 123, 128, 175, 192, - 159, 203, 153, 71, 221, 239, 244, 177, 25, 182, 16, 73, 223, 88, - 138, 206, 235, 177, 122, 224, 99, 184, 66, 182, 69, 230, 101, 1, - 217, 248, 88, 9, 250, 236, 146, 122, 20, 98, 124, 163, 167, 187, - 123, 83, 208, 91, 149, 94, 147, 173, 246, 142, 56, 143, 162, 90, - 71, 90, 62, 164, 17, 177, 249, 75, 115, 80, 42, 170, 42, 74, - 50, 249, 113, 82, 108, 201, 6, 76, 243, 195, 5, 80, 90, 176, - 21, 212, 188, 152, 168, 58, 241, 162, 214, 23, 0, 46, 22, 89, - 226, 237, 112, 5, 0, 83, 187, 112, 8, 42, 33, 225, 182, 105, - 102, 124, 90, 5, 152, 85, 20, 169, 236, 130, 23, 8, 91, 240, - 33, 35, 46, 138, 54, 153, 215, 64, 136, 222, 52, 20, 56, 29, - 55, 180, 126, 167, 166, 222, 37, 82, 21, 222, 245, 46, 245, 15, - 255, 223, 187, 222, 197, 127, 244, 196, 143, 229, 10, 252, 83, 245, - 25, 91, 99, 108, 125, 35, 32, 92, 93, 82, 96, 179, 10, 196, - 135, 213, 196, 247, 196, 172, 141, 164, 238, 133, 140, 1, 96, 15, - 203, 254, 167, 159, 50, 140, 61, 229, 21, 131, 81, 198, 158, 98, - 103, 139, 236, 116, 145, 77, 21, 217, 105, 246, 78, 184, 143, 111, - 172, 219, 27, 81, 109, 247, 192, 74, 226, 193, 114, 203, 131, 69, - 118, 150, 63, 203, 31, 172, 121, 101, 191, 198, 70, 228, 232, 71, - 241, 145, 74, 177, 186, 235, 145, 135, 228, 35, 88, 101, 14, 167, - 73, 220, 239, 23, 215, 118, 221, 63, 41, 239, 71, 104, 210, 181, - 40, 18, 55, 175, 23, 55, 118, 221, 124, 70, 221, 140, 168, 158, - 35, 147, 163, 178, 198, 4, 159, 166, 113, 54, 163, 166, 77, 132, - 125, 40, 12, 113, 21, 201, 43, 98, 136, 26, 137, 95, 91, 19, - 85, 240, 68, 136, 4, 64, 213, 49, 157, 233, 177, 130, 152, 192, - 180, 13, 26, 163, 90, 102, 153, 244, 81, 11, 136, 53, 200, 106, - 136, 214, 100, 144, 110, 130, 112, 207, 140, 113, 37, 24, 163, 143, - 252, 176, 82, 139, 68, 224, 135, 138, 208, 197, 116, 51, 148, 96, - 74, 44, 203, 228, 16, 198, 216, 8, 226, 20, 20, 21, 2, 120, - 43, 155, 108, 164, 30, 37, 73, 80, 174, 237, 232, 165, 204, 84, - 116, 79, 42, 249, 104, 64, 213, 40, 246, 1, 80, 41, 230, 67, - 138, 40, 25, 53, 93, 219, 27, 92, 117, 4, 254, 130, 89, 83, - 142, 160, 66, 42, 225, 23, 212, 44, 130, 198, 175, 162, 92, 1, - 152, 40, 196, 217, 42, 241, 207, 240, 132, 236, 139, 98, 226, 84, - 23, 83, 169, 122, 252, 93, 114, 66, 49, 140, 53, 145, 113, 172, - 56, 59, 218, 252, 233, 181, 37, 160, 4, 90, 61, 6, 13, 149, - 191, 24, 49, 153, 213, 240, 1, 66, 75, 0, 210, 179, 173, 40, - 1, 163, 66, 84, 190, 25, 68, 205, 68, 78, 174, 44, 18, 136, - 99, 171, 22, 196, 188, 122, 235, 94, 16, 42, 100, 91, 9, 134, - 172, 227, 248, 234, 159, 33, 91, 1, 35, 169, 68, 117, 191, 136, - 145, 218, 16, 151, 162, 144, 130, 247, 24, 117, 150, 85, 135, 19, - 92, 222, 50, 206, 11, 51, 109, 0, 158, 86, 112, 85, 208, 72, - 132, 224, 42, 238, 69, 94, 193, 30, 9, 118, 209, 198, 227, 251, - 5, 140, 80, 203, 240, 66, 58, 129, 82, 7, 194, 120, 60, 222, - 74, 217, 95, 15, 66, 96, 35, 33, 117, 181, 206, 12, 102, 2, - 39, 27, 94, 140, 170, 69, 11, 210, 180, 140, 219, 66, 132, 92, - 120, 6, 6, 249, 56, 134, 23, 97, 152, 148, 183, 215, 136, 245, - 97, 38, 209, 150, 4, 16, 109, 185, 147, 183, 172, 20, 187, 45, - 223, 83, 101, 97, 176, 9, 174, 52, 249, 97, 213, 219, 99, 17, - 177, 2, 148, 27, 46, 8, 13, 22, 54, 73, 168, 43, 234, 225, - 14, 197, 71, 166, 1, 135, 171, 149, 153, 41, 102, 146, 66, 114, - 166, 28, 205, 27, 74, 15, 204, 0, 107, 177, 73, 72, 16, 17, - 66, 206, 27, 21, 88, 118, 65, 12, 26, 101, 20, 166, 241, 163, - 170, 18, 10, 27, 103, 179, 41, 74, 21, 22, 219, 129, 164, 15, - 33, 247, 106, 203, 72, 72, 168, 245, 56, 42, 123, 101, 140, 150, - 169, 250, 73, 176, 30, 130, 29, 12, 160, 166, 193, 76, 200, 26, - 176, 158, 229, 44, 73, 203, 1, 98, 167, 52, 188, 176, 90, 228, - 66, 49, 228, 45, 96, 68, 116, 180, 166, 189, 165, 130, 241, 56, - 12, 107, 161, 84, 162, 184, 170, 225, 116, 66, 234, 137, 16, 142, - 7, 64, 238, 255, 185, 156, 169, 200, 28, 39, 133, 220, 63, 0, - 114, 255, 207, 229, 6, 15, 75, 210, 226, 228, 17, 6, 6, 150, - 1, 174, 69, 254, 171, 156, 249, 189, 28, 134, 63, 15, 128, 34, - 244, 175, 114, 132, 146, 15, 180, 147, 28, 167, 185, 132, 243, 107, - 57, 187, 232, 254, 109, 78, 47, 58, 32, 96, 209, 189, 184, 33, - 217, 245, 118, 50, 154, 204, 249, 22, 229, 135, 136, 26, 35, 32, - 162, 107, 89, 21, 194, 118, 170, 89, 66, 69, 53, 48, 220, 212, - 4, 132, 27, 4, 233, 121, 184, 75, 114, 33, 17, 51, 172, 227, - 40, 106, 236, 217, 3, 137, 178, 195, 119, 36, 17, 207, 212, 200, - 212, 15, 96, 81, 165, 210, 132, 26, 244, 25, 166, 5, 43, 10, - 127, 9, 28, 253, 112, 4, 158, 129, 35, 240, 97, 56, 47, 73, - 186, 67, 79, 227, 70, 92, 243, 75, 50, 135, 158, 127, 205, 145, - 51, 163, 140, 77, 76, 192, 115, 50, 131, 178, 4, 99, 27, 121, - 120, 84, 9, 14, 19, 19, 208, 164, 186, 129, 31, 192, 35, 163, - 154, 100, 49, 49, 193, 38, 211, 176, 71, 185, 138, 247, 24, 104, - 230, 229, 136, 36, 160, 79, 228, 89, 232, 165, 58, 128, 91, 103, - 41, 243, 240, 5, 118, 246, 60, 129, 53, 211, 250, 14, 108, 114, - 87, 227, 83, 217, 198, 247, 42, 47, 194, 100, 218, 231, 148, 104, - 122, 207, 26, 36, 32, 127, 236, 106, 126, 114, 79, 169, 15, 238, - 21, 105, 164, 233, 214, 128, 153, 249, 192, 28, 105, 17, 82, 117, - 192, 70, 105, 209, 57, 97, 212, 152, 95, 227, 66, 172, 8, 161, - 65, 86, 170, 121, 73, 67, 178, 228, 174, 143, 207, 191, 188, 98, - 141, 150, 83, 58, 43, 217, 165, 91, 253, 136, 130, 135, 84, 91, - 60, 145, 139, 6, 133, 58, 185, 107, 65, 134, 141, 116, 196, 109, - 5, 149, 168, 22, 133, 163, 34, 142, 127, 64, 24, 33, 126, 45, - 39, 12, 6, 3, 194, 8, 241, 107, 57, 81, 150, 106, 64, 24, - 33, 126, 45, 55, 112, 32, 189, 96, 241, 11, 238, 161, 244, 66, - 158, 95, 56, 124, 138, 244, 145, 188, 184, 96, 242, 43, 15, 140, - 145, 223, 51, 197, 146, 55, 168, 253, 239, 248, 146, 255, 95, 77, - 153, 115, 186, 1, 53, 40, 80, 93, 111, 108, 196, 190, 143, 85, - 3, 154, 177, 146, 182, 166, 5, 224, 119, 45, 8, 185, 118, 0, - 127, 87, 162, 90, 115, 43, 44, 18, 198, 15, 108, 254, 67, 42, - 190, 22, 181, 136, 93, 47, 73, 154, 91, 126, 21, 15, 103, 47, - 209, 26, 26, 45, 194, 163, 216, 142, 42, 112, 225, 197, 42, 109, - 44, 8, 17, 33, 23, 15, 12, 156, 123, 200, 214, 18, 137, 96, - 149, 157, 18, 211, 98, 162, 121, 155, 200, 127, 216, 164, 114, 131, - 240, 38, 159, 243, 227, 104, 28, 141, 251, 92, 254, 80, 49, 235, - 59, 81, 19, 15, 139, 109, 1, 100, 224, 85, 171, 132, 77, 66, - 250, 25, 223, 190, 132, 55, 164, 26, 36, 245, 154, 183, 19, 200, - 138, 160, 77, 76, 163, 149, 243, 110, 216, 48, 169, 233, 183, 51, - 28, 126, 65, 251, 118, 6, 76, 187, 246, 237, 12, 139, 95, 208, - 190, 157, 145, 231, 23, 180, 111, 103, 240, 111, 247, 239, 248, 183, - 251, 76, 151, 248, 118, 38, 181, 255, 46, 103, 143, 186, 31, 237, - 82, 80, 246, 203, 160, 119, 242, 227, 109, 62, 92, 139, 178, 134, - 63, 5, 104, 171, 113, 172, 4, 190, 246, 0, 222, 107, 135, 43, - 165, 91, 66, 162, 6, 169, 37, 72, 93, 64, 112, 116, 67, 173, - 78, 220, 85, 83, 174, 23, 186, 59, 60, 32, 195, 174, 101, 65, - 22, 201, 240, 250, 1, 79, 8, 155, 1, 12, 93, 113, 16, 130, - 169, 123, 247, 123, 163, 16, 226, 164, 253, 74, 19, 162, 78, 249, - 109, 9, 66, 151, 178, 48, 66, 158, 34, 104, 132, 106, 121, 10, - 15, 99, 117, 63, 186, 246, 26, 194, 222, 12, 133, 85, 149, 62, - 0, 47, 229, 29, 170, 249, 30, 151, 42, 86, 171, 62, 246, 123, - 85, 117, 8, 26, 216, 244, 253, 58, 63, 2, 189, 245, 216, 171, - 111, 64, 183, 213, 13, 192, 110, 216, 1, 34, 39, 107, 164, 220, - 108, 128, 244, 84, 137, 194, 16, 243, 8, 26, 209, 40, 90, 186, - 49, 7, 64, 174, 166, 18, 30, 140, 170, 109, 72, 238, 144, 246, - 216, 242, 14, 162, 47, 181, 14, 38, 74, 103, 44, 61, 82, 81, - 96, 72, 117, 6, 149, 121, 190, 8, 89, 59, 27, 233, 35, 34, - 177, 70, 71, 197, 57, 175, 126, 220, 242, 226, 77, 190, 78, 208, - 14, 62, 49, 49, 138, 202, 85, 2, 245, 72, 125, 208, 2, 132, - 216, 135, 194, 170, 156, 135, 162, 156, 67, 206, 15, 13, 129, 180, - 5, 76, 19, 50, 47, 105, 248, 113, 144, 108, 166, 85, 142, 85, - 115, 187, 119, 76, 80, 236, 0, 143, 149, 51, 70, 148, 38, 112, - 162, 153, 32, 78, 26, 37, 194, 174, 249, 219, 48, 39, 192, 185, - 34, 95, 55, 205, 245, 133, 130, 89, 88, 134, 69, 22, 141, 200, - 28, 44, 128, 13, 163, 172, 9, 112, 246, 206, 138, 225, 235, 140, - 187, 22, 69, 160, 29, 223, 230, 231, 178, 23, 151, 246, 104, 182, - 236, 197, 120, 250, 237, 117, 150, 149, 189, 231, 216, 5, 118, 230, - 252, 29, 155, 125, 78, 190, 117, 38, 20, 242, 57, 159, 137, 93, - 247, 220, 161, 141, 45, 213, 243, 87, 107, 73, 222, 169, 21, 212, - 109, 150, 107, 92, 151, 139, 80, 60, 16, 13, 92, 18, 11, 67, - 241, 9, 214, 62, 138, 215, 181, 234, 176, 156, 225, 37, 19, 68, - 49, 107, 196, 94, 0, 153, 35, 146, 69, 68, 83, 248, 86, 38, - 159, 215, 11, 180, 198, 184, 21, 149, 107, 94, 184, 137, 76, 47, - 87, 131, 200, 148, 69, 57, 16, 154, 225, 122, 69, 233, 213, 187, - 151, 46, 45, 54, 85, 218, 243, 155, 224, 109, 23, 216, 67, 248, - 85, 198, 216, 69, 157, 177, 213, 108, 129, 232, 54, 134, 208, 252, - 48, 108, 182, 32, 198, 42, 217, 59, 17, 183, 72, 38, 23, 194, - 70, 137, 141, 77, 220, 177, 101, 161, 75, 176, 49, 182, 30, 3, - 80, 165, 120, 160, 133, 177, 240, 71, 118, 129, 189, 65, 125, 21, - 17, 165, 192, 170, 45, 195, 79, 180, 227, 200, 180, 225, 156, 72, - 143, 35, 211, 225, 23, 132, 63, 3, 46, 24, 252, 194, 224, 241, - 244, 130, 197, 47, 12, 143, 128, 63, 131, 95, 176, 168, 253, 247, - 57, 123, 76, 221, 96, 217, 112, 33, 109, 211, 114, 248, 5, 173, - 77, 203, 224, 23, 6, 79, 164, 23, 160, 141, 145, 81, 213, 166, - 77, 237, 255, 156, 179, 167, 212, 13, 54, 94, 72, 219, 180, 29, - 126, 65, 107, 211, 54, 248, 133, 193, 241, 244, 130, 197, 47, 156, - 158, 36, 223, 52, 136, 105, 15, 210, 220, 139, 237, 109, 63, 209, - 110, 184, 127, 98, 104, 149, 252, 112, 87, 172, 161, 178, 181, 17, - 212, 89, 217, 111, 108, 251, 126, 216, 146, 79, 134, 90, 119, 35, - 105, 53, 82, 203, 66, 17, 51, 41, 238, 188, 58, 95, 117, 244, - 152, 36, 137, 42, 129, 167, 60, 95, 170, 62, 142, 122, 11, 209, - 173, 222, 169, 203, 92, 214, 121, 0, 9, 19, 208, 248, 57, 139, - 165, 177, 194, 226, 161, 12, 62, 8, 26, 168, 7, 13, 106, 191, - 216, 158, 63, 72, 110, 17, 219, 30, 228, 218, 219, 251, 218, 205, - 19, 238, 179, 108, 38, 100, 51, 42, 232, 69, 30, 65, 9, 42, - 252, 96, 9, 224, 34, 169, 127, 11, 206, 140, 150, 73, 0, 195, - 156, 60, 83, 136, 180, 134, 72, 32, 169, 112, 61, 91, 176, 4, - 52, 201, 65, 16, 86, 223, 215, 110, 42, 50, 199, 201, 206, 125, - 146, 52, 56, 185, 159, 73, 210, 226, 228, 177, 227, 160, 149, 14, - 114, 173, 244, 253, 237, 230, 39, 218, 81, 43, 29, 4, 173, 244, - 253, 237, 100, 144, 124, 200, 32, 57, 78, 243, 113, 189, 212, 110, - 23, 221, 31, 209, 149, 82, 136, 212, 204, 158, 124, 173, 206, 133, - 76, 205, 236, 180, 222, 24, 68, 25, 163, 45, 29, 142, 101, 105, - 42, 242, 90, 165, 167, 146, 180, 241, 151, 208, 138, 4, 92, 55, - 40, 100, 243, 151, 218, 5, 163, 14, 10, 217, 252, 165, 118, 33, - 223, 13, 10, 217, 252, 165, 118, 33, 223, 13, 10, 217, 252, 165, - 118, 33, 223, 13, 10, 217, 252, 165, 118, 33, 223, 13, 74, 217, - 252, 165, 246, 7, 198, 200, 162, 24, 183, 65, 237, 15, 182, 219, - 199, 221, 199, 90, 199, 13, 60, 0, 200, 220, 168, 155, 8, 17, - 107, 239, 241, 107, 253, 230, 114, 233, 7, 245, 126, 115, 185, 244, - 131, 237, 98, 129, 13, 10, 185, 244, 131, 237, 131, 71, 210, 11, - 22, 191, 80, 56, 70, 182, 69, 167, 76, 106, 127, 184, 221, 126, - 192, 93, 111, 237, 20, 72, 242, 120, 122, 175, 37, 62, 124, 148, - 242, 78, 35, 45, 92, 155, 229, 51, 129, 70, 14, 203, 50, 141, - 130, 215, 220, 136, 232, 141, 215, 58, 207, 183, 139, 15, 235, 157, - 231, 187, 216, 135, 245, 73, 231, 19, 246, 225, 118, 81, 9, 120, - 80, 236, 98, 31, 110, 63, 116, 152, 252, 31, 146, 149, 44, 106, - 127, 188, 221, 62, 228, 254, 134, 177, 139, 151, 68, 112, 217, 221, - 116, 94, 100, 206, 222, 161, 243, 208, 10, 2, 244, 248, 161, 164, - 53, 127, 39, 223, 23, 234, 94, 210, 208, 212, 208, 216, 175, 249, - 55, 161, 154, 250, 78, 195, 103, 35, 162, 80, 31, 98, 74, 72, - 21, 18, 214, 236, 5, 104, 114, 28, 229, 165, 81, 109, 134, 248, - 158, 252, 113, 125, 134, 248, 158, 252, 113, 125, 134, 248, 158, 252, - 241, 118, 81, 201, 120, 80, 236, 201, 31, 111, 63, 232, 146, 79, - 63, 72, 142, 32, 248, 252, 132, 87, 15, 38, 96, 161, 172, 74, - 196, 0, 100, 36, 74, 4, 58, 189, 87, 15, 92, 129, 84, 63, - 33, 145, 234, 39, 210, 64, 10, 188, 123, 236, 95, 26, 164, 27, - 52, 255, 139, 162, 21, 250, 32, 113, 47, 207, 207, 45, 92, 90, - 189, 56, 119, 117, 230, 45, 243, 139, 75, 171, 55, 174, 45, 95, - 159, 155, 157, 191, 60, 63, 119, 169, 175, 141, 118, 145, 188, 44, - 187, 222, 103, 112, 106, 105, 238, 201, 27, 243, 75, 115, 151, 250, - 76, 218, 75, 58, 23, 111, 172, 92, 191, 177, 178, 186, 120, 109, - 225, 237, 125, 22, 237, 33, 100, 254, 154, 162, 109, 218, 77, 58, - 230, 159, 120, 226, 198, 202, 204, 197, 133, 185, 62, 135, 82, 210, - 115, 227, 218, 226, 210, 165, 185, 165, 185, 75, 171, 11, 243, 203, - 43, 125, 57, 186, 143, 244, 95, 91, 188, 182, 58, 247, 196, 245, - 149, 183, 175, 94, 154, 187, 60, 115, 99, 97, 165, 175, 125, 250, - 25, 210, 147, 29, 46, 125, 160, 212, 138, 195, 15, 3, 17, 193, - 26, 67, 63, 149, 103, 214, 72, 207, 212, 193, 82, 58, 31, 165, - 204, 72, 151, 186, 215, 116, 242, 98, 157, 244, 84, 162, 45, 237, - 246, 139, 52, 115, 63, 88, 68, 174, 27, 239, 152, 17, 119, 172, - 71, 53, 47, 92, 47, 69, 241, 250, 196, 186, 31, 66, 39, 38, - 240, 39, 175, 30, 36, 240, 129, 180, 152, 198, 243, 218, 223, 159, - 54, 237, 43, 51, 215, 231, 31, 255, 77, 151, 228, 168, 221, 211, - 246, 118, 131, 252, 170, 77, 140, 46, 106, 245, 180, 209, 169, 95, - 176, 217, 108, 84, 223, 137, 131, 245, 141, 6, 155, 58, 61, 249, - 70, 17, 95, 200, 22, 22, 102, 9, 97, 11, 65, 197, 15, 33, - 45, 50, 172, 10, 45, 111, 166, 206, 165, 10, 249, 75, 145, 189, - 5, 17, 112, 216, 84, 233, 52, 27, 1, 195, 181, 248, 169, 48, - 122, 158, 128, 246, 44, 203, 80, 106, 85, 25, 193, 73, 82, 241, - 235, 176, 172, 16, 216, 210, 11, 43, 126, 138, 181, 41, 218, 40, - 17, 192, 214, 132, 210, 208, 101, 56, 18, 185, 206, 90, 151, 57, - 218, 242, 54, 230, 53, 8, 90, 209, 54, 26, 141, 250, 244, 196, - 196, 246, 246, 118, 201, 131, 142, 194, 148, 213, 240, 182, 100, 98, - 97, 126, 118, 238, 218, 242, 220, 248, 84, 233, 52, 33, 236, 70, - 8, 73, 172, 42, 193, 181, 188, 35, 171, 37, 114, 105, 183, 230, - 109, 131, 5, 114, 61, 22, 16, 95, 65, 40, 49, 98, 138, 44, - 137, 214, 26, 219, 160, 4, 85, 3, 46, 50, 150, 155, 141, 204, - 44, 201, 142, 137, 106, 235, 242, 134, 8, 82, 81, 11, 51, 203, - 108, 126, 185, 192, 46, 206, 44, 207, 47, 23, 9, 123, 235, 252, - 202, 213, 197, 27, 43, 236, 173, 51, 75, 75, 51, 215, 86, 230, - 231, 150, 217, 226, 18, 155, 93, 188, 118, 105, 158, 243, 254, 50, - 91, 188, 204, 102, 174, 189, 157, 189, 121, 254, 218, 165, 162, 76, - 232, 245, 111, 113, 61, 62, 129, 128, 69, 136, 222, 171, 106, 72, - 175, 242, 245, 42, 126, 92, 22, 117, 80, 56, 104, 235, 209, 77, - 63, 6, 213, 10, 16, 58, 18, 81, 175, 50, 172, 18, 6, 88, - 53, 194, 14, 189, 107, 68, 37, 66, 242, 196, 48, 169, 213, 215, - 54, 64, 58, 136, 105, 181, 81, 139, 182, 141, 241, 139, 121, 106, - 13, 182, 189, 141, 95, 204, 119, 226, 159, 120, 113, 95, 91, 1, - 46, 18, 252, 19, 47, 238, 111, 59, 3, 23, 197, 159, 120, 241, - 64, 219, 48, 92, 52, 240, 79, 188, 56, 36, 30, 63, 46, 255, - 52, 218, 169, 237, 182, 141, 24, 228, 143, 44, 98, 182, 183, 81, - 107, 216, 156, 118, 127, 199, 98, 51, 194, 16, 175, 89, 251, 212, - 184, 37, 150, 133, 192, 59, 25, 145, 223, 188, 40, 43, 41, 115, - 217, 172, 8, 21, 120, 70, 33, 244, 74, 174, 243, 12, 48, 104, - 86, 117, 108, 49, 69, 178, 167, 70, 180, 213, 159, 221, 63, 70, - 217, 5, 38, 183, 174, 119, 130, 74, 177, 220, 240, 26, 162, 158, - 203, 221, 60, 172, 237, 116, 248, 124, 235, 118, 116, 169, 41, 44, - 47, 141, 70, 141, 55, 136, 203, 225, 85, 90, 77, 183, 203, 189, - 27, 93, 9, 182, 252, 164, 225, 109, 213, 57, 183, 5, 177, 191, - 218, 8, 112, 172, 119, 213, 186, 214, 231, 162, 176, 113, 191, 74, - 119, 228, 110, 253, 206, 243, 132, 16, 98, 181, 183, 153, 212, 114, - 219, 143, 225, 223, 54, 255, 208, 226, 122, 142, 90, 195, 157, 226, - 186, 65, 173, 225, 227, 83, 248, 183, 69, 173, 225, 135, 206, 145, - 63, 55, 137, 233, 180, 81, 251, 116, 219, 219, 13, 247, 143, 77, - 200, 208, 15, 171, 65, 5, 160, 200, 196, 214, 161, 99, 223, 120, - 162, 14, 61, 114, 201, 200, 90, 214, 21, 224, 53, 164, 221, 88, - 96, 7, 137, 237, 2, 4, 244, 119, 55, 253, 164, 129, 121, 192, - 216, 134, 151, 72, 150, 2, 60, 18, 161, 140, 121, 92, 110, 168, - 55, 27, 163, 18, 198, 96, 108, 76, 122, 211, 198, 198, 116, 32, - 110, 213, 45, 201, 131, 149, 168, 198, 68, 205, 74, 225, 51, 63, - 207, 149, 94, 140, 165, 196, 192, 186, 36, 251, 36, 87, 90, 248, - 142, 41, 224, 51, 54, 162, 109, 54, 115, 125, 30, 2, 57, 56, - 191, 110, 120, 97, 181, 166, 196, 70, 137, 68, 8, 129, 232, 43, - 42, 169, 106, 108, 108, 203, 219, 25, 27, 99, 177, 95, 241, 131, - 155, 62, 32, 179, 102, 10, 1, 167, 94, 40, 66, 44, 135, 127, - 132, 211, 14, 37, 143, 17, 219, 225, 210, 185, 53, 101, 30, 117, - 167, 216, 108, 20, 222, 228, 18, 16, 26, 17, 68, 20, 51, 204, - 46, 100, 236, 105, 121, 196, 112, 48, 64, 144, 170, 227, 128, 172, - 108, 77, 153, 135, 37, 101, 82, 107, 234, 8, 35, 159, 50, 160, - 117, 131, 90, 15, 155, 189, 238, 143, 27, 2, 50, 73, 216, 105, - 229, 84, 72, 19, 191, 151, 40, 93, 185, 68, 216, 91, 1, 90, - 3, 128, 56, 16, 231, 98, 175, 233, 245, 98, 159, 165, 22, 234, - 134, 4, 22, 40, 171, 253, 83, 192, 200, 48, 127, 171, 190, 225, - 37, 1, 98, 12, 164, 181, 49, 85, 255, 13, 232, 163, 162, 76, - 106, 61, 220, 221, 67, 254, 23, 236, 191, 73, 173, 71, 204, 94, - 247, 127, 230, 250, 232, 174, 46, 75, 230, 82, 104, 23, 200, 182, - 190, 6, 222, 130, 247, 142, 141, 109, 53, 19, 206, 59, 101, 63, - 133, 177, 246, 146, 140, 79, 78, 112, 103, 17, 109, 222, 107, 94, - 80, 131, 114, 188, 17, 171, 70, 44, 17, 53, 175, 132, 99, 56, - 100, 126, 28, 243, 141, 177, 41, 10, 195, 62, 51, 127, 237, 45, - 51, 11, 243, 151, 86, 103, 150, 174, 220, 120, 98, 238, 218, 202, - 51, 163, 106, 120, 252, 19, 60, 162, 134, 7, 3, 234, 238, 33, - 223, 195, 225, 89, 212, 186, 104, 82, 247, 175, 247, 28, 158, 182, - 217, 190, 234, 8, 117, 124, 110, 88, 106, 73, 61, 226, 135, 120, - 81, 0, 253, 84, 106, 77, 153, 209, 64, 116, 247, 177, 24, 117, - 166, 162, 32, 74, 38, 162, 30, 58, 206, 156, 116, 211, 6, 13, - 60, 245, 224, 42, 172, 71, 172, 229, 151, 206, 137, 135, 32, 158, - 9, 32, 99, 105, 32, 133, 195, 137, 40, 183, 85, 241, 211, 185, - 177, 12, 62, 254, 110, 73, 153, 212, 186, 216, 215, 79, 254, 59, - 156, 27, 155, 90, 87, 204, 126, 247, 191, 221, 115, 110, 96, 127, - 120, 141, 83, 35, 119, 33, 225, 234, 38, 45, 126, 113, 245, 20, - 95, 109, 186, 101, 84, 89, 69, 177, 187, 182, 193, 59, 216, 37, - 41, 147, 90, 87, 122, 251, 200, 207, 96, 231, 29, 106, 45, 152, - 125, 238, 199, 246, 238, 252, 214, 86, 179, 193, 197, 166, 87, 237, - 187, 92, 81, 62, 31, 107, 197, 207, 126, 51, 128, 239, 240, 161, - 202, 39, 129, 184, 110, 174, 181, 166, 118, 17, 129, 247, 132, 219, - 101, 21, 141, 131, 224, 127, 80, 35, 112, 12, 222, 203, 78, 73, - 153, 212, 90, 232, 233, 37, 63, 110, 194, 8, 114, 212, 90, 50, - 247, 185, 239, 53, 213, 8, 196, 230, 62, 34, 45, 228, 163, 26, - 110, 107, 200, 154, 33, 224, 195, 248, 85, 86, 11, 192, 194, 124, - 187, 145, 201, 28, 64, 222, 71, 89, 245, 89, 179, 70, 40, 12, - 39, 222, 12, 72, 23, 94, 184, 195, 188, 184, 28, 52, 98, 47, - 222, 97, 8, 67, 83, 100, 177, 151, 53, 108, 11, 116, 26, 172, - 251, 19, 43, 101, 158, 111, 252, 170, 92, 28, 155, 81, 240, 75, - 53, 81, 117, 130, 191, 101, 56, 17, 79, 131, 232, 28, 235, 179, - 151, 136, 239, 36, 230, 40, 103, 240, 89, 233, 147, 148, 73, 173, - 165, 129, 65, 242, 223, 224, 140, 181, 83, 235, 109, 230, 144, 251, - 29, 35, 59, 99, 26, 198, 6, 6, 197, 39, 162, 138, 37, 122, - 38, 228, 78, 47, 96, 240, 214, 36, 188, 237, 109, 102, 80, 32, - 1, 193, 24, 197, 184, 132, 2, 14, 173, 201, 234, 47, 41, 155, - 240, 13, 77, 123, 29, 222, 144, 26, 88, 49, 74, 31, 85, 109, - 104, 84, 199, 10, 243, 182, 97, 151, 95, 131, 224, 101, 178, 171, - 21, 44, 159, 141, 102, 6, 156, 145, 118, 131, 207, 193, 128, 164, - 76, 106, 189, 109, 255, 129, 114, 14, 241, 27, 201, 111, 159, 34, - 211, 235, 81, 169, 178, 17, 71, 91, 65, 115, 11, 181, 141, 102, - 37, 152, 192, 253, 162, 90, 70, 117, 120, 226, 230, 228, 68, 195, - 79, 26, 171, 178, 170, 136, 208, 159, 251, 248, 189, 37, 121, 111, - 233, 230, 164, 123, 184, 85, 139, 70, 96, 85, 188, 223, 125, 53, - 133, 220, 61, 115, 151, 157, 169, 68, 91, 91, 81, 136, 15, 21, - 254, 222, 32, 116, 197, 79, 26, 79, 136, 206, 93, 242, 27, 94, - 80, 163, 7, 136, 205, 101, 219, 33, 131, 25, 35, 29, 23, 173, - 175, 204, 88, 75, 112, 129, 14, 145, 118, 81, 155, 124, 200, 228, - 191, 45, 73, 146, 30, 32, 237, 48, 204, 160, 58, 100, 193, 47, - 57, 78, 206, 87, 233, 65, 146, 143, 253, 181, 213, 13, 47, 217, - 24, 234, 194, 103, 98, 127, 237, 170, 151, 108, 208, 105, 66, 112, - 157, 175, 198, 254, 218, 144, 205, 140, 145, 206, 169, 67, 165, 214, - 137, 41, 161, 33, 110, 201, 95, 91, 234, 72, 228, 159, 244, 34, - 233, 106, 104, 29, 31, 114, 224, 233, 7, 119, 63, 173, 15, 111, - 41, 243, 76, 225, 3, 38, 233, 210, 127, 166, 84, 31, 183, 24, - 242, 52, 201, 203, 56, 2, 24, 243, 109, 95, 34, 13, 132, 75, - 234, 126, 58, 75, 186, 203, 205, 245, 85, 21, 124, 4, 83, 179, - 103, 3, 23, 155, 235, 179, 242, 174, 165, 174, 178, 70, 209, 83, - 164, 159, 203, 25, 126, 220, 8, 252, 100, 53, 169, 108, 248, 91, - 30, 76, 86, 199, 82, 95, 250, 195, 50, 92, 167, 15, 19, 146, - 94, 19, 147, 114, 96, 151, 5, 99, 25, 56, 107, 73, 187, 181, - 176, 140, 83, 33, 7, 193, 167, 34, 246, 235, 145, 156, 10, 254, - 55, 61, 68, 58, 184, 2, 191, 10, 115, 132, 223, 63, 207, 47, - 92, 227, 243, 68, 137, 93, 11, 66, 31, 134, 232, 44, 193, 223, - 133, 255, 222, 32, 93, 250, 200, 232, 53, 210, 29, 36, 73, 211, - 95, 109, 196, 94, 101, 211, 143, 161, 249, 206, 169, 225, 221, 19, - 50, 207, 111, 91, 193, 187, 212, 243, 87, 219, 150, 186, 2, 237, - 7, 58, 67, 242, 91, 81, 24, 197, 94, 80, 19, 31, 231, 216, - 238, 166, 158, 16, 119, 232, 205, 168, 199, 46, 230, 73, 14, 205, - 167, 133, 105, 178, 111, 207, 183, 210, 163, 164, 75, 125, 66, 206, - 224, 188, 211, 214, 82, 167, 186, 54, 95, 45, 204, 146, 254, 93, - 175, 209, 87, 139, 145, 93, 45, 131, 196, 129, 93, 71, 204, 34, - 18, 23, 39, 223, 49, 113, 119, 139, 248, 60, 94, 169, 151, 31, - 255, 55, 5, 210, 78, 157, 158, 182, 23, 13, 131, 252, 122, 106, - 220, 249, 92, 214, 184, 51, 117, 26, 182, 196, 133, 27, 179, 243, - 108, 6, 128, 255, 64, 169, 253, 255, 156, 141, 231, 135, 70, 158, - 127, 64, 35, 207, 193, 212, 200, 115, 18, 254, 52, 168, 53, 208, - 54, 10, 127, 154, 212, 26, 108, 187, 160, 12, 58, 151, 165, 233, - 135, 255, 121, 154, 152, 118, 27, 181, 15, 182, 157, 53, 220, 227, - 108, 126, 87, 234, 135, 199, 248, 38, 172, 170, 108, 161, 30, 105, - 115, 197, 239, 96, 222, 37, 191, 108, 18, 27, 82, 90, 173, 130, - 249, 168, 251, 243, 38, 155, 69, 100, 104, 136, 249, 134, 108, 99, - 21, 86, 158, 105, 6, 161, 100, 249, 71, 92, 130, 181, 113, 233, - 98, 233, 201, 166, 31, 239, 232, 251, 59, 97, 75, 215, 103, 49, - 224, 111, 203, 107, 76, 19, 86, 16, 235, 49, 153, 120, 254, 250, - 210, 226, 227, 115, 179, 43, 47, 76, 196, 254, 90, 50, 241, 252, - 210, 220, 229, 213, 171, 51, 203, 87, 95, 128, 195, 59, 153, 120, - 254, 198, 210, 194, 234, 220, 242, 236, 204, 245, 185, 75, 171, 43, - 115, 203, 43, 171, 243, 151, 94, 40, 148, 136, 8, 45, 220, 227, - 87, 136, 115, 198, 19, 145, 249, 73, 197, 171, 11, 95, 32, 1, - 38, 78, 166, 39, 38, 52, 203, 110, 125, 115, 125, 34, 244, 27, - 19, 205, 184, 54, 113, 236, 186, 215, 216, 152, 131, 39, 68, 26, - 103, 45, 137, 212, 67, 94, 80, 47, 85, 253, 155, 19, 147, 83, - 224, 191, 94, 212, 213, 42, 46, 169, 216, 224, 128, 178, 10, 102, - 94, 82, 6, 181, 10, 29, 221, 146, 178, 168, 85, 232, 235, 151, - 84, 158, 90, 5, 122, 129, 244, 146, 60, 80, 63, 149, 231, 243, - 62, 240, 8, 97, 240, 17, 12, 106, 157, 48, 247, 185, 3, 233, - 230, 33, 230, 75, 189, 202, 112, 248, 45, 242, 85, 92, 249, 61, - 209, 209, 39, 41, 139, 90, 39, 6, 6, 73, 0, 109, 153, 212, - 26, 53, 247, 185, 79, 179, 25, 214, 12, 131, 119, 55, 53, 23, - 137, 48, 196, 192, 231, 132, 61, 32, 251, 42, 182, 36, 63, 57, - 255, 150, 248, 117, 75, 114, 102, 69, 37, 53, 47, 168, 37, 170, - 83, 92, 95, 25, 85, 157, 226, 163, 24, 85, 157, 226, 74, 234, - 232, 192, 32, 148, 218, 4, 141, 117, 220, 60, 224, 198, 236, 170, - 127, 203, 171, 250, 149, 96, 203, 171, 41, 56, 111, 46, 177, 72, - 75, 159, 44, 115, 163, 164, 149, 18, 97, 51, 194, 236, 147, 94, - 148, 225, 227, 27, 8, 67, 168, 161, 57, 49, 41, 2, 41, 84, - 39, 236, 142, 229, 240, 30, 200, 174, 242, 21, 54, 222, 33, 63, - 142, 197, 123, 55, 184, 159, 60, 5, 93, 181, 169, 117, 218, 60, - 228, 94, 99, 51, 169, 111, 88, 5, 193, 203, 252, 162, 176, 17, - 71, 53, 81, 167, 87, 11, 122, 205, 44, 20, 190, 33, 139, 26, - 153, 170, 27, 118, 142, 183, 222, 41, 41, 131, 90, 167, 187, 246, - 75, 202, 162, 214, 233, 131, 46, 57, 1, 221, 112, 168, 117, 198, - 100, 238, 16, 124, 11, 189, 77, 136, 33, 82, 13, 58, 57, 126, - 95, 143, 164, 12, 106, 157, 233, 61, 36, 41, 139, 90, 103, 30, - 60, 66, 134, 177, 6, 252, 195, 109, 75, 134, 123, 232, 182, 251, - 132, 216, 30, 192, 174, 146, 31, 36, 39, 137, 13, 208, 204, 214, - 57, 147, 186, 7, 17, 94, 92, 122, 58, 97, 152, 16, 223, 137, - 221, 48, 96, 37, 156, 19, 211, 11, 56, 205, 214, 57, 177, 18, - 12, 88, 9, 231, 250, 250, 201, 42, 180, 104, 80, 235, 130, 121, - 216, 93, 98, 111, 205, 206, 90, 160, 226, 152, 139, 170, 176, 84, - 90, 214, 175, 164, 5, 53, 115, 9, 137, 61, 113, 99, 121, 37, - 99, 53, 82, 93, 49, 114, 252, 13, 61, 146, 226, 239, 235, 61, - 32, 41, 139, 90, 23, 220, 67, 100, 7, 186, 98, 82, 107, 198, - 60, 234, 214, 16, 175, 152, 11, 36, 76, 72, 75, 105, 20, 251, - 174, 0, 3, 217, 225, 34, 130, 95, 238, 148, 8, 187, 216, 92, - 79, 132, 91, 178, 154, 70, 154, 38, 13, 169, 135, 243, 81, 84, - 69, 185, 59, 209, 17, 174, 39, 207, 168, 78, 242, 73, 153, 233, - 61, 44, 41, 139, 90, 51, 71, 24, 249, 191, 77, 232, 165, 69, - 173, 121, 243, 136, 251, 101, 115, 151, 235, 23, 4, 81, 185, 98, - 30, 95, 94, 188, 38, 220, 183, 146, 91, 83, 161, 83, 26, 33, - 21, 192, 246, 90, 179, 86, 219, 25, 127, 119, 211, 171, 161, 235, - 84, 207, 108, 22, 76, 222, 98, 186, 43, 17, 230, 175, 151, 152, - 148, 153, 162, 4, 118, 6, 176, 50, 115, 14, 157, 245, 18, 240, - 222, 19, 117, 42, 160, 74, 56, 6, 214, 30, 129, 227, 233, 239, - 217, 45, 156, 215, 216, 231, 159, 178, 129, 243, 23, 36, 68, 12, - 175, 196, 46, 69, 219, 161, 192, 18, 197, 245, 38, 210, 108, 16, - 148, 89, 151, 134, 160, 168, 69, 36, 82, 246, 192, 38, 11, 118, - 154, 93, 239, 19, 121, 124, 34, 219, 86, 125, 19, 190, 69, 204, - 43, 30, 230, 91, 196, 124, 135, 43, 41, 254, 21, 30, 120, 144, - 252, 177, 1, 223, 196, 166, 214, 147, 230, 136, 251, 187, 6, 155, - 81, 22, 6, 253, 3, 128, 206, 45, 34, 76, 18, 81, 27, 191, - 9, 174, 144, 106, 180, 229, 5, 225, 184, 146, 35, 210, 206, 145, - 212, 221, 156, 52, 100, 245, 57, 89, 206, 197, 175, 178, 36, 120, - 46, 173, 198, 246, 200, 5, 118, 246, 244, 185, 55, 160, 187, 156, - 223, 44, 35, 81, 213, 8, 213, 194, 40, 178, 93, 74, 13, 54, - 3, 167, 221, 158, 75, 136, 239, 82, 79, 154, 67, 146, 50, 168, - 245, 228, 193, 99, 146, 178, 168, 245, 228, 201, 97, 82, 34, 166, - 109, 82, 251, 70, 219, 186, 225, 22, 210, 188, 76, 109, 12, 153, - 228, 59, 216, 91, 56, 159, 223, 200, 15, 146, 63, 226, 179, 104, - 242, 205, 229, 41, 147, 186, 191, 101, 176, 43, 65, 35, 168, 249, - 9, 63, 221, 153, 151, 100, 253, 250, 49, 194, 129, 50, 190, 236, - 149, 72, 129, 48, 45, 233, 83, 211, 234, 216, 126, 100, 35, 74, - 26, 143, 78, 60, 34, 78, 181, 71, 51, 89, 7, 172, 32, 111, - 83, 178, 63, 106, 108, 200, 243, 165, 74, 180, 165, 126, 153, 72, - 226, 74, 129, 176, 39, 132, 201, 18, 220, 255, 192, 169, 133, 210, - 122, 208, 224, 18, 201, 242, 213, 197, 27, 11, 151, 246, 154, 66, - 19, 54, 196, 167, 4, 51, 153, 176, 33, 62, 37, 54, 68, 19, - 54, 196, 167, 250, 250, 201, 183, 113, 26, 12, 106, 85, 204, 3, - 238, 215, 12, 40, 109, 156, 154, 63, 107, 126, 235, 201, 18, 104, - 197, 119, 97, 88, 16, 146, 34, 237, 54, 245, 40, 9, 26, 81, - 188, 83, 196, 207, 139, 49, 222, 216, 227, 137, 137, 130, 242, 172, - 77, 115, 50, 205, 210, 153, 168, 123, 59, 96, 64, 155, 168, 68, - 177, 47, 169, 85, 97, 6, 90, 229, 135, 206, 106, 179, 17, 212, - 86, 155, 97, 208, 0, 214, 172, 192, 180, 120, 183, 68, 148, 196, - 52, 123, 104, 114, 170, 68, 112, 71, 150, 250, 73, 217, 171, 108, - 38, 53, 56, 157, 65, 174, 144, 22, 119, 49, 3, 92, 154, 169, - 168, 217, 225, 123, 116, 165, 131, 74, 202, 162, 86, 101, 223, 126, - 0, 77, 5, 195, 247, 154, 217, 239, 78, 177, 197, 208, 23, 161, - 227, 16, 75, 41, 50, 23, 238, 48, 65, 162, 57, 126, 144, 174, - 153, 237, 146, 50, 168, 181, 150, 239, 146, 148, 69, 173, 181, 222, - 62, 226, 17, 8, 105, 219, 108, 75, 12, 247, 6, 91, 106, 141, - 222, 198, 131, 32, 64, 136, 99, 253, 152, 40, 177, 25, 253, 6, - 168, 74, 34, 86, 189, 96, 91, 184, 61, 17, 236, 207, 183, 148, - 205, 252, 32, 36, 131, 91, 249, 54, 106, 215, 204, 216, 130, 174, - 88, 121, 206, 33, 181, 124, 15, 153, 226, 191, 241, 149, 17, 58, - 227, 238, 9, 216, 3, 68, 180, 0, 104, 204, 108, 165, 245, 128, - 18, 3, 181, 204, 182, 28, 127, 200, 149, 148, 65, 173, 240, 208, - 136, 164, 44, 106, 133, 167, 138, 112, 168, 91, 124, 14, 222, 237, - 28, 23, 135, 186, 84, 207, 247, 104, 145, 159, 164, 239, 118, 246, - 75, 138, 63, 118, 224, 136, 164, 44, 106, 189, 187, 112, 140, 252, - 8, 129, 0, 194, 237, 182, 231, 12, 55, 201, 78, 71, 184, 103, - 207, 139, 16, 15, 215, 8, 184, 104, 180, 25, 70, 219, 224, 205, - 187, 216, 92, 247, 0, 211, 160, 72, 152, 119, 211, 11, 106, 160, - 56, 122, 13, 181, 170, 97, 30, 229, 172, 11, 35, 75, 5, 228, - 42, 62, 177, 124, 135, 218, 206, 63, 64, 30, 34, 182, 109, 243, - 201, 219, 49, 15, 186, 35, 119, 49, 121, 108, 254, 146, 24, 173, - 13, 43, 118, 71, 48, 138, 13, 243, 183, 3, 223, 10, 40, 139, - 90, 59, 7, 134, 200, 187, 136, 105, 59, 212, 249, 71, 109, 47, - 26, 134, 251, 100, 235, 112, 213, 84, 102, 152, 164, 152, 25, 81, - 170, 148, 148, 155, 235, 73, 198, 4, 33, 6, 195, 101, 184, 127, - 148, 63, 72, 198, 136, 109, 59, 102, 27, 181, 255, 177, 97, 238, - 115, 15, 103, 63, 150, 216, 221, 164, 16, 214, 77, 28, 126, 175, - 3, 55, 231, 37, 105, 112, 178, 163, 79, 146, 22, 39, 7, 6, - 161, 160, 186, 99, 26, 212, 126, 143, 97, 14, 184, 231, 111, 195, - 5, 66, 126, 6, 104, 16, 86, 184, 88, 11, 194, 205, 71, 103, - 0, 147, 89, 20, 109, 45, 168, 247, 26, 14, 180, 37, 223, 107, - 64, 211, 29, 61, 146, 180, 56, 217, 79, 149, 61, 247, 167, 203, - 228, 141, 247, 98, 207, 197, 203, 183, 181, 230, 190, 170, 189, 246, - 193, 93, 65, 83, 194, 143, 47, 126, 191, 59, 115, 176, 250, 181, - 33, 29, 246, 63, 128, 57, 216, 253, 1, 12, 218, 238, 249, 187, - 124, 86, 56, 35, 87, 17, 38, 92, 216, 161, 191, 235, 16, 146, - 106, 119, 212, 205, 216, 159, 115, 95, 153, 177, 190, 50, 227, 8, - 123, 236, 225, 212, 208, 108, 74, 243, 180, 163, 172, 205, 199, 72, - 7, 190, 82, 25, 162, 249, 227, 206, 87, 102, 204, 165, 60, 254, - 48, 95, 165, 111, 36, 237, 55, 189, 56, 240, 194, 134, 48, 58, - 31, 220, 109, 52, 124, 11, 222, 128, 173, 203, 219, 233, 17, 146, - 71, 39, 129, 95, 5, 227, 106, 30, 127, 87, 23, 233, 57, 146, - 75, 26, 94, 163, 153, 12, 229, 152, 49, 210, 51, 117, 120, 111, - 91, 241, 50, 220, 35, 186, 142, 15, 208, 147, 164, 43, 105, 110, - 109, 121, 241, 206, 234, 70, 99, 171, 54, 212, 158, 142, 174, 83, - 252, 112, 181, 177, 85, 163, 143, 18, 2, 135, 40, 132, 100, 12, - 229, 97, 0, 238, 46, 19, 175, 10, 224, 192, 22, 58, 224, 17, - 126, 145, 78, 147, 188, 100, 181, 161, 14, 49, 252, 219, 197, 148, - 136, 225, 201, 251, 233, 67, 196, 110, 120, 235, 201, 16, 97, 214, - 72, 231, 94, 131, 91, 6, 125, 249, 186, 23, 196, 248, 40, 220, - 78, 71, 73, 151, 152, 65, 205, 15, 160, 190, 107, 167, 248, 13, - 124, 2, 179, 164, 59, 195, 93, 67, 221, 247, 110, 216, 167, 151, - 73, 79, 150, 205, 134, 122, 160, 149, 35, 187, 91, 185, 140, 247, - 45, 193, 109, 75, 221, 107, 58, 217, 98, 77, 239, 189, 107, 107, - 58, 101, 164, 35, 72, 86, 183, 188, 100, 211, 175, 14, 245, 73, - 70, 177, 150, 242, 65, 242, 4, 92, 124, 220, 206, 119, 246, 117, - 21, 254, 131, 73, 122, 249, 56, 230, 110, 69, 178, 56, 239, 29, - 153, 255, 64, 11, 243, 43, 190, 63, 147, 178, 180, 245, 42, 44, - 157, 114, 243, 56, 233, 241, 211, 23, 243, 70, 237, 204, 59, 187, - 181, 95, 231, 171, 180, 68, 250, 252, 91, 245, 154, 135, 97, 86, - 200, 164, 78, 202, 164, 189, 218, 143, 192, 168, 39, 91, 190, 122, - 78, 99, 104, 253, 147, 191, 137, 228, 196, 87, 106, 135, 53, 179, - 135, 9, 95, 155, 31, 252, 52, 98, 233, 224, 115, 217, 233, 206, - 239, 49, 221, 99, 111, 195, 253, 5, 215, 29, 221, 79, 232, 242, - 202, 204, 202, 141, 229, 150, 160, 211, 60, 177, 175, 207, 44, 47, - 247, 25, 252, 175, 203, 51, 243, 11, 125, 38, 237, 32, 206, 236, - 210, 204, 242, 213, 62, 139, 255, 57, 115, 113, 113, 105, 165, 207, - 230, 191, 47, 191, 121, 254, 122, 159, 51, 246, 33, 131, 244, 239, - 234, 30, 45, 144, 7, 231, 222, 182, 120, 109, 110, 105, 102, 101, - 126, 241, 218, 234, 210, 220, 204, 242, 226, 181, 150, 183, 237, 39, - 116, 113, 118, 246, 198, 210, 242, 234, 226, 181, 213, 39, 102, 230, - 175, 45, 204, 95, 155, 235, 51, 232, 1, 50, 144, 94, 95, 92, - 185, 58, 183, 180, 58, 187, 176, 220, 103, 210, 62, 210, 117, 109, - 113, 101, 117, 118, 105, 126, 101, 126, 118, 102, 161, 207, 162, 3, - 164, 247, 198, 181, 185, 183, 93, 159, 155, 93, 153, 187, 180, 10, - 125, 183, 95, 139, 27, 225, 39, 86, 208, 141, 240, 25, 243, 78, - 110, 132, 201, 115, 63, 116, 35, 252, 208, 141, 240, 218, 221, 8, - 163, 169, 27, 97, 36, 117, 35, 160, 115, 193, 162, 214, 62, 113, - 131, 77, 173, 253, 109, 23, 224, 79, 135, 90, 7, 218, 46, 193, - 159, 57, 106, 13, 181, 205, 9, 151, 131, 155, 186, 28, 248, 159, - 255, 204, 2, 159, 131, 115, 178, 237, 211, 134, 225, 254, 23, 19, - 140, 164, 50, 106, 199, 99, 107, 205, 176, 34, 75, 208, 113, 125, - 172, 226, 1, 211, 44, 174, 53, 52, 196, 147, 244, 39, 168, 233, - 120, 203, 175, 192, 183, 72, 11, 55, 129, 110, 224, 133, 152, 7, - 175, 46, 227, 123, 146, 34, 105, 105, 40, 105, 6, 13, 63, 123, - 171, 122, 65, 34, 226, 178, 148, 117, 88, 123, 66, 22, 194, 148, - 239, 15, 66, 45, 251, 71, 236, 154, 9, 97, 35, 139, 203, 69, - 118, 229, 250, 141, 162, 196, 74, 100, 107, 53, 111, 61, 129, 56, - 214, 81, 85, 86, 75, 213, 43, 151, 240, 29, 248, 133, 119, 52, - 213, 148, 243, 195, 188, 158, 141, 144, 170, 5, 194, 94, 39, 27, - 1, 235, 145, 191, 85, 246, 171, 217, 106, 232, 16, 68, 8, 249, - 67, 213, 105, 54, 249, 176, 230, 207, 57, 153, 167, 228, 16, 255, - 187, 131, 90, 195, 102, 79, 161, 23, 29, 34, 210, 100, 74, 72, - 39, 177, 237, 182, 142, 54, 106, 13, 119, 10, 7, 69, 7, 4, - 117, 166, 148, 137, 212, 175, 75, 175, 144, 61, 105, 158, 181, 221, - 95, 188, 189, 91, 8, 122, 6, 67, 195, 47, 179, 135, 95, 232, - 138, 223, 72, 101, 205, 221, 62, 161, 32, 188, 41, 193, 56, 38, - 158, 159, 191, 246, 150, 197, 89, 220, 195, 231, 47, 221, 209, 25, - 36, 182, 87, 240, 29, 45, 223, 88, 248, 135, 113, 16, 189, 102, - 255, 208, 100, 198, 63, 52, 153, 241, 15, 77, 246, 33, 218, 27, - 230, 37, 77, 210, 179, 86, 214, 65, 52, 101, 143, 107, 23, 12, - 106, 157, 177, 79, 145, 79, 57, 210, 101, 116, 213, 124, 204, 253, - 113, 7, 29, 4, 65, 181, 200, 188, 189, 29, 62, 41, 11, 238, - 233, 242, 89, 247, 111, 77, 179, 119, 61, 245, 212, 244, 116, 61, - 14, 194, 198, 244, 244, 59, 223, 249, 252, 100, 241, 161, 201, 169, - 23, 142, 11, 187, 226, 118, 4, 207, 39, 18, 138, 12, 53, 25, - 201, 214, 172, 30, 251, 107, 193, 45, 193, 181, 161, 168, 111, 198, - 60, 12, 252, 241, 106, 245, 13, 47, 108, 110, 249, 113, 80, 97, - 149, 13, 47, 246, 42, 13, 174, 19, 55, 54, 252, 29, 172, 199, - 133, 209, 95, 158, 138, 170, 244, 24, 96, 217, 148, 180, 72, 112, - 54, 206, 10, 222, 68, 121, 162, 82, 80, 127, 86, 211, 63, 253, - 233, 91, 58, 177, 35, 137, 181, 130, 88, 156, 2, 20, 167, 5, - 122, 12, 222, 34, 0, 181, 106, 53, 22, 128, 101, 185, 236, 3, - 252, 114, 35, 194, 28, 66, 126, 75, 90, 0, 109, 77, 101, 115, - 71, 161, 28, 117, 193, 155, 128, 247, 189, 21, 225, 179, 96, 18, - 224, 177, 98, 154, 55, 205, 206, 74, 76, 149, 164, 89, 30, 191, - 67, 163, 0, 204, 165, 218, 45, 223, 182, 101, 53, 108, 216, 220, - 212, 184, 239, 244, 22, 137, 90, 180, 171, 247, 252, 209, 130, 140, - 26, 171, 104, 107, 61, 8, 217, 141, 249, 18, 65, 134, 81, 251, - 90, 10, 215, 35, 62, 127, 34, 99, 237, 48, 209, 121, 219, 219, - 201, 248, 44, 175, 102, 124, 150, 87, 51, 62, 203, 171, 3, 131, - 146, 202, 83, 235, 234, 190, 71, 5, 179, 27, 200, 253, 87, 247, - 95, 32, 27, 194, 165, 105, 47, 152, 139, 182, 251, 14, 221, 5, - 226, 233, 155, 15, 242, 54, 186, 9, 211, 109, 5, 247, 126, 181, - 251, 42, 94, 247, 198, 159, 59, 61, 126, 238, 233, 241, 213, 18, - 103, 245, 51, 192, 233, 169, 71, 115, 33, 227, 209, 92, 16, 134, - 73, 244, 104, 46, 236, 219, 47, 86, 172, 153, 167, 246, 194, 129, - 69, 185, 98, 77, 236, 243, 19, 246, 41, 237, 130, 65, 173, 107, - 246, 24, 185, 41, 93, 160, 203, 230, 155, 220, 64, 97, 190, 8, - 115, 57, 103, 52, 37, 15, 108, 123, 32, 76, 197, 77, 76, 201, - 87, 206, 38, 130, 155, 171, 150, 109, 81, 110, 86, 54, 125, 128, - 128, 14, 106, 92, 38, 64, 136, 167, 244, 124, 75, 61, 159, 57, - 254, 226, 14, 205, 243, 185, 76, 116, 207, 231, 242, 224, 62, 73, - 229, 169, 181, 188, 255, 49, 49, 0, 11, 71, 180, 124, 224, 81, - 242, 51, 150, 244, 140, 62, 109, 62, 234, 126, 204, 98, 111, 149, - 5, 54, 55, 124, 61, 106, 87, 157, 235, 120, 168, 10, 24, 51, - 169, 178, 243, 243, 47, 68, 68, 42, 64, 59, 155, 21, 114, 51, - 155, 93, 40, 178, 115, 231, 78, 156, 82, 109, 136, 13, 30, 130, - 197, 181, 167, 111, 36, 50, 130, 60, 133, 14, 1, 126, 244, 19, - 85, 233, 88, 28, 165, 205, 80, 62, 39, 27, 3, 248, 139, 112, - 247, 15, 236, 232, 5, 173, 227, 66, 43, 21, 248, 197, 248, 46, - 37, 76, 136, 80, 86, 46, 101, 170, 70, 26, 17, 60, 51, 145, - 108, 6, 245, 9, 40, 139, 135, 65, 145, 240, 212, 134, 23, 99, - 105, 184, 104, 171, 238, 197, 98, 7, 194, 42, 168, 12, 109, 17, - 36, 149, 177, 85, 147, 81, 232, 143, 36, 163, 66, 110, 209, 93, - 58, 45, 179, 45, 224, 155, 189, 56, 72, 192, 195, 34, 188, 200, - 14, 255, 74, 57, 205, 195, 252, 116, 123, 175, 230, 97, 126, 154, - 14, 72, 42, 79, 173, 167, 7, 101, 76, 130, 141, 159, 251, 233, - 125, 143, 144, 183, 75, 7, 244, 51, 230, 69, 119, 129, 61, 225, - 85, 54, 130, 208, 31, 143, 125, 175, 10, 226, 10, 118, 61, 115, - 180, 8, 65, 15, 124, 0, 215, 22, 193, 51, 187, 91, 239, 203, - 56, 173, 159, 193, 24, 104, 225, 180, 126, 166, 123, 64, 115, 90, - 63, 179, 255, 128, 164, 242, 212, 122, 102, 104, 70, 244, 209, 193, - 62, 62, 115, 240, 77, 228, 63, 34, 75, 230, 168, 21, 153, 151, - 220, 255, 96, 177, 171, 205, 45, 47, 76, 251, 168, 169, 200, 105, - 168, 62, 138, 41, 128, 72, 255, 196, 130, 236, 110, 153, 139, 134, - 97, 208, 0, 39, 155, 192, 17, 137, 125, 46, 103, 3, 246, 129, - 40, 231, 23, 71, 219, 136, 54, 131, 110, 185, 224, 185, 212, 93, - 138, 22, 35, 229, 154, 243, 223, 205, 63, 111, 3, 128, 22, 146, - 45, 175, 86, 147, 225, 198, 169, 195, 14, 64, 160, 111, 172, 92, - 30, 127, 35, 111, 112, 185, 89, 175, 71, 49, 176, 123, 35, 88, - 243, 42, 66, 246, 131, 168, 114, 172, 11, 32, 0, 201, 27, 222, - 58, 63, 175, 198, 216, 35, 13, 255, 86, 99, 92, 222, 254, 168, - 232, 174, 86, 185, 23, 113, 241, 84, 123, 94, 2, 57, 172, 0, - 56, 113, 131, 75, 146, 128, 186, 52, 198, 86, 34, 124, 149, 228, - 170, 154, 127, 211, 175, 169, 199, 166, 91, 222, 3, 0, 159, 226, - 239, 241, 160, 122, 161, 240, 136, 164, 86, 131, 234, 163, 133, 71, - 91, 218, 212, 182, 225, 31, 168, 93, 222, 208, 56, 180, 240, 168, - 228, 159, 156, 195, 63, 187, 220, 165, 115, 6, 181, 162, 14, 185, - 137, 229, 44, 106, 69, 67, 7, 37, 149, 167, 86, 228, 206, 10, - 254, 201, 33, 255, 68, 135, 46, 146, 171, 192, 62, 237, 212, 142, - 205, 228, 180, 59, 141, 144, 244, 80, 49, 156, 127, 241, 96, 203, - 79, 235, 40, 167, 187, 3, 152, 246, 112, 209, 11, 181, 65, 177, - 116, 123, 142, 90, 177, 41, 35, 47, 218, 13, 106, 197, 135, 79, - 74, 202, 162, 86, 60, 58, 38, 169, 60, 181, 146, 220, 132, 232, - 82, 59, 118, 41, 105, 47, 137, 101, 151, 167, 246, 182, 121, 235, - 180, 251, 102, 166, 210, 205, 90, 23, 90, 186, 189, 106, 60, 172, - 179, 221, 58, 196, 247, 11, 182, 59, 173, 250, 152, 207, 81, 107, - 219, 116, 37, 101, 80, 107, 251, 208, 49, 73, 89, 212, 218, 6, - 240, 100, 160, 242, 212, 186, 165, 250, 152, 199, 62, 222, 106, 47, - 145, 127, 98, 64, 39, 59, 168, 245, 130, 249, 184, 187, 205, 164, - 33, 80, 104, 182, 89, 141, 0, 21, 158, 45, 176, 105, 84, 5, - 46, 132, 196, 246, 82, 232, 163, 233, 81, 33, 116, 99, 125, 63, - 153, 97, 155, 92, 76, 68, 169, 68, 38, 16, 168, 241, 116, 216, - 188, 27, 138, 202, 81, 235, 133, 78, 201, 6, 29, 6, 181, 94, - 216, 47, 199, 218, 97, 81, 235, 133, 7, 142, 72, 42, 79, 173, - 23, 216, 188, 24, 93, 7, 142, 238, 133, 163, 87, 201, 243, 48, - 56, 66, 115, 47, 26, 230, 251, 12, 219, 221, 100, 87, 189, 100, - 35, 173, 14, 13, 58, 97, 137, 176, 13, 255, 214, 72, 178, 225, - 77, 61, 244, 134, 145, 36, 226, 28, 49, 50, 60, 92, 122, 54, - 10, 194, 145, 225, 19, 201, 244, 137, 228, 233, 112, 24, 38, 100, - 179, 200, 110, 114, 126, 146, 79, 130, 140, 57, 50, 202, 255, 219, - 173, 50, 160, 88, 65, 28, 106, 191, 40, 125, 41, 109, 38, 49, - 56, 217, 177, 79, 146, 22, 39, 135, 92, 210, 139, 100, 158, 119, - 245, 208, 251, 12, 11, 240, 12, 248, 5, 62, 22, 251, 159, 24, - 246, 184, 118, 197, 160, 246, 123, 13, 251, 148, 224, 249, 78, 106, - 127, 192, 48, 11, 238, 244, 30, 145, 64, 106, 254, 69, 210, 5, - 44, 4, 1, 70, 161, 49, 157, 232, 77, 103, 14, 154, 234, 145, - 164, 193, 201, 222, 195, 146, 180, 56, 121, 228, 40, 89, 129, 215, - 118, 81, 251, 159, 25, 230, 113, 247, 242, 157, 94, 171, 142, 95, - 192, 78, 18, 110, 88, 153, 188, 160, 238, 0, 22, 192, 151, 116, - 229, 160, 217, 94, 73, 26, 156, 236, 123, 80, 146, 22, 39, 143, - 30, 35, 63, 141, 108, 219, 77, 237, 143, 24, 230, 168, 251, 99, - 247, 45, 110, 67, 113, 254, 189, 133, 111, 96, 119, 187, 115, 208, - 191, 33, 73, 26, 156, 60, 120, 76, 146, 22, 39, 79, 142, 144, - 95, 65, 21, 189, 135, 218, 159, 50, 204, 139, 238, 207, 155, 25, - 113, 76, 23, 138, 55, 188, 4, 107, 3, 163, 193, 150, 1, 186, - 129, 64, 20, 197, 12, 37, 81, 92, 61, 13, 17, 69, 111, 160, - 90, 213, 152, 200, 135, 1, 24, 169, 42, 207, 101, 32, 56, 136, - 66, 168, 159, 56, 38, 181, 107, 254, 167, 114, 10, 113, 66, 202, - 52, 252, 111, 41, 240, 140, 177, 212, 169, 194, 41, 233, 242, 224, - 127, 235, 86, 108, 78, 239, 114, 97, 5, 224, 181, 129, 156, 177, - 85, 105, 46, 25, 105, 196, 205, 176, 34, 131, 175, 38, 207, 158, - 78, 245, 204, 100, 244, 54, 203, 172, 199, 129, 217, 203, 73, 210, - 224, 100, 123, 159, 36, 45, 78, 14, 200, 85, 215, 147, 231, 228, - 254, 25, 177, 164, 122, 112, 145, 125, 202, 56, 240, 38, 114, 14, - 146, 96, 115, 159, 49, 218, 126, 221, 48, 220, 83, 119, 146, 149, - 188, 22, 6, 233, 196, 156, 78, 251, 51, 134, 211, 75, 254, 177, - 33, 178, 58, 237, 159, 51, 204, 131, 110, 204, 208, 126, 14, 240, - 158, 169, 57, 9, 141, 138, 215, 16, 200, 89, 211, 211, 132, 72, - 169, 203, 206, 231, 49, 19, 47, 193, 204, 186, 108, 182, 16, 214, - 185, 38, 172, 25, 38, 126, 67, 229, 167, 118, 203, 180, 80, 222, - 133, 65, 73, 154, 156, 60, 48, 68, 70, 69, 94, 168, 253, 243, - 134, 217, 233, 30, 74, 101, 92, 56, 144, 54, 32, 43, 82, 212, - 237, 239, 150, 249, 153, 252, 222, 156, 36, 77, 78, 118, 16, 153, - 97, 106, 82, 251, 23, 120, 75, 31, 49, 246, 104, 74, 46, 114, - 182, 188, 171, 172, 62, 0, 129, 8, 43, 168, 136, 248, 8, 66, - 81, 134, 89, 100, 45, 34, 204, 105, 45, 137, 152, 64, 144, 150, - 176, 39, 122, 152, 136, 122, 72, 148, 162, 66, 100, 212, 154, 183, - 233, 171, 17, 240, 209, 254, 66, 58, 2, 236, 114, 7, 33, 255, - 131, 76, 194, 180, 95, 49, 204, 46, 247, 229, 189, 70, 128, 5, - 178, 171, 178, 32, 131, 126, 96, 175, 32, 82, 90, 37, 218, 242, - 101, 71, 66, 81, 102, 126, 122, 207, 33, 226, 1, 26, 197, 226, - 15, 76, 178, 34, 44, 51, 104, 57, 180, 83, 8, 64, 175, 141, - 79, 13, 199, 50, 160, 195, 237, 146, 52, 57, 73, 58, 201, 186, - 72, 155, 180, 127, 153, 143, 230, 237, 123, 12, 70, 136, 61, 248, - 38, 206, 145, 94, 25, 78, 61, 41, 45, 175, 5, 97, 144, 108, - 4, 225, 58, 156, 216, 194, 194, 128, 75, 118, 26, 142, 144, 168, - 153, 118, 195, 54, 224, 77, 178, 27, 182, 201, 73, 210, 73, 62, - 109, 138, 12, 72, 251, 127, 227, 124, 241, 227, 102, 75, 71, 170, - 65, 21, 195, 176, 164, 224, 149, 181, 15, 1, 230, 75, 42, 74, - 72, 245, 168, 86, 243, 43, 234, 74, 106, 21, 102, 73, 179, 178, - 129, 75, 131, 95, 5, 16, 224, 32, 244, 226, 157, 98, 102, 124, - 245, 216, 223, 242, 248, 1, 80, 219, 1, 117, 44, 243, 2, 128, - 117, 210, 148, 195, 109, 15, 112, 200, 184, 34, 88, 7, 230, 29, - 223, 75, 17, 12, 215, 130, 117, 41, 215, 169, 69, 221, 194, 158, - 48, 94, 33, 215, 101, 154, 20, 115, 230, 24, 48, 73, 146, 49, - 29, 147, 147, 29, 132, 252, 129, 1, 129, 190, 185, 223, 48, 218, - 254, 177, 105, 184, 255, 214, 96, 243, 90, 22, 160, 50, 126, 227, - 81, 55, 34, 12, 10, 179, 11, 163, 192, 252, 101, 40, 240, 35, - 128, 1, 203, 53, 216, 216, 113, 163, 216, 67, 103, 78, 183, 179, - 84, 40, 106, 1, 247, 245, 51, 191, 195, 146, 78, 16, 147, 26, - 205, 131, 97, 138, 170, 206, 245, 255, 36, 18, 171, 48, 140, 26, - 132, 205, 46, 12, 243, 93, 64, 109, 148, 54, 223, 77, 126, 195, - 200, 31, 32, 127, 98, 138, 184, 228, 220, 239, 27, 230, 151, 12, - 219, 253, 157, 187, 177, 80, 107, 238, 85, 101, 166, 38, 187, 236, - 212, 154, 115, 177, 213, 86, 253, 90, 77, 213, 218, 139, 147, 137, - 231, 117, 71, 229, 252, 165, 23, 74, 228, 142, 214, 106, 57, 181, - 255, 192, 166, 235, 110, 25, 208, 109, 255, 190, 148, 67, 33, 162, - 219, 254, 125, 163, 163, 91, 146, 22, 39, 251, 250, 65, 14, 53, - 204, 182, 60, 255, 28, 244, 75, 66, 14, 53, 132, 253, 218, 254, - 3, 41, 135, 26, 194, 128, 109, 127, 145, 203, 161, 111, 20, 129, - 224, 246, 151, 13, 115, 159, 59, 38, 13, 216, 210, 102, 93, 100, - 137, 239, 239, 145, 130, 160, 250, 102, 56, 240, 168, 236, 155, 1, - 45, 137, 56, 39, 136, 241, 182, 191, 108, 12, 12, 146, 255, 203, - 16, 81, 222, 246, 255, 105, 152, 251, 221, 223, 51, 90, 45, 111, - 154, 80, 175, 203, 112, 248, 126, 225, 195, 7, 224, 240, 18, 248, - 38, 131, 205, 76, 175, 252, 91, 141, 216, 147, 31, 105, 181, 238, - 5, 113, 34, 0, 13, 162, 48, 149, 244, 60, 8, 181, 214, 66, - 97, 73, 203, 155, 139, 12, 170, 51, 40, 230, 231, 251, 103, 25, - 224, 188, 97, 157, 204, 43, 198, 43, 149, 189, 196, 95, 205, 112, - 134, 156, 16, 51, 7, 99, 236, 144, 164, 193, 73, 210, 47, 73, - 139, 147, 131, 251, 248, 78, 15, 241, 228, 185, 175, 26, 230, 159, - 25, 182, 251, 214, 140, 57, 53, 212, 87, 201, 93, 217, 83, 231, - 161, 207, 152, 241, 63, 174, 21, 138, 17, 239, 181, 28, 106, 127, - 53, 253, 76, 252, 252, 249, 170, 209, 113, 64, 146, 22, 39, 1, - 154, 13, 200, 60, 239, 214, 225, 63, 83, 44, 132, 230, 71, 251, - 107, 41, 11, 89, 200, 66, 127, 202, 89, 40, 20, 97, 216, 246, - 55, 12, 243, 170, 251, 12, 195, 96, 0, 132, 205, 221, 8, 132, - 199, 47, 179, 234, 127, 48, 171, 15, 246, 217, 118, 224, 133, 114, - 68, 252, 40, 251, 134, 209, 113, 80, 146, 22, 39, 15, 63, 32, - 201, 60, 39, 31, 188, 34, 122, 143, 246, 53, 251, 27, 198, 145, - 203, 228, 89, 232, 189, 67, 237, 191, 50, 204, 75, 238, 211, 247, - 85, 203, 196, 206, 56, 248, 50, 217, 115, 126, 130, 252, 149, 84, - 43, 13, 40, 83, 244, 87, 198, 144, 28, 136, 147, 231, 164, 59, - 43, 122, 142, 86, 55, 251, 175, 140, 67, 23, 201, 199, 112, 251, - 205, 81, 251, 59, 134, 57, 239, 190, 207, 188, 187, 153, 223, 106, - 21, 139, 185, 6, 136, 22, 93, 216, 178, 189, 36, 9, 0, 78, - 66, 133, 250, 123, 161, 87, 219, 201, 30, 213, 205, 70, 196, 181, - 198, 10, 43, 55, 215, 199, 215, 0, 226, 84, 250, 45, 176, 224, - 123, 213, 111, 164, 167, 61, 236, 242, 149, 56, 104, 128, 173, 25, - 253, 87, 107, 2, 24, 21, 128, 73, 252, 164, 89, 222, 10, 192, - 180, 14, 92, 190, 134, 62, 41, 192, 65, 245, 81, 104, 139, 36, - 252, 156, 6, 149, 186, 3, 173, 48, 254, 18, 208, 185, 102, 23, - 18, 53, 203, 57, 156, 151, 1, 73, 26, 156, 28, 116, 37, 105, - 113, 82, 148, 141, 54, 204, 92, 158, 147, 71, 174, 138, 89, 70, - 219, 148, 253, 29, 131, 93, 33, 127, 131, 59, 87, 59, 181, 191, - 111, 152, 51, 238, 215, 140, 221, 26, 158, 190, 86, 239, 86, 205, - 35, 169, 158, 247, 42, 106, 158, 126, 18, 222, 65, 215, 203, 198, - 52, 237, 165, 192, 181, 134, 49, 161, 134, 200, 57, 230, 54, 231, - 78, 187, 3, 131, 206, 73, 210, 224, 100, 187, 220, 219, 219, 45, - 78, 14, 12, 74, 50, 207, 201, 125, 111, 18, 83, 136, 182, 52, - 251, 251, 198, 254, 199, 64, 49, 51, 104, 238, 69, 179, 237, 51, - 38, 87, 204, 144, 77, 217, 246, 198, 78, 139, 228, 2, 2, 95, - 250, 169, 133, 98, 198, 207, 148, 23, 77, 103, 63, 121, 47, 23, - 246, 185, 188, 97, 191, 223, 52, 79, 184, 219, 170, 161, 123, 86, - 204, 116, 81, 224, 85, 180, 51, 130, 82, 87, 171, 118, 134, 199, - 240, 251, 77, 147, 73, 210, 228, 228, 177, 227, 228, 127, 50, 161, - 151, 6, 181, 127, 204, 52, 15, 186, 159, 50, 217, 50, 214, 150, - 218, 195, 17, 130, 133, 103, 163, 178, 168, 119, 203, 191, 48, 219, - 242, 130, 16, 194, 234, 203, 177, 23, 86, 54, 136, 40, 25, 4, - 165, 98, 146, 6, 243, 208, 203, 164, 4, 182, 102, 136, 107, 7, - 144, 25, 1, 40, 36, 193, 72, 29, 191, 58, 90, 34, 108, 132, - 139, 130, 222, 205, 40, 168, 66, 20, 81, 180, 6, 224, 198, 13, - 113, 58, 42, 150, 4, 97, 144, 171, 92, 1, 138, 215, 4, 22, - 112, 188, 197, 181, 137, 134, 112, 239, 64, 233, 8, 216, 146, 247, - 240, 232, 140, 18, 54, 83, 199, 162, 170, 141, 104, 175, 145, 234, - 235, 124, 98, 246, 73, 22, 55, 195, 68, 99, 55, 7, 101, 135, - 31, 51, 133, 186, 107, 128, 150, 250, 99, 230, 129, 33, 242, 151, - 56, 161, 38, 181, 63, 110, 154, 174, 251, 199, 247, 48, 161, 250, - 75, 249, 27, 71, 146, 81, 88, 89, 176, 93, 20, 185, 214, 45, - 83, 197, 102, 23, 70, 146, 209, 18, 27, 145, 56, 206, 9, 106, - 187, 193, 77, 229, 91, 192, 64, 114, 220, 142, 132, 53, 140, 48, - 40, 251, 36, 191, 87, 83, 147, 27, 194, 181, 32, 222, 66, 136, - 162, 20, 211, 89, 234, 192, 240, 123, 212, 4, 176, 26, 194, 214, - 188, 10, 214, 33, 3, 169, 6, 82, 165, 96, 135, 132, 82, 200, - 205, 144, 191, 99, 118, 33, 97, 55, 147, 61, 127, 35, 173, 12, - 227, 191, 46, 31, 131, 243, 239, 199, 77, 115, 159, 36, 97, 246, - 135, 14, 146, 127, 107, 193, 199, 176, 168, 253, 178, 105, 14, 184, - 175, 88, 74, 177, 194, 78, 193, 232, 213, 78, 31, 221, 78, 215, - 225, 154, 78, 157, 159, 52, 233, 185, 81, 145, 177, 56, 114, 131, - 135, 90, 49, 176, 39, 66, 49, 16, 132, 169, 6, 37, 18, 15, - 42, 201, 161, 62, 11, 214, 136, 122, 17, 118, 3, 65, 95, 152, - 31, 66, 93, 105, 220, 8, 182, 188, 170, 159, 246, 109, 196, 131, - 239, 28, 65, 56, 20, 98, 8, 121, 34, 42, 140, 79, 87, 28, - 64, 173, 184, 154, 230, 197, 133, 234, 156, 243, 107, 153, 50, 116, - 254, 173, 32, 105, 40, 132, 23, 221, 77, 140, 253, 192, 226, 168, - 217, 53, 67, 84, 248, 148, 138, 135, 186, 205, 252, 161, 33, 31, - 64, 98, 249, 70, 87, 36, 16, 43, 224, 199, 56, 53, 202, 254, - 137, 191, 38, 108, 119, 92, 37, 139, 98, 182, 71, 84, 165, 250, - 202, 92, 14, 124, 217, 68, 171, 49, 39, 77, 78, 246, 83, 242, - 21, 220, 105, 109, 106, 255, 11, 211, 220, 239, 126, 65, 51, 171, - 8, 173, 19, 84, 243, 140, 58, 202, 63, 103, 137, 141, 164, 229, - 39, 80, 88, 104, 17, 101, 19, 130, 37, 167, 164, 0, 1, 59, - 139, 44, 132, 203, 199, 219, 210, 34, 151, 58, 154, 24, 139, 8, - 16, 65, 117, 213, 140, 166, 177, 71, 66, 125, 92, 14, 194, 77, - 233, 186, 144, 89, 25, 91, 94, 216, 212, 94, 2, 26, 193, 168, - 154, 0, 46, 54, 254, 11, 211, 236, 151, 164, 201, 201, 193, 125, - 42, 63, 226, 189, 147, 228, 194, 157, 195, 74, 147, 32, 220, 188, - 83, 146, 4, 213, 194, 122, 249, 189, 165, 155, 147, 255, 85, 102, - 65, 252, 32, 153, 12, 63, 80, 10, 197, 107, 206, 63, 41, 124, - 52, 151, 201, 159, 208, 194, 196, 141, 76, 152, 248, 33, 61, 61, - 66, 32, 184, 168, 180, 8, 87, 75, 110, 176, 152, 49, 146, 215, - 242, 26, 206, 170, 188, 6, 251, 213, 243, 26, 84, 74, 195, 209, - 150, 148, 6, 136, 22, 207, 102, 51, 156, 203, 100, 51, 228, 94, - 45, 155, 65, 79, 100, 120, 72, 75, 100, 104, 127, 149, 68, 6, - 45, 135, 225, 180, 200, 97, 200, 191, 122, 14, 131, 72, 95, 120, - 51, 233, 144, 190, 223, 100, 168, 3, 30, 27, 47, 237, 102, 230, - 146, 166, 134, 207, 200, 251, 231, 194, 70, 188, 179, 148, 62, 191, - 59, 193, 161, 243, 117, 73, 112, 232, 122, 77, 9, 14, 90, 218, - 64, 247, 93, 167, 13, 100, 179, 34, 122, 238, 58, 43, 194, 125, - 7, 233, 201, 206, 11, 237, 35, 214, 166, 191, 35, 152, 148, 255, - 73, 167, 116, 100, 156, 150, 207, 35, 231, 89, 54, 34, 112, 115, - 166, 205, 55, 26, 143, 219, 121, 210, 215, 185, 212, 157, 9, 48, - 45, 124, 208, 32, 121, 121, 51, 125, 64, 160, 23, 213, 189, 198, - 6, 190, 241, 106, 27, 226, 23, 93, 247, 26, 27, 244, 48, 201, - 203, 64, 5, 120, 119, 23, 255, 85, 94, 161, 7, 73, 251, 122, - 37, 89, 109, 198, 1, 230, 72, 92, 109, 91, 202, 173, 87, 146, - 27, 113, 128, 232, 64, 112, 27, 148, 209, 18, 240, 87, 157, 226, - 218, 202, 78, 221, 191, 152, 35, 118, 57, 170, 238, 20, 126, 222, - 32, 61, 41, 147, 92, 14, 106, 0, 155, 148, 118, 104, 9, 254, - 166, 51, 36, 135, 231, 42, 116, 164, 103, 106, 244, 206, 204, 198, - 219, 41, 161, 77, 112, 73, 60, 88, 152, 37, 57, 188, 66, 243, - 196, 94, 184, 49, 59, 223, 215, 70, 31, 36, 238, 236, 213, 165, - 197, 39, 230, 111, 60, 177, 250, 248, 242, 226, 53, 52, 237, 97, - 180, 234, 114, 159, 65, 123, 73, 231, 149, 197, 197, 43, 11, 115, - 240, 67, 159, 121, 241, 236, 59, 166, 238, 97, 199, 63, 207, 169, - 122, 249, 241, 63, 56, 142, 185, 4, 47, 221, 17, 146, 232, 135, - 185, 4, 63, 204, 37, 184, 231, 92, 130, 67, 105, 46, 193, 72, - 154, 75, 112, 50, 205, 37, 24, 77, 115, 9, 46, 164, 185, 4, - 115, 123, 230, 18, 92, 84, 185, 4, 243, 105, 46, 193, 60, 121, - 209, 64, 252, 162, 35, 109, 75, 134, 187, 45, 74, 133, 214, 24, - 255, 98, 55, 189, 154, 143, 70, 217, 236, 38, 169, 185, 160, 133, - 247, 23, 160, 30, 75, 165, 137, 82, 105, 207, 243, 90, 204, 91, - 208, 72, 210, 194, 81, 89, 36, 27, 25, 66, 127, 68, 11, 161, - 103, 119, 12, 161, 103, 153, 16, 122, 150, 9, 161, 231, 20, 180, - 72, 168, 117, 212, 60, 132, 15, 145, 54, 106, 29, 237, 116, 201, - 155, 36, 224, 210, 113, 115, 159, 123, 134, 205, 221, 97, 160, 217, - 51, 110, 5, 100, 138, 76, 88, 249, 241, 76, 88, 249, 113, 21, - 87, 219, 102, 81, 235, 248, 192, 32, 105, 200, 32, 241, 81, 243, - 128, 187, 126, 15, 239, 82, 82, 139, 64, 149, 136, 80, 207, 47, - 50, 143, 197, 94, 88, 141, 182, 138, 50, 202, 28, 93, 21, 169, - 221, 55, 19, 247, 59, 154, 137, 251, 29, 85, 65, 180, 134, 69, - 173, 209, 125, 251, 201, 69, 137, 85, 84, 52, 7, 221, 135, 238, - 161, 127, 105, 60, 168, 22, 178, 91, 84, 1, 143, 124, 200, 69, - 21, 240, 104, 90, 212, 42, 210, 1, 49, 243, 22, 181, 38, 204, - 209, 123, 154, 121, 20, 175, 50, 177, 180, 19, 230, 3, 90, 44, - 237, 196, 131, 199, 181, 88, 218, 137, 225, 17, 114, 89, 198, 202, - 78, 153, 174, 123, 238, 94, 222, 165, 9, 112, 153, 112, 206, 41, - 53, 151, 182, 65, 173, 41, 21, 234, 102, 91, 212, 154, 26, 58, - 72, 46, 201, 120, 205, 135, 204, 83, 238, 195, 247, 54, 58, 33, - 15, 102, 66, 51, 31, 82, 113, 108, 142, 65, 173, 135, 84, 28, - 155, 99, 81, 235, 161, 209, 49, 241, 237, 114, 212, 122, 163, 57, - 114, 79, 223, 78, 169, 28, 42, 144, 15, 26, 113, 181, 64, 190, - 55, 170, 136, 180, 156, 69, 173, 55, 158, 28, 38, 143, 138, 72, - 61, 235, 188, 121, 218, 157, 188, 135, 183, 113, 137, 50, 141, 207, - 179, 121, 3, 122, 180, 222, 249, 206, 147, 90, 180, 222, 249, 225, - 83, 90, 180, 222, 249, 210, 4, 120, 75, 218, 204, 60, 181, 30, - 51, 79, 186, 239, 96, 74, 158, 2, 243, 70, 189, 22, 121, 88, - 245, 86, 225, 3, 201, 19, 110, 87, 12, 28, 152, 90, 189, 58, - 132, 178, 33, 232, 173, 10, 204, 12, 170, 153, 224, 188, 199, 204, - 3, 90, 112, 222, 99, 67, 71, 181, 224, 188, 199, 142, 159, 32, - 87, 100, 240, 221, 69, 243, 140, 59, 125, 47, 83, 145, 209, 129, - 244, 136, 185, 139, 230, 17, 45, 98, 238, 34, 27, 215, 34, 230, - 46, 158, 158, 18, 49, 99, 132, 90, 115, 230, 67, 238, 249, 123, - 120, 101, 139, 206, 38, 223, 73, 114, 188, 41, 38, 41, 131, 90, - 115, 71, 39, 36, 101, 81, 107, 110, 234, 44, 249, 142, 33, 2, - 213, 172, 55, 155, 35, 238, 159, 25, 247, 240, 214, 212, 123, 178, - 162, 57, 247, 192, 176, 93, 171, 233, 222, 250, 52, 13, 11, 227, - 86, 184, 128, 192, 79, 8, 79, 214, 209, 244, 226, 117, 248, 212, - 113, 181, 12, 85, 248, 124, 111, 171, 168, 64, 135, 184, 236, 83, - 241, 66, 40, 110, 28, 7, 85, 168, 213, 233, 85, 21, 248, 147, - 114, 42, 114, 161, 166, 46, 227, 56, 248, 139, 9, 43, 3, 168, - 57, 198, 245, 166, 225, 221, 106, 126, 58, 115, 124, 212, 114, 69, - 116, 26, 212, 122, 243, 161, 130, 164, 44, 106, 189, 249, 196, 48, - 249, 41, 67, 68, 212, 89, 79, 254, 215, 24, 204, 214, 37, 35, - 243, 20, 134, 16, 4, 230, 41, 12, 33, 136, 203, 179, 158, 60, - 57, 66, 254, 19, 6, 44, 216, 239, 104, 139, 12, 247, 207, 141, - 187, 18, 1, 228, 58, 220, 67, 0, 136, 235, 21, 46, 4, 200, - 213, 117, 151, 18, 0, 187, 36, 115, 91, 68, 122, 19, 98, 97, - 197, 76, 139, 66, 206, 58, 128, 192, 16, 42, 65, 98, 144, 117, - 192, 152, 167, 241, 161, 210, 66, 229, 202, 47, 105, 169, 123, 15, - 165, 72, 107, 239, 200, 247, 145, 191, 3, 111, 79, 190, 141, 218, - 171, 230, 166, 229, 254, 133, 193, 46, 70, 213, 157, 76, 217, 34, - 81, 211, 76, 66, 3, 201, 28, 38, 136, 124, 81, 170, 22, 27, - 1, 233, 91, 60, 7, 86, 194, 82, 26, 18, 126, 146, 9, 181, - 74, 222, 32, 161, 170, 253, 198, 40, 111, 70, 221, 56, 146, 54, - 248, 106, 207, 200, 95, 1, 140, 105, 118, 57, 221, 215, 50, 109, - 168, 150, 247, 104, 4, 65, 165, 0, 253, 102, 53, 223, 69, 158, - 145, 160, 115, 101, 251, 160, 187, 204, 102, 202, 73, 84, 107, 54, - 252, 76, 189, 45, 245, 18, 24, 109, 164, 85, 167, 23, 94, 70, - 97, 255, 38, 186, 129, 14, 157, 212, 25, 184, 186, 178, 77, 52, - 184, 186, 114, 231, 160, 6, 87, 87, 62, 48, 68, 126, 194, 144, - 120, 117, 235, 246, 1, 247, 37, 131, 205, 106, 209, 245, 122, 71, - 74, 236, 70, 226, 175, 53, 107, 24, 49, 158, 136, 146, 86, 30, - 246, 15, 194, 105, 188, 52, 179, 148, 200, 94, 242, 45, 106, 241, - 210, 226, 72, 24, 85, 131, 184, 200, 18, 239, 217, 103, 189, 234, - 214, 232, 180, 240, 101, 202, 102, 212, 228, 113, 109, 106, 163, 25, - 110, 38, 41, 208, 157, 195, 187, 214, 161, 1, 221, 173, 19, 170, - 1, 221, 173, 239, 219, 79, 102, 36, 208, 221, 179, 246, 1, 247, - 44, 34, 226, 204, 46, 179, 27, 75, 243, 173, 163, 96, 193, 26, - 11, 160, 242, 126, 35, 18, 149, 55, 174, 204, 46, 167, 128, 117, - 14, 111, 131, 104, 128, 117, 207, 118, 82, 13, 176, 238, 217, 125, - 251, 65, 14, 1, 188, 186, 208, 116, 95, 93, 14, 145, 11, 185, - 164, 235, 244, 25, 48, 182, 48, 3, 198, 22, 10, 185, 7, 193, - 216, 194, 161, 131, 100, 4, 32, 200, 156, 152, 43, 192, 238, 33, - 54, 35, 48, 179, 224, 24, 214, 66, 33, 53, 240, 177, 56, 191, - 31, 80, 50, 1, 123, 172, 105, 82, 247, 233, 148, 199, 22, 151, - 199, 67, 15, 156, 47, 58, 183, 73, 239, 197, 107, 102, 54, 132, - 2, 107, 102, 160, 192, 154, 25, 40, 176, 102, 95, 63, 0, 51, - 65, 98, 245, 45, 243, 125, 134, 229, 30, 72, 243, 170, 145, 139, - 192, 194, 32, 91, 4, 125, 229, 86, 123, 55, 217, 36, 57, 78, - 241, 193, 60, 111, 119, 187, 79, 195, 247, 133, 7, 32, 156, 49, - 241, 223, 221, 244, 133, 7, 78, 211, 156, 180, 51, 34, 97, 35, - 96, 25, 199, 107, 51, 113, 236, 237, 140, 138, 179, 83, 43, 37, - 130, 175, 238, 33, 237, 248, 50, 131, 191, 45, 159, 210, 38, 181, - 158, 239, 236, 34, 159, 48, 68, 111, 12, 106, 253, 136, 125, 204, - 125, 191, 161, 50, 188, 134, 19, 124, 1, 4, 250, 44, 201, 25, - 133, 134, 211, 64, 166, 187, 67, 100, 155, 56, 53, 177, 5, 117, - 63, 39, 170, 81, 37, 1, 133, 47, 8, 215, 39, 158, 77, 162, - 112, 85, 211, 254, 146, 85, 209, 239, 173, 106, 218, 115, 3, 122, - 246, 96, 74, 155, 212, 250, 145, 163, 5, 190, 210, 177, 231, 38, - 4, 202, 15, 242, 174, 95, 129, 190, 202, 193, 131, 107, 119, 219, - 175, 213, 88, 53, 170, 52, 183, 96, 219, 47, 17, 54, 191, 85, - 199, 234, 3, 32, 213, 78, 107, 99, 201, 34, 59, 101, 71, 80, - 246, 18, 31, 58, 62, 81, 243, 154, 97, 101, 195, 143, 39, 50, - 61, 151, 48, 87, 149, 10, 22, 153, 51, 81, 173, 225, 93, 235, - 77, 47, 64, 95, 233, 0, 57, 38, 48, 228, 236, 15, 24, 230, - 160, 187, 79, 226, 227, 105, 40, 114, 194, 183, 110, 154, 6, 198, - 235, 231, 37, 9, 15, 117, 244, 74, 18, 226, 245, 233, 128, 242, - 67, 188, 180, 143, 188, 225, 94, 252, 16, 96, 47, 187, 189, 3, - 226, 80, 171, 11, 1, 106, 2, 8, 131, 252, 15, 230, 240, 40, - 188, 147, 12, 45, 249, 245, 40, 214, 210, 205, 147, 37, 68, 176, - 163, 51, 136, 95, 47, 167, 119, 200, 0, 179, 242, 131, 119, 182, - 244, 45, 117, 54, 210, 150, 10, 87, 200, 193, 61, 154, 199, 90, - 41, 116, 140, 244, 107, 237, 3, 100, 59, 190, 164, 99, 169, 55, - 109, 228, 26, 191, 92, 248, 11, 131, 156, 192, 150, 210, 184, 174, - 5, 255, 166, 95, 83, 218, 133, 236, 245, 154, 110, 9, 199, 46, - 95, 221, 171, 203, 119, 213, 218, 237, 141, 228, 247, 211, 82, 60, - 245, 109, 131, 216, 124, 67, 164, 49, 233, 223, 53, 127, 180, 120, - 251, 225, 236, 254, 138, 238, 158, 110, 128, 219, 126, 148, 66, 27, - 109, 146, 7, 239, 60, 55, 244, 220, 107, 158, 79, 119, 255, 46, - 35, 252, 28, 103, 230, 66, 219, 107, 180, 228, 126, 162, 7, 11, - 7, 78, 255, 208, 144, 251, 67, 67, 238, 253, 50, 228, 158, 72, - 13, 185, 87, 84, 217, 64, 101, 145, 229, 127, 254, 172, 69, 204, - 92, 27, 181, 89, 219, 168, 225, 254, 164, 197, 150, 69, 205, 29, - 8, 170, 230, 235, 162, 85, 174, 98, 169, 231, 189, 82, 11, 64, - 78, 13, 197, 135, 0, 117, 152, 203, 151, 77, 16, 166, 54, 33, - 144, 20, 174, 92, 93, 89, 185, 206, 54, 124, 175, 138, 248, 157, - 24, 96, 186, 9, 97, 41, 252, 231, 165, 235, 179, 66, 196, 22, - 193, 165, 65, 197, 135, 218, 111, 55, 66, 222, 150, 31, 54, 2, - 76, 246, 193, 202, 81, 187, 106, 210, 16, 8, 168, 45, 138, 37, - 18, 60, 135, 103, 179, 46, 159, 61, 194, 219, 25, 135, 62, 61, - 42, 116, 91, 189, 151, 137, 134, 204, 114, 51, 144, 101, 169, 170, - 101, 125, 167, 224, 247, 175, 226, 253, 124, 61, 174, 206, 46, 94, - 91, 153, 123, 219, 10, 145, 168, 137, 151, 35, 17, 48, 161, 5, - 110, 20, 217, 205, 32, 9, 52, 137, 103, 61, 104, 108, 52, 203, - 32, 226, 192, 30, 193, 255, 111, 188, 190, 51, 81, 174, 69, 101, - 41, 229, 224, 180, 78, 232, 47, 1, 153, 134, 16, 43, 7, 230, - 231, 124, 23, 57, 65, 236, 28, 228, 14, 21, 204, 99, 69, 247, - 0, 195, 61, 44, 105, 253, 88, 93, 196, 201, 9, 148, 250, 220, - 1, 73, 153, 212, 42, 12, 157, 150, 148, 69, 173, 99, 189, 35, - 164, 1, 13, 26, 212, 30, 54, 71, 70, 220, 53, 213, 96, 26, - 9, 60, 158, 77, 233, 229, 106, 244, 138, 50, 139, 225, 43, 91, - 110, 41, 194, 222, 178, 107, 199, 102, 65, 152, 52, 124, 175, 170, - 250, 199, 133, 180, 225, 220, 113, 73, 153, 212, 26, 62, 241, 184, - 164, 44, 106, 141, 244, 30, 39, 4, 29, 7, 167, 218, 74, 134, - 178, 223, 159, 202, 51, 144, 162, 65, 26, 30, 55, 135, 221, 131, - 40, 110, 74, 1, 94, 241, 112, 106, 70, 183, 249, 141, 138, 202, - 81, 107, 92, 165, 143, 242, 22, 199, 247, 23, 52, 163, 250, 248, - 137, 147, 240, 94, 131, 218, 167, 219, 206, 26, 74, 131, 63, 157, - 63, 74, 254, 169, 33, 245, 214, 51, 230, 136, 251, 60, 91, 8, - 18, 144, 192, 118, 193, 177, 136, 68, 166, 74, 54, 97, 161, 198, - 153, 18, 245, 141, 68, 105, 28, 132, 179, 188, 64, 225, 245, 171, - 192, 136, 187, 84, 40, 5, 181, 45, 150, 73, 170, 223, 218, 188, - 43, 186, 182, 123, 166, 179, 95, 211, 118, 207, 208, 99, 154, 182, - 123, 230, 228, 48, 12, 205, 164, 246, 27, 248, 17, 36, 181, 165, - 55, 228, 199, 33, 121, 211, 68, 24, 248, 147, 238, 21, 45, 28, - 189, 149, 3, 244, 9, 190, 43, 147, 167, 9, 83, 126, 78, 152, - 60, 81, 49, 58, 39, 76, 158, 168, 24, 157, 59, 126, 66, 10, - 163, 255, 111, 0, 0, 0, 255, 255, 136, 130, 148, 137, 113, 186, - 1, 0}, + 31, 27, 32, 131, 9, 3, 220, 58, 78, 134, 94, 180, 119, 236, + 77, 185, 168, 226, 156, 24, 132, 180, 155, 98, 97, 53, 71, 14, + 96, 22, 191, 29, 177, 96, 179, 234, 218, 97, 136, 76, 203, 96, + 86, 11, 190, 173, 194, 167, 69, 249, 197, 122, 152, 140, 99, 137, + 102, 219, 141, 156, 150, 203, 54, 235, 120, 43, 145, 36, 41, 27, + 131, 28, 55, 68, 6, 160, 40, 180, 150, 200, 81, 44, 38, 238, + 161, 179, 77, 246, 158, 182, 237, 134, 155, 182, 87, 227, 183, 96, + 15, 0, 130, 203, 250, 132, 86, 57, 4, 25, 175, 138, 124, 37, + 204, 182, 224, 213, 240, 98, 236, 69, 114, 16, 177, 136, 19, 242, + 234, 54, 171, 222, 222, 108, 71, 245, 71, 39, 14, 39, 235, 71, + 10, 249, 133, 129, 69, 200, 178, 17, 213, 31, 181, 214, 200, 16, + 116, 70, 211, 121, 137, 109, 214, 253, 0, 231, 208, 145, 125, 84, + 83, 130, 131, 197, 85, 81, 224, 134, 95, 99, 23, 83, 107, 55, + 75, 165, 165, 202, 160, 196, 114, 197, 15, 64, 160, 26, 190, 98, + 240, 32, 23, 168, 134, 47, 217, 251, 48, 25, 175, 86, 121, 155, + 157, 234, 166, 88, 140, 133, 19, 217, 46, 102, 85, 171, 87, 121, + 6, 33, 227, 161, 117, 129, 220, 23, 51, 43, 89, 112, 108, 79, + 43, 123, 139, 62, 76, 198, 91, 157, 189, 5, 173, 174, 26, 91, + 157, 222, 98, 143, 144, 3, 173, 237, 214, 222, 114, 167, 146, 229, + 172, 214, 118, 171, 183, 224, 73, 92, 153, 11, 215, 189, 137, 251, + 147, 217, 19, 31, 172, 34, 201, 86, 171, 155, 204, 179, 183, 92, + 182, 105, 7, 204, 179, 195, 137, 99, 152, 217, 140, 130, 54, 171, + 140, 84, 171, 37, 252, 184, 128, 223, 172, 83, 100, 204, 223, 122, + 177, 202, 37, 114, 179, 21, 176, 186, 115, 103, 226, 65, 100, 239, + 40, 124, 64, 121, 188, 137, 201, 214, 52, 201, 86, 195, 109, 59, + 104, 161, 74, 14, 91, 118, 149, 77, 156, 228, 89, 121, 250, 138, + 76, 134, 17, 17, 238, 58, 245, 72, 98, 156, 228, 35, 2, 211, + 4, 182, 41, 146, 5, 78, 116, 85, 60, 133, 217, 70, 90, 219, + 173, 100, 189, 39, 200, 48, 228, 140, 43, 157, 230, 134, 91, 107, + 59, 81, 227, 57, 114, 16, 50, 53, 89, 100, 215, 236, 200, 78, + 228, 46, 96, 110, 96, 251, 13, 241, 177, 139, 206, 160, 189, 213, + 81, 130, 53, 195, 233, 132, 52, 41, 90, 111, 155, 113, 158, 191, + 72, 134, 146, 114, 111, 13, 16, 46, 249, 89, 13, 140, 160, 197, + 213, 37, 48, 95, 158, 43, 101, 117, 48, 163, 150, 203, 235, 165, + 205, 202, 198, 202, 122, 249, 70, 41, 107, 36, 12, 251, 235, 102, + 230, 161, 236, 36, 88, 13, 35, 221, 43, 53, 235, 49, 114, 191, + 220, 86, 9, 89, 180, 185, 235, 4, 56, 32, 155, 54, 159, 28, + 149, 252, 28, 16, 185, 214, 88, 244, 140, 19, 136, 0, 24, 214, + 50, 57, 230, 249, 155, 50, 220, 200, 102, 188, 161, 181, 105, 87, + 171, 44, 12, 125, 62, 17, 42, 44, 71, 60, 127, 77, 100, 142, + 103, 136, 5, 145, 181, 71, 124, 141, 187, 137, 239, 97, 50, 208, + 180, 91, 155, 204, 139, 130, 14, 218, 231, 153, 74, 166, 105, 183, + 184, 135, 209, 223, 196, 50, 233, 186, 153, 49, 179, 169, 235, 102, + 38, 149, 77, 95, 55, 51, 233, 108, 255, 117, 51, 147, 201, 14, + 92, 55, 51, 3, 89, 146, 255, 184, 73, 134, 146, 22, 60, 44, + 136, 170, 56, 135, 113, 23, 165, 189, 14, 84, 201, 220, 197, 69, + 152, 220, 46, 166, 185, 185, 92, 225, 37, 193, 176, 0, 241, 99, + 220, 60, 201, 84, 4, 100, 93, 37, 233, 23, 67, 196, 157, 70, + 220, 251, 237, 6, 38, 112, 95, 95, 67, 228, 3, 215, 215, 54, + 87, 86, 43, 55, 22, 150, 43, 162, 184, 117, 136, 152, 174, 253, + 82, 167, 123, 26, 196, 36, 171, 72, 70, 219, 222, 14, 11, 156, + 186, 195, 106, 155, 152, 107, 52, 153, 107, 36, 254, 186, 12, 249, + 239, 177, 27, 15, 17, 115, 151, 217, 183, 187, 39, 43, 76, 122, + 27, 135, 211, 44, 73, 33, 127, 45, 66, 4, 135, 179, 125, 86, + 134, 152, 139, 171, 21, 24, 82, 89, 50, 196, 83, 55, 111, 150, + 75, 139, 165, 172, 158, 127, 152, 164, 57, 211, 96, 184, 41, 182, + 101, 251, 4, 40, 112, 104, 242, 235, 198, 141, 203, 165, 74, 86, + 223, 35, 44, 249, 144, 12, 37, 45, 249, 191, 153, 229, 252, 127, + 167, 145, 193, 132, 101, 14, 38, 149, 237, 186, 254, 238, 166, 237, + 58, 118, 40, 68, 137, 96, 210, 2, 164, 220, 107, 215, 253, 13, + 13, 178, 84, 54, 157, 255, 97, 141, 100, 123, 77, 227, 30, 50, + 181, 191, 77, 50, 243, 159, 210, 200, 72, 183, 61, 220, 67, 222, + 241, 191, 85, 242, 254, 79, 157, 12, 119, 89, 193, 247, 74, 221, + 123, 200, 152, 83, 99, 77, 188, 155, 93, 237, 108, 186, 108, 135, + 185, 19, 121, 84, 50, 123, 183, 37, 187, 106, 40, 150, 227, 114, + 203, 80, 236, 226, 120, 121, 169, 116, 227, 230, 234, 122, 105, 101, + 241, 217, 205, 141, 149, 167, 86, 86, 159, 89, 169, 100, 157, 158, + 108, 111, 227, 176, 191, 73, 178, 189, 68, 89, 247, 147, 253, 200, + 202, 246, 89, 227, 100, 116, 101, 117, 115, 173, 188, 84, 218, 44, + 93, 185, 82, 90, 92, 95, 227, 59, 39, 42, 247, 122, 215, 0, + 207, 127, 210, 32, 227, 251, 80, 98, 45, 136, 53, 15, 95, 134, + 205, 220, 11, 245, 69, 176, 58, 110, 218, 65, 36, 150, 72, 211, + 36, 171, 174, 182, 4, 73, 31, 212, 202, 104, 156, 206, 55, 165, + 10, 196, 146, 215, 209, 54, 29, 47, 74, 120, 163, 154, 149, 172, + 252, 82, 246, 34, 149, 91, 198, 61, 74, 228, 230, 225, 109, 178, + 242, 139, 202, 125, 156, 12, 241, 51, 229, 132, 19, 170, 86, 25, + 228, 105, 42, 75, 151, 167, 44, 204, 203, 67, 221, 126, 178, 147, + 100, 212, 110, 52, 2, 64, 46, 17, 241, 149, 205, 136, 74, 198, + 140, 185, 235, 36, 35, 249, 0, 147, 61, 112, 98, 179, 197, 151, + 235, 250, 212, 64, 37, 227, 201, 143, 199, 201, 144, 19, 110, 198, + 199, 0, 58, 213, 167, 50, 149, 65, 39, 84, 91, 168, 249, 159, + 208, 201, 72, 247, 49, 134, 181, 68, 50, 174, 184, 234, 42, 206, + 208, 166, 222, 228, 228, 163, 184, 44, 242, 87, 84, 201, 220, 191, + 208, 72, 70, 38, 91, 7, 137, 217, 178, 163, 109, 68, 151, 186, + 172, 103, 181, 10, 194, 144, 30, 182, 108, 15, 69, 64, 164, 3, + 12, 253, 234, 50, 187, 134, 203, 38, 188, 17, 24, 133, 178, 95, + 69, 250, 162, 72, 182, 78, 147, 177, 40, 176, 29, 183, 43, 47, + 143, 82, 148, 149, 31, 84, 230, 139, 228, 144, 196, 91, 99, 145, + 93, 221, 102, 181, 184, 80, 26, 183, 71, 238, 23, 25, 150, 196, + 119, 89, 54, 255, 91, 26, 25, 147, 11, 189, 154, 98, 214, 13, + 66, 108, 207, 243, 163, 36, 187, 246, 138, 242, 158, 114, 197, 5, + 85, 168, 146, 64, 144, 107, 18, 18, 127, 185, 43, 219, 142, 145, + 65, 113, 70, 133, 7, 157, 124, 107, 128, 240, 36, 88, 17, 90, + 7, 72, 106, 139, 53, 28, 79, 236, 60, 115, 64, 110, 224, 152, + 106, 3, 231, 242, 223, 221, 223, 57, 57, 219, 179, 61, 17, 94, + 211, 158, 155, 121, 83, 15, 229, 216, 186, 237, 242, 79, 206, 245, + 250, 39, 87, 88, 221, 101, 24, 112, 236, 250, 191, 253, 77, 157, + 244, 91, 169, 201, 190, 79, 244, 107, 228, 167, 70, 209, 59, 121, + 242, 29, 239, 228, 119, 188, 147, 223, 241, 78, 126, 199, 59, 249, + 29, 239, 228, 119, 188, 147, 191, 117, 239, 228, 249, 127, 171, 139, + 136, 108, 23, 233, 109, 230, 69, 190, 247, 119, 98, 197, 78, 167, + 158, 194, 36, 250, 180, 29, 212, 236, 105, 66, 233, 101, 59, 228, + 97, 198, 252, 192, 105, 56, 158, 237, 238, 157, 128, 120, 160, 40, + 140, 9, 76, 215, 108, 239, 69, 187, 67, 175, 110, 179, 166, 189, + 107, 71, 5, 122, 157, 213, 235, 116, 137, 251, 118, 202, 112, 190, + 202, 51, 75, 236, 13, 37, 66, 152, 58, 110, 236, 96, 219, 19, + 88, 40, 164, 117, 116, 248, 114, 60, 202, 103, 100, 204, 45, 3, + 104, 185, 78, 45, 153, 44, 157, 79, 163, 192, 246, 66, 23, 221, + 181, 106, 78, 192, 240, 142, 106, 228, 83, 155, 238, 227, 206, 68, + 148, 22, 177, 189, 142, 208, 137, 142, 199, 167, 208, 68, 88, 40, + 145, 39, 224, 230, 16, 134, 4, 226, 145, 166, 194, 105, 229, 251, + 61, 173, 124, 191, 79, 247, 45, 73, 143, 110, 248, 201, 19, 11, + 177, 71, 119, 65, 57, 111, 207, 244, 157, 145, 30, 221, 240, 147, + 39, 22, 251, 30, 145, 174, 227, 240, 147, 39, 206, 198, 30, 221, + 240, 147, 39, 206, 197, 254, 228, 115, 202, 159, 252, 92, 223, 17, + 242, 126, 162, 103, 6, 240, 103, 46, 162, 189, 174, 99, 42, 62, + 143, 220, 15, 231, 225, 112, 194, 22, 99, 53, 186, 197, 170, 54, + 76, 225, 129, 50, 76, 102, 182, 64, 28, 8, 181, 221, 134, 31, + 56, 209, 118, 51, 164, 53, 223, 155, 140, 232, 174, 31, 220, 166, + 181, 54, 186, 122, 110, 249, 126, 20, 70, 1, 15, 56, 94, 36, + 228, 69, 238, 112, 254, 104, 223, 69, 45, 247, 130, 188, 114, 201, + 69, 72, 68, 71, 11, 176, 187, 248, 17, 205, 158, 190, 89, 99, + 17, 78, 25, 42, 218, 5, 19, 29, 77, 184, 0, 80, 140, 8, + 17, 132, 232, 111, 39, 253, 164, 31, 205, 28, 194, 235, 245, 232, + 128, 120, 65, 159, 146, 222, 205, 38, 64, 73, 63, 232, 11, 131, + 15, 36, 252, 160, 47, 28, 59, 145, 240, 131, 190, 240, 208, 36, + 153, 149, 110, 208, 207, 105, 185, 19, 116, 73, 136, 38, 127, 205, + 165, 217, 114, 89, 196, 146, 98, 215, 229, 241, 123, 24, 61, 181, + 209, 127, 247, 9, 253, 112, 190, 192, 5, 147, 223, 211, 76, 62, + 220, 18, 248, 126, 148, 48, 74, 162, 128, 49, 229, 209, 107, 66, + 217, 100, 156, 160, 39, 6, 199, 18, 254, 189, 79, 88, 7, 19, + 254, 189, 79, 28, 202, 9, 175, 89, 205, 50, 158, 212, 31, 200, + 31, 21, 247, 75, 235, 190, 159, 47, 224, 159, 226, 150, 29, 228, + 11, 148, 69, 213, 216, 193, 215, 132, 204, 73, 119, 223, 39, 85, + 29, 208, 144, 39, 173, 67, 9, 119, 223, 39, 143, 28, 37, 231, + 164, 187, 239, 101, 253, 120, 110, 146, 174, 200, 217, 93, 116, 71, + 51, 246, 223, 87, 131, 58, 246, 252, 53, 161, 88, 210, 15, 248, + 178, 170, 13, 200, 190, 108, 29, 73, 248, 1, 95, 62, 70, 201, + 119, 73, 63, 224, 37, 125, 42, 183, 68, 209, 83, 130, 133, 50, + 190, 1, 119, 12, 140, 43, 21, 52, 200, 168, 100, 210, 13, 144, + 219, 75, 201, 0, 7, 154, 110, 152, 128, 51, 233, 60, 188, 36, + 188, 50, 185, 243, 240, 210, 88, 62, 225, 60, 188, 116, 114, 146, + 188, 36, 157, 135, 175, 234, 15, 229, 154, 189, 164, 236, 50, 251, + 246, 189, 17, 82, 228, 129, 202, 185, 169, 52, 131, 6, 59, 104, + 214, 166, 211, 16, 206, 187, 190, 231, 118, 138, 221, 33, 20, 132, + 183, 49, 86, 174, 160, 148, 101, 92, 85, 52, 155, 154, 101, 92, + 29, 163, 9, 191, 228, 171, 39, 78, 146, 243, 210, 47, 249, 186, + 94, 200, 77, 163, 181, 31, 249, 173, 25, 220, 151, 233, 210, 174, + 73, 29, 28, 59, 40, 155, 80, 48, 233, 174, 124, 125, 48, 151, + 112, 87, 190, 126, 120, 50, 225, 174, 124, 253, 212, 105, 28, 117, + 154, 158, 182, 140, 167, 244, 25, 241, 41, 109, 2, 36, 145, 164, + 225, 155, 24, 117, 154, 158, 214, 44, 227, 169, 99, 83, 18, 50, + 44, 227, 169, 211, 5, 129, 164, 223, 50, 150, 245, 162, 248, 212, + 111, 2, 36, 145, 244, 167, 45, 99, 121, 240, 184, 132, 52, 203, + 88, 206, 79, 75, 200, 176, 140, 229, 194, 140, 64, 146, 177, 140, + 27, 10, 73, 198, 4, 72, 34, 201, 164, 45, 227, 198, 224, 49, + 9, 105, 150, 113, 131, 74, 36, 25, 195, 50, 110, 40, 36, 3, + 150, 177, 170, 159, 16, 159, 6, 76, 128, 36, 146, 129, 180, 101, + 172, 14, 202, 97, 56, 160, 89, 198, 234, 253, 178, 113, 3, 134, + 101, 172, 30, 207, 147, 255, 87, 67, 44, 196, 50, 54, 244, 217, + 220, 191, 211, 120, 144, 61, 238, 63, 44, 84, 91, 168, 130, 252, + 119, 205, 57, 246, 22, 204, 53, 32, 66, 106, 254, 77, 172, 93, + 18, 225, 76, 67, 187, 206, 48, 156, 94, 19, 86, 47, 216, 145, + 204, 139, 156, 128, 137, 106, 228, 180, 181, 109, 7, 77, 80, 163, + 34, 8, 37, 161, 245, 182, 39, 222, 45, 72, 4, 184, 138, 167, + 137, 144, 206, 204, 240, 16, 121, 9, 170, 226, 247, 151, 48, 34, + 4, 204, 252, 98, 157, 216, 68, 111, 115, 223, 119, 67, 37, 66, + 196, 132, 102, 43, 40, 109, 25, 27, 131, 82, 163, 16, 205, 50, + 54, 114, 167, 36, 100, 88, 198, 198, 76, 145, 60, 143, 220, 26, + 180, 140, 103, 245, 7, 114, 55, 121, 188, 6, 244, 16, 85, 131, + 62, 161, 112, 249, 103, 117, 105, 72, 132, 157, 195, 215, 164, 48, + 219, 124, 30, 13, 15, 14, 156, 205, 43, 178, 6, 77, 192, 175, + 160, 148, 101, 60, 171, 20, 209, 160, 102, 25, 207, 90, 210, 17, + 127, 208, 176, 140, 103, 15, 31, 37, 147, 220, 47, 253, 249, 190, + 247, 105, 185, 195, 93, 83, 129, 176, 99, 208, 249, 59, 225, 60, + 254, 124, 230, 126, 148, 31, 116, 30, 127, 65, 63, 156, 240, 6, + 127, 65, 79, 6, 2, 123, 65, 212, 204, 189, 193, 95, 16, 74, + 157, 123, 131, 191, 112, 40, 39, 144, 104, 150, 113, 75, 63, 37, + 131, 117, 153, 0, 169, 176, 94, 105, 203, 184, 37, 36, 153, 135, + 245, 186, 69, 79, 38, 194, 122, 221, 154, 154, 22, 72, 116, 203, + 176, 197, 112, 208, 81, 25, 219, 10, 9, 12, 90, 91, 33, 129, + 234, 108, 49, 28, 120, 124, 45, 91, 12, 7, 4, 170, 250, 105, + 25, 21, 203, 4, 72, 197, 207, 74, 91, 70, 85, 168, 8, 30, + 63, 171, 122, 248, 33, 18, 199, 207, 170, 78, 159, 18, 72, 76, + 203, 168, 9, 21, 161, 163, 94, 171, 41, 36, 102, 218, 50, 106, + 66, 69, 240, 216, 80, 53, 161, 34, 120, 108, 168, 218, 233, 2, + 25, 2, 36, 70, 159, 101, 214, 245, 219, 6, 255, 102, 0, 247, + 234, 100, 130, 28, 38, 105, 128, 128, 237, 13, 243, 104, 126, 136, + 7, 48, 17, 145, 213, 71, 72, 63, 255, 104, 194, 215, 161, 24, + 78, 89, 70, 99, 216, 138, 97, 205, 50, 26, 227, 19, 49, 108, + 88, 70, 227, 240, 17, 133, 92, 179, 140, 109, 243, 112, 126, 136, + 150, 238, 236, 69, 14, 221, 179, 157, 64, 14, 211, 234, 118, 2, + 57, 116, 209, 246, 248, 193, 24, 54, 44, 99, 251, 80, 142, 12, + 11, 228, 186, 101, 188, 104, 206, 170, 207, 192, 172, 23, 19, 232, + 160, 171, 94, 28, 206, 199, 176, 102, 25, 47, 158, 56, 21, 195, + 134, 101, 188, 56, 83, 20, 156, 78, 89, 134, 171, 250, 28, 52, + 186, 171, 56, 13, 26, 221, 21, 195, 81, 71, 141, 238, 230, 100, + 159, 131, 70, 119, 85, 159, 167, 45, 195, 211, 103, 197, 39, 208, + 232, 158, 66, 2, 26, 221, 83, 130, 3, 26, 221, 163, 82, 78, + 65, 163, 123, 138, 146, 126, 203, 104, 233, 82, 28, 64, 163, 183, + 20, 18, 208, 232, 45, 69, 9, 104, 244, 86, 238, 184, 132, 12, + 203, 104, 61, 120, 146, 252, 20, 70, 166, 51, 52, 203, 108, 235, + 119, 140, 220, 15, 105, 180, 34, 131, 233, 200, 173, 43, 26, 217, + 13, 113, 197, 44, 44, 210, 202, 62, 169, 42, 126, 180, 220, 118, + 0, 245, 37, 194, 75, 225, 173, 66, 177, 5, 204, 67, 231, 168, + 41, 28, 195, 157, 137, 129, 158, 64, 44, 50, 53, 237, 14, 110, + 20, 81, 127, 135, 5, 174, 221, 146, 87, 63, 12, 232, 232, 54, + 185, 95, 72, 13, 26, 131, 59, 119, 17, 73, 110, 238, 237, 168, + 110, 230, 6, 223, 142, 146, 26, 110, 242, 237, 40, 145, 228, 70, + 223, 142, 18, 73, 52, 251, 118, 239, 34, 146, 220, 206, 219, 77, + 32, 7, 145, 220, 77, 32, 7, 74, 119, 149, 72, 114, 107, 111, + 87, 41, 159, 140, 101, 116, 244, 130, 232, 15, 152, 70, 59, 170, + 231, 96, 26, 237, 12, 78, 72, 72, 179, 140, 206, 161, 73, 9, + 25, 150, 209, 57, 117, 154, 124, 128, 199, 20, 28, 176, 140, 151, + 245, 147, 185, 118, 204, 63, 62, 59, 225, 6, 81, 65, 93, 36, + 237, 237, 31, 21, 253, 107, 159, 174, 128, 229, 31, 15, 32, 140, + 59, 80, 24, 218, 27, 39, 37, 22, 203, 132, 239, 85, 153, 186, + 140, 3, 211, 247, 203, 138, 248, 129, 148, 101, 188, 172, 212, 47, + 76, 223, 47, 91, 82, 146, 97, 250, 126, 57, 255, 32, 25, 196, + 48, 116, 169, 247, 247, 125, 143, 166, 169, 136, 115, 239, 207, 28, + 37, 171, 34, 226, 156, 249, 247, 52, 253, 98, 110, 129, 175, 109, + 196, 243, 54, 145, 143, 209, 155, 69, 216, 103, 39, 162, 53, 159, + 133, 176, 84, 10, 88, 213, 111, 120, 206, 75, 12, 163, 247, 20, + 49, 196, 182, 52, 76, 135, 121, 112, 57, 19, 49, 42, 48, 13, + 224, 224, 3, 18, 212, 0, 60, 118, 86, 130, 6, 128, 231, 47, + 144, 231, 128, 176, 148, 101, 126, 72, 211, 15, 229, 110, 208, 69, + 244, 68, 227, 177, 252, 208, 204, 99, 180, 218, 14, 35, 191, 25, + 211, 228, 197, 194, 46, 140, 88, 39, 140, 69, 60, 73, 23, 40, + 91, 35, 213, 7, 200, 135, 39, 120, 197, 169, 62, 140, 76, 53, + 60, 38, 65, 29, 192, 251, 38, 200, 89, 12, 5, 151, 254, 176, + 214, 247, 71, 154, 150, 59, 217, 53, 81, 198, 182, 8, 134, 8, + 82, 125, 136, 113, 129, 96, 157, 245, 97, 45, 115, 132, 140, 16, + 211, 52, 205, 62, 43, 253, 125, 154, 254, 147, 154, 129, 21, 152, + 248, 158, 201, 247, 105, 253, 131, 100, 141, 164, 77, 241, 160, 201, + 247, 107, 230, 129, 220, 34, 157, 227, 55, 123, 165, 72, 193, 40, + 14, 2, 12, 57, 79, 87, 49, 20, 163, 19, 210, 93, 230, 4, + 252, 27, 15, 224, 139, 209, 210, 2, 102, 135, 190, 7, 182, 202, + 40, 233, 231, 72, 53, 196, 58, 26, 39, 232, 144, 96, 141, 147, + 17, 81, 173, 102, 153, 255, 80, 51, 199, 85, 6, 141, 39, 140, + 196, 9, 58, 36, 140, 89, 100, 87, 148, 208, 45, 243, 99, 154, + 57, 158, 107, 96, 204, 158, 231, 156, 198, 115, 118, 67, 62, 176, + 85, 164, 234, 13, 18, 165, 160, 34, 251, 54, 163, 103, 230, 232, + 86, 39, 98, 97, 145, 98, 8, 189, 132, 195, 49, 117, 234, 132, + 170, 215, 71, 18, 6, 143, 235, 220, 102, 110, 39, 209, 24, 254, + 76, 74, 130, 52, 78, 202, 152, 165, 26, 99, 88, 230, 199, 53, + 243, 128, 202, 0, 186, 245, 227, 201, 230, 27, 58, 36, 88, 227, + 170, 49, 166, 101, 190, 250, 29, 107, 204, 217, 249, 123, 111, 12, + 136, 199, 171, 201, 198, 128, 49, 246, 106, 178, 49, 41, 12, 96, + 117, 159, 202, 144, 194, 16, 86, 102, 54, 78, 208, 33, 97, 252, + 128, 42, 145, 182, 204, 215, 146, 37, 210, 26, 38, 196, 37, 210, + 58, 36, 36, 74, 244, 91, 230, 39, 52, 211, 82, 25, 250, 53, + 76, 24, 142, 19, 116, 72, 200, 142, 169, 18, 25, 203, 252, 47, + 147, 44, 206, 104, 152, 16, 179, 56, 163, 67, 130, 53, 78, 190, + 172, 137, 34, 3, 150, 249, 195, 32, 217, 191, 165, 209, 117, 187, + 49, 83, 99, 24, 65, 159, 213, 168, 58, 240, 44, 18, 122, 53, + 240, 219, 241, 123, 109, 241, 9, 60, 154, 187, 160, 63, 187, 226, + 143, 113, 243, 183, 72, 175, 249, 187, 108, 135, 5, 5, 190, 141, + 119, 150, 96, 172, 127, 166, 78, 4, 66, 249, 46, 23, 127, 236, + 102, 139, 169, 199, 185, 80, 175, 241, 8, 89, 88, 241, 46, 174, + 45, 248, 107, 76, 24, 229, 63, 10, 152, 29, 137, 143, 66, 95, + 219, 33, 109, 123, 24, 160, 71, 164, 36, 186, 115, 64, 195, 70, + 198, 221, 57, 160, 67, 194, 216, 56, 153, 17, 92, 32, 150, 249, + 186, 102, 30, 204, 31, 165, 203, 24, 233, 120, 127, 62, 168, 242, + 68, 195, 252, 113, 223, 17, 29, 18, 198, 239, 35, 39, 4, 194, + 65, 203, 252, 12, 176, 117, 156, 174, 176, 93, 96, 202, 142, 122, + 107, 34, 70, 51, 168, 97, 174, 152, 174, 65, 29, 18, 198, 98, + 5, 48, 100, 153, 63, 150, 20, 154, 33, 13, 19, 226, 14, 29, + 210, 33, 193, 138, 133, 102, 216, 50, 63, 155, 84, 25, 195, 24, + 119, 43, 33, 52, 195, 24, 29, 44, 27, 139, 242, 136, 101, 126, + 78, 51, 239, 87, 25, 70, 52, 76, 24, 139, 19, 116, 72, 56, + 112, 80, 149, 24, 181, 204, 31, 79, 150, 24, 213, 48, 33, 46, + 49, 170, 67, 194, 129, 131, 100, 82, 148, 200, 90, 230, 79, 104, + 230, 125, 249, 251, 97, 76, 134, 93, 67, 153, 111, 220, 201, 146, + 89, 13, 115, 198, 13, 204, 234, 144, 96, 29, 80, 168, 198, 44, + 243, 243, 247, 132, 106, 76, 195, 156, 49, 170, 49, 29, 18, 144, + 87, 160, 244, 53, 43, 253, 211, 154, 254, 51, 74, 233, 131, 114, + 253, 105, 173, 127, 136, 156, 194, 154, 192, 126, 50, 255, 43, 205, + 188, 63, 151, 187, 171, 210, 151, 149, 161, 185, 4, 153, 173, 56, + 65, 135, 132, 251, 36, 211, 192, 96, 50, 191, 16, 51, 13, 109, + 32, 72, 136, 75, 128, 46, 255, 66, 178, 132, 110, 153, 95, 76, + 150, 0, 20, 95, 76, 150, 224, 57, 238, 59, 136, 115, 166, 9, + 244, 254, 172, 140, 123, 104, 226, 204, 254, 179, 114, 102, 199, 216, + 162, 230, 207, 106, 131, 99, 18, 212, 0, 180, 14, 74, 208, 0, + 240, 80, 78, 96, 210, 44, 243, 231, 52, 253, 136, 248, 168, 153, + 8, 74, 76, 90, 10, 192, 193, 172, 4, 49, 243, 216, 253, 18, + 52, 0, 204, 29, 22, 152, 116, 203, 252, 82, 76, 19, 104, 244, + 47, 197, 152, 64, 39, 126, 41, 198, 4, 213, 126, 73, 27, 147, + 52, 193, 132, 241, 37, 160, 233, 83, 154, 136, 66, 106, 254, 34, + 216, 27, 223, 175, 209, 114, 157, 170, 187, 83, 24, 53, 145, 69, + 226, 172, 18, 131, 34, 10, 139, 46, 100, 81, 145, 66, 94, 124, + 229, 15, 63, 227, 185, 165, 44, 201, 31, 60, 140, 203, 170, 253, + 105, 30, 193, 65, 221, 222, 41, 208, 228, 221, 31, 48, 220, 227, + 187, 65, 69, 217, 22, 195, 68, 242, 20, 152, 6, 112, 112, 84, + 130, 26, 128, 217, 3, 18, 196, 182, 220, 63, 65, 254, 177, 142, + 77, 51, 45, 243, 87, 53, 157, 230, 62, 175, 227, 102, 157, 92, + 227, 3, 181, 204, 107, 55, 145, 228, 176, 160, 162, 47, 39, 207, + 64, 241, 9, 129, 78, 139, 241, 150, 202, 47, 248, 228, 95, 16, + 133, 242, 225, 142, 201, 226, 100, 65, 60, 85, 81, 111, 187, 110, + 103, 230, 61, 109, 219, 69, 119, 200, 98, 215, 123, 14, 139, 167, + 79, 207, 96, 40, 147, 176, 234, 227, 27, 158, 248, 60, 3, 159, + 37, 229, 185, 105, 221, 17, 135, 191, 56, 31, 240, 167, 37, 235, + 78, 16, 138, 171, 255, 120, 237, 148, 83, 44, 173, 47, 160, 155, + 196, 173, 66, 166, 219, 65, 117, 155, 213, 196, 179, 9, 42, 31, + 218, 180, 204, 195, 167, 14, 197, 123, 149, 24, 89, 212, 247, 241, + 149, 114, 225, 238, 60, 173, 184, 110, 114, 206, 41, 48, 5, 160, + 18, 114, 152, 198, 127, 85, 179, 164, 244, 153, 6, 128, 15, 28, + 35, 127, 23, 153, 158, 178, 204, 95, 211, 244, 99, 185, 150, 136, + 240, 34, 205, 211, 55, 230, 51, 221, 98, 142, 215, 16, 47, 149, + 35, 251, 202, 192, 86, 194, 159, 122, 219, 225, 51, 96, 188, 114, + 176, 61, 143, 5, 24, 198, 90, 74, 157, 162, 61, 101, 34, 1, + 10, 68, 122, 20, 237, 96, 80, 252, 154, 102, 229, 36, 104, 0, + 120, 244, 1, 242, 49, 46, 49, 105, 203, 252, 117, 77, 127, 48, + 247, 1, 46, 49, 34, 40, 175, 20, 20, 181, 209, 215, 181, 155, + 23, 177, 59, 123, 162, 204, 168, 55, 21, 48, 88, 2, 226, 18, + 1, 47, 194, 2, 205, 71, 65, 155, 229, 65, 224, 243, 232, 124, + 151, 23, 57, 196, 243, 222, 61, 245, 136, 251, 135, 188, 26, 140, + 119, 15, 107, 130, 41, 24, 140, 44, 172, 218, 45, 206, 26, 219, + 235, 208, 93, 187, 51, 45, 43, 3, 83, 173, 7, 209, 162, 202, + 207, 201, 226, 126, 35, 152, 147, 62, 241, 56, 61, 51, 255, 40, + 127, 30, 133, 103, 82, 252, 76, 155, 200, 19, 5, 166, 0, 84, + 252, 4, 115, 235, 215, 53, 235, 152, 4, 13, 0, 243, 39, 200, + 223, 231, 202, 165, 223, 50, 127, 83, 211, 143, 231, 118, 96, 20, + 161, 74, 128, 133, 158, 120, 177, 195, 171, 177, 59, 252, 249, 24, + 188, 64, 41, 123, 56, 121, 82, 212, 105, 177, 201, 144, 198, 23, + 153, 121, 248, 152, 34, 77, 110, 191, 58, 124, 255, 14, 108, 85, + 21, 244, 7, 75, 168, 38, 244, 155, 72, 134, 2, 83, 0, 42, + 253, 8, 246, 223, 111, 106, 99, 82, 45, 247, 27, 0, 30, 163, + 228, 47, 120, 19, 50, 150, 249, 219, 208, 132, 127, 175, 241, 248, + 18, 177, 228, 74, 10, 120, 220, 33, 21, 185, 38, 100, 17, 44, + 120, 247, 156, 144, 21, 133, 38, 33, 48, 228, 3, 186, 109, 243, + 172, 54, 205, 171, 27, 163, 121, 177, 178, 227, 145, 76, 37, 254, + 130, 104, 19, 126, 154, 20, 239, 20, 18, 254, 28, 140, 88, 97, + 23, 147, 218, 198, 137, 38, 193, 154, 172, 181, 171, 194, 213, 130, + 251, 148, 0, 170, 201, 144, 211, 191, 213, 145, 207, 127, 162, 54, + 114, 240, 129, 157, 170, 221, 100, 238, 34, 127, 94, 137, 243, 34, + 99, 98, 227, 21, 152, 2, 80, 245, 61, 152, 193, 191, 29, 235, + 129, 140, 1, 224, 3, 84, 76, 81, 3, 150, 249, 175, 52, 253, + 65, 241, 113, 192, 68, 80, 98, 26, 72, 3, 56, 40, 103, 55, + 176, 36, 255, 149, 54, 33, 165, 104, 192, 0, 48, 127, 130, 252, + 220, 0, 162, 34, 150, 249, 31, 52, 253, 100, 238, 179, 3, 200, + 194, 160, 205, 98, 101, 162, 94, 166, 205, 203, 221, 247, 124, 145, + 62, 131, 143, 198, 200, 47, 74, 76, 100, 142, 2, 62, 67, 20, + 5, 118, 245, 118, 40, 158, 193, 169, 50, 10, 230, 104, 80, 195, + 231, 191, 100, 100, 44, 185, 29, 204, 17, 246, 92, 193, 69, 85, + 22, 211, 194, 11, 200, 201, 110, 139, 225, 147, 222, 120, 80, 205, + 165, 59, 242, 9, 13, 157, 6, 106, 12, 159, 250, 110, 77, 146, + 87, 21, 203, 124, 236, 100, 69, 13, 34, 71, 79, 127, 17, 235, + 37, 41, 109, 160, 24, 197, 152, 9, 41, 183, 206, 241, 149, 231, + 124, 216, 241, 162, 109, 22, 57, 213, 60, 255, 94, 16, 46, 69, + 123, 232, 115, 162, 144, 134, 190, 139, 142, 86, 56, 114, 166, 152, + 93, 221, 150, 36, 169, 38, 242, 66, 13, 249, 112, 14, 84, 164, + 170, 224, 53, 76, 23, 233, 154, 76, 17, 68, 133, 252, 177, 142, + 248, 228, 76, 158, 68, 224, 182, 14, 39, 169, 198, 15, 198, 228, + 53, 52, 212, 95, 11, 55, 203, 251, 33, 83, 246, 131, 136, 145, + 101, 215, 35, 208, 253, 174, 75, 243, 1, 179, 93, 209, 210, 80, + 190, 29, 44, 231, 67, 190, 92, 41, 236, 233, 53, 185, 137, 83, + 133, 197, 14, 175, 56, 100, 77, 219, 131, 22, 113, 159, 187, 2, + 17, 239, 167, 122, 190, 55, 163, 66, 211, 116, 227, 149, 143, 43, + 99, 31, 169, 94, 83, 139, 51, 24, 81, 184, 254, 34, 61, 15, + 60, 171, 170, 120, 152, 50, 144, 52, 249, 74, 21, 124, 70, 205, + 176, 27, 248, 17, 75, 200, 51, 204, 20, 158, 31, 225, 65, 137, + 147, 124, 218, 161, 222, 118, 81, 56, 48, 140, 206, 76, 20, 56, + 120, 94, 159, 56, 95, 231, 7, 44, 200, 22, 245, 174, 67, 181, + 67, 119, 25, 65, 61, 188, 167, 77, 189, 157, 139, 207, 182, 20, + 40, 195, 199, 189, 182, 241, 49, 47, 110, 237, 64, 223, 201, 55, + 242, 248, 243, 193, 61, 124, 88, 23, 195, 147, 161, 59, 23, 127, + 26, 67, 61, 230, 37, 189, 18, 162, 120, 179, 173, 106, 123, 147, + 48, 38, 153, 235, 82, 167, 174, 246, 153, 156, 228, 217, 140, 31, + 96, 48, 47, 175, 221, 196, 167, 44, 156, 136, 139, 134, 232, 9, + 217, 159, 164, 183, 17, 32, 24, 184, 84, 158, 239, 145, 235, 80, + 74, 33, 168, 97, 62, 70, 92, 187, 81, 72, 146, 215, 161, 182, + 27, 48, 187, 214, 81, 221, 72, 98, 36, 104, 4, 222, 234, 190, + 45, 126, 75, 233, 78, 98, 162, 214, 82, 96, 10, 64, 101, 185, + 194, 82, 247, 63, 104, 89, 169, 241, 136, 1, 96, 254, 65, 146, + 199, 112, 252, 233, 255, 168, 245, 253, 39, 77, 203, 29, 232, 218, + 122, 147, 173, 25, 228, 161, 248, 205, 255, 168, 101, 142, 160, 178, + 77, 193, 26, 229, 107, 114, 61, 144, 194, 53, 202, 215, 100, 213, + 41, 92, 163, 124, 77, 170, 109, 140, 178, 111, 126, 77, 174, 81, + 48, 204, 190, 249, 53, 185, 70, 73, 193, 98, 225, 79, 165, 218, + 78, 225, 26, 229, 79, 99, 76, 90, 26, 64, 161, 182, 49, 94, + 190, 249, 167, 82, 109, 99, 192, 124, 243, 79, 65, 109, 79, 242, + 136, 249, 255, 89, 235, 251, 71, 58, 127, 84, 64, 53, 194, 139, + 45, 239, 68, 120, 252, 255, 172, 101, 248, 202, 6, 195, 227, 255, + 89, 34, 188, 189, 137, 160, 10, 126, 159, 2, 80, 180, 132, 7, + 191, 255, 51, 217, 18, 30, 252, 254, 207, 100, 75, 48, 248, 253, + 55, 52, 189, 40, 3, 212, 155, 8, 38, 163, 217, 127, 67, 27, + 60, 145, 136, 102, 255, 13, 237, 193, 233, 68, 52, 251, 111, 104, + 133, 25, 129, 73, 183, 204, 191, 212, 116, 153, 23, 150, 21, 127, + 25, 99, 2, 155, 241, 47, 181, 65, 73, 4, 84, 251, 151, 218, + 253, 15, 72, 208, 0, 240, 120, 158, 124, 17, 12, 204, 180, 209, + 103, 165, 63, 168, 235, 223, 163, 27, 185, 31, 214, 247, 57, 250, + 144, 6, 167, 12, 142, 167, 54, 217, 229, 91, 92, 251, 28, 124, + 48, 47, 10, 156, 158, 83, 14, 96, 242, 190, 71, 28, 61, 39, + 28, 116, 5, 84, 141, 112, 199, 229, 35, 182, 134, 209, 33, 171, + 17, 183, 28, 222, 48, 54, 11, 175, 210, 142, 112, 58, 133, 210, + 242, 64, 132, 134, 109, 140, 123, 142, 159, 80, 97, 217, 173, 86, + 224, 183, 2, 199, 142, 248, 25, 119, 50, 172, 153, 56, 229, 118, + 188, 232, 236, 60, 161, 53, 191, 105, 59, 158, 124, 118, 192, 128, + 62, 254, 160, 78, 14, 147, 35, 36, 13, 32, 8, 200, 223, 215, + 247, 156, 191, 192, 218, 61, 205, 143, 4, 225, 243, 80, 156, 144, + 130, 132, 97, 43, 78, 208, 32, 97, 124, 34, 78, 48, 32, 225, + 240, 17, 85, 131, 102, 153, 31, 210, 241, 16, 102, 191, 26, 64, + 144, 62, 148, 172, 1, 22, 238, 31, 74, 214, 160, 33, 130, 241, + 131, 113, 130, 1, 9, 135, 114, 252, 244, 43, 13, 50, 241, 17, + 93, 159, 219, 255, 244, 235, 174, 34, 208, 253, 161, 87, 20, 8, + 216, 116, 56, 182, 196, 247, 94, 113, 160, 96, 63, 219, 129, 136, + 190, 121, 23, 209, 32, 9, 217, 224, 2, 12, 11, 240, 143, 232, + 74, 218, 97, 1, 254, 17, 125, 240, 136, 4, 53, 0, 143, 158, + 150, 32, 182, 172, 56, 75, 92, 108, 167, 105, 153, 31, 213, 245, + 7, 115, 47, 196, 213, 197, 20, 222, 245, 196, 40, 96, 220, 162, + 221, 247, 80, 136, 236, 119, 42, 196, 43, 55, 121, 117, 10, 76, + 1, 168, 116, 5, 44, 90, 63, 170, 139, 133, 74, 26, 23, 173, + 31, 213, 243, 39, 200, 25, 254, 94, 197, 15, 232, 125, 159, 208, + 123, 253, 195, 68, 40, 76, 113, 214, 193, 85, 87, 226, 121, 138, + 31, 208, 51, 220, 216, 197, 167, 26, 94, 209, 133, 214, 234, 71, + 33, 124, 69, 82, 210, 143, 34, 248, 138, 164, 132, 63, 203, 240, + 138, 110, 37, 159, 101, 120, 69, 23, 90, 171, 31, 132, 239, 85, + 93, 236, 17, 245, 163, 176, 189, 26, 99, 2, 81, 123, 85, 23, + 43, 151, 126, 20, 180, 87, 117, 177, 71, 212, 143, 98, 246, 170, + 46, 246, 136, 250, 65, 107, 189, 166, 235, 83, 226, 35, 116, 198, + 107, 49, 38, 220, 55, 215, 7, 37, 197, 80, 237, 107, 250, 145, + 19, 18, 52, 0, 124, 104, 146, 60, 40, 158, 138, 208, 251, 126, + 68, 215, 114, 7, 187, 184, 35, 46, 167, 39, 159, 132, 208, 51, + 15, 96, 229, 248, 36, 196, 167, 36, 67, 50, 200, 144, 79, 201, + 202, 249, 83, 15, 159, 146, 12, 225, 79, 61, 124, 74, 50, 132, + 63, 245, 240, 41, 201, 16, 124, 234, 225, 211, 186, 94, 144, 111, + 50, 152, 8, 170, 7, 28, 210, 0, 14, 210, 196, 3, 14, 159, + 214, 143, 79, 38, 30, 112, 248, 180, 126, 234, 180, 192, 164, 91, + 230, 235, 186, 254, 144, 124, 42, 193, 68, 80, 189, 171, 144, 6, + 112, 240, 80, 226, 93, 133, 215, 245, 220, 241, 196, 187, 10, 175, + 235, 15, 158, 36, 115, 68, 55, 7, 172, 244, 143, 233, 125, 255, + 181, 174, 229, 242, 61, 62, 36, 209, 182, 95, 147, 207, 214, 39, + 153, 3, 235, 155, 31, 211, 51, 71, 145, 144, 1, 96, 206, 103, + 37, 115, 6, 144, 57, 159, 149, 132, 12, 32, 115, 62, 43, 153, + 51, 128, 204, 249, 172, 100, 206, 0, 50, 231, 179, 192, 156, 215, + 52, 68, 165, 89, 230, 231, 117, 253, 120, 238, 31, 104, 180, 236, + 161, 239, 165, 87, 147, 110, 152, 184, 175, 130, 163, 12, 23, 204, + 44, 228, 155, 68, 251, 238, 168, 236, 218, 29, 106, 135, 132, 238, + 27, 94, 73, 109, 178, 20, 232, 86, 59, 146, 55, 29, 234, 96, + 179, 250, 123, 125, 103, 56, 161, 208, 81, 159, 143, 91, 5, 146, + 251, 249, 184, 85, 26, 210, 109, 29, 145, 160, 1, 224, 49, 42, + 248, 163, 91, 230, 79, 234, 122, 94, 124, 132, 142, 250, 201, 24, + 147, 158, 2, 80, 97, 2, 14, 252, 164, 110, 29, 149, 160, 1, + 32, 61, 46, 48, 25, 150, 249, 211, 186, 126, 82, 124, 4, 93, + 246, 211, 49, 38, 208, 101, 63, 173, 15, 78, 72, 80, 3, 240, + 16, 149, 32, 150, 61, 241, 32, 190, 56, 50, 0, 68, 124, 65, + 215, 31, 201, 61, 66, 203, 241, 139, 83, 78, 93, 172, 222, 40, + 143, 13, 2, 139, 21, 30, 109, 67, 166, 75, 255, 104, 89, 167, + 201, 241, 40, 48, 5, 160, 176, 10, 7, 80, 73, 125, 65, 207, + 74, 18, 64, 73, 125, 1, 72, 16, 96, 6, 192, 147, 231, 37, + 216, 15, 224, 220, 195, 130, 192, 148, 101, 254, 204, 126, 4, 242, + 232, 36, 123, 9, 20, 233, 189, 4, 166, 76, 196, 163, 64, 68, + 171, 8, 4, 179, 243, 103, 98, 2, 83, 6, 128, 138, 192, 84, + 6, 64, 69, 96, 170, 31, 192, 185, 135, 201, 23, 71, 136, 110, + 18, 43, 253, 59, 122, 223, 191, 52, 180, 249, 21, 250, 248, 183, + 255, 143, 80, 113, 231, 148, 204, 255, 207, 195, 180, 4, 139, 87, + 229, 249, 22, 123, 68, 242, 155, 64, 48, 121, 108, 219, 59, 106, + 77, 21, 230, 169, 29, 241, 59, 112, 201, 145, 65, 232, 139, 184, + 158, 80, 183, 212, 194, 196, 228, 196, 151, 4, 120, 221, 8, 31, + 7, 82, 75, 215, 26, 13, 93, 167, 177, 29, 185, 157, 248, 133, + 98, 152, 167, 96, 41, 106, 119, 228, 110, 22, 221, 118, 96, 141, + 95, 199, 149, 88, 77, 152, 92, 77, 219, 115, 90, 109, 124, 103, + 62, 222, 46, 146, 29, 130, 47, 74, 137, 173, 1, 64, 180, 191, + 7, 128, 29, 238, 241, 0, 96, 244, 148, 96, 77, 2, 151, 104, + 101, 34, 175, 156, 113, 59, 12, 103, 93, 177, 139, 192, 29, 177, + 113, 21, 233, 192, 120, 15, 253, 158, 85, 26, 26, 9, 232, 26, + 17, 239, 112, 74, 99, 163, 89, 164, 180, 204, 159, 134, 227, 11, + 96, 95, 188, 135, 220, 228, 239, 9, 137, 53, 157, 215, 69, 100, + 188, 131, 45, 222, 185, 222, 239, 34, 112, 49, 185, 225, 135, 250, + 7, 251, 83, 169, 47, 113, 238, 128, 111, 66, 227, 214, 192, 94, + 22, 208, 103, 24, 223, 21, 79, 60, 58, 143, 91, 60, 62, 109, + 249, 188, 23, 248, 238, 92, 130, 71, 187, 184, 139, 206, 248, 91, + 190, 212, 78, 108, 101, 20, 128, 85, 92, 58, 90, 190, 227, 69, + 88, 41, 246, 97, 200, 73, 219, 98, 204, 35, 156, 111, 252, 60, + 55, 244, 49, 79, 2, 59, 40, 99, 100, 59, 116, 181, 186, 183, + 170, 142, 221, 81, 86, 186, 123, 91, 92, 181, 170, 110, 251, 33, + 195, 45, 31, 126, 81, 44, 188, 72, 232, 41, 92, 229, 203, 140, + 156, 50, 220, 33, 148, 174, 52, 184, 94, 80, 126, 27, 226, 165, + 60, 241, 182, 61, 223, 115, 12, 8, 165, 212, 15, 26, 182, 231, + 188, 36, 238, 239, 249, 129, 120, 49, 189, 197, 2, 7, 143, 152, + 93, 89, 7, 127, 169, 72, 56, 255, 8, 146, 31, 158, 155, 155, + 155, 3, 44, 209, 118, 128, 187, 5, 23, 224, 159, 220, 204, 23, + 39, 15, 29, 191, 205, 239, 137, 133, 237, 64, 12, 4, 72, 170, + 41, 87, 105, 249, 130, 54, 239, 89, 68, 141, 84, 40, 213, 37, + 40, 40, 190, 65, 171, 183, 132, 95, 121, 184, 45, 216, 143, 205, + 231, 174, 230, 232, 239, 170, 176, 65, 77, 142, 39, 221, 187, 35, + 92, 141, 68, 14, 88, 166, 108, 166, 105, 59, 162, 87, 183, 218, + 245, 153, 134, 235, 111, 217, 238, 140, 234, 193, 153, 128, 53, 156, + 48, 10, 58, 137, 235, 55, 216, 120, 95, 90, 168, 9, 87, 52, + 229, 208, 182, 230, 52, 91, 110, 71, 189, 96, 219, 241, 219, 129, + 122, 192, 10, 77, 93, 188, 164, 130, 15, 130, 99, 232, 120, 103, + 135, 205, 44, 138, 119, 62, 167, 177, 41, 93, 69, 118, 217, 22, + 62, 90, 62, 229, 212, 169, 189, 99, 59, 174, 189, 229, 178, 105, + 225, 242, 27, 176, 201, 144, 122, 62, 127, 54, 91, 92, 207, 187, + 211, 114, 81, 31, 249, 187, 200, 118, 24, 107, 30, 126, 17, 156, + 111, 22, 233, 70, 216, 198, 29, 27, 248, 142, 226, 131, 133, 125, + 15, 121, 213, 219, 164, 34, 58, 48, 115, 31, 37, 88, 96, 176, + 61, 253, 36, 46, 137, 2, 34, 223, 75, 240, 4, 201, 226, 221, + 187, 213, 161, 173, 118, 20, 137, 221, 43, 161, 46, 194, 246, 214, + 76, 151, 47, 19, 158, 98, 240, 17, 33, 135, 119, 200, 111, 181, + 80, 191, 206, 197, 14, 175, 71, 134, 201, 103, 254, 97, 112, 208, + 183, 122, 25, 22, 144, 240, 212, 19, 190, 84, 83, 226, 36, 208, + 9, 105, 212, 14, 64, 217, 182, 35, 49, 21, 112, 253, 129, 1, + 241, 119, 217, 150, 180, 253, 148, 32, 134, 44, 162, 237, 150, 144, + 12, 187, 29, 249, 77, 59, 18, 177, 166, 237, 16, 47, 94, 137, + 93, 127, 41, 35, 220, 104, 36, 154, 101, 254, 142, 158, 25, 231, + 190, 231, 4, 172, 198, 223, 211, 245, 19, 185, 63, 208, 232, 154, + 124, 112, 253, 186, 189, 99, 83, 17, 157, 8, 180, 85, 0, 134, + 135, 29, 134, 44, 76, 204, 79, 226, 8, 192, 9, 229, 174, 160, + 32, 140, 208, 150, 107, 87, 113, 14, 188, 220, 145, 231, 76, 133, + 132, 123, 182, 68, 44, 222, 134, 229, 214, 159, 220, 39, 240, 235, + 17, 104, 56, 199, 75, 44, 237, 213, 214, 89, 87, 121, 181, 207, + 230, 249, 65, 19, 155, 141, 167, 168, 92, 44, 182, 236, 234, 237, + 93, 59, 168, 133, 114, 229, 47, 44, 86, 110, 128, 16, 180, 142, + 127, 79, 218, 35, 4, 173, 227, 223, 147, 214, 31, 65, 235, 248, + 247, 116, 235, 1, 9, 26, 0, 30, 207, 147, 175, 233, 200, 50, + 205, 50, 191, 172, 235, 167, 115, 95, 214, 233, 34, 127, 39, 112, + 239, 233, 163, 12, 70, 142, 172, 68, 230, 37, 89, 39, 174, 191, + 22, 123, 252, 213, 237, 72, 100, 69, 86, 202, 29, 72, 49, 213, + 247, 20, 152, 4, 132, 81, 108, 83, 79, 77, 203, 149, 2, 24, + 220, 187, 12, 16, 132, 184, 15, 29, 223, 234, 72, 204, 18, 124, + 222, 87, 211, 102, 55, 37, 229, 58, 221, 39, 10, 156, 216, 198, + 1, 77, 32, 143, 130, 97, 234, 193, 83, 75, 220, 106, 150, 50, + 34, 15, 135, 72, 215, 197, 59, 41, 183, 226, 204, 217, 241, 66, + 167, 38, 230, 90, 62, 107, 72, 150, 97, 180, 58, 142, 76, 245, + 23, 216, 253, 95, 142, 251, 11, 236, 254, 47, 199, 253, 165, 97, + 143, 88, 15, 73, 208, 0, 112, 250, 20, 249, 113, 3, 251, 75, + 183, 204, 63, 212, 245, 75, 185, 215, 12, 104, 25, 15, 83, 38, + 91, 160, 196, 29, 237, 39, 209, 69, 120, 243, 220, 117, 19, 231, + 8, 52, 100, 45, 27, 127, 22, 129, 51, 252, 134, 25, 215, 7, + 96, 35, 198, 44, 22, 154, 165, 32, 54, 148, 113, 138, 22, 3, + 119, 95, 150, 19, 177, 153, 78, 215, 183, 219, 120, 152, 13, 246, + 148, 60, 143, 7, 139, 195, 243, 163, 83, 251, 179, 77, 242, 11, + 57, 197, 15, 220, 209, 39, 118, 191, 144, 127, 69, 26, 59, 120, + 237, 41, 203, 107, 146, 142, 93, 36, 33, 168, 145, 223, 37, 126, + 111, 38, 119, 73, 177, 35, 247, 36, 119, 226, 78, 17, 239, 55, + 88, 13, 253, 97, 220, 201, 176, 246, 248, 67, 185, 72, 32, 184, + 36, 251, 67, 61, 123, 66, 130, 6, 128, 15, 77, 73, 48, 3, + 224, 244, 69, 9, 246, 3, 120, 238, 2, 190, 64, 65, 32, 239, + 31, 233, 122, 41, 119, 152, 27, 124, 66, 49, 214, 124, 134, 103, + 14, 219, 220, 21, 137, 151, 132, 213, 220, 31, 197, 68, 24, 41, + 0, 21, 17, 176, 154, 251, 35, 61, 59, 35, 65, 68, 60, 55, + 47, 193, 12, 128, 103, 151, 208, 41, 8, 64, 252, 124, 110, 145, + 252, 59, 174, 56, 76, 203, 252, 186, 174, 63, 145, 251, 95, 117, + 113, 112, 173, 78, 250, 18, 146, 56, 255, 198, 162, 168, 236, 124, + 130, 230, 208, 46, 223, 253, 190, 83, 101, 188, 77, 96, 91, 226, + 81, 145, 13, 102, 119, 196, 154, 45, 180, 145, 154, 54, 95, 97, + 136, 153, 193, 198, 67, 168, 141, 245, 43, 51, 143, 18, 60, 171, + 167, 33, 123, 79, 27, 79, 8, 113, 237, 45, 222, 230, 224, 39, + 131, 132, 138, 16, 111, 137, 251, 158, 156, 168, 154, 175, 108, 229, + 34, 137, 5, 204, 78, 248, 15, 11, 83, 142, 11, 151, 93, 5, + 50, 195, 184, 242, 238, 186, 67, 121, 22, 37, 250, 103, 219, 134, + 172, 148, 213, 235, 226, 25, 206, 93, 97, 104, 199, 241, 7, 168, + 11, 86, 138, 184, 179, 164, 250, 208, 228, 140, 86, 96, 10, 64, + 213, 135, 176, 28, 254, 186, 158, 149, 218, 2, 150, 195, 95, 215, + 167, 79, 75, 48, 3, 96, 225, 113, 9, 246, 3, 248, 200, 99, + 100, 25, 122, 208, 236, 179, 210, 223, 208, 245, 255, 79, 55, 114, + 143, 81, 21, 163, 68, 41, 62, 113, 134, 182, 223, 149, 89, 185, + 66, 11, 157, 151, 20, 157, 232, 185, 252, 13, 189, 127, 156, 44, + 129, 188, 112, 207, 229, 191, 208, 205, 145, 252, 57, 133, 60, 190, + 77, 138, 197, 1, 161, 88, 74, 21, 64, 177, 56, 182, 43, 173, + 106, 190, 151, 76, 132, 171, 242, 95, 232, 230, 64, 156, 160, 67, + 194, 208, 48, 185, 42, 234, 209, 44, 243, 175, 116, 211, 202, 165, + 249, 133, 207, 252, 44, 122, 223, 198, 113, 70, 86, 91, 33, 62, + 25, 44, 93, 64, 133, 94, 226, 3, 93, 58, 107, 18, 225, 227, + 252, 87, 186, 112, 88, 36, 194, 199, 249, 175, 244, 236, 152, 170, + 74, 183, 204, 191, 214, 205, 251, 242, 143, 36, 155, 84, 99, 226, + 69, 122, 33, 89, 203, 78, 196, 84, 152, 138, 158, 46, 149, 152, + 129, 232, 191, 214, 133, 27, 39, 17, 62, 203, 127, 173, 143, 31, + 192, 77, 25, 2, 218, 226, 155, 186, 126, 73, 244, 91, 202, 68, + 80, 138, 64, 42, 13, 160, 56, 98, 34, 184, 225, 240, 77, 125, + 226, 65, 9, 26, 0, 78, 74, 93, 146, 202, 0, 168, 116, 73, + 170, 31, 192, 115, 23, 200, 151, 249, 40, 78, 91, 230, 247, 24, + 122, 62, 247, 219, 122, 108, 49, 93, 245, 123, 236, 37, 254, 100, + 204, 91, 179, 151, 202, 117, 234, 243, 152, 38, 133, 61, 72, 197, + 228, 153, 12, 117, 209, 29, 211, 3, 237, 209, 25, 244, 25, 217, + 178, 67, 150, 180, 69, 148, 193, 133, 71, 165, 180, 101, 71, 219, + 5, 234, 212, 85, 52, 143, 34, 47, 154, 240, 245, 72, 150, 10, + 35, 59, 226, 66, 176, 215, 86, 16, 104, 240, 208, 101, 127, 44, + 189, 180, 116, 21, 150, 119, 15, 149, 182, 80, 35, 56, 109, 34, + 147, 21, 152, 2, 80, 205, 247, 105, 13, 64, 177, 207, 71, 208, + 61, 232, 123, 140, 99, 199, 201, 239, 152, 216, 65, 253, 150, 249, + 170, 161, 95, 202, 253, 51, 147, 174, 113, 167, 101, 17, 249, 84, + 78, 197, 97, 247, 78, 139, 227, 241, 89, 92, 190, 198, 245, 36, + 165, 121, 17, 9, 53, 175, 138, 112, 255, 67, 60, 215, 149, 161, + 68, 64, 85, 122, 29, 24, 143, 145, 83, 5, 83, 157, 86, 110, + 46, 202, 247, 166, 113, 7, 168, 131, 133, 226, 154, 240, 230, 51, + 35, 20, 45, 210, 110, 53, 31, 238, 33, 131, 78, 169, 176, 3, + 53, 30, 202, 197, 118, 197, 138, 45, 156, 46, 18, 122, 181, 183, + 81, 187, 76, 108, 159, 224, 162, 72, 190, 32, 37, 205, 15, 81, + 19, 40, 214, 228, 83, 106, 132, 50, 59, 112, 59, 210, 229, 25, + 119, 123, 122, 163, 49, 145, 125, 42, 227, 220, 216, 229, 30, 0, + 220, 133, 34, 225, 106, 238, 120, 180, 110, 239, 248, 232, 58, 197, + 71, 186, 32, 156, 240, 165, 121, 247, 116, 150, 228, 40, 95, 134, + 222, 157, 165, 1, 171, 251, 1, 43, 16, 161, 146, 148, 31, 155, + 79, 209, 235, 173, 72, 233, 42, 94, 158, 173, 201, 215, 198, 248, + 26, 60, 132, 249, 99, 143, 24, 112, 159, 118, 130, 203, 87, 167, + 234, 68, 176, 136, 192, 83, 123, 214, 228, 238, 7, 237, 120, 82, + 233, 55, 81, 172, 20, 152, 2, 80, 77, 42, 253, 26, 128, 202, + 58, 233, 55, 0, 84, 214, 73, 127, 6, 64, 165, 81, 250, 81, + 66, 207, 93, 16, 154, 43, 99, 153, 63, 104, 232, 114, 198, 201, + 152, 8, 202, 122, 50, 41, 0, 85, 61, 25, 13, 192, 236, 73, + 9, 26, 0, 78, 157, 146, 32, 162, 58, 253, 152, 4, 251, 1, + 60, 127, 73, 212, 51, 96, 153, 175, 25, 74, 67, 14, 152, 8, + 202, 122, 6, 82, 0, 170, 122, 6, 52, 0, 85, 123, 6, 12, + 0, 85, 123, 6, 50, 0, 170, 246, 12, 244, 3, 168, 218, 67, + 44, 243, 19, 134, 46, 137, 32, 38, 130, 178, 30, 146, 2, 80, + 213, 3, 203, 209, 79, 24, 89, 169, 137, 137, 1, 224, 228, 180, + 4, 51, 0, 158, 146, 36, 147, 126, 0, 31, 190, 72, 254, 19, + 95, 187, 14, 90, 230, 15, 27, 250, 124, 238, 43, 26, 45, 135, + 93, 129, 66, 164, 32, 62, 73, 40, 127, 242, 7, 95, 38, 228, + 250, 43, 178, 131, 6, 139, 64, 235, 70, 117, 63, 104, 10, 71, + 43, 152, 187, 89, 211, 137, 32, 127, 124, 97, 66, 237, 217, 18, + 110, 236, 239, 176, 160, 131, 246, 98, 210, 128, 197, 13, 45, 39, + 82, 74, 90, 78, 217, 110, 135, 58, 13, 207, 15, 88, 237, 146, + 204, 14, 229, 9, 117, 153, 29, 70, 73, 103, 51, 188, 46, 33, + 103, 114, 172, 73, 54, 129, 155, 97, 110, 98, 233, 58, 104, 98, + 171, 21, 152, 2, 80, 241, 115, 80, 3, 48, 155, 147, 160, 1, + 224, 209, 99, 18, 204, 0, 72, 207, 72, 176, 31, 192, 211, 115, + 228, 253, 200, 206, 33, 203, 252, 140, 161, 63, 146, 123, 15, 229, + 209, 154, 67, 233, 60, 132, 135, 79, 24, 186, 89, 45, 93, 69, + 144, 144, 253, 226, 180, 136, 93, 85, 220, 4, 100, 232, 82, 198, + 99, 171, 52, 246, 216, 75, 128, 108, 241, 244, 105, 213, 180, 33, + 19, 41, 80, 96, 10, 64, 213, 180, 33, 13, 64, 113, 74, 64, + 244, 33, 3, 192, 19, 114, 36, 12, 101, 0, 124, 232, 188, 4, + 251, 1, 60, 243, 48, 249, 56, 23, 149, 97, 203, 252, 9, 67, + 159, 206, 125, 48, 177, 205, 225, 203, 157, 48, 90, 21, 11, 33, + 30, 17, 90, 40, 14, 7, 97, 220, 192, 195, 149, 16, 44, 118, + 19, 69, 200, 126, 13, 234, 153, 227, 139, 92, 99, 113, 223, 38, + 169, 171, 84, 115, 135, 77, 36, 74, 129, 41, 0, 213, 36, 55, + 172, 1, 104, 201, 17, 56, 108, 0, 248, 208, 20, 41, 99, 123, + 70, 44, 243, 167, 12, 125, 42, 119, 137, 170, 184, 210, 200, 206, + 61, 52, 93, 146, 213, 134, 210, 63, 91, 76, 236, 138, 140, 17, + 19, 113, 41, 48, 5, 160, 34, 99, 68, 3, 208, 202, 75, 208, + 0, 240, 228, 36, 119, 109, 38, 250, 168, 101, 254, 140, 193, 93, + 155, 227, 221, 30, 186, 182, 235, 212, 163, 228, 220, 134, 67, 3, + 111, 124, 237, 221, 7, 2, 187, 111, 81, 58, 137, 162, 211, 71, + 192, 192, 36, 2, 209, 159, 44, 78, 114, 91, 191, 237, 213, 88, + 16, 86, 253, 128, 169, 0, 114, 220, 191, 196, 151, 157, 38, 125, + 190, 195, 217, 176, 211, 220, 242, 221, 144, 200, 197, 166, 240, 220, + 140, 226, 165, 69, 200, 59, 151, 155, 63, 5, 238, 146, 133, 36, + 170, 93, 124, 225, 119, 203, 143, 29, 200, 27, 85, 163, 106, 145, + 12, 28, 53, 145, 39, 10, 76, 1, 168, 248, 57, 170, 1, 168, + 246, 150, 70, 13, 0, 143, 159, 64, 55, 119, 162, 103, 45, 243, + 75, 208, 173, 173, 88, 74, 91, 219, 173, 123, 149, 78, 200, 186, + 71, 0, 200, 62, 82, 185, 36, 250, 201, 9, 41, 172, 16, 59, + 138, 246, 172, 137, 4, 40, 48, 5, 160, 162, 61, 171, 1, 168, + 100, 33, 107, 0, 120, 114, 146, 252, 10, 31, 99, 99, 150, 249, + 75, 134, 126, 50, 247, 69, 13, 151, 19, 9, 126, 227, 70, 2, + 143, 60, 168, 194, 190, 161, 200, 250, 245, 253, 137, 86, 36, 146, + 152, 198, 61, 189, 168, 62, 117, 27, 172, 104, 110, 38, 221, 152, + 97, 96, 128, 48, 68, 44, 104, 198, 177, 130, 20, 17, 170, 241, + 99, 38, 54, 64, 129, 41, 0, 85, 227, 199, 52, 0, 45, 169, + 74, 199, 12, 0, 243, 15, 146, 255, 145, 55, 222, 178, 204, 95, + 49, 244, 98, 238, 151, 191, 141, 198, 203, 56, 242, 138, 11, 100, + 111, 79, 189, 41, 23, 226, 29, 183, 36, 35, 136, 226, 196, 61, + 48, 194, 50, 177, 49, 10, 76, 1, 168, 24, 97, 105, 0, 90, + 210, 22, 176, 12, 0, 79, 207, 144, 255, 158, 51, 98, 220, 50, + 127, 13, 52, 194, 207, 189, 25, 35, 100, 127, 249, 117, 26, 180, + 183, 58, 223, 134, 16, 8, 111, 203, 111, 73, 12, 176, 234, 94, + 149, 56, 110, 98, 35, 20, 152, 2, 80, 49, 96, 92, 3, 80, + 13, 225, 113, 3, 192, 227, 39, 200, 203, 216, 254, 3, 150, 249, + 63, 24, 250, 197, 156, 247, 45, 221, 250, 38, 234, 72, 162, 59, + 32, 163, 156, 119, 243, 171, 242, 172, 89, 158, 81, 36, 175, 136, + 19, 253, 128, 137, 213, 43, 48, 13, 224, 160, 36, 245, 128, 6, + 160, 184, 34, 78, 244, 3, 6, 128, 231, 47, 144, 239, 213, 136, + 97, 130, 101, 246, 27, 134, 126, 40, 247, 210, 183, 125, 71, 252, + 91, 111, 5, 90, 144, 169, 62, 160, 68, 92, 40, 39, 120, 161, + 252, 55, 12, 113, 161, 156, 224, 133, 242, 223, 48, 238, 155, 224, + 199, 25, 3, 150, 249, 47, 12, 125, 132, 23, 28, 232, 3, 104, + 112, 152, 231, 28, 128, 130, 73, 80, 23, 224, 16, 209, 205, 65, + 43, 253, 91, 70, 223, 15, 152, 26, 162, 1, 179, 233, 183, 140, + 204, 65, 242, 175, 83, 196, 52, 7, 245, 62, 203, 252, 138, 161, + 63, 145, 251, 245, 20, 40, 98, 92, 8, 36, 14, 179, 98, 63, + 251, 51, 114, 7, 3, 114, 37, 111, 190, 214, 187, 110, 41, 201, + 141, 173, 196, 172, 131, 57, 212, 49, 197, 12, 216, 140, 118, 228, + 108, 57, 24, 109, 71, 109, 111, 245, 96, 39, 2, 125, 145, 226, + 241, 152, 184, 146, 27, 31, 112, 58, 220, 166, 138, 195, 212, 241, + 123, 236, 23, 41, 45, 71, 147, 33, 117, 89, 24, 18, 202, 234, + 117, 167, 234, 224, 189, 173, 109, 176, 232, 216, 46, 11, 104, 157, + 217, 81, 59, 96, 33, 223, 178, 134, 174, 132, 169, 22, 45, 89, + 116, 80, 174, 245, 132, 230, 83, 254, 243, 114, 67, 151, 221, 177, + 49, 136, 94, 215, 241, 49, 85, 217, 175, 248, 62, 125, 47, 15, + 15, 42, 198, 237, 93, 94, 137, 160, 143, 35, 183, 47, 241, 188, + 9, 25, 59, 7, 29, 208, 180, 239, 224, 151, 247, 117, 251, 152, + 178, 196, 105, 63, 216, 236, 252, 176, 28, 216, 32, 201, 227, 174, + 217, 151, 18, 12, 13, 133, 231, 31, 102, 77, 118, 21, 193, 27, + 76, 221, 210, 141, 171, 82, 244, 124, 146, 237, 134, 69, 45, 46, + 80, 165, 13, 124, 137, 199, 84, 67, 91, 66, 122, 52, 108, 9, + 255, 211, 144, 159, 7, 132, 184, 82, 232, 245, 253, 199, 42, 47, + 43, 239, 112, 177, 38, 144, 199, 119, 92, 169, 113, 143, 147, 104, + 23, 207, 128, 163, 192, 169, 170, 152, 182, 216, 251, 204, 171, 251, + 65, 85, 172, 231, 163, 253, 2, 233, 9, 5, 49, 136, 39, 95, + 95, 145, 10, 98, 16, 79, 190, 190, 34, 109, 236, 65, 220, 58, + 252, 138, 145, 157, 148, 160, 1, 224, 169, 211, 18, 204, 0, 40, + 246, 70, 7, 245, 190, 126, 0, 31, 121, 140, 252, 123, 13, 7, + 141, 102, 153, 255, 143, 161, 95, 201, 253, 111, 26, 93, 226, 231, + 68, 220, 130, 73, 236, 60, 136, 93, 32, 249, 192, 7, 205, 215, + 18, 7, 9, 121, 42, 31, 249, 40, 196, 47, 133, 99, 88, 216, + 186, 235, 84, 35, 121, 61, 82, 61, 175, 219, 229, 167, 33, 111, + 111, 161, 22, 178, 49, 216, 20, 109, 130, 193, 169, 130, 167, 9, + 67, 72, 140, 91, 102, 135, 14, 11, 46, 81, 143, 237, 138, 77, + 8, 62, 152, 236, 29, 223, 145, 226, 34, 206, 84, 18, 68, 230, + 21, 31, 53, 19, 91, 171, 192, 20, 128, 138, 143, 26, 242, 34, + 59, 43, 65, 3, 192, 249, 179, 18, 204, 0, 120, 174, 36, 193, + 126, 0, 159, 92, 34, 127, 204, 249, 168, 91, 230, 159, 24, 250, + 153, 220, 255, 17, 47, 107, 165, 120, 191, 109, 43, 219, 196, 24, + 122, 139, 203, 89, 177, 154, 37, 247, 188, 156, 77, 136, 61, 111, + 191, 110, 98, 131, 21, 152, 2, 80, 177, 18, 196, 234, 79, 228, + 138, 118, 16, 207, 125, 254, 196, 56, 250, 128, 4, 51, 0, 30, + 155, 147, 96, 63, 128, 167, 102, 185, 82, 31, 176, 204, 175, 25, + 250, 56, 206, 13, 131, 48, 55, 124, 205, 24, 28, 226, 57, 113, + 110, 72, 130, 186, 0, 121, 94, 252, 56, 34, 72, 24, 208, 122, + 64, 93, 128, 60, 47, 66, 99, 150, 248, 168, 107, 221, 160, 252, + 250, 35, 105, 236, 91, 195, 50, 255, 129, 169, 63, 144, 251, 88, + 26, 44, 25, 117, 67, 71, 246, 47, 31, 249, 221, 167, 249, 9, + 251, 208, 110, 161, 95, 62, 127, 77, 58, 126, 173, 187, 105, 183, + 228, 53, 46, 121, 93, 73, 165, 112, 53, 76, 33, 229, 177, 167, + 88, 103, 189, 211, 98, 5, 138, 97, 241, 225, 231, 19, 144, 190, + 201, 71, 212, 227, 244, 204, 37, 18, 27, 45, 181, 228, 21, 43, + 215, 247, 111, 135, 24, 122, 67, 162, 19, 4, 223, 176, 91, 232, + 220, 137, 143, 229, 72, 13, 159, 212, 242, 242, 97, 157, 110, 189, + 30, 231, 176, 93, 42, 200, 162, 183, 89, 71, 16, 177, 39, 139, + 34, 88, 44, 204, 30, 167, 243, 34, 219, 251, 248, 31, 165, 84, + 187, 9, 234, 105, 29, 161, 229, 158, 168, 22, 232, 76, 183, 237, + 251, 33, 87, 164, 137, 109, 10, 222, 47, 146, 252, 199, 209, 4, + 80, 35, 100, 171, 29, 161, 69, 77, 109, 234, 241, 8, 37, 208, + 55, 78, 215, 48, 84, 251, 184, 145, 79, 183, 193, 98, 128, 111, + 183, 89, 135, 95, 108, 151, 47, 129, 35, 195, 19, 7, 107, 11, + 55, 203, 104, 93, 225, 93, 135, 61, 49, 56, 240, 24, 77, 58, + 221, 96, 108, 85, 59, 36, 212, 169, 199, 119, 49, 249, 8, 220, + 255, 126, 25, 94, 205, 88, 93, 47, 93, 148, 17, 36, 197, 102, + 167, 50, 165, 123, 34, 232, 210, 5, 238, 130, 32, 205, 30, 148, + 42, 30, 113, 143, 200, 181, 49, 191, 166, 42, 16, 8, 29, 42, + 157, 195, 156, 102, 215, 182, 42, 223, 253, 22, 43, 20, 57, 49, + 9, 111, 182, 120, 130, 50, 76, 28, 34, 10, 76, 1, 168, 180, + 129, 161, 1, 152, 61, 36, 65, 28, 79, 71, 142, 146, 7, 197, + 120, 255, 62, 83, 31, 206, 223, 143, 103, 224, 174, 19, 129, 117, + 33, 206, 200, 182, 92, 70, 196, 128, 53, 32, 155, 26, 249, 128, + 49, 9, 234, 2, 60, 38, 48, 126, 4, 48, 90, 136, 209, 179, + 61, 127, 211, 14, 55, 1, 179, 68, 102, 66, 14, 85, 218, 212, + 186, 65, 93, 128, 171, 56, 248, 77, 203, 252, 168, 249, 157, 11, + 8, 53, 200, 47, 39, 196, 188, 50, 211, 0, 14, 74, 221, 136, + 151, 19, 204, 99, 114, 214, 193, 203, 9, 166, 8, 8, 53, 152, + 178, 204, 143, 155, 111, 79, 64, 168, 65, 176, 223, 63, 110, 10, + 251, 125, 16, 237, 247, 143, 155, 194, 126, 31, 68, 251, 253, 227, + 230, 125, 19, 104, 134, 15, 89, 233, 87, 205, 190, 191, 20, 102, + 248, 144, 102, 153, 175, 154, 153, 3, 228, 199, 116, 98, 154, 67, + 96, 134, 127, 210, 212, 139, 185, 87, 116, 228, 24, 62, 93, 21, + 11, 171, 60, 99, 67, 7, 174, 211, 167, 123, 207, 205, 133, 189, + 110, 199, 14, 180, 228, 46, 23, 234, 133, 203, 230, 182, 237, 1, + 251, 149, 63, 209, 46, 8, 115, 145, 170, 181, 140, 60, 166, 32, + 138, 49, 91, 204, 245, 119, 165, 229, 209, 189, 30, 237, 176, 40, + 30, 190, 177, 195, 131, 223, 98, 242, 221, 3, 160, 6, 230, 78, + 70, 103, 102, 104, 232, 7, 65, 167, 64, 119, 217, 164, 235, 82, + 212, 240, 62, 191, 248, 84, 99, 120, 57, 18, 29, 93, 219, 96, + 162, 203, 147, 154, 227, 188, 215, 135, 208, 162, 251, 164, 20, 130, + 33, 140, 10, 246, 73, 83, 220, 230, 24, 66, 139, 238, 147, 166, + 136, 211, 49, 132, 22, 221, 39, 205, 67, 57, 9, 102, 0, 60, + 60, 35, 193, 126, 0, 31, 42, 96, 208, 149, 33, 179, 207, 74, + 255, 144, 169, 127, 198, 228, 65, 87, 134, 240, 188, 250, 135, 204, + 126, 24, 27, 105, 0, 161, 127, 62, 109, 154, 163, 185, 81, 181, + 79, 209, 196, 232, 163, 120, 70, 59, 36, 142, 162, 63, 109, 154, + 137, 4, 29, 18, 134, 71, 208, 69, 98, 136, 31, 69, 191, 110, + 138, 3, 228, 33, 113, 162, 252, 186, 105, 102, 226, 4, 29, 18, + 6, 135, 84, 9, 221, 50, 127, 212, 20, 97, 118, 134, 196, 193, + 240, 143, 154, 226, 96, 120, 72, 28, 12, 255, 168, 57, 126, 128, + 252, 30, 151, 34, 205, 50, 63, 111, 234, 135, 115, 255, 147, 46, + 198, 29, 222, 127, 22, 221, 37, 206, 236, 133, 87, 16, 191, 248, + 42, 149, 103, 43, 112, 154, 248, 204, 141, 180, 7, 209, 193, 20, + 85, 9, 181, 249, 10, 73, 45, 166, 246, 136, 22, 239, 111, 88, + 217, 20, 105, 197, 22, 51, 189, 237, 41, 236, 176, 246, 216, 13, + 28, 233, 157, 136, 145, 8, 101, 196, 147, 216, 179, 136, 113, 1, + 42, 36, 175, 180, 217, 65, 96, 119, 112, 75, 132, 71, 215, 194, + 57, 64, 57, 223, 186, 189, 49, 145, 182, 92, 127, 171, 72, 203, + 242, 166, 121, 129, 171, 103, 121, 228, 5, 154, 57, 226, 241, 202, + 241, 50, 57, 158, 162, 9, 7, 52, 52, 133, 197, 241, 29, 103, + 90, 34, 114, 15, 151, 24, 188, 144, 17, 11, 31, 94, 200, 144, + 218, 122, 136, 95, 200, 48, 179, 82, 248, 240, 66, 6, 8, 223, + 39, 83, 216, 49, 186, 101, 254, 188, 169, 159, 205, 125, 36, 133, + 29, 195, 95, 142, 83, 222, 57, 98, 163, 134, 197, 62, 137, 107, + 104, 142, 112, 14, 169, 237, 44, 225, 43, 238, 139, 40, 8, 226, + 54, 123, 114, 86, 130, 85, 183, 122, 45, 4, 27, 15, 229, 206, + 159, 163, 91, 56, 178, 34, 214, 8, 108, 23, 121, 95, 119, 238, + 200, 112, 40, 132, 78, 57, 94, 116, 254, 92, 129, 182, 197, 223, + 80, 252, 197, 76, 152, 32, 126, 77, 23, 41, 93, 72, 132, 176, + 147, 13, 81, 207, 185, 17, 30, 145, 72, 200, 7, 118, 88, 178, + 61, 220, 219, 70, 174, 121, 144, 235, 33, 117, 125, 30, 49, 0, + 236, 102, 7, 61, 105, 184, 211, 15, 200, 235, 182, 221, 2, 53, + 178, 203, 227, 17, 184, 96, 110, 196, 129, 34, 68, 4, 6, 177, + 43, 76, 235, 174, 207, 205, 110, 238, 80, 30, 87, 91, 36, 116, + 13, 21, 90, 7, 190, 170, 183, 230, 212, 106, 64, 52, 2, 151, + 165, 93, 235, 56, 86, 75, 18, 47, 238, 46, 16, 101, 36, 36, + 190, 229, 185, 235, 105, 94, 198, 188, 65, 231, 4, 182, 109, 239, + 56, 126, 144, 184, 87, 129, 138, 131, 247, 21, 161, 234, 73, 60, + 188, 250, 217, 101, 255, 168, 104, 217, 17, 223, 140, 232, 210, 185, + 234, 14, 176, 47, 58, 59, 121, 106, 206, 29, 234, 184, 91, 173, + 93, 195, 61, 127, 238, 14, 221, 240, 253, 70, 177, 105, 71, 219, + 197, 50, 200, 129, 50, 67, 134, 112, 81, 242, 243, 177, 96, 235, + 105, 0, 197, 22, 224, 16, 234, 156, 159, 55, 173, 9, 9, 26, + 0, 30, 62, 34, 193, 12, 128, 71, 231, 37, 216, 15, 224, 212, + 25, 161, 85, 53, 43, 253, 11, 166, 254, 171, 74, 171, 194, 32, + 249, 5, 179, 127, 24, 131, 102, 13, 241, 80, 86, 191, 104, 154, + 86, 238, 126, 177, 129, 154, 56, 229, 230, 119, 161, 184, 162, 227, + 113, 172, 126, 49, 86, 158, 60, 142, 213, 47, 154, 217, 49, 50, + 45, 80, 105, 150, 249, 203, 128, 234, 16, 162, 218, 35, 115, 97, + 2, 153, 198, 243, 198, 200, 64, 241, 254, 114, 18, 153, 110, 153, + 191, 178, 47, 178, 216, 195, 88, 150, 133, 138, 127, 37, 137, 140, + 23, 206, 142, 145, 223, 69, 38, 0, 195, 126, 223, 212, 79, 231, + 254, 249, 136, 244, 209, 72, 92, 158, 216, 82, 75, 16, 215, 126, + 201, 113, 59, 79, 82, 186, 108, 191, 212, 145, 71, 138, 234, 68, + 81, 88, 32, 51, 192, 22, 25, 170, 149, 95, 11, 104, 50, 219, + 19, 177, 47, 118, 165, 115, 29, 247, 43, 77, 172, 180, 240, 62, + 15, 206, 244, 188, 182, 2, 215, 32, 14, 70, 1, 18, 249, 38, + 195, 56, 58, 14, 42, 69, 113, 157, 84, 208, 183, 213, 142, 164, + 33, 204, 13, 57, 238, 77, 194, 245, 50, 223, 173, 19, 114, 223, + 133, 85, 232, 215, 106, 196, 61, 226, 99, 124, 72, 172, 8, 253, + 132, 81, 154, 248, 142, 136, 220, 126, 19, 62, 210, 208, 124, 27, + 239, 254, 64, 107, 123, 214, 8, 118, 192, 104, 61, 96, 140, 239, + 182, 227, 202, 70, 197, 130, 64, 139, 136, 80, 102, 55, 88, 0, + 171, 124, 23, 184, 42, 175, 230, 116, 71, 42, 81, 215, 112, 148, + 189, 39, 239, 204, 40, 71, 63, 162, 230, 142, 174, 77, 126, 88, + 40, 133, 237, 70, 131, 133, 50, 252, 72, 215, 142, 148, 141, 111, + 140, 128, 233, 228, 48, 30, 180, 199, 198, 181, 20, 224, 233, 162, + 167, 43, 90, 13, 70, 234, 244, 3, 177, 45, 154, 24, 218, 91, + 190, 127, 251, 54, 99, 60, 254, 149, 191, 195, 130, 109, 232, 139, + 168, 211, 18, 171, 103, 17, 143, 188, 203, 155, 205, 217, 163, 64, + 164, 43, 40, 181, 185, 179, 97, 148, 120, 65, 192, 139, 88, 80, + 23, 231, 53, 182, 215, 117, 78, 225, 215, 96, 65, 107, 187, 174, + 244, 129, 197, 80, 44, 184, 145, 74, 3, 214, 180, 19, 119, 33, + 139, 148, 94, 105, 7, 208, 13, 96, 55, 128, 168, 5, 204, 174, + 205, 132, 118, 157, 169, 240, 234, 36, 81, 153, 147, 164, 39, 241, + 104, 2, 39, 248, 18, 250, 221, 68, 210, 35, 79, 86, 6, 216, + 80, 25, 67, 219, 249, 118, 151, 186, 54, 193, 43, 68, 113, 174, + 182, 3, 126, 159, 12, 231, 28, 151, 135, 36, 233, 70, 8, 66, + 239, 120, 109, 70, 248, 189, 19, 140, 201, 65, 153, 140, 30, 44, + 196, 178, 72, 186, 238, 250, 247, 174, 86, 247, 174, 173, 241, 73, + 111, 21, 226, 67, 90, 85, 252, 250, 16, 193, 169, 236, 165, 78, + 247, 5, 13, 238, 21, 239, 132, 5, 108, 18, 136, 69, 57, 44, + 243, 113, 235, 188, 196, 106, 83, 211, 210, 208, 234, 26, 221, 4, + 235, 14, 88, 212, 14, 132, 64, 98, 176, 17, 177, 78, 238, 30, + 138, 219, 118, 72, 241, 13, 40, 28, 2, 93, 148, 37, 182, 237, + 61, 6, 13, 182, 131, 142, 186, 140, 224, 75, 71, 183, 125, 112, + 226, 202, 65, 92, 38, 243, 185, 143, 31, 31, 223, 142, 199, 3, + 206, 136, 105, 10, 159, 248, 194, 232, 84, 192, 152, 2, 232, 121, + 102, 43, 139, 176, 213, 14, 90, 62, 247, 190, 0, 198, 16, 57, + 50, 192, 220, 240, 122, 231, 70, 177, 97, 138, 236, 14, 223, 144, + 223, 68, 237, 97, 171, 232, 45, 145, 120, 79, 192, 137, 146, 28, + 151, 71, 9, 9, 111, 172, 68, 223, 72, 109, 217, 77, 6, 162, + 22, 175, 127, 157, 226, 55, 24, 78, 9, 50, 28, 124, 72, 174, + 139, 20, 220, 106, 60, 133, 14, 203, 167, 200, 27, 101, 235, 214, + 77, 82, 159, 241, 8, 54, 93, 27, 104, 219, 96, 11, 111, 49, + 230, 9, 142, 227, 118, 62, 22, 154, 159, 155, 63, 83, 224, 18, + 38, 70, 59, 173, 250, 65, 192, 170, 145, 7, 104, 177, 242, 80, + 74, 19, 247, 75, 198, 203, 173, 226, 245, 154, 36, 247, 81, 40, + 64, 194, 92, 212, 53, 62, 173, 6, 118, 184, 205, 47, 198, 130, + 25, 201, 13, 51, 88, 162, 242, 247, 135, 146, 216, 156, 16, 102, + 42, 47, 49, 237, 208, 118, 203, 247, 226, 17, 69, 215, 87, 151, + 86, 167, 182, 102, 231, 207, 156, 185, 48, 119, 254, 204, 153, 179, + 211, 23, 169, 112, 200, 225, 207, 25, 169, 245, 5, 182, 69, 197, + 79, 229, 182, 134, 97, 226, 196, 170, 192, 20, 128, 202, 30, 55, + 52, 0, 69, 100, 195, 33, 220, 61, 249, 125, 243, 126, 105, 197, + 24, 25, 0, 15, 157, 146, 96, 63, 128, 15, 78, 147, 47, 106, + 56, 101, 155, 150, 249, 85, 83, 127, 36, 247, 35, 26, 237, 121, + 190, 249, 173, 49, 84, 248, 7, 73, 223, 187, 238, 155, 132, 232, + 46, 131, 56, 209, 146, 230, 213, 84, 213, 235, 18, 173, 192, 223, + 118, 182, 196, 154, 204, 15, 228, 24, 178, 61, 190, 156, 150, 65, + 155, 121, 3, 76, 78, 177, 2, 83, 0, 42, 94, 152, 26, 128, + 34, 86, 206, 16, 238, 142, 124, 213, 204, 63, 40, 193, 12, 128, + 226, 210, 241, 16, 186, 129, 127, 213, 156, 123, 152, 124, 149, 243, + 34, 101, 153, 127, 108, 234, 103, 114, 255, 38, 233, 121, 6, 211, + 212, 219, 182, 65, 47, 143, 70, 194, 111, 109, 123, 94, 132, 117, + 188, 39, 111, 179, 46, 129, 74, 153, 216, 84, 5, 98, 203, 21, + 19, 83, 26, 128, 89, 185, 157, 144, 50, 0, 20, 155, 243, 67, + 232, 72, 253, 199, 166, 216, 156, 31, 66, 71, 234, 63, 54, 79, + 205, 146, 39, 145, 135, 105, 203, 252, 154, 169, 23, 114, 103, 222, + 250, 155, 55, 28, 95, 218, 68, 12, 10, 76, 1, 168, 72, 75, + 107, 0, 42, 89, 79, 27, 0, 222, 127, 72, 130, 25, 0, 115, + 167, 37, 216, 15, 224, 201, 83, 184, 81, 55, 4, 6, 251, 215, + 191, 131, 27, 117, 67, 232, 60, 250, 245, 152, 212, 254, 52, 128, + 131, 146, 79, 253, 26, 128, 98, 163, 110, 8, 157, 71, 191, 46, + 55, 234, 134, 82, 150, 249, 231, 111, 211, 70, 221, 80, 170, 15, + 144, 139, 141, 186, 33, 220, 168, 251, 115, 185, 81, 55, 132, 27, + 117, 127, 110, 222, 55, 65, 142, 0, 29, 3, 150, 249, 23, 166, + 62, 156, 31, 21, 111, 201, 212, 232, 139, 104, 119, 115, 76, 3, + 125, 240, 89, 108, 124, 14, 225, 233, 74, 18, 212, 5, 56, 68, + 116, 115, 216, 74, 255, 181, 217, 247, 193, 20, 223, 242, 27, 214, + 44, 243, 175, 205, 204, 1, 228, 252, 48, 172, 125, 190, 249, 29, + 228, 252, 48, 238, 142, 125, 83, 114, 126, 24, 119, 199, 190, 41, + 57, 63, 140, 43, 168, 111, 74, 206, 15, 227, 238, 216, 55, 37, + 231, 135, 83, 150, 249, 129, 212, 219, 195, 249, 97, 224, 252, 7, + 82, 130, 243, 195, 200, 249, 15, 164, 4, 231, 135, 145, 243, 31, + 72, 137, 45, 210, 17, 43, 253, 161, 84, 223, 39, 4, 191, 70, + 52, 203, 252, 80, 42, 51, 78, 110, 17, 211, 28, 1, 126, 125, + 56, 165, 211, 92, 133, 251, 41, 116, 59, 219, 72, 183, 5, 124, + 144, 157, 54, 249, 195, 107, 241, 118, 40, 127, 252, 2, 31, 233, + 138, 226, 155, 60, 68, 198, 23, 69, 90, 70, 144, 129, 31, 78, + 233, 10, 76, 1, 40, 70, 217, 8, 50, 240, 195, 169, 236, 97, + 9, 26, 0, 62, 112, 140, 252, 129, 134, 228, 105, 150, 249, 209, + 148, 126, 38, 247, 187, 177, 158, 20, 81, 131, 222, 198, 115, 76, + 126, 245, 238, 237, 213, 146, 120, 156, 175, 120, 164, 153, 216, 78, + 5, 166, 0, 84, 60, 210, 144, 11, 66, 73, 142, 224, 46, 216, + 71, 83, 66, 73, 142, 224, 97, 240, 71, 83, 66, 73, 142, 224, + 97, 240, 71, 83, 167, 102, 241, 252, 97, 100, 192, 50, 63, 150, + 122, 131, 243, 135, 17, 24, 119, 31, 75, 137, 129, 54, 130, 227, + 46, 9, 234, 2, 92, 197, 222, 208, 45, 243, 149, 212, 119, 110, + 112, 141, 224, 38, 201, 43, 113, 187, 65, 165, 191, 146, 26, 148, + 45, 131, 222, 127, 37, 37, 6, 215, 8, 110, 146, 188, 146, 18, + 131, 107, 36, 101, 153, 175, 189, 77, 131, 107, 4, 6, 215, 107, + 114, 112, 141, 224, 224, 122, 77, 14, 174, 17, 28, 92, 175, 201, + 193, 53, 106, 165, 63, 153, 234, 251, 113, 49, 184, 70, 53, 203, + 252, 100, 42, 51, 65, 254, 12, 196, 119, 20, 70, 215, 235, 32, + 190, 95, 237, 17, 95, 190, 48, 126, 219, 133, 152, 215, 243, 118, + 159, 199, 39, 194, 123, 137, 142, 29, 197, 65, 255, 186, 236, 216, + 81, 28, 244, 175, 75, 129, 30, 197, 65, 255, 186, 20, 232, 81, + 28, 244, 175, 75, 129, 30, 197, 51, 133, 215, 165, 64, 143, 226, + 153, 194, 235, 32, 208, 171, 200, 82, 205, 50, 63, 243, 29, 148, + 193, 81, 28, 123, 159, 137, 73, 213, 210, 0, 14, 74, 98, 52, + 172, 79, 200, 224, 40, 142, 189, 207, 72, 25, 28, 77, 89, 230, + 231, 222, 38, 25, 28, 5, 25, 252, 156, 148, 193, 81, 148, 193, + 207, 73, 25, 28, 69, 25, 252, 156, 148, 193, 172, 149, 254, 124, + 170, 239, 191, 17, 50, 152, 213, 44, 243, 243, 169, 204, 65, 242, + 111, 140, 255, 159, 189, 127, 129, 142, 35, 59, 239, 3, 241, 174, + 71, 55, 26, 23, 124, 0, 23, 32, 9, 22, 57, 228, 101, 243, + 213, 32, 27, 141, 7, 201, 25, 17, 28, 206, 168, 1, 52, 137, + 158, 1, 1, 76, 119, 99, 70, 243, 18, 166, 208, 93, 0, 106, + 208, 93, 213, 170, 234, 38, 136, 153, 63, 227, 36, 99, 201, 127, + 77, 162, 100, 21, 71, 114, 124, 214, 241, 30, 43, 217, 147, 248, + 113, 146, 221, 40, 86, 142, 108, 237, 110, 162, 36, 71, 71, 142, + 109, 173, 188, 214, 30, 89, 137, 79, 180, 206, 217, 172, 37, 235, + 172, 101, 203, 222, 104, 173, 56, 222, 115, 191, 251, 168, 91, 141, + 230, 107, 164, 209, 218, 103, 135, 210, 144, 253, 85, 213, 125, 191, + 190, 239, 187, 223, 247, 251, 144, 105, 14, 210, 57, 248, 233, 164, + 62, 173, 90, 131, 68, 30, 197, 239, 226, 4, 228, 133, 188, 219, + 179, 79, 248, 226, 228, 209, 244, 239, 106, 160, 76, 152, 33, 12, + 47, 74, 226, 127, 76, 73, 224, 143, 75, 211, 2, 107, 42, 2, + 247, 151, 65, 206, 37, 235, 88, 94, 153, 67, 132, 144, 141, 192, + 110, 58, 59, 126, 176, 157, 39, 228, 5, 135, 216, 45, 191, 225, + 111, 210, 153, 4, 177, 94, 124, 59, 168, 115, 65, 59, 84, 130, + 146, 248, 196, 239, 4, 161, 211, 184, 237, 132, 252, 150, 159, 144, + 29, 135, 185, 86, 9, 208, 78, 166, 171, 2, 39, 33, 128, 227, + 93, 7, 151, 36, 250, 89, 221, 169, 185, 92, 219, 36, 238, 246, + 68, 84, 92, 154, 17, 15, 140, 203, 167, 238, 32, 172, 178, 79, + 139, 169, 59, 8, 171, 236, 211, 98, 149, 13, 194, 42, 251, 180, + 88, 101, 131, 176, 202, 62, 157, 228, 174, 28, 131, 176, 202, 62, + 157, 228, 174, 28, 131, 176, 202, 62, 157, 188, 56, 9, 171, 108, + 144, 174, 178, 207, 252, 0, 87, 217, 32, 172, 178, 207, 68, 85, + 165, 171, 236, 51, 98, 149, 13, 194, 42, 251, 140, 88, 101, 131, + 176, 202, 62, 35, 86, 217, 96, 18, 155, 159, 125, 151, 86, 217, + 32, 93, 101, 159, 21, 171, 108, 16, 86, 217, 103, 197, 42, 27, + 132, 85, 246, 89, 177, 202, 134, 112, 234, 115, 201, 196, 111, 241, + 85, 54, 164, 97, 243, 115, 201, 244, 33, 244, 191, 210, 85, 54, + 68, 87, 217, 23, 232, 42, 251, 119, 170, 205, 21, 168, 244, 222, + 101, 147, 43, 90, 198, 187, 111, 113, 197, 253, 118, 255, 191, 182, + 196, 134, 96, 137, 125, 65, 204, 219, 33, 88, 98, 95, 16, 75, + 108, 8, 150, 216, 23, 196, 18, 27, 130, 37, 246, 5, 177, 196, + 134, 96, 137, 125, 65, 44, 177, 33, 88, 98, 95, 160, 75, 236, + 219, 148, 57, 24, 50, 19, 56, 245, 171, 73, 253, 127, 78, 26, + 113, 67, 61, 174, 7, 174, 59, 227, 204, 113, 125, 28, 148, 241, + 89, 63, 96, 218, 89, 215, 35, 11, 213, 234, 10, 93, 147, 13, + 219, 171, 57, 99, 108, 240, 235, 78, 179, 229, 183, 29, 143, 14, + 171, 31, 16, 143, 169, 208, 158, 102, 223, 66, 112, 101, 240, 132, + 236, 214, 182, 69, 26, 214, 155, 197, 42, 157, 28, 235, 204, 231, + 220, 222, 0, 12, 110, 24, 118, 102, 210, 187, 178, 170, 188, 143, + 138, 147, 10, 95, 113, 139, 209, 117, 45, 183, 178, 92, 169, 138, + 206, 132, 251, 255, 95, 77, 246, 29, 129, 171, 248, 33, 118, 255, + 255, 107, 73, 243, 56, 220, 242, 12, 241, 235, 254, 95, 75, 242, + 40, 40, 67, 252, 186, 255, 215, 146, 214, 49, 116, 134, 167, 208, + 176, 249, 235, 73, 115, 52, 51, 194, 140, 131, 156, 80, 169, 11, + 146, 201, 52, 246, 217, 112, 244, 64, 167, 15, 14, 31, 65, 79, + 240, 124, 116, 108, 126, 41, 105, 14, 103, 206, 171, 93, 199, 112, + 4, 5, 44, 27, 0, 101, 176, 49, 8, 163, 172, 105, 13, 190, + 148, 228, 97, 124, 134, 184, 181, 192, 151, 146, 16, 45, 138, 110, + 4, 26, 78, 125, 57, 169, 255, 70, 242, 28, 31, 117, 186, 241, + 125, 57, 154, 64, 116, 227, 251, 114, 146, 35, 92, 14, 65, 69, + 191, 156, 60, 62, 46, 72, 131, 146, 28, 15, 98, 8, 88, 251, + 223, 72, 166, 206, 10, 178, 143, 146, 67, 103, 96, 143, 30, 162, + 229, 126, 229, 7, 184, 71, 15, 1, 55, 254, 149, 168, 170, 148, + 27, 255, 138, 216, 163, 135, 160, 225, 95, 17, 123, 244, 16, 112, + 227, 95, 17, 123, 244, 80, 18, 155, 95, 125, 151, 246, 232, 33, + 186, 71, 127, 85, 236, 209, 67, 176, 71, 127, 85, 236, 209, 67, + 176, 71, 127, 149, 238, 209, 127, 205, 64, 186, 137, 113, 234, 119, + 146, 137, 255, 43, 169, 89, 255, 89, 39, 5, 169, 213, 149, 119, + 231, 116, 87, 176, 165, 132, 27, 117, 155, 188, 191, 145, 189, 196, + 181, 140, 204, 198, 219, 110, 181, 28, 155, 185, 88, 139, 86, 112, + 84, 53, 134, 239, 45, 60, 179, 165, 85, 218, 204, 204, 10, 199, + 166, 99, 48, 52, 42, 98, 177, 239, 55, 4, 218, 101, 200, 247, + 54, 80, 248, 2, 156, 27, 173, 224, 188, 2, 77, 15, 254, 130, + 97, 62, 230, 185, 220, 85, 5, 215, 139, 129, 217, 179, 20, 60, + 168, 60, 187, 194, 96, 245, 139, 178, 157, 153, 225, 89, 100, 199, + 216, 118, 209, 10, 124, 22, 151, 161, 235, 179, 57, 191, 181, 91, + 245, 179, 99, 99, 252, 238, 18, 144, 65, 96, 113, 172, 170, 112, + 120, 18, 51, 79, 0, 238, 49, 168, 40, 172, 97, 243, 119, 146, + 233, 99, 232, 223, 232, 200, 52, 177, 145, 192, 169, 223, 77, 234, + 191, 151, 52, 172, 95, 98, 150, 52, 170, 99, 127, 12, 95, 47, + 186, 43, 4, 8, 69, 14, 39, 34, 71, 145, 225, 188, 110, 114, + 80, 1, 68, 108, 82, 247, 219, 227, 2, 98, 167, 46, 236, 185, + 221, 112, 45, 194, 17, 225, 97, 17, 136, 187, 177, 161, 164, 86, + 179, 244, 20, 144, 61, 146, 173, 59, 158, 223, 22, 72, 33, 44, + 78, 13, 29, 170, 216, 28, 8, 91, 78, 45, 236, 182, 122, 28, + 203, 35, 82, 204, 111, 230, 115, 111, 146, 151, 121, 128, 116, 176, + 137, 121, 53, 71, 94, 206, 172, 219, 65, 126, 221, 126, 35, 147, + 131, 202, 192, 163, 166, 242, 9, 185, 171, 212, 8, 177, 192, 234, + 89, 158, 102, 44, 79, 191, 228, 139, 21, 3, 2, 245, 239, 38, + 17, 139, 236, 133, 25, 2, 245, 55, 146, 102, 6, 246, 37, 204, + 49, 167, 191, 145, 228, 136, 208, 152, 99, 78, 127, 35, 185, 127, + 56, 122, 160, 209, 7, 35, 143, 69, 15, 12, 250, 128, 156, 146, + 121, 106, 216, 252, 102, 210, 60, 45, 63, 160, 155, 217, 55, 213, + 60, 181, 36, 125, 176, 127, 40, 122, 0, 73, 240, 137, 232, 129, + 65, 31, 156, 202, 192, 90, 198, 180, 150, 223, 74, 234, 12, 23, + 21, 67, 29, 191, 37, 118, 28, 12, 202, 181, 111, 37, 7, 134, + 5, 169, 81, 114, 100, 84, 144, 6, 37, 143, 29, 103, 33, 162, + 48, 173, 220, 183, 147, 250, 121, 235, 99, 154, 18, 233, 228, 62, + 179, 41, 71, 71, 106, 103, 203, 110, 195, 44, 6, 227, 20, 224, + 192, 252, 109, 135, 46, 248, 0, 209, 163, 128, 65, 148, 2, 80, + 164, 29, 242, 171, 155, 232, 230, 166, 200, 157, 84, 120, 208, 40, + 182, 120, 185, 209, 42, 143, 65, 37, 218, 66, 187, 234, 219, 81, + 211, 104, 71, 125, 59, 201, 237, 63, 48, 116, 211, 183, 147, 220, + 19, 18, 67, 39, 125, 59, 121, 246, 28, 239, 36, 29, 155, 127, + 144, 212, 199, 248, 75, 186, 45, 255, 65, 148, 147, 158, 164, 164, + 204, 9, 236, 197, 147, 248, 140, 32, 13, 74, 158, 207, 242, 156, + 12, 108, 254, 97, 146, 163, 45, 99, 184, 220, 249, 195, 40, 39, + 35, 73, 73, 110, 233, 135, 225, 114, 231, 15, 147, 67, 167, 5, + 9, 105, 207, 157, 231, 57, 153, 216, 252, 78, 82, 23, 47, 77, + 70, 138, 156, 204, 36, 37, 101, 157, 76, 141, 146, 220, 193, 13, + 195, 213, 200, 119, 162, 41, 144, 196, 230, 31, 37, 117, 209, 244, + 164, 9, 164, 200, 41, 9, 111, 101, 157, 146, 26, 37, 135, 196, + 124, 73, 26, 148, 228, 56, 186, 152, 30, 80, 127, 156, 228, 208, + 201, 24, 212, 249, 127, 28, 229, 148, 74, 82, 82, 214, 41, 165, + 81, 18, 159, 18, 164, 65, 201, 51, 103, 209, 215, 52, 164, 155, + 195, 56, 245, 167, 201, 196, 127, 73, 105, 214, 235, 164, 232, 213, + 236, 86, 200, 241, 79, 31, 46, 100, 58, 3, 243, 10, 252, 166, + 48, 193, 66, 228, 134, 219, 112, 186, 0, 139, 201, 142, 173, 224, + 185, 228, 209, 244, 107, 63, 72, 196, 217, 120, 0, 119, 168, 56, + 219, 133, 135, 53, 108, 254, 105, 50, 125, 24, 253, 213, 33, 100, + 154, 195, 116, 5, 254, 108, 74, 63, 101, 125, 103, 144, 20, 200, + 162, 47, 238, 198, 34, 116, 94, 155, 180, 92, 135, 153, 43, 196, + 115, 36, 118, 28, 144, 141, 182, 21, 177, 59, 187, 176, 229, 123, + 204, 190, 209, 86, 175, 123, 35, 208, 91, 233, 94, 19, 143, 246, + 206, 112, 30, 121, 180, 142, 40, 124, 72, 219, 39, 165, 249, 34, + 132, 138, 170, 243, 144, 76, 78, 16, 230, 186, 188, 1, 35, 255, + 112, 14, 148, 230, 54, 221, 134, 29, 32, 25, 39, 158, 199, 250, + 2, 192, 197, 28, 9, 237, 93, 42, 0, 48, 215, 46, 214, 4, + 233, 144, 112, 79, 55, 51, 218, 173, 28, 204, 202, 247, 165, 119, + 193, 93, 68, 22, 29, 240, 136, 243, 253, 109, 98, 183, 25, 68, + 111, 100, 10, 28, 181, 27, 114, 191, 95, 86, 31, 228, 174, 10, + 31, 252, 160, 252, 135, 254, 255, 131, 31, 164, 47, 109, 254, 114, + 189, 6, 255, 212, 29, 66, 54, 8, 217, 220, 114, 17, 21, 151, + 36, 216, 172, 4, 241, 33, 13, 62, 158, 204, 107, 35, 108, 217, + 30, 33, 0, 216, 67, 226, 127, 212, 83, 134, 144, 151, 237, 156, + 59, 70, 200, 203, 228, 114, 142, 76, 230, 200, 116, 142, 76, 146, + 87, 225, 59, 186, 177, 238, 108, 249, 141, 189, 13, 203, 243, 132, + 235, 93, 9, 115, 228, 50, 77, 75, 19, 54, 236, 117, 167, 65, + 178, 162, 245, 99, 44, 73, 45, 87, 223, 147, 228, 138, 72, 194, + 162, 204, 177, 110, 226, 223, 59, 185, 141, 61, 223, 79, 137, 239, + 25, 52, 233, 134, 239, 243, 143, 55, 115, 91, 123, 62, 190, 36, + 63, 102, 168, 158, 217, 169, 49, 17, 99, 130, 118, 211, 56, 41, + 200, 110, 227, 102, 31, 18, 67, 92, 90, 242, 114, 27, 162, 118, + 232, 52, 54, 120, 20, 60, 110, 34, 1, 80, 117, 68, 157, 244, + 44, 130, 24, 199, 180, 117, 219, 99, 138, 103, 153, 184, 163, 230, + 16, 107, 224, 213, 224, 111, 8, 35, 221, 144, 193, 61, 19, 66, + 133, 96, 102, 125, 228, 120, 181, 134, 207, 13, 63, 164, 133, 46, + 115, 55, 99, 28, 76, 158, 196, 39, 57, 152, 49, 182, 221, 32, + 2, 69, 5, 3, 222, 218, 54, 201, 182, 252, 48, 116, 215, 27, + 187, 106, 40, 51, 105, 221, 19, 113, 62, 10, 80, 53, 99, 251, + 0, 168, 148, 249, 67, 114, 43, 25, 217, 93, 59, 91, 84, 116, + 132, 249, 5, 189, 38, 47, 130, 50, 17, 135, 159, 145, 189, 8, + 18, 191, 180, 114, 5, 96, 34, 143, 245, 86, 158, 14, 195, 45, + 81, 23, 57, 137, 35, 89, 76, 186, 234, 209, 178, 68, 135, 50, + 51, 214, 80, 216, 177, 178, 222, 81, 250, 79, 141, 45, 1, 33, + 208, 90, 1, 72, 168, 180, 96, 134, 201, 44, 155, 15, 16, 90, + 28, 144, 158, 52, 253, 16, 148, 10, 254, 250, 109, 215, 239, 132, + 162, 115, 69, 144, 64, 214, 182, 122, 134, 247, 171, 189, 105, 187, + 158, 68, 182, 21, 96, 200, 42, 142, 175, 58, 12, 241, 8, 24, + 97, 205, 111, 57, 57, 102, 169, 13, 118, 41, 18, 41, 184, 71, + 171, 227, 83, 245, 124, 200, 150, 183, 176, 243, 98, 158, 54, 0, + 79, 203, 103, 149, 219, 14, 57, 227, 202, 191, 101, 115, 133, 213, + 136, 79, 23, 165, 61, 142, 147, 97, 22, 106, 177, 185, 16, 117, + 160, 144, 129, 152, 61, 30, 205, 101, 221, 217, 116, 61, 152, 70, + 156, 235, 234, 238, 25, 230, 9, 28, 110, 217, 1, 19, 45, 186, + 144, 166, 133, 221, 22, 67, 200, 133, 52, 208, 200, 103, 152, 121, + 17, 51, 147, 178, 123, 181, 88, 109, 102, 232, 55, 5, 128, 104, + 215, 151, 52, 103, 41, 216, 53, 29, 91, 134, 133, 97, 89, 80, + 161, 201, 241, 234, 118, 143, 69, 68, 50, 16, 110, 56, 195, 37, + 88, 216, 36, 33, 174, 168, 205, 118, 40, 218, 50, 5, 56, 92, + 174, 204, 88, 48, 147, 8, 146, 51, 154, 209, 52, 163, 232, 192, + 116, 89, 44, 54, 1, 9, 194, 77, 200, 105, 166, 28, 203, 206, + 13, 64, 162, 244, 189, 200, 126, 84, 70, 66, 33, 227, 100, 46, + 66, 169, 98, 193, 118, 192, 233, 131, 243, 189, 202, 50, 226, 28, + 106, 43, 240, 215, 237, 117, 102, 45, 83, 119, 66, 119, 211, 3, + 61, 24, 64, 77, 131, 154, 144, 180, 97, 61, 139, 94, 18, 154, + 3, 134, 157, 210, 182, 189, 122, 142, 50, 197, 224, 183, 192, 44, + 162, 253, 13, 165, 148, 26, 179, 199, 33, 44, 22, 74, 205, 15, + 234, 10, 78, 39, 184, 158, 112, 230, 120, 24, 248, 254, 159, 77, + 233, 146, 76, 81, 146, 243, 253, 195, 192, 247, 255, 108, 106, 228, + 184, 32, 13, 74, 158, 36, 160, 96, 25, 166, 82, 228, 207, 165, + 244, 63, 77, 49, 243, 231, 97, 16, 132, 126, 46, 133, 48, 250, + 104, 31, 74, 81, 154, 114, 56, 159, 79, 153, 57, 235, 187, 41, + 53, 232, 0, 135, 69, 183, 131, 182, 152, 174, 247, 226, 209, 132, + 207, 55, 15, 63, 132, 100, 27, 1, 17, 93, 241, 170, 224, 186, + 83, 69, 19, 202, 163, 129, 177, 77, 141, 67, 184, 129, 145, 158, + 205, 118, 73, 202, 36, 50, 15, 235, 192, 247, 219, 61, 107, 32, + 80, 118, 232, 142, 196, 237, 153, 218, 177, 248, 1, 196, 175, 213, + 58, 16, 131, 62, 54, 105, 65, 139, 66, 11, 129, 163, 31, 142, + 192, 75, 112, 4, 62, 1, 231, 37, 138, 118, 232, 25, 182, 17, + 55, 156, 188, 240, 161, 167, 163, 153, 189, 52, 70, 200, 196, 4, + 164, 19, 30, 148, 121, 104, 91, 246, 137, 49, 201, 56, 76, 76, + 64, 150, 242, 3, 122, 0, 103, 199, 20, 206, 98, 98, 130, 76, + 69, 102, 143, 98, 21, 247, 104, 104, 172, 112, 134, 36, 160, 118, + 228, 101, 168, 165, 60, 128, 187, 123, 41, 150, 248, 58, 185, 124, + 13, 193, 154, 233, 46, 131, 101, 185, 39, 243, 233, 120, 230, 189, + 194, 139, 16, 225, 246, 57, 205, 179, 238, 25, 131, 4, 248, 143, + 61, 217, 79, 245, 228, 250, 224, 91, 238, 70, 26, 109, 13, 204, + 51, 31, 38, 71, 20, 132, 84, 30, 176, 126, 20, 116, 142, 43, + 53, 74, 27, 148, 137, 229, 38, 52, 108, 42, 53, 236, 176, 45, + 166, 228, 158, 193, 167, 35, 47, 167, 70, 215, 41, 29, 231, 236, + 162, 173, 62, 43, 225, 33, 229, 22, 143, 196, 162, 97, 76, 157, + 216, 181, 192, 195, 70, 92, 196, 53, 221, 154, 223, 240, 189, 49, + 110, 199, 63, 204, 149, 16, 159, 79, 113, 133, 193, 48, 87, 66, + 124, 62, 197, 195, 82, 13, 115, 37, 196, 231, 83, 195, 71, 162, + 7, 6, 125, 96, 29, 139, 30, 164, 233, 131, 227, 23, 209, 32, + 74, 243, 7, 58, 125, 242, 216, 5, 244, 27, 58, 95, 242, 26, + 54, 191, 72, 151, 252, 191, 208, 133, 207, 233, 22, 196, 160, 96, + 226, 122, 123, 43, 112, 28, 22, 53, 160, 19, 72, 110, 107, 134, + 3, 126, 55, 92, 143, 74, 7, 240, 187, 230, 55, 58, 77, 47, + 135, 8, 61, 176, 233, 139, 136, 125, 205, 41, 22, 187, 118, 24, + 118, 154, 78, 157, 29, 206, 118, 168, 100, 52, 150, 131, 164, 44, + 31, 25, 224, 194, 14, 164, 219, 152, 235, 49, 132, 92, 118, 96, + 176, 190, 7, 111, 45, 238, 8, 86, 219, 205, 19, 197, 38, 154, + 230, 201, 230, 31, 203, 82, 94, 131, 208, 44, 223, 112, 2, 127, + 156, 41, 247, 41, 255, 33, 109, 214, 119, 253, 14, 59, 44, 118, + 56, 144, 129, 93, 175, 35, 50, 5, 238, 103, 116, 251, 226, 183, + 33, 117, 55, 108, 53, 236, 93, 87, 68, 4, 237, 48, 55, 90, + 209, 239, 154, 9, 157, 26, 141, 157, 150, 164, 15, 148, 177, 211, + 160, 219, 149, 177, 211, 12, 250, 64, 25, 59, 45, 77, 31, 40, + 99, 167, 209, 177, 251, 34, 29, 187, 255, 118, 31, 31, 59, 29, + 155, 127, 146, 50, 199, 172, 191, 189, 79, 66, 217, 87, 64, 238, + 164, 199, 91, 201, 219, 240, 227, 138, 63, 9, 104, 171, 204, 88, + 1, 124, 109, 3, 188, 215, 46, 21, 74, 155, 156, 163, 6, 174, + 197, 141, 174, 128, 224, 232, 134, 88, 157, 108, 87, 141, 102, 61, + 151, 221, 33, 129, 48, 187, 22, 1, 89, 196, 132, 87, 15, 120, + 132, 72, 1, 48, 116, 249, 65, 8, 170, 238, 189, 229, 250, 30, + 216, 73, 59, 181, 14, 88, 157, 210, 207, 66, 6, 93, 74, 60, + 159, 205, 41, 196, 148, 80, 93, 169, 216, 97, 44, 191, 103, 87, + 123, 109, 174, 111, 134, 192, 170, 82, 30, 128, 66, 105, 133, 26, + 142, 77, 185, 138, 181, 186, 195, 234, 189, 38, 43, 4, 25, 108, + 59, 78, 139, 30, 129, 246, 102, 96, 183, 182, 160, 218, 242, 3, + 152, 110, 172, 2, 72, 116, 86, 118, 189, 211, 6, 238, 169, 230, + 123, 30, 243, 35, 104, 251, 99, 76, 211, 205, 124, 0, 196, 106, + 202, 179, 131, 81, 230, 13, 206, 29, 66, 31, 187, 190, 203, 208, + 151, 186, 27, 227, 71, 61, 22, 29, 169, 140, 97, 136, 100, 6, + 233, 121, 190, 12, 94, 59, 91, 81, 18, 238, 88, 163, 162, 226, + 92, 147, 47, 155, 118, 176, 77, 215, 9, 211, 131, 79, 76, 140, + 49, 225, 42, 132, 120, 164, 14, 72, 1, 156, 237, 99, 204, 170, + 232, 135, 156, 232, 67, 58, 31, 218, 28, 105, 11, 38, 141, 71, + 236, 176, 237, 4, 110, 184, 29, 69, 57, 150, 217, 237, 221, 49, + 65, 176, 3, 60, 86, 58, 49, 252, 200, 129, 147, 169, 9, 130, + 176, 157, 71, 100, 201, 217, 129, 62, 129, 153, 203, 253, 117, 35, + 95, 95, 8, 152, 197, 194, 176, 136, 160, 17, 177, 131, 5, 176, + 97, 164, 54, 1, 206, 222, 57, 222, 124, 117, 226, 110, 248, 62, + 72, 199, 247, 120, 189, 110, 7, 249, 30, 217, 174, 219, 1, 59, + 253, 122, 157, 101, 235, 246, 27, 228, 58, 185, 116, 237, 190, 217, + 190, 33, 74, 45, 120, 156, 63, 167, 61, 177, 231, 155, 251, 228, + 209, 148, 53, 127, 80, 78, 226, 75, 37, 160, 110, 103, 189, 65, + 101, 57, 159, 177, 7, 60, 131, 121, 190, 48, 228, 60, 97, 177, + 143, 130, 77, 37, 58, 44, 157, 240, 98, 18, 248, 1, 105, 7, + 182, 11, 158, 35, 98, 138, 240, 172, 88, 169, 68, 164, 87, 3, + 180, 6, 108, 43, 90, 111, 216, 222, 54, 155, 244, 98, 53, 112, + 79, 89, 198, 7, 66, 54, 84, 174, 200, 63, 184, 122, 209, 210, + 34, 211, 249, 158, 99, 194, 62, 187, 78, 174, 176, 81, 185, 64, + 102, 213, 137, 45, 123, 11, 88, 183, 11, 12, 154, 31, 154, 77, + 22, 121, 91, 197, 244, 14, 249, 39, 98, 146, 115, 102, 35, 79, + 46, 76, 220, 55, 103, 46, 75, 144, 11, 100, 51, 0, 160, 74, + 158, 160, 107, 98, 177, 151, 228, 58, 121, 92, 142, 10, 183, 82, + 32, 245, 174, 230, 135, 202, 113, 164, 155, 112, 78, 68, 199, 145, + 158, 164, 15, 248, 125, 6, 60, 208, 232, 131, 145, 51, 209, 3, + 131, 62, 56, 159, 133, 251, 12, 250, 192, 192, 230, 247, 82, 230, + 5, 249, 129, 97, 194, 131, 40, 79, 35, 73, 31, 40, 121, 26, + 26, 125, 48, 114, 54, 122, 0, 121, 100, 199, 100, 158, 38, 54, + 255, 115, 202, 156, 150, 31, 152, 236, 65, 148, 167, 153, 164, 15, + 148, 60, 77, 141, 62, 24, 25, 143, 30, 24, 244, 193, 228, 20, + 250, 63, 53, 164, 155, 35, 56, 245, 86, 95, 226, 239, 244, 105, + 214, 191, 215, 148, 72, 126, 108, 87, 108, 48, 97, 107, 203, 109, + 145, 117, 167, 189, 227, 56, 94, 151, 63, 25, 147, 186, 219, 97, + 183, 146, 90, 4, 138, 40, 68, 184, 243, 242, 124, 85, 209, 99, + 194, 208, 175, 185, 182, 188, 249, 146, 241, 113, 100, 41, 72, 213, + 122, 71, 87, 230, 34, 206, 3, 112, 152, 128, 198, 79, 167, 88, + 100, 43, 204, 19, 197, 240, 65, 152, 130, 122, 68, 195, 230, 91, + 125, 233, 163, 232, 14, 50, 205, 17, 42, 189, 125, 164, 79, 63, + 107, 189, 78, 10, 30, 41, 72, 163, 23, 113, 4, 133, 76, 224, + 7, 77, 0, 101, 73, 157, 59, 112, 102, 116, 117, 2, 40, 230, + 196, 153, 130, 132, 54, 68, 0, 73, 121, 155, 241, 128, 37, 32, + 73, 142, 0, 179, 250, 145, 62, 93, 146, 41, 74, 14, 28, 18, + 164, 70, 201, 195, 68, 144, 6, 37, 79, 159, 1, 169, 116, 132, + 74, 165, 63, 214, 167, 255, 68, 31, 147, 74, 71, 64, 42, 253, + 177, 62, 52, 130, 254, 166, 134, 82, 148, 166, 237, 122, 187, 207, + 204, 89, 63, 162, 10, 165, 96, 169, 25, 63, 249, 186, 47, 23, + 98, 49, 179, 163, 120, 99, 96, 101, 204, 116, 233, 112, 44, 11, + 85, 145, 221, 205, 61, 229, 133, 142, 63, 207, 180, 72, 48, 235, + 70, 56, 111, 254, 118, 31, 159, 168, 35, 156, 55, 127, 187, 143, + 243, 119, 35, 156, 55, 127, 187, 143, 243, 119, 35, 156, 55, 127, + 187, 143, 243, 119, 35, 156, 55, 127, 187, 143, 243, 119, 35, 130, + 55, 127, 187, 239, 177, 11, 104, 153, 183, 91, 195, 230, 199, 250, + 204, 51, 214, 211, 221, 237, 134, 57, 0, 200, 220, 76, 54, 225, + 44, 86, 239, 246, 43, 245, 166, 124, 233, 199, 212, 122, 83, 190, + 244, 99, 125, 124, 129, 141, 112, 190, 244, 99, 125, 35, 39, 163, + 7, 6, 125, 144, 57, 141, 118, 120, 165, 116, 108, 126, 188, 207, + 124, 204, 218, 236, 174, 20, 112, 242, 236, 244, 222, 8, 29, 24, + 148, 245, 221, 118, 20, 184, 54, 62, 207, 56, 26, 57, 44, 203, + 200, 10, 94, 185, 70, 100, 183, 241, 74, 229, 233, 118, 241, 113, + 181, 242, 116, 23, 251, 184, 218, 233, 180, 195, 62, 222, 199, 35, + 1, 143, 240, 93, 236, 227, 125, 199, 142, 163, 127, 43, 166, 146, + 129, 205, 79, 246, 153, 199, 172, 95, 209, 246, 204, 37, 110, 92, + 246, 48, 149, 231, 158, 179, 247, 169, 60, 228, 194, 0, 122, 28, + 79, 208, 202, 125, 39, 221, 23, 90, 118, 216, 86, 196, 208, 192, + 105, 56, 183, 33, 154, 250, 110, 219, 33, 89, 30, 168, 143, 97, + 74, 8, 17, 18, 214, 236, 117, 200, 114, 156, 241, 75, 99, 74, + 15, 209, 61, 249, 147, 106, 15, 209, 61, 249, 147, 106, 15, 209, + 61, 249, 147, 125, 60, 146, 241, 8, 223, 147, 63, 217, 119, 212, + 66, 95, 60, 141, 78, 50, 240, 249, 9, 187, 229, 78, 192, 66, + 89, 19, 136, 1, 108, 34, 97, 196, 209, 233, 237, 150, 107, 113, + 164, 250, 9, 129, 84, 63, 17, 25, 82, 176, 175, 47, 124, 70, + 67, 251, 65, 242, 159, 229, 185, 224, 19, 200, 186, 81, 42, 46, + 206, 175, 205, 22, 23, 10, 207, 151, 150, 203, 107, 171, 75, 149, + 149, 226, 92, 233, 70, 169, 56, 63, 152, 192, 251, 80, 90, 132, + 93, 31, 212, 40, 85, 46, 62, 183, 90, 42, 23, 231, 7, 117, + 124, 16, 13, 44, 175, 86, 87, 86, 171, 107, 203, 75, 139, 47, + 14, 26, 248, 0, 66, 165, 37, 73, 155, 120, 63, 234, 47, 221, + 186, 181, 90, 45, 204, 46, 22, 7, 147, 24, 163, 3, 171, 75, + 203, 229, 249, 98, 185, 56, 191, 182, 88, 170, 84, 7, 83, 248, + 16, 26, 90, 90, 94, 90, 43, 222, 90, 169, 190, 184, 54, 95, + 188, 81, 88, 93, 172, 14, 246, 65, 78, 243, 197, 165, 42, 173, + 70, 121, 48, 61, 243, 26, 58, 16, 111, 62, 126, 44, 223, 141, + 203, 15, 13, 227, 198, 27, 163, 63, 149, 38, 70, 246, 192, 244, + 209, 124, 212, 63, 249, 88, 203, 203, 251, 55, 84, 114, 182, 133, + 14, 212, 252, 166, 242, 249, 44, 142, 125, 15, 26, 146, 21, 237, + 165, 2, 255, 98, 211, 111, 216, 222, 102, 222, 15, 54, 39, 54, + 29, 15, 42, 49, 193, 94, 217, 45, 55, 132, 1, 83, 108, 28, + 175, 41, 191, 63, 165, 155, 55, 11, 43, 165, 103, 126, 231, 36, + 74, 97, 243, 64, 98, 83, 67, 159, 51, 145, 182, 15, 27, 7, + 18, 120, 250, 191, 55, 201, 156, 223, 218, 13, 220, 205, 173, 54, + 153, 158, 156, 190, 196, 237, 13, 201, 226, 226, 28, 66, 100, 209, + 173, 57, 30, 184, 73, 122, 117, 46, 245, 21, 90, 148, 203, 16, + 111, 114, 228, 121, 134, 136, 67, 166, 243, 147, 36, 11, 138, 108, + 254, 42, 51, 118, 13, 129, 52, 45, 194, 82, 42, 81, 26, 225, + 210, 164, 230, 180, 96, 153, 49, 160, 75, 219, 171, 57, 17, 246, + 38, 207, 35, 143, 0, 107, 19, 66, 69, 175, 195, 17, 73, 101, + 216, 150, 240, 217, 22, 159, 17, 187, 141, 152, 86, 109, 171, 221, + 110, 205, 76, 76, 236, 236, 236, 228, 109, 168, 40, 116, 89, 131, + 125, 22, 78, 44, 150, 230, 138, 75, 149, 226, 248, 116, 126, 18, + 33, 178, 234, 129, 83, 171, 116, 120, 93, 223, 21, 209, 19, 41, + 247, 219, 176, 119, 64, 35, 185, 25, 112, 200, 47, 215, 19, 152, + 49, 57, 18, 250, 27, 237, 29, 16, 138, 234, 46, 101, 33, 215, + 59, 237, 88, 47, 137, 138, 241, 232, 235, 226, 3, 31, 92, 83, + 51, 133, 10, 41, 85, 50, 100, 182, 80, 41, 85, 114, 136, 188, + 80, 170, 46, 44, 175, 86, 201, 11, 133, 114, 185, 176, 84, 45, + 21, 43, 100, 185, 76, 230, 150, 151, 230, 75, 116, 45, 84, 200, + 242, 13, 82, 88, 122, 145, 60, 91, 90, 154, 207, 9, 7, 95, + 231, 14, 149, 235, 67, 48, 96, 4, 107, 190, 186, 130, 252, 42, + 138, 151, 246, 228, 34, 200, 131, 196, 69, 219, 244, 111, 59, 1, + 136, 90, 128, 216, 17, 242, 248, 149, 94, 29, 17, 192, 174, 225, + 122, 233, 61, 45, 202, 35, 148, 70, 154, 142, 141, 193, 196, 48, + 234, 71, 186, 145, 192, 6, 78, 92, 160, 15, 211, 216, 24, 73, + 124, 128, 62, 76, 15, 176, 159, 236, 225, 161, 68, 6, 30, 34, + 246, 147, 61, 60, 156, 184, 4, 15, 249, 79, 246, 240, 72, 226, + 60, 60, 212, 216, 79, 246, 112, 148, 39, 63, 35, 126, 106, 125, + 216, 180, 18, 89, 13, 125, 205, 64, 122, 95, 2, 27, 231, 245, + 25, 235, 215, 13, 82, 224, 138, 121, 69, 251, 39, 219, 45, 176, + 45, 56, 254, 73, 86, 140, 121, 78, 68, 86, 166, 188, 90, 14, + 34, 242, 140, 129, 41, 150, 88, 231, 49, 160, 208, 184, 40, 217, + 165, 154, 36, 47, 103, 149, 213, 31, 223, 63, 198, 200, 117, 34, + 182, 178, 87, 65, 196, 168, 180, 237, 54, 143, 239, 242, 48, 137, + 149, 157, 143, 165, 239, 222, 142, 230, 59, 92, 19, 211, 110, 55, + 104, 134, 108, 57, 60, 32, 215, 104, 251, 236, 157, 105, 213, 109, + 58, 97, 219, 110, 182, 232, 108, 115, 3, 103, 173, 237, 178, 182, + 62, 84, 238, 74, 157, 115, 92, 231, 253, 128, 234, 136, 221, 251, + 213, 107, 8, 33, 100, 244, 37, 116, 108, 88, 125, 167, 217, 111, + 147, 14, 52, 127, 158, 194, 198, 249, 1, 254, 92, 195, 198, 249, + 51, 211, 236, 183, 129, 141, 243, 87, 174, 162, 111, 234, 72, 79, + 38, 176, 57, 153, 216, 212, 172, 223, 214, 193, 99, 223, 171, 187, + 53, 128, 38, 227, 91, 135, 138, 133, 99, 243, 184, 244, 108, 150, + 100, 55, 226, 87, 3, 118, 91, 232, 145, 57, 150, 16, 223, 46, + 128, 97, 255, 80, 199, 9, 219, 204, 47, 152, 229, 97, 135, 98, + 74, 1, 62, 9, 23, 206, 108, 202, 71, 180, 58, 237, 49, 1, + 107, 112, 225, 130, 184, 93, 187, 112, 65, 5, 230, 150, 213, 18, + 115, 176, 230, 55, 8, 143, 97, 201, 239, 208, 175, 81, 33, 152, + 217, 86, 50, 67, 187, 48, 158, 146, 10, 49, 116, 199, 228, 112, + 26, 91, 254, 14, 41, 172, 148, 192, 176, 131, 206, 215, 45, 219, + 171, 55, 36, 27, 41, 144, 9, 193, 48, 189, 42, 157, 172, 46, + 92, 104, 218, 187, 23, 46, 144, 192, 169, 57, 238, 109, 7, 144, + 90, 99, 129, 129, 163, 91, 41, 132, 140, 36, 29, 132, 201, 36, + 70, 79, 35, 51, 73, 185, 117, 99, 90, 63, 101, 77, 147, 57, + 223, 187, 77, 57, 34, 166, 84, 224, 86, 205, 208, 187, 224, 193, + 167, 248, 21, 195, 193, 0, 70, 171, 201, 36, 240, 206, 198, 180, + 126, 92, 80, 58, 54, 166, 79, 18, 244, 51, 26, 228, 174, 97, + 227, 9, 253, 160, 245, 227, 26, 135, 80, 226, 122, 91, 209, 21, + 66, 229, 111, 135, 82, 118, 206, 35, 242, 2, 64, 109, 0, 48, + 7, 195, 189, 232, 213, 189, 118, 224, 144, 72, 99, 221, 22, 64, + 3, 235, 114, 255, 228, 176, 50, 196, 105, 182, 182, 236, 208, 101, + 152, 3, 81, 172, 76, 89, 127, 13, 234, 40, 41, 29, 27, 79, + 236, 63, 128, 254, 57, 171, 191, 142, 141, 39, 245, 131, 214, 63, + 161, 242, 233, 158, 42, 139, 201, 37, 209, 47, 216, 180, 117, 20, + 48, 23, 246, 237, 133, 11, 205, 78, 72, 231, 206, 186, 19, 193, + 90, 219, 97, 236, 142, 142, 207, 206, 28, 211, 129, 111, 216, 110, + 3, 194, 243, 250, 164, 238, 147, 144, 199, 192, 226, 23, 197, 30, + 113, 130, 128, 110, 140, 29, 30, 40, 246, 181, 210, 210, 243, 133, + 197, 210, 252, 90, 161, 124, 115, 245, 86, 113, 169, 250, 218, 152, + 108, 30, 29, 130, 39, 101, 243, 160, 65, 251, 15, 160, 63, 101, + 205, 51, 176, 49, 171, 99, 235, 247, 123, 54, 79, 217, 108, 31, + 216, 66, 21, 175, 27, 150, 90, 216, 242, 233, 33, 158, 227, 192, + 63, 181, 70, 71, 120, 56, 32, 245, 58, 153, 183, 58, 22, 97, + 144, 113, 38, 60, 62, 58, 235, 57, 113, 109, 235, 182, 217, 169, + 7, 79, 97, 61, 178, 216, 126, 81, 159, 216, 12, 212, 51, 4, + 164, 44, 5, 180, 240, 124, 200, 195, 111, 213, 156, 168, 111, 12, + 141, 182, 127, 191, 160, 116, 108, 204, 14, 14, 161, 159, 102, 125, + 99, 98, 227, 166, 62, 100, 253, 87, 61, 251, 6, 246, 135, 119, + 216, 53, 98, 23, 226, 87, 223, 168, 235, 158, 92, 166, 162, 171, + 77, 213, 148, 74, 45, 41, 171, 174, 169, 209, 10, 238, 19, 148, + 142, 141, 155, 7, 7, 209, 223, 99, 149, 79, 98, 99, 81, 31, + 180, 62, 209, 187, 242, 205, 102, 167, 77, 217, 166, 7, 214, 93, + 172, 40, 135, 182, 181, 230, 196, 199, 12, 224, 60, 28, 136, 250, + 137, 192, 206, 155, 74, 177, 145, 158, 132, 227, 63, 177, 237, 178, + 206, 148, 133, 112, 31, 33, 91, 144, 212, 104, 45, 7, 4, 165, + 99, 99, 241, 192, 65, 244, 227, 58, 180, 32, 133, 141, 178, 126, + 200, 250, 176, 46, 91, 192, 55, 247, 172, 208, 152, 143, 41, 56, + 174, 30, 233, 120, 128, 23, 227, 212, 73, 195, 5, 141, 243, 189, + 90, 38, 124, 2, 105, 29, 69, 20, 104, 69, 59, 33, 49, 157, + 104, 54, 192, 93, 216, 222, 46, 177, 131, 117, 183, 29, 216, 193, + 46, 97, 176, 52, 57, 18, 216, 113, 69, 55, 71, 171, 97, 113, + 128, 2, 41, 220, 211, 141, 95, 134, 143, 35, 5, 9, 199, 212, + 224, 81, 40, 104, 41, 231, 67, 158, 26, 88, 231, 64, 237, 189, + 144, 143, 19, 239, 163, 148, 70, 123, 101, 80, 80, 58, 54, 202, + 195, 35, 232, 175, 176, 30, 235, 195, 198, 7, 244, 81, 235, 59, + 90, 188, 199, 20, 204, 13, 102, 36, 31, 242, 168, 150, 236, 166, + 66, 236, 244, 28, 22, 111, 67, 192, 221, 222, 163, 7, 57, 50, + 16, 180, 145, 183, 139, 11, 228, 144, 155, 136, 6, 19, 77, 19, + 186, 161, 41, 197, 177, 15, 34, 133, 43, 179, 218, 103, 162, 55, + 100, 170, 98, 135, 217, 59, 176, 203, 111, 128, 49, 51, 218, 147, + 11, 11, 167, 205, 212, 14, 172, 71, 250, 52, 218, 7, 195, 130, + 210, 177, 241, 129, 195, 71, 208, 119, 77, 232, 159, 52, 54, 54, + 244, 33, 235, 155, 102, 119, 255, 56, 241, 29, 137, 171, 99, 178, + 182, 84, 23, 114, 9, 141, 171, 10, 17, 81, 24, 35, 241, 249, + 152, 180, 122, 147, 247, 58, 60, 31, 96, 57, 219, 62, 233, 120, + 238, 135, 58, 224, 169, 198, 20, 15, 60, 194, 157, 248, 46, 15, + 87, 52, 133, 210, 202, 184, 16, 177, 218, 0, 113, 204, 207, 182, + 46, 192, 96, 6, 240, 38, 110, 235, 16, 121, 141, 150, 242, 154, + 64, 124, 143, 215, 64, 66, 120, 73, 166, 67, 9, 135, 16, 207, + 43, 174, 211, 20, 145, 17, 88, 54, 145, 25, 147, 2, 35, 36, + 130, 29, 72, 101, 74, 16, 161, 206, 71, 9, 33, 86, 53, 179, + 244, 138, 244, 164, 113, 46, 31, 113, 204, 66, 197, 99, 80, 236, + 51, 46, 15, 234, 178, 238, 212, 249, 78, 200, 174, 186, 32, 40, + 22, 219, 128, 132, 111, 150, 7, 176, 12, 110, 196, 77, 176, 24, + 72, 30, 11, 159, 205, 32, 188, 104, 178, 213, 86, 93, 77, 198, + 74, 16, 199, 249, 88, 158, 148, 68, 56, 35, 127, 131, 127, 52, + 46, 165, 19, 69, 92, 231, 8, 161, 175, 69, 250, 136, 215, 212, + 140, 228, 180, 164, 50, 210, 134, 220, 170, 211, 58, 54, 54, 14, + 14, 174, 167, 24, 204, 40, 250, 181, 139, 104, 102, 211, 207, 215, + 182, 2, 191, 233, 118, 154, 76, 8, 238, 212, 220, 9, 118, 140, + 213, 215, 153, 214, 102, 226, 246, 212, 68, 219, 9, 219, 107, 34, + 248, 13, 87, 243, 12, 210, 111, 243, 226, 219, 252, 237, 41, 235, + 120, 183, 178, 135, 225, 255, 178, 239, 173, 7, 233, 141, 172, 75, + 15, 89, 153, 154, 223, 108, 250, 30, 75, 148, 249, 158, 134, 112, + 213, 9, 219, 183, 120, 229, 230, 157, 182, 237, 54, 240, 17, 100, + 210, 49, 25, 213, 136, 150, 237, 159, 53, 190, 94, 48, 202, 240, + 0, 143, 162, 62, 30, 66, 127, 84, 167, 239, 202, 130, 196, 71, + 80, 31, 52, 211, 173, 143, 26, 240, 38, 69, 201, 82, 29, 31, + 69, 233, 192, 217, 88, 219, 178, 195, 173, 209, 125, 44, 77, 224, + 108, 44, 216, 225, 22, 158, 65, 136, 205, 181, 181, 192, 217, 24, + 53, 137, 150, 29, 152, 62, 150, 239, 238, 152, 60, 211, 23, 151, + 157, 141, 114, 127, 40, 126, 226, 89, 180, 175, 173, 84, 124, 52, + 9, 169, 79, 236, 77, 173, 54, 175, 28, 75, 147, 249, 168, 142, + 246, 169, 175, 49, 86, 219, 205, 155, 60, 131, 210, 194, 220, 5, + 218, 124, 207, 66, 132, 30, 187, 44, 191, 199, 115, 104, 255, 122, + 103, 115, 77, 218, 200, 65, 215, 244, 204, 96, 182, 179, 57, 39, + 190, 42, 239, 91, 87, 40, 124, 17, 13, 81, 246, 215, 9, 218, + 174, 19, 174, 133, 181, 45, 167, 105, 67, 103, 245, 151, 7, 163, + 23, 21, 120, 142, 159, 64, 40, 122, 198, 59, 229, 200, 30, 197, + 90, 5, 102, 86, 89, 249, 52, 83, 97, 93, 33, 26, 65, 187, + 34, 112, 90, 190, 232, 10, 250, 27, 31, 67, 253, 27, 110, 195, + 89, 131, 62, 98, 227, 159, 166, 15, 150, 104, 63, 97, 100, 54, + 92, 207, 129, 38, 38, 203, 240, 59, 243, 243, 26, 218, 167, 182, + 12, 47, 161, 253, 110, 24, 118, 156, 181, 118, 96, 215, 182, 157, + 0, 178, 31, 152, 62, 191, 183, 67, 74, 244, 179, 42, 251, 74, + 166, 95, 72, 148, 247, 185, 202, 11, 92, 64, 233, 166, 239, 249, + 129, 237, 54, 248, 224, 156, 222, 155, 213, 45, 254, 133, 154, 141, + 76, 54, 155, 70, 41, 166, 229, 207, 204, 160, 67, 61, 75, 197, + 167, 208, 62, 57, 132, 116, 130, 211, 74, 27, 229, 1, 249, 172, + 84, 207, 204, 161, 161, 61, 197, 168, 171, 69, 139, 175, 150, 17, + 148, 132, 195, 144, 247, 34, 35, 102, 167, 94, 154, 120, 184, 69, + 124, 141, 61, 105, 173, 63, 243, 63, 101, 80, 31, 78, 30, 72, + 188, 165, 105, 232, 95, 69, 58, 199, 207, 118, 233, 28, 39, 97, + 187, 95, 92, 157, 43, 145, 2, 224, 83, 130, 174, 229, 47, 156, + 234, 241, 61, 221, 227, 15, 81, 247, 120, 52, 210, 61, 158, 131, + 159, 26, 54, 134, 19, 99, 240, 83, 199, 198, 72, 226, 186, 212, + 51, 222, 16, 26, 73, 250, 115, 18, 233, 102, 2, 155, 71, 19, + 151, 53, 235, 12, 41, 237, 241, 80, 178, 9, 221, 132, 101, 48, + 56, 166, 222, 48, 19, 26, 54, 142, 166, 45, 244, 75, 58, 50, + 193, 243, 218, 200, 232, 79, 89, 191, 160, 147, 57, 6, 96, 14, + 76, 154, 224, 117, 152, 61, 88, 44, 27, 134, 120, 76, 7, 177, + 12, 107, 99, 126, 54, 255, 92, 199, 9, 118, 213, 253, 29, 145, + 242, 202, 28, 179, 75, 109, 218, 237, 25, 68, 50, 124, 61, 134, + 19, 111, 174, 148, 151, 159, 41, 206, 85, 239, 78, 4, 206, 70, + 56, 241, 102, 185, 120, 99, 109, 161, 80, 89, 184, 11, 135, 119, + 56, 241, 230, 106, 121, 113, 173, 88, 153, 43, 172, 20, 231, 215, + 170, 197, 74, 117, 173, 52, 127, 55, 147, 71, 220, 2, 182, 199, + 91, 48, 199, 103, 39, 34, 113, 194, 154, 221, 146, 124, 40, 157, + 196, 225, 204, 196, 132, 114, 225, 208, 218, 222, 156, 240, 156, 246, + 68, 39, 104, 76, 156, 94, 177, 219, 91, 69, 72, 193, 189, 141, + 27, 161, 47, 19, 217, 110, 43, 95, 119, 110, 79, 76, 77, 131, + 153, 197, 178, 42, 237, 83, 78, 197, 132, 123, 82, 35, 163, 167, + 5, 165, 97, 35, 211, 191, 95, 80, 6, 54, 50, 131, 67, 130, + 74, 99, 35, 131, 175, 163, 131, 40, 13, 212, 79, 165, 105, 191, + 15, 63, 137, 8, 12, 130, 134, 141, 179, 250, 33, 107, 56, 218, + 60, 120, 127, 201, 162, 180, 36, 253, 68, 20, 165, 209, 4, 253, + 131, 130, 50, 176, 113, 118, 120, 4, 185, 144, 151, 142, 141, 49, + 253, 144, 245, 10, 41, 112, 150, 90, 101, 62, 65, 63, 8, 195, + 9, 123, 64, 188, 40, 82, 22, 67, 78, 199, 146, 141, 110, 94, + 244, 44, 15, 248, 103, 187, 141, 80, 86, 138, 138, 209, 99, 178, + 82, 180, 21, 99, 178, 82, 186, 129, 141, 177, 225, 17, 136, 8, + 11, 138, 148, 113, 253, 136, 21, 144, 5, 231, 142, 93, 119, 106, + 110, 211, 110, 72, 212, 121, 202, 177, 8, 5, 180, 136, 198, 36, + 185, 149, 60, 34, 5, 174, 141, 140, 30, 10, 47, 135, 45, 134, + 150, 169, 128, 142, 17, 193, 2, 73, 240, 49, 86, 29, 35, 73, + 107, 32, 170, 74, 87, 216, 120, 191, 24, 28, 131, 214, 110, 228, + 48, 122, 25, 170, 106, 98, 99, 82, 63, 102, 45, 145, 66, 196, + 238, 75, 95, 13, 225, 6, 231, 181, 3, 191, 193, 195, 73, 43, + 182, 217, 177, 133, 66, 55, 100, 30, 202, 85, 86, 195, 76, 209, + 220, 7, 4, 165, 97, 99, 114, 223, 97, 65, 25, 216, 152, 60, + 106, 161, 179, 80, 141, 36, 54, 46, 233, 196, 26, 133, 177, 80, + 243, 4, 83, 55, 153, 97, 50, 69, 191, 59, 32, 40, 13, 27, + 151, 14, 30, 19, 148, 129, 141, 75, 39, 78, 162, 243, 8, 44, + 77, 158, 72, 148, 53, 235, 216, 61, 247, 9, 190, 61, 128, 186, + 47, 61, 130, 206, 33, 19, 16, 196, 141, 171, 58, 182, 142, 50, + 20, 124, 113, 33, 15, 205, 4, 51, 100, 86, 13, 13, 86, 194, + 85, 222, 189, 0, 39, 110, 92, 229, 43, 65, 131, 149, 112, 117, + 112, 8, 173, 65, 142, 26, 54, 174, 235, 199, 173, 50, 121, 33, + 222, 107, 174, 52, 183, 207, 201, 248, 103, 81, 244, 201, 188, 98, + 123, 79, 57, 36, 114, 107, 181, 82, 141, 41, 51, 101, 85, 180, + 20, 45, 225, 128, 160, 104, 121, 7, 143, 8, 202, 192, 198, 117, + 235, 24, 218, 133, 170, 232, 216, 40, 232, 167, 172, 6, 147, 208, + 40, 67, 66, 56, 183, 20, 57, 91, 236, 177, 131, 17, 21, 206, + 49, 140, 214, 221, 60, 34, 179, 157, 205, 144, 223, 158, 215, 35, + 131, 232, 176, 45, 212, 67, 180, 21, 117, 30, 149, 145, 87, 68, + 79, 209, 178, 69, 37, 105, 167, 20, 14, 30, 23, 148, 129, 141, + 194, 73, 130, 254, 15, 29, 106, 105, 96, 163, 164, 159, 180, 126, + 75, 223, 99, 161, 0, 140, 168, 88, 49, 207, 84, 150, 151, 184, + 149, 129, 152, 173, 17, 211, 41, 116, 227, 18, 7, 126, 163, 211, + 104, 236, 142, 127, 168, 99, 55, 216, 13, 191, 234, 128, 207, 39, + 121, 151, 70, 57, 143, 136, 179, 153, 39, 130, 103, 242, 67, 216, + 25, 64, 198, 167, 51, 116, 206, 14, 193, 200, 4, 201, 83, 129, + 105, 42, 46, 128, 18, 146, 195, 205, 58, 61, 171, 197, 250, 53, + 112, 232, 80, 182, 89, 255, 185, 33, 226, 205, 203, 147, 121, 127, + 199, 227, 144, 183, 108, 189, 113, 111, 48, 134, 29, 174, 114, 67, + 16, 123, 197, 231, 158, 165, 112, 85, 0, 178, 255, 158, 242, 184, + 187, 41, 119, 10, 151, 99, 66, 183, 136, 146, 156, 195, 116, 139, + 40, 245, 91, 130, 162, 163, 240, 216, 9, 244, 219, 26, 140, 137, + 137, 141, 231, 244, 172, 245, 37, 141, 20, 164, 226, 75, 29, 0, + 80, 156, 112, 67, 168, 144, 48, 241, 178, 3, 55, 116, 117, 191, + 105, 187, 94, 36, 45, 71, 149, 67, 145, 85, 68, 216, 22, 122, + 3, 17, 117, 200, 169, 147, 208, 125, 35, 10, 26, 248, 228, 117, + 114, 121, 242, 234, 227, 204, 170, 131, 126, 44, 12, 166, 101, 11, + 229, 194, 200, 145, 61, 66, 13, 203, 6, 78, 187, 158, 75, 136, + 238, 82, 207, 233, 163, 130, 210, 176, 241, 220, 209, 211, 130, 50, + 176, 241, 220, 185, 243, 40, 143, 116, 83, 199, 230, 106, 98, 83, + 179, 50, 145, 251, 176, 210, 134, 152, 143, 40, 236, 45, 116, 158, + 175, 166, 71, 208, 215, 104, 47, 234, 116, 115, 121, 89, 199, 214, + 175, 106, 228, 166, 219, 118, 27, 78, 72, 79, 119, 98, 135, 113, + 243, 147, 128, 161, 214, 18, 186, 236, 37, 75, 193, 208, 132, 162, + 84, 51, 242, 216, 126, 114, 203, 15, 219, 79, 77, 60, 201, 79, + 181, 167, 98, 206, 49, 36, 35, 62, 147, 188, 63, 147, 216, 184, + 38, 168, 230, 55, 229, 155, 137, 48, 168, 101, 16, 185, 197, 53, + 233, 96, 165, 2, 51, 53, 147, 223, 116, 219, 148, 35, 169, 44, + 44, 175, 46, 206, 247, 234, 66, 29, 54, 196, 151, 249, 100, 210, + 97, 67, 124, 153, 111, 136, 58, 108, 136, 47, 15, 14, 161, 63, + 96, 221, 160, 97, 163, 166, 31, 177, 254, 131, 6, 17, 184, 35, + 173, 124, 195, 233, 62, 89, 92, 37, 70, 52, 52, 11, 44, 167, + 132, 94, 174, 229, 135, 110, 219, 15, 118, 115, 108, 120, 153, 43, + 2, 171, 241, 196, 68, 70, 94, 248, 206, 80, 50, 114, 38, 155, + 104, 217, 187, 160, 215, 157, 168, 249, 129, 35, 168, 53, 174, 92, + 90, 163, 135, 206, 90, 167, 237, 54, 214, 58, 158, 219, 134, 169, + 89, 131, 110, 177, 239, 112, 99, 158, 25, 114, 101, 106, 58, 143, + 216, 142, 44, 228, 147, 117, 187, 182, 29, 54, 224, 116, 6, 190, + 66, 85, 248, 208, 38, 39, 105, 155, 69, 239, 208, 61, 186, 214, + 143, 5, 101, 96, 163, 118, 232, 48, 96, 251, 194, 125, 204, 134, + 62, 100, 77, 147, 101, 207, 225, 30, 14, 96, 242, 203, 29, 108, + 238, 211, 65, 60, 59, 122, 144, 110, 232, 125, 130, 210, 176, 177, + 145, 222, 39, 40, 3, 52, 77, 200, 70, 96, 121, 185, 157, 8, + 53, 107, 149, 148, 187, 157, 12, 216, 65, 224, 50, 36, 110, 245, + 152, 200, 147, 130, 250, 1, 4, 207, 225, 171, 158, 79, 91, 248, + 60, 228, 211, 159, 110, 41, 219, 233, 17, 192, 44, 48, 210, 9, + 108, 54, 244, 192, 128, 170, 24, 105, 58, 67, 26, 233, 3, 104, + 154, 190, 163, 43, 195, 75, 142, 91, 103, 97, 15, 224, 70, 44, + 32, 49, 147, 106, 247, 1, 197, 27, 106, 232, 137, 20, 77, 100, + 9, 74, 195, 134, 119, 44, 43, 40, 3, 27, 222, 197, 28, 28, + 234, 6, 237, 131, 15, 37, 207, 240, 67, 93, 136, 231, 61, 114, + 164, 39, 233, 135, 146, 135, 5, 69, 147, 29, 57, 41, 40, 3, + 27, 31, 202, 156, 70, 63, 130, 192, 206, 117, 39, 241, 134, 102, + 133, 241, 238, 240, 122, 214, 60, 7, 102, 155, 109, 151, 178, 70, + 219, 158, 191, 3, 151, 204, 179, 157, 77, 27, 160, 55, 114, 136, + 216, 183, 109, 183, 1, 130, 163, 221, 150, 171, 26, 250, 81, 244, + 58, 87, 178, 212, 128, 175, 162, 29, 75, 119, 168, 157, 244, 99, + 232, 10, 50, 77, 147, 118, 222, 174, 126, 212, 202, 62, 68, 231, + 145, 210, 60, 111, 173, 9, 43, 118, 151, 79, 20, 19, 250, 111, + 23, 198, 10, 40, 3, 27, 187, 71, 70, 209, 7, 145, 110, 38, + 113, 242, 47, 37, 222, 210, 52, 235, 185, 238, 230, 202, 174, 140, + 77, 146, 92, 172, 69, 145, 80, 178, 222, 217, 12, 99, 42, 8, + 222, 24, 202, 195, 253, 165, 244, 81, 116, 1, 153, 102, 82, 79, + 96, 243, 47, 107, 250, 33, 235, 120, 124, 176, 248, 238, 38, 152, + 176, 253, 40, 73, 191, 77, 194, 199, 105, 65, 106, 148, 236, 31, + 20, 164, 65, 201, 225, 17, 136, 251, 159, 212, 53, 108, 254, 85, + 77, 31, 182, 174, 221, 99, 22, 112, 254, 25, 16, 108, 72, 102, + 182, 225, 122, 219, 79, 21, 0, 58, 156, 199, 22, 206, 200, 114, + 181, 36, 228, 37, 202, 213, 32, 235, 254, 3, 130, 52, 40, 57, + 132, 165, 62, 247, 163, 25, 244, 212, 253, 181, 47, 161, 235, 109, + 71, 122, 84, 193, 248, 173, 181, 237, 77, 174, 211, 197, 138, 234, + 137, 126, 156, 191, 61, 245, 142, 212, 178, 214, 247, 161, 88, 206, + 124, 56, 133, 246, 137, 115, 175, 106, 111, 134, 184, 128, 146, 176, + 11, 143, 106, 196, 200, 14, 76, 95, 204, 239, 173, 101, 94, 77, + 144, 47, 211, 175, 33, 190, 100, 153, 165, 180, 254, 23, 29, 153, + 244, 41, 158, 67, 102, 221, 13, 68, 86, 19, 15, 149, 85, 126, + 222, 13, 120, 118, 144, 24, 223, 64, 73, 56, 33, 70, 117, 200, + 101, 242, 225, 114, 185, 65, 147, 240, 90, 65, 114, 235, 85, 212, + 47, 179, 198, 131, 200, 216, 118, 118, 185, 158, 141, 254, 196, 51, + 170, 142, 109, 96, 250, 204, 3, 139, 153, 119, 3, 174, 137, 155, + 209, 223, 167, 89, 107, 8, 69, 101, 246, 200, 255, 90, 60, 255, + 179, 15, 204, 159, 230, 166, 22, 240, 255, 67, 198, 188, 27, 224, + 73, 100, 182, 237, 77, 209, 167, 199, 123, 232, 191, 65, 6, 93, + 177, 221, 160, 12, 95, 238, 85, 43, 223, 83, 47, 125, 111, 181, + 178, 117, 23, 153, 180, 66, 255, 111, 21, 191, 134, 80, 52, 207, + 126, 16, 189, 75, 115, 83, 122, 119, 246, 242, 75, 211, 143, 176, + 156, 175, 81, 170, 181, 254, 204, 247, 142, 50, 19, 206, 198, 123, + 234, 212, 247, 212, 169, 63, 80, 117, 234, 177, 72, 157, 122, 61, + 82, 167, 206, 75, 3, 206, 146, 208, 161, 210, 159, 31, 79, 51, + 37, 106, 33, 209, 208, 172, 31, 77, 147, 91, 16, 239, 56, 240, + 155, 164, 238, 6, 78, 141, 242, 211, 224, 148, 192, 66, 54, 222, + 105, 7, 182, 18, 194, 145, 249, 59, 197, 21, 102, 33, 24, 104, + 57, 94, 60, 124, 30, 8, 135, 76, 239, 146, 147, 0, 173, 128, + 25, 212, 112, 183, 29, 22, 254, 115, 6, 189, 137, 8, 201, 192, + 65, 144, 153, 225, 232, 67, 143, 42, 176, 144, 25, 25, 59, 57, + 67, 207, 128, 204, 140, 18, 75, 57, 147, 143, 145, 132, 100, 232, + 54, 211, 245, 140, 62, 117, 236, 102, 177, 105, 187, 141, 204, 12, + 35, 214, 28, 74, 189, 95, 93, 227, 25, 37, 201, 93, 249, 251, + 110, 46, 42, 108, 195, 247, 127, 128, 197, 229, 226, 105, 160, 139, + 50, 47, 148, 150, 230, 151, 95, 168, 196, 234, 162, 126, 152, 137, + 109, 159, 123, 75, 142, 93, 145, 237, 121, 77, 72, 70, 189, 141, + 162, 5, 78, 61, 193, 254, 151, 137, 125, 120, 183, 119, 95, 160, + 248, 191, 25, 56, 76, 187, 6, 100, 2, 220, 121, 218, 119, 186, + 43, 247, 48, 93, 5, 246, 7, 127, 142, 251, 106, 250, 210, 229, + 43, 143, 63, 122, 79, 209, 191, 239, 162, 187, 8, 145, 165, 252, + 44, 247, 116, 82, 28, 211, 106, 118, 163, 225, 212, 201, 121, 245, + 76, 58, 47, 125, 46, 233, 218, 178, 193, 150, 13, 32, 123, 26, + 187, 60, 46, 144, 140, 242, 73, 251, 149, 25, 97, 181, 165, 151, + 39, 64, 3, 211, 253, 36, 232, 56, 202, 45, 73, 33, 61, 130, + 94, 66, 166, 153, 48, 18, 216, 156, 211, 23, 13, 107, 145, 238, + 15, 189, 183, 7, 41, 132, 71, 27, 5, 45, 234, 62, 219, 4, + 211, 210, 26, 180, 164, 57, 116, 0, 253, 164, 134, 82, 148, 164, + 242, 203, 77, 243, 132, 245, 81, 134, 102, 184, 237, 236, 138, 72, + 220, 13, 22, 32, 188, 238, 6, 2, 7, 40, 147, 225, 1, 10, + 161, 96, 64, 18, 177, 189, 186, 234, 38, 175, 26, 170, 218, 141, + 6, 9, 59, 235, 116, 91, 200, 115, 197, 70, 135, 109, 198, 59, + 118, 80, 39, 32, 175, 51, 3, 65, 90, 4, 247, 83, 245, 131, + 60, 66, 7, 80, 31, 171, 90, 138, 214, 109, 36, 162, 53, 108, + 220, 60, 116, 52, 162, 13, 108, 220, 60, 254, 24, 90, 225, 77, + 209, 176, 241, 172, 73, 56, 48, 237, 222, 150, 8, 111, 47, 155, + 187, 223, 145, 10, 104, 240, 59, 13, 7, 60, 224, 27, 187, 0, + 189, 232, 170, 53, 160, 50, 233, 179, 230, 161, 136, 166, 69, 28, + 62, 22, 209, 6, 54, 158, 61, 113, 18, 205, 195, 184, 105, 216, + 92, 214, 95, 50, 172, 199, 73, 241, 193, 35, 194, 245, 76, 114, + 96, 229, 8, 209, 50, 150, 209, 126, 244, 211, 108, 132, 64, 43, + 94, 53, 167, 173, 191, 161, 145, 210, 6, 177, 69, 195, 40, 51, + 33, 16, 99, 0, 59, 25, 186, 154, 205, 53, 245, 185, 77, 15, + 219, 154, 19, 182, 253, 128, 192, 7, 237, 45, 135, 91, 13, 1, + 83, 149, 13, 199, 132, 6, 87, 126, 199, 67, 152, 186, 60, 14, + 25, 20, 201, 3, 14, 11, 115, 63, 217, 73, 154, 158, 48, 105, + 5, 247, 69, 116, 10, 27, 213, 253, 217, 136, 214, 176, 81, 29, + 27, 143, 104, 3, 27, 213, 201, 41, 244, 15, 68, 3, 53, 108, + 188, 104, 94, 182, 126, 66, 251, 97, 170, 198, 201, 138, 223, 234, + 68, 95, 198, 36, 174, 216, 222, 164, 180, 148, 78, 135, 23, 205, + 83, 17, 77, 107, 158, 153, 136, 104, 3, 27, 47, 78, 95, 2, + 101, 82, 194, 208, 177, 249, 170, 238, 24, 214, 212, 35, 76, 7, + 238, 24, 202, 102, 2, 237, 152, 87, 209, 1, 8, 176, 154, 48, + 64, 131, 185, 102, 78, 91, 163, 15, 24, 17, 29, 70, 100, 77, + 142, 136, 14, 35, 178, 38, 71, 132, 41, 8, 215, 228, 136, 48, + 21, 225, 90, 52, 34, 160, 183, 170, 255, 5, 24, 17, 29, 70, + 164, 46, 71, 132, 41, 247, 234, 114, 68, 152, 122, 175, 62, 125, + 9, 125, 89, 19, 215, 207, 219, 250, 9, 235, 95, 118, 109, 118, + 127, 33, 21, 194, 226, 174, 55, 69, 219, 52, 172, 220, 10, 111, + 143, 28, 85, 110, 133, 183, 143, 63, 38, 117, 33, 127, 54, 132, + 142, 117, 91, 163, 129, 9, 39, 87, 116, 28, 236, 50, 40, 202, + 244, 161, 100, 145, 190, 159, 189, 139, 134, 21, 167, 59, 241, 126, + 22, 193, 91, 225, 113, 151, 223, 235, 113, 39, 139, 1, 224, 174, + 9, 80, 193, 177, 34, 91, 235, 223, 213, 180, 79, 233, 198, 205, + 149, 217, 159, 211, 79, 48, 197, 89, 126, 69, 88, 50, 189, 224, + 52, 26, 207, 210, 143, 171, 52, 221, 51, 255, 227, 32, 21, 223, + 78, 36, 166, 7, 209, 175, 238, 3, 241, 237, 68, 2, 79, 255, + 139, 125, 18, 67, 95, 0, 232, 147, 241, 8, 245, 31, 110, 48, + 225, 234, 133, 59, 137, 48, 142, 24, 197, 100, 190, 201, 247, 73, + 165, 157, 87, 203, 19, 82, 104, 52, 8, 188, 11, 101, 44, 129, + 124, 164, 69, 171, 59, 183, 157, 134, 223, 114, 130, 80, 81, 11, + 78, 136, 187, 171, 113, 238, 13, 49, 129, 16, 41, 59, 82, 226, + 129, 171, 79, 175, 14, 167, 159, 43, 238, 149, 225, 201, 186, 235, + 217, 1, 67, 234, 18, 216, 44, 126, 32, 80, 10, 17, 105, 250, + 117, 25, 69, 48, 199, 192, 124, 100, 60, 112, 105, 196, 30, 89, + 205, 74, 52, 206, 154, 239, 49, 195, 102, 142, 236, 216, 116, 218, + 51, 92, 52, 188, 208, 85, 177, 176, 27, 110, 21, 148, 249, 129, + 211, 22, 49, 96, 25, 78, 84, 77, 244, 24, 162, 115, 17, 194, + 171, 0, 63, 211, 112, 195, 54, 67, 115, 137, 74, 100, 118, 244, + 74, 117, 234, 110, 88, 107, 216, 110, 211, 97, 120, 31, 189, 42, + 225, 122, 106, 95, 136, 74, 112, 120, 240, 168, 30, 40, 170, 200, + 247, 85, 15, 129, 24, 222, 5, 236, 106, 123, 245, 9, 63, 224, + 134, 182, 77, 187, 13, 183, 97, 138, 191, 128, 216, 228, 20, 113, + 87, 32, 146, 210, 70, 45, 113, 153, 180, 173, 64, 140, 171, 115, + 203, 243, 163, 119, 33, 199, 6, 64, 236, 118, 159, 102, 229, 7, + 210, 103, 70, 24, 197, 56, 94, 221, 15, 66, 135, 67, 165, 55, + 253, 182, 195, 33, 211, 129, 213, 10, 220, 219, 28, 1, 134, 67, + 109, 9, 113, 92, 226, 92, 42, 247, 126, 46, 157, 88, 1, 157, + 59, 158, 34, 235, 194, 197, 223, 66, 169, 66, 42, 203, 55, 170, + 47, 20, 202, 69, 82, 170, 144, 149, 242, 242, 243, 165, 249, 226, + 60, 153, 125, 145, 84, 23, 138, 100, 110, 121, 229, 197, 114, 233, + 230, 66, 149, 44, 44, 47, 206, 23, 203, 21, 82, 88, 154, 167, + 130, 121, 181, 92, 154, 93, 173, 46, 151, 43, 72, 10, 243, 244, + 13, 21, 210, 139, 31, 88, 41, 23, 43, 32, 193, 151, 110, 173, + 44, 150, 138, 243, 138, 92, 159, 35, 165, 165, 185, 197, 213, 249, + 210, 210, 205, 28, 153, 93, 173, 146, 165, 229, 42, 34, 139, 165, + 91, 165, 106, 113, 158, 84, 151, 115, 80, 236, 222, 116, 100, 249, + 6, 185, 85, 44, 207, 45, 20, 150, 170, 133, 217, 210, 98, 169, + 250, 34, 20, 120, 163, 84, 93, 162, 133, 221, 88, 46, 83, 110, + 101, 165, 80, 174, 150, 230, 86, 23, 11, 101, 178, 178, 90, 94, + 89, 174, 20, 9, 109, 217, 124, 169, 50, 183, 88, 40, 221, 42, + 206, 231, 73, 105, 137, 44, 45, 147, 226, 243, 197, 165, 42, 169, + 44, 20, 22, 23, 227, 13, 69, 100, 249, 133, 165, 98, 153, 235, + 31, 100, 51, 201, 108, 145, 44, 150, 10, 179, 139, 69, 90, 20, + 180, 115, 190, 84, 46, 206, 85, 105, 131, 162, 95, 115, 96, 128, + 92, 88, 204, 33, 2, 14, 218, 133, 197, 28, 41, 126, 160, 120, + 107, 101, 177, 80, 126, 49, 199, 51, 173, 20, 159, 91, 45, 46, + 85, 75, 133, 69, 50, 95, 184, 85, 184, 89, 172, 144, 236, 131, + 122, 101, 165, 188, 60, 183, 90, 46, 222, 162, 181, 94, 190, 65, + 42, 171, 179, 149, 106, 169, 186, 90, 45, 146, 155, 203, 203, 243, + 208, 217, 149, 98, 249, 249, 210, 92, 177, 114, 141, 44, 46, 87, + 160, 195, 86, 43, 197, 28, 34, 243, 133, 106, 1, 138, 94, 41, + 47, 223, 40, 85, 43, 215, 232, 239, 217, 213, 74, 9, 58, 174, + 180, 84, 45, 150, 203, 171, 224, 62, 62, 70, 22, 150, 95, 40, + 62, 95, 44, 147, 185, 194, 106, 165, 56, 15, 61, 188, 188, 68, + 91, 75, 231, 74, 113, 185, 252, 34, 205, 150, 246, 3, 140, 64, + 142, 188, 176, 80, 172, 46, 20, 203, 180, 83, 161, 183, 10, 180, + 27, 42, 213, 114, 105, 174, 170, 126, 182, 92, 38, 213, 229, 114, + 21, 41, 237, 36, 75, 197, 155, 139, 165, 155, 197, 165, 185, 34, + 125, 189, 76, 179, 121, 161, 84, 41, 142, 145, 66, 185, 84, 161, + 31, 148, 160, 96, 242, 66, 225, 69, 178, 188, 10, 173, 166, 3, + 181, 90, 41, 34, 246, 91, 153, 186, 57, 24, 79, 82, 186, 65, + 10, 243, 207, 151, 104, 205, 249, 215, 43, 203, 149, 74, 137, 79, + 23, 232, 182, 185, 5, 222, 231, 82, 141, 67, 18, 163, 92, 97, + 147, 73, 92, 3, 133, 205, 89, 246, 147, 61, 60, 157, 40, 10, + 45, 14, 253, 201, 30, 158, 73, 228, 132, 199, 45, 253, 201, 30, + 158, 77, 92, 20, 190, 185, 244, 39, 123, 120, 46, 242, 226, 61, + 39, 189, 120, 207, 39, 78, 9, 223, 92, 250, 147, 61, 204, 38, + 78, 194, 195, 147, 236, 231, 47, 235, 160, 46, 50, 166, 19, 131, + 214, 63, 214, 73, 129, 33, 41, 184, 53, 238, 222, 33, 196, 84, + 56, 2, 118, 253, 14, 112, 132, 129, 51, 14, 58, 70, 159, 216, + 183, 125, 87, 64, 39, 211, 237, 175, 3, 74, 61, 128, 82, 137, + 165, 135, 237, 119, 215, 239, 4, 224, 225, 144, 39, 5, 1, 233, + 22, 67, 160, 245, 9, 23, 120, 237, 80, 245, 7, 128, 56, 14, + 220, 191, 1, 156, 204, 24, 164, 40, 67, 116, 45, 172, 148, 184, + 193, 62, 243, 167, 112, 189, 176, 77, 133, 12, 113, 26, 9, 231, + 31, 5, 254, 154, 144, 160, 85, 35, 179, 118, 144, 237, 54, 110, + 6, 86, 99, 76, 122, 205, 220, 227, 253, 53, 196, 101, 251, 72, + 176, 158, 78, 239, 151, 28, 208, 87, 207, 162, 19, 123, 192, 23, + 184, 255, 239, 189, 152, 160, 25, 148, 22, 46, 194, 120, 20, 245, + 133, 14, 61, 101, 66, 110, 45, 44, 72, 60, 130, 146, 158, 237, + 249, 33, 40, 182, 147, 101, 70, 204, 190, 165, 245, 102, 156, 246, + 139, 28, 5, 239, 52, 245, 144, 188, 147, 168, 236, 35, 177, 79, + 95, 59, 205, 216, 167, 80, 123, 143, 125, 122, 143, 125, 122, 143, + 125, 122, 143, 125, 122, 143, 125, 122, 143, 125, 250, 33, 178, 79, + 146, 171, 161, 63, 5, 251, 180, 32, 120, 42, 250, 83, 176, 79, + 146, 167, 58, 43, 121, 170, 115, 137, 188, 224, 169, 232, 79, 193, + 62, 73, 158, 234, 188, 228, 169, 178, 17, 79, 69, 127, 254, 244, + 32, 187, 109, 219, 72, 132, 154, 245, 241, 65, 82, 32, 18, 234, + 35, 30, 211, 9, 32, 201, 115, 100, 195, 189, 227, 212, 199, 57, + 104, 148, 68, 122, 115, 155, 74, 32, 47, 202, 60, 217, 204, 82, + 171, 227, 49, 28, 120, 118, 254, 51, 156, 128, 192, 174, 69, 199, + 130, 120, 209, 38, 192, 11, 0, 201, 60, 76, 27, 108, 231, 35, + 165, 54, 179, 14, 101, 206, 150, 14, 203, 208, 246, 118, 73, 205, + 110, 56, 94, 221, 14, 56, 2, 175, 87, 115, 90, 237, 144, 93, + 222, 101, 234, 246, 110, 6, 184, 174, 76, 211, 247, 218, 91, 25, + 145, 141, 162, 101, 139, 192, 71, 92, 47, 58, 225, 132, 179, 103, + 205, 17, 24, 126, 136, 180, 119, 212, 175, 5, 76, 5, 109, 160, + 236, 42, 6, 236, 39, 180, 141, 54, 120, 125, 50, 125, 115, 155, + 54, 23, 128, 29, 2, 191, 73, 236, 40, 163, 60, 41, 3, 199, + 224, 134, 12, 227, 225, 142, 75, 143, 131, 198, 46, 185, 56, 62, + 53, 153, 155, 156, 156, 36, 187, 142, 205, 46, 215, 79, 75, 100, + 152, 8, 36, 134, 76, 205, 144, 57, 191, 217, 234, 180, 157, 168, + 26, 12, 233, 84, 173, 46, 67, 162, 8, 157, 78, 221, 135, 195, + 55, 207, 15, 233, 168, 61, 204, 40, 241, 58, 201, 231, 243, 215, + 186, 223, 57, 94, 61, 246, 70, 22, 36, 56, 44, 241, 150, 189, + 150, 76, 162, 24, 86, 0, 18, 147, 212, 56, 43, 75, 208, 215, + 186, 18, 193, 4, 224, 73, 216, 111, 145, 0, 40, 81, 136, 187, + 65, 178, 123, 10, 122, 146, 76, 146, 115, 231, 186, 243, 122, 138, + 76, 142, 69, 60, 243, 158, 68, 23, 69, 156, 151, 30, 213, 24, + 191, 78, 166, 38, 197, 31, 193, 47, 19, 167, 17, 58, 189, 43, + 240, 84, 207, 10, 60, 121, 255, 10, 140, 223, 167, 2, 23, 123, + 85, 64, 25, 254, 233, 104, 248, 163, 241, 130, 241, 143, 200, 139, + 209, 128, 61, 250, 44, 184, 231, 88, 223, 123, 142, 176, 87, 234, + 144, 95, 143, 15, 57, 185, 184, 167, 19, 174, 69, 137, 196, 4, + 80, 6, 93, 77, 176, 103, 22, 68, 105, 226, 253, 28, 155, 115, + 106, 23, 71, 9, 122, 246, 110, 52, 188, 209, 135, 79, 169, 31, + 222, 163, 140, 139, 189, 203, 232, 57, 133, 148, 17, 188, 116, 175, + 5, 92, 183, 219, 96, 141, 153, 167, 127, 213, 157, 6, 136, 24, + 100, 101, 183, 189, 197, 184, 41, 250, 167, 77, 59, 125, 239, 135, + 217, 186, 189, 27, 94, 191, 148, 35, 77, 215, 235, 180, 157, 240, + 250, 212, 228, 88, 124, 153, 145, 235, 178, 180, 108, 215, 171, 252, + 141, 192, 111, 86, 101, 86, 237, 250, 24, 236, 61, 96, 40, 113, + 203, 110, 181, 92, 111, 19, 33, 82, 242, 226, 166, 19, 116, 215, + 140, 208, 161, 168, 92, 11, 32, 63, 204, 143, 136, 65, 97, 243, + 16, 129, 10, 252, 132, 237, 33, 110, 152, 159, 83, 12, 134, 249, + 135, 142, 87, 143, 66, 177, 116, 54, 54, 220, 59, 36, 19, 102, + 72, 150, 227, 58, 48, 64, 123, 232, 250, 49, 102, 134, 2, 120, + 37, 78, 205, 169, 71, 193, 30, 69, 200, 7, 121, 196, 8, 88, + 111, 121, 202, 132, 194, 46, 6, 170, 137, 228, 185, 100, 55, 68, + 146, 124, 60, 136, 195, 37, 121, 90, 65, 78, 147, 177, 188, 36, + 240, 34, 146, 109, 119, 99, 29, 69, 187, 34, 115, 41, 204, 8, + 159, 254, 75, 177, 67, 113, 74, 201, 140, 231, 133, 232, 73, 18, + 85, 177, 87, 110, 121, 49, 187, 166, 104, 190, 52, 159, 174, 92, + 17, 105, 186, 181, 32, 158, 239, 195, 102, 59, 21, 102, 224, 226, + 93, 104, 8, 54, 210, 131, 232, 223, 201, 27, 162, 215, 245, 17, + 235, 215, 53, 82, 97, 129, 74, 68, 161, 194, 93, 69, 97, 11, + 242, 236, 118, 102, 157, 7, 97, 27, 191, 52, 117, 37, 119, 229, + 137, 199, 233, 1, 71, 255, 131, 224, 98, 23, 187, 30, 50, 12, + 153, 208, 189, 237, 228, 57, 114, 20, 131, 144, 95, 247, 59, 208, + 180, 128, 5, 243, 4, 59, 41, 154, 235, 12, 34, 143, 79, 210, + 74, 76, 52, 93, 143, 92, 160, 68, 211, 245, 38, 182, 2, 114, + 129, 76, 95, 38, 91, 193, 68, 221, 222, 37, 23, 200, 165, 199, + 175, 228, 167, 175, 16, 186, 70, 38, 232, 225, 74, 46, 176, 21, + 202, 78, 90, 213, 133, 240, 117, 110, 117, 204, 46, 139, 94, 79, + 31, 84, 46, 139, 94, 199, 195, 232, 45, 67, 56, 9, 6, 58, + 182, 254, 88, 23, 29, 17, 99, 110, 108, 222, 47, 113, 238, 70, + 97, 110, 212, 254, 66, 81, 135, 137, 213, 20, 18, 48, 58, 131, + 5, 227, 123, 142, 204, 45, 136, 241, 90, 108, 54, 218, 100, 18, + 145, 215, 248, 56, 188, 166, 68, 170, 177, 9, 56, 33, 184, 183, + 29, 22, 123, 120, 147, 221, 243, 191, 6, 21, 226, 31, 178, 137, + 46, 182, 1, 230, 246, 162, 20, 232, 7, 16, 87, 38, 199, 81, + 81, 222, 112, 2, 159, 195, 153, 8, 163, 177, 88, 110, 194, 35, + 70, 122, 207, 176, 112, 74, 238, 166, 39, 212, 98, 93, 245, 236, + 158, 34, 87, 175, 94, 205, 241, 255, 216, 244, 80, 30, 40, 83, + 67, 245, 195, 12, 228, 120, 105, 116, 76, 210, 251, 21, 63, 204, + 96, 112, 72, 170, 182, 190, 53, 138, 174, 61, 164, 125, 49, 199, + 179, 90, 11, 28, 59, 148, 122, 175, 61, 200, 21, 153, 127, 171, + 161, 253, 55, 216, 167, 101, 248, 18, 79, 163, 67, 173, 192, 109, + 218, 193, 238, 26, 0, 60, 173, 113, 21, 34, 183, 240, 28, 230, + 47, 139, 244, 221, 45, 246, 10, 95, 71, 41, 248, 86, 216, 5, + 159, 221, 107, 79, 26, 43, 36, 15, 169, 203, 60, 17, 190, 140, + 14, 183, 131, 142, 7, 138, 75, 86, 104, 184, 6, 204, 55, 71, + 36, 24, 145, 111, 33, 93, 56, 71, 223, 89, 167, 80, 18, 72, + 60, 138, 250, 226, 117, 20, 228, 59, 241, 202, 255, 43, 135, 153, + 21, 233, 205, 251, 90, 145, 78, 189, 103, 69, 250, 158, 21, 233, + 35, 59, 229, 51, 9, 22, 71, 62, 247, 244, 231, 143, 178, 11, + 0, 115, 52, 113, 83, 179, 254, 147, 214, 195, 155, 118, 103, 107, + 87, 248, 88, 211, 85, 205, 192, 155, 186, 2, 94, 114, 181, 24, + 143, 187, 194, 163, 94, 70, 186, 88, 14, 17, 7, 176, 83, 174, + 3, 186, 190, 213, 18, 59, 101, 193, 112, 84, 120, 238, 9, 181, + 26, 221, 164, 218, 78, 128, 68, 224, 75, 1, 143, 23, 146, 182, + 191, 233, 208, 14, 237, 25, 35, 138, 97, 230, 113, 184, 118, 59, + 12, 157, 128, 177, 133, 28, 91, 79, 94, 70, 64, 72, 205, 182, + 93, 219, 6, 139, 19, 233, 206, 68, 15, 171, 209, 244, 33, 244, + 111, 76, 113, 78, 159, 209, 79, 91, 255, 131, 201, 96, 162, 1, + 109, 46, 118, 31, 210, 105, 180, 133, 212, 9, 182, 122, 245, 200, + 246, 164, 237, 67, 169, 188, 167, 4, 75, 34, 192, 156, 218, 123, + 242, 179, 35, 6, 67, 65, 129, 3, 65, 61, 94, 81, 82, 240, + 228, 157, 201, 142, 96, 72, 20, 124, 38, 46, 40, 123, 164, 8, + 43, 150, 11, 47, 54, 121, 198, 190, 45, 188, 162, 41, 15, 74, + 83, 212, 108, 17, 17, 45, 54, 186, 164, 206, 144, 182, 148, 0, + 138, 45, 167, 198, 21, 176, 98, 28, 114, 44, 24, 141, 219, 108, + 58, 117, 151, 117, 193, 134, 221, 182, 27, 178, 175, 35, 110, 169, + 182, 229, 135, 142, 7, 24, 156, 81, 152, 161, 182, 136, 20, 130, + 122, 101, 159, 239, 225, 254, 9, 247, 73, 60, 82, 145, 176, 88, + 206, 170, 56, 131, 126, 232, 68, 177, 74, 34, 179, 167, 49, 212, + 173, 179, 229, 147, 139, 213, 129, 87, 151, 199, 248, 151, 94, 170, + 238, 27, 210, 111, 81, 116, 172, 240, 84, 117, 62, 212, 177, 33, + 76, 148, 31, 144, 176, 105, 55, 26, 130, 43, 159, 154, 156, 190, + 44, 81, 201, 17, 89, 173, 222, 24, 127, 95, 12, 89, 225, 76, + 12, 89, 225, 76, 255, 9, 133, 45, 58, 115, 42, 131, 124, 97, + 154, 153, 213, 167, 13, 203, 38, 112, 188, 196, 245, 72, 173, 192, + 95, 111, 56, 77, 238, 143, 203, 38, 157, 29, 155, 114, 57, 18, + 118, 106, 220, 234, 177, 22, 216, 225, 22, 40, 114, 122, 118, 178, + 98, 175, 153, 69, 7, 209, 23, 245, 200, 94, 115, 202, 60, 98, + 125, 86, 223, 59, 241, 99, 19, 250, 254, 243, 25, 61, 212, 132, + 190, 215, 124, 70, 143, 48, 161, 81, 220, 164, 246, 30, 195, 45, + 148, 87, 61, 182, 146, 31, 252, 160, 75, 251, 209, 36, 237, 75, + 20, 179, 47, 157, 26, 192, 49, 251, 210, 169, 67, 135, 209, 231, + 76, 193, 17, 207, 234, 199, 173, 127, 164, 108, 57, 217, 112, 44, + 54, 218, 123, 182, 24, 225, 43, 77, 197, 64, 87, 196, 48, 20, + 76, 47, 199, 13, 5, 252, 129, 135, 89, 215, 99, 128, 222, 199, + 64, 8, 73, 232, 179, 128, 1, 209, 90, 166, 53, 200, 3, 142, + 4, 11, 99, 82, 103, 22, 160, 77, 144, 20, 227, 137, 92, 22, + 129, 246, 6, 236, 10, 140, 169, 34, 89, 254, 111, 212, 158, 88, + 115, 68, 204, 53, 39, 190, 175, 208, 109, 34, 199, 99, 105, 122, + 52, 207, 23, 88, 0, 90, 216, 112, 38, 40, 79, 189, 161, 20, + 146, 131, 26, 80, 230, 128, 242, 93, 158, 47, 34, 166, 2, 224, + 34, 205, 37, 235, 216, 65, 195, 165, 69, 178, 206, 129, 252, 33, + 110, 174, 0, 112, 80, 183, 157, 150, 48, 24, 204, 241, 252, 95, + 158, 124, 85, 196, 247, 35, 225, 150, 221, 104, 144, 166, 221, 174, + 109, 33, 210, 147, 107, 21, 115, 171, 237, 211, 26, 214, 252, 230, + 58, 88, 205, 138, 169, 6, 97, 67, 121, 223, 216, 116, 6, 219, + 97, 135, 179, 54, 44, 54, 68, 197, 125, 195, 201, 142, 141, 193, + 60, 68, 204, 72, 239, 78, 141, 50, 56, 151, 114, 83, 79, 76, + 75, 111, 121, 206, 174, 155, 116, 250, 72, 42, 133, 141, 217, 129, + 65, 133, 177, 159, 29, 58, 162, 48, 246, 179, 214, 49, 244, 186, + 0, 88, 185, 161, 159, 182, 94, 85, 67, 9, 251, 27, 68, 29, + 44, 42, 53, 73, 46, 56, 218, 102, 249, 39, 112, 185, 199, 238, + 33, 217, 36, 99, 198, 191, 208, 74, 96, 79, 226, 8, 43, 55, + 164, 184, 65, 39, 252, 141, 244, 9, 5, 97, 229, 198, 169, 140, + 20, 55, 62, 252, 58, 122, 223, 163, 184, 51, 178, 199, 247, 68, + 201, 123, 32, 14, 222, 3, 174, 237, 31, 18, 102, 47, 186, 83, + 151, 186, 234, 119, 14, 179, 247, 253, 248, 115, 90, 223, 143, 172, + 150, 249, 167, 41, 132, 162, 83, 20, 91, 49, 92, 191, 212, 215, + 11, 198, 215, 11, 73, 142, 115, 119, 60, 2, 240, 211, 5, 236, + 95, 82, 162, 248, 157, 70, 253, 172, 72, 9, 240, 71, 147, 39, + 191, 94, 208, 203, 105, 246, 162, 84, 199, 239, 67, 125, 183, 237, + 192, 181, 189, 54, 7, 243, 59, 186, 87, 132, 123, 158, 125, 192, + 114, 23, 159, 227, 147, 40, 205, 54, 50, 167, 14, 160, 117, 105, + 246, 94, 62, 196, 87, 81, 42, 108, 219, 237, 78, 56, 154, 34, + 90, 246, 64, 47, 63, 69, 218, 206, 10, 124, 195, 171, 206, 18, + 224, 115, 104, 95, 216, 105, 194, 170, 222, 106, 55, 27, 163, 125, + 81, 235, 6, 248, 139, 133, 118, 179, 129, 159, 66, 8, 180, 174, + 128, 192, 62, 154, 134, 6, 88, 123, 160, 243, 164, 210, 151, 229, + 208, 15, 73, 232, 67, 60, 131, 210, 98, 170, 141, 246, 243, 230, + 223, 11, 66, 158, 55, 79, 124, 143, 175, 112, 39, 76, 244, 96, + 39, 76, 150, 148, 121, 98, 142, 161, 125, 188, 7, 21, 124, 69, + 57, 174, 3, 252, 29, 96, 45, 206, 161, 253, 177, 217, 53, 186, + 255, 209, 1, 19, 241, 13, 116, 32, 62, 205, 70, 15, 64, 46, + 39, 31, 32, 170, 151, 247, 111, 196, 212, 3, 113, 148, 194, 131, + 15, 141, 82, 136, 9, 234, 119, 195, 181, 166, 29, 110, 59, 245, + 209, 65, 49, 81, 140, 114, 218, 13, 111, 193, 67, 124, 29, 13, + 132, 219, 110, 75, 212, 15, 223, 107, 182, 84, 182, 221, 22, 175, + 28, 10, 229, 239, 103, 204, 244, 192, 224, 190, 204, 127, 212, 209, + 65, 218, 13, 197, 59, 62, 139, 200, 228, 123, 247, 93, 59, 71, + 186, 214, 142, 92, 54, 151, 162, 21, 97, 60, 96, 69, 68, 139, + 97, 28, 29, 112, 162, 130, 105, 166, 102, 172, 204, 253, 202, 219, + 82, 29, 231, 209, 160, 115, 167, 213, 176, 89, 80, 6, 54, 199, + 147, 209, 28, 63, 168, 188, 132, 121, 126, 174, 107, 210, 164, 148, + 245, 160, 206, 152, 247, 163, 20, 239, 196, 62, 232, 196, 30, 200, + 138, 74, 255, 176, 254, 227, 43, 143, 165, 139, 143, 86, 186, 199, + 104, 93, 248, 0, 219, 158, 216, 178, 197, 135, 17, 174, 84, 11, + 213, 213, 74, 87, 200, 154, 52, 50, 87, 10, 149, 202, 160, 70, + 127, 221, 40, 148, 22, 7, 117, 220, 143, 146, 115, 229, 66, 101, + 97, 208, 160, 63, 11, 179, 203, 229, 234, 160, 73, 223, 87, 158, + 45, 173, 12, 38, 47, 84, 16, 138, 134, 24, 31, 67, 71, 232, + 243, 181, 114, 177, 80, 89, 94, 234, 202, 62, 139, 206, 20, 86, + 171, 203, 183, 10, 213, 210, 92, 97, 113, 241, 197, 181, 249, 82, + 165, 48, 187, 88, 156, 95, 187, 177, 92, 94, 187, 177, 88, 120, + 22, 174, 239, 7, 181, 11, 127, 83, 67, 67, 123, 218, 140, 51, + 232, 68, 241, 3, 203, 75, 197, 114, 161, 90, 90, 94, 234, 93, + 198, 97, 132, 151, 231, 230, 86, 203, 149, 181, 229, 165, 181, 91, + 133, 210, 210, 98, 105, 169, 56, 168, 225, 35, 104, 56, 122, 14, + 23, 243, 107, 115, 139, 149, 65, 29, 15, 162, 125, 75, 203, 213, + 181, 185, 114, 9, 106, 53, 104, 224, 97, 116, 112, 117, 169, 248, + 129, 149, 226, 92, 181, 56, 191, 6, 29, 98, 190, 19, 229, 212, + 183, 94, 98, 144, 145, 191, 172, 223, 79, 59, 53, 117, 245, 61, + 237, 212, 123, 218, 169, 119, 14, 25, 57, 22, 249, 56, 103, 35, + 200, 72, 6, 36, 105, 96, 227, 16, 255, 192, 196, 198, 97, 238, + 15, 157, 196, 198, 145, 196, 60, 252, 76, 97, 99, 84, 218, 207, + 90, 145, 170, 139, 254, 252, 235, 6, 168, 186, 146, 231, 18, 255, + 80, 211, 172, 255, 162, 131, 32, 35, 2, 7, 216, 100, 163, 227, + 137, 43, 44, 144, 72, 106, 54, 76, 154, 101, 192, 178, 150, 33, + 105, 229, 43, 80, 74, 220, 113, 106, 48, 22, 82, 168, 98, 56, + 48, 182, 199, 66, 115, 203, 199, 28, 125, 128, 73, 87, 74, 70, + 97, 199, 109, 59, 241, 79, 101, 1, 33, 15, 13, 33, 47, 1, + 148, 20, 220, 84, 66, 150, 239, 122, 10, 208, 54, 223, 138, 67, + 68, 178, 203, 149, 28, 185, 185, 178, 154, 131, 133, 1, 96, 216, + 13, 112, 23, 117, 218, 181, 177, 61, 130, 179, 136, 201, 192, 71, + 120, 87, 129, 33, 162, 243, 161, 164, 6, 72, 139, 32, 96, 248, + 85, 99, 76, 51, 6, 216, 221, 33, 15, 210, 17, 73, 66, 75, + 16, 210, 176, 62, 67, 166, 158, 80, 84, 110, 231, 210, 24, 29, + 163, 191, 251, 177, 113, 94, 63, 144, 57, 200, 28, 179, 4, 74, + 10, 66, 3, 84, 74, 233, 79, 96, 227, 252, 0, 191, 153, 232, + 135, 184, 50, 17, 165, 51, 234, 95, 9, 4, 80, 115, 74, 191, + 108, 90, 191, 120, 111, 8, 80, 168, 25, 52, 141, 141, 76, 15, + 12, 208, 155, 78, 59, 226, 127, 247, 226, 127, 186, 222, 109, 94, + 193, 112, 226, 205, 210, 210, 243, 203, 115, 108, 15, 47, 205, 223, + 23, 248, 147, 111, 175, 128, 19, 90, 89, 93, 252, 225, 128, 129, + 190, 99, 44, 208, 169, 152, 198, 106, 42, 134, 5, 58, 53, 56, + 4, 128, 56, 44, 84, 226, 20, 190, 108, 196, 193, 64, 167, 205, + 113, 229, 129, 134, 141, 75, 230, 69, 244, 51, 73, 161, 231, 88, + 208, 159, 182, 126, 60, 201, 192, 32, 221, 122, 142, 216, 189, 193, + 61, 163, 41, 216, 19, 222, 115, 211, 185, 51, 67, 62, 248, 242, + 203, 51, 51, 173, 192, 245, 218, 51, 51, 175, 190, 250, 230, 84, + 238, 202, 212, 244, 221, 51, 92, 47, 178, 195, 252, 252, 66, 134, + 70, 15, 248, 87, 77, 223, 19, 211, 154, 180, 2, 103, 195, 189, + 195, 103, 173, 188, 157, 182, 89, 236, 1, 187, 209, 218, 178, 189, + 78, 19, 12, 226, 107, 91, 54, 24, 35, 49, 255, 86, 8, 11, + 26, 186, 44, 0, 133, 45, 3, 187, 216, 100, 51, 240, 59, 173, + 188, 18, 140, 138, 140, 147, 140, 61, 177, 62, 81, 203, 200, 159, + 245, 232, 167, 51, 115, 71, 37, 118, 5, 177, 145, 225, 139, 147, + 57, 218, 134, 93, 150, 178, 80, 10, 203, 188, 208, 104, 16, 23, + 80, 4, 215, 157, 134, 207, 34, 158, 67, 88, 83, 250, 137, 116, + 35, 231, 93, 201, 91, 207, 91, 157, 177, 39, 50, 138, 66, 5, + 58, 1, 146, 229, 34, 5, 45, 185, 204, 52, 60, 54, 9, 59, + 235, 227, 247, 201, 148, 30, 154, 81, 190, 235, 247, 204, 89, 54, + 27, 54, 55, 217, 238, 251, 149, 194, 149, 63, 123, 107, 79, 147, + 102, 68, 224, 138, 154, 178, 214, 93, 143, 172, 150, 242, 136, 77, + 24, 185, 175, 73, 144, 68, 49, 252, 161, 8, 247, 193, 212, 202, + 59, 246, 110, 236, 94, 116, 33, 134, 79, 187, 16, 195, 167, 93, + 24, 30, 17, 84, 26, 27, 11, 135, 158, 226, 147, 93, 99, 179, + 127, 225, 240, 117, 180, 197, 181, 43, 230, 162, 190, 108, 90, 47, + 169, 112, 151, 182, 186, 249, 176, 185, 205, 32, 97, 163, 109, 133, + 237, 253, 114, 247, 149, 115, 221, 30, 127, 99, 114, 252, 234, 43, + 227, 107, 121, 58, 213, 47, 193, 76, 143, 116, 43, 139, 49, 244, + 218, 69, 14, 66, 199, 116, 43, 139, 135, 14, 243, 21, 171, 167, + 177, 185, 120, 100, 89, 172, 88, 157, 213, 249, 150, 121, 81, 121, + 160, 97, 99, 201, 188, 128, 110, 11, 184, 219, 138, 254, 126, 203, + 229, 81, 123, 91, 226, 254, 29, 238, 185, 5, 63, 176, 99, 3, + 51, 21, 116, 88, 148, 112, 233, 171, 139, 216, 230, 170, 4, 124, + 91, 239, 212, 182, 157, 118, 142, 172, 119, 220, 6, 229, 9, 216, + 85, 123, 116, 190, 69, 40, 183, 41, 90, 112, 191, 130, 114, 91, + 65, 42, 202, 109, 101, 228, 144, 160, 210, 216, 168, 28, 126, 154, + 55, 192, 96, 45, 170, 28, 121, 10, 253, 61, 67, 160, 224, 190, + 162, 63, 101, 125, 194, 32, 47, 108, 57, 210, 10, 92, 9, 28, + 36, 207, 117, 118, 168, 130, 162, 57, 36, 66, 141, 192, 174, 77, + 108, 233, 183, 50, 199, 249, 102, 50, 183, 152, 35, 87, 175, 158, + 189, 40, 243, 224, 27, 60, 168, 204, 148, 212, 171, 161, 8, 98, + 197, 179, 104, 236, 178, 249, 232, 132, 140, 153, 3, 154, 197, 90, + 241, 68, 58, 145, 25, 248, 200, 123, 123, 95, 144, 83, 215, 149, + 138, 11, 197, 62, 101, 191, 121, 156, 238, 136, 153, 144, 122, 60, + 36, 107, 37, 84, 200, 19, 84, 138, 157, 128, 203, 2, 22, 151, + 5, 82, 109, 217, 129, 71, 121, 66, 202, 57, 216, 1, 223, 129, + 236, 90, 187, 3, 113, 185, 169, 212, 133, 34, 30, 91, 102, 233, + 123, 224, 238, 207, 248, 22, 85, 145, 218, 213, 219, 108, 53, 183, + 236, 192, 13, 193, 44, 139, 35, 6, 39, 233, 40, 165, 20, 52, + 225, 87, 250, 14, 42, 104, 194, 175, 96, 225, 133, 108, 166, 177, + 241, 202, 136, 192, 159, 54, 217, 112, 191, 114, 232, 73, 244, 162, + 0, 27, 126, 77, 159, 5, 120, 139, 218, 150, 235, 57, 227, 129, + 99, 215, 153, 126, 26, 170, 30, 59, 90, 56, 163, 7, 120, 143, + 75, 203, 128, 194, 187, 87, 152, 140, 1, 20, 191, 198, 98, 123, + 112, 128, 226, 215, 246, 15, 43, 0, 197, 175, 29, 22, 90, 214, + 100, 26, 27, 175, 141, 22, 120, 29, 147, 172, 142, 175, 29, 125, + 63, 250, 35, 54, 37, 83, 216, 240, 245, 121, 235, 63, 26, 100, + 161, 211, 180, 189, 168, 142, 138, 220, 29, 69, 11, 99, 108, 138, + 235, 145, 133, 234, 173, 69, 81, 221, 117, 202, 26, 122, 110, 27, + 0, 85, 215, 157, 13, 31, 172, 91, 40, 159, 13, 58, 120, 54, + 159, 214, 3, 127, 39, 236, 125, 207, 193, 181, 88, 15, 190, 231, + 136, 192, 89, 99, 247, 28, 164, 210, 105, 181, 252, 0, 166, 123, + 219, 221, 176, 107, 156, 247, 131, 59, 185, 78, 8, 190, 46, 157, + 176, 237, 55, 1, 154, 96, 6, 145, 11, 228, 201, 182, 115, 167, + 61, 46, 62, 127, 138, 87, 55, 20, 64, 208, 33, 119, 236, 146, + 249, 217, 33, 132, 213, 5, 39, 142, 85, 202, 73, 206, 32, 112, + 230, 168, 250, 172, 40, 49, 171, 26, 206, 109, 167, 33, 147, 205, + 116, 149, 67, 211, 136, 223, 227, 110, 253, 122, 230, 73, 65, 173, + 185, 245, 167, 50, 79, 117, 229, 169, 108, 195, 223, 87, 190, 52, + 163, 113, 200, 225, 41, 49, 127, 82, 73, 58, 236, 98, 151, 78, + 105, 216, 240, 251, 197, 38, 150, 50, 176, 225, 143, 10, 223, 250, + 84, 26, 27, 190, 53, 199, 231, 79, 138, 205, 31, 255, 216, 44, + 90, 128, 233, 211, 135, 205, 64, 15, 39, 173, 25, 24, 213, 150, + 239, 242, 72, 219, 110, 19, 112, 86, 189, 248, 4, 103, 118, 161, + 220, 107, 133, 137, 13, 114, 74, 247, 165, 176, 17, 232, 2, 101, + 187, 79, 195, 70, 112, 252, 156, 160, 12, 108, 4, 99, 23, 4, + 149, 198, 70, 152, 154, 224, 85, 234, 99, 85, 10, 251, 242, 124, + 217, 165, 177, 185, 163, 223, 153, 180, 158, 141, 108, 26, 187, 23, + 90, 180, 189, 42, 115, 88, 157, 118, 155, 16, 225, 135, 79, 187, + 73, 89, 199, 116, 10, 27, 59, 186, 37, 40, 13, 27, 59, 199, + 78, 11, 202, 192, 198, 206, 185, 243, 130, 74, 99, 227, 142, 172, + 99, 154, 213, 241, 78, 95, 30, 253, 40, 179, 191, 235, 199, 198, + 93, 253, 25, 107, 135, 8, 229, 36, 151, 108, 227, 18, 1, 19, + 120, 154, 160, 211, 168, 243, 80, 245, 236, 35, 202, 235, 185, 181, + 78, 195, 14, 148, 163, 130, 203, 198, 234, 126, 114, 47, 8, 13, + 86, 203, 126, 147, 86, 67, 82, 41, 108, 220, 29, 16, 211, 160, + 95, 195, 198, 221, 195, 162, 173, 253, 6, 54, 238, 62, 118, 82, + 80, 105, 108, 220, 37, 37, 222, 186, 126, 214, 186, 187, 167, 22, + 208, 155, 208, 56, 132, 83, 111, 105, 250, 71, 52, 211, 218, 38, + 11, 118, 40, 35, 83, 115, 153, 48, 143, 200, 150, 115, 39, 27, + 110, 217, 211, 87, 30, 207, 134, 62, 157, 17, 217, 243, 231, 243, + 175, 251, 174, 151, 61, 127, 54, 156, 57, 27, 190, 226, 157, 135, + 14, 217, 206, 145, 219, 116, 62, 137, 148, 192, 99, 102, 199, 232, + 159, 189, 34, 3, 99, 43, 80, 18, 155, 111, 9, 220, 204, 132, + 142, 52, 74, 246, 31, 18, 164, 65, 201, 81, 11, 29, 100, 100, + 154, 86, 245, 216, 71, 52, 3, 66, 172, 211, 7, 180, 45, 230, + 143, 106, 230, 184, 242, 68, 195, 230, 135, 53, 243, 34, 159, 243, + 3, 216, 252, 168, 166, 103, 172, 153, 30, 118, 42, 178, 255, 185, + 51, 2, 44, 4, 30, 31, 95, 153, 116, 188, 54, 3, 41, 200, + 234, 128, 32, 53, 74, 30, 60, 46, 72, 131, 146, 39, 79, 161, + 42, 20, 187, 15, 155, 127, 93, 211, 207, 88, 55, 238, 87, 172, + 60, 126, 151, 233, 89, 206, 47, 237, 69, 252, 52, 213, 124, 70, + 84, 97, 95, 10, 178, 61, 40, 72, 141, 146, 131, 39, 4, 105, + 80, 242, 212, 105, 244, 119, 217, 180, 221, 143, 205, 191, 165, 233, + 99, 214, 223, 120, 215, 48, 186, 229, 204, 127, 52, 168, 110, 86, + 221, 253, 41, 168, 223, 168, 32, 53, 74, 30, 61, 45, 72, 131, + 146, 231, 178, 232, 87, 152, 136, 126, 0, 155, 159, 210, 244, 89, + 235, 151, 245, 24, 59, 166, 50, 197, 91, 54, 149, 104, 28, 143, + 48, 45, 48, 129, 128, 235, 54, 139, 14, 198, 172, 9, 66, 198, + 53, 69, 225, 64, 24, 242, 171, 92, 213, 204, 72, 132, 97, 171, + 68, 162, 60, 229, 129, 224, 32, 98, 177, 195, 46, 8, 233, 154, + 254, 148, 23, 85, 148, 16, 60, 13, 253, 45, 24, 158, 11, 36, + 186, 232, 161, 148, 184, 134, 161, 191, 85, 213, 56, 165, 247, 92, + 171, 245, 184, 31, 38, 217, 232, 86, 181, 237, 147, 169, 203, 147, + 145, 156, 25, 142, 65, 121, 209, 149, 196, 61, 86, 221, 129, 36, + 116, 102, 74, 144, 26, 37, 251, 6, 5, 105, 80, 114, 88, 44, + 194, 3, 105, 74, 30, 46, 240, 21, 118, 128, 173, 185, 79, 105, + 71, 222, 143, 62, 205, 230, 217, 65, 108, 254, 3, 77, 63, 97, + 253, 125, 141, 48, 45, 53, 61, 196, 215, 157, 45, 87, 225, 209, + 183, 221, 22, 176, 34, 205, 110, 238, 138, 46, 14, 198, 236, 66, + 123, 236, 48, 116, 33, 216, 167, 68, 188, 183, 61, 187, 177, 11, + 113, 66, 165, 153, 74, 167, 237, 211, 5, 69, 165, 130, 205, 241, + 13, 183, 225, 122, 155, 42, 250, 54, 15, 71, 217, 97, 250, 85, + 206, 190, 185, 33, 169, 60, 91, 90, 145, 125, 112, 48, 5, 181, + 222, 39, 72, 141, 146, 251, 197, 100, 60, 104, 80, 242, 216, 99, + 232, 42, 68, 30, 78, 253, 188, 150, 248, 21, 77, 179, 46, 222, + 143, 59, 180, 187, 150, 196, 0, 11, 164, 107, 254, 188, 150, 60, + 136, 254, 178, 198, 67, 233, 154, 255, 88, 211, 143, 90, 1, 97, + 215, 16, 128, 212, 22, 41, 208, 152, 26, 117, 201, 7, 227, 6, + 69, 50, 229, 76, 180, 42, 45, 92, 99, 225, 79, 67, 142, 86, + 22, 11, 209, 200, 32, 182, 16, 233, 120, 180, 31, 68, 80, 224, + 253, 34, 22, 47, 173, 194, 136, 32, 117, 74, 30, 25, 69, 99, + 60, 24, 175, 249, 79, 52, 125, 192, 58, 22, 113, 245, 112, 4, + 111, 65, 40, 218, 48, 116, 162, 140, 52, 246, 109, 74, 144, 58, + 37, 251, 145, 8, 235, 171, 99, 243, 159, 209, 156, 254, 150, 214, + 35, 43, 177, 173, 145, 74, 103, 115, 19, 116, 45, 210, 33, 12, + 60, 150, 185, 222, 151, 227, 153, 187, 30, 132, 63, 173, 181, 121, + 168, 88, 120, 8, 202, 169, 150, 31, 134, 238, 122, 195, 65, 81, + 250, 61, 137, 64, 69, 205, 146, 144, 141, 134, 189, 237, 200, 22, + 208, 214, 254, 179, 168, 5, 172, 202, 253, 8, 253, 35, 17, 249, + 214, 252, 156, 166, 239, 179, 254, 155, 94, 45, 0, 217, 7, 76, + 223, 152, 11, 133, 194, 162, 64, 156, 144, 78, 187, 230, 55, 29, + 81, 17, 97, 67, 61, 211, 179, 137, 140, 101, 240, 3, 254, 131, + 77, 97, 30, 243, 85, 52, 90, 52, 237, 34, 36, 86, 219, 39, + 155, 99, 104, 80, 225, 62, 65, 234, 148, 68, 3, 104, 147, 199, + 170, 53, 255, 57, 109, 205, 139, 61, 26, 195, 25, 61, 86, 18, + 157, 145, 246, 58, 156, 243, 66, 62, 216, 112, 61, 55, 220, 98, + 171, 172, 32, 116, 42, 108, 135, 153, 129, 67, 211, 239, 68, 213, + 48, 53, 40, 73, 84, 195, 212, 41, 137, 6, 208, 167, 116, 30, + 118, 214, 252, 34, 157, 23, 63, 174, 119, 85, 164, 238, 214, 185, + 185, 10, 103, 53, 227, 26, 49, 48, 111, 138, 152, 39, 33, 16, + 54, 26, 78, 77, 62, 137, 244, 224, 138, 73, 91, 27, 0, 33, + 8, 119, 70, 207, 197, 218, 215, 10, 156, 166, 77, 143, 188, 198, + 46, 8, 160, 177, 2, 66, 191, 25, 19, 135, 119, 236, 16, 194, + 196, 111, 187, 173, 22, 76, 222, 241, 94, 162, 175, 183, 225, 110, + 10, 78, 86, 46, 234, 174, 233, 9, 237, 229, 156, 108, 44, 75, + 222, 103, 73, 13, 58, 73, 76, 204, 164, 78, 201, 126, 132, 62, + 175, 33, 250, 46, 245, 37, 45, 241, 53, 77, 179, 62, 173, 237, + 221, 142, 216, 168, 196, 140, 52, 163, 70, 209, 166, 71, 213, 7, + 166, 131, 125, 31, 242, 29, 70, 160, 68, 218, 1, 11, 59, 203, + 97, 208, 0, 59, 109, 215, 239, 16, 207, 1, 221, 165, 231, 236, + 240, 132, 136, 180, 26, 14, 109, 141, 93, 7, 135, 76, 166, 70, + 240, 234, 36, 116, 96, 243, 159, 91, 20, 0, 107, 224, 125, 93, + 225, 219, 34, 221, 59, 190, 68, 183, 197, 127, 73, 151, 154, 70, + 183, 197, 223, 164, 39, 200, 63, 213, 72, 101, 219, 109, 137, 86, + 244, 218, 28, 65, 113, 167, 90, 56, 122, 234, 54, 71, 118, 182, + 220, 218, 86, 151, 253, 25, 236, 135, 158, 239, 141, 211, 182, 243, + 249, 192, 89, 6, 182, 123, 59, 97, 158, 80, 222, 157, 114, 222, + 49, 195, 98, 136, 117, 235, 73, 217, 151, 233, 252, 68, 26, 196, + 0, 26, 249, 168, 1, 164, 32, 109, 197, 81, 65, 234, 148, 60, + 254, 24, 250, 107, 172, 141, 26, 54, 127, 75, 211, 47, 90, 119, + 201, 188, 27, 210, 177, 170, 71, 7, 25, 215, 237, 40, 120, 37, + 190, 122, 114, 182, 224, 162, 204, 111, 184, 181, 93, 54, 178, 244, + 97, 136, 96, 59, 219, 101, 202, 106, 113, 132, 66, 196, 211, 173, + 192, 111, 58, 203, 21, 50, 247, 28, 231, 34, 221, 70, 27, 228, + 123, 89, 87, 141, 213, 230, 156, 32, 117, 74, 142, 93, 64, 191, + 169, 65, 160, 164, 212, 215, 181, 196, 39, 117, 205, 250, 215, 26, + 41, 41, 193, 125, 229, 133, 18, 99, 31, 179, 92, 73, 55, 183, + 8, 161, 109, 237, 245, 208, 111, 8, 248, 2, 178, 222, 0, 102, + 137, 163, 61, 238, 213, 67, 69, 7, 102, 36, 104, 116, 217, 103, + 59, 177, 247, 112, 104, 132, 100, 221, 111, 111, 113, 149, 59, 7, + 159, 163, 44, 245, 220, 98, 142, 178, 123, 108, 159, 247, 252, 54, + 34, 115, 139, 231, 233, 57, 35, 143, 98, 147, 54, 249, 235, 90, + 250, 8, 250, 247, 58, 143, 235, 148, 250, 134, 166, 127, 75, 51, + 173, 95, 127, 152, 91, 31, 197, 14, 66, 94, 253, 160, 61, 119, + 63, 202, 133, 125, 247, 253, 207, 59, 189, 254, 81, 10, 14, 39, + 222, 84, 47, 255, 75, 243, 119, 233, 176, 223, 231, 6, 72, 116, + 237, 15, 249, 58, 104, 191, 8, 136, 101, 126, 67, 200, 118, 108, + 121, 124, 67, 235, 223, 47, 72, 131, 146, 131, 67, 32, 219, 105, + 122, 34, 77, 135, 3, 127, 139, 203, 118, 26, 191, 19, 50, 191, + 41, 100, 59, 141, 95, 10, 153, 191, 71, 101, 187, 247, 241, 64, + 90, 230, 239, 107, 250, 33, 235, 130, 184, 20, 18, 247, 64, 57, + 18, 58, 78, 143, 16, 110, 178, 110, 90, 18, 146, 138, 186, 105, + 144, 19, 143, 19, 1, 144, 153, 230, 239, 107, 195, 35, 232, 127, + 211, 120, 148, 44, 243, 143, 52, 253, 176, 245, 27, 90, 183, 54, + 91, 17, 148, 85, 185, 136, 149, 207, 141, 109, 192, 73, 51, 15, + 247, 253, 238, 118, 172, 86, 128, 145, 43, 6, 105, 173, 101, 187, + 129, 136, 229, 76, 55, 29, 33, 61, 217, 16, 170, 74, 9, 37, + 132, 186, 74, 206, 17, 55, 239, 228, 163, 201, 31, 89, 141, 194, + 58, 41, 201, 137, 151, 95, 183, 67, 103, 45, 54, 51, 68, 135, + 232, 41, 104, 99, 191, 32, 53, 74, 162, 33, 65, 26, 148, 28, + 57, 68, 121, 9, 136, 199, 149, 250, 174, 166, 127, 79, 51, 173, + 23, 98, 87, 20, 158, 186, 74, 30, 234, 142, 130, 161, 4, 176, + 64, 254, 227, 0, 36, 197, 85, 30, 251, 69, 60, 42, 243, 187, + 209, 48, 81, 14, 231, 187, 90, 255, 17, 65, 26, 148, 180, 142, + 241, 41, 100, 164, 105, 181, 142, 127, 79, 78, 33, 166, 210, 55, + 255, 239, 104, 10, 25, 108, 10, 253, 9, 157, 66, 30, 15, 99, + 101, 254, 153, 166, 47, 88, 175, 237, 21, 93, 152, 150, 90, 89, + 245, 223, 159, 38, 149, 213, 217, 76, 66, 129, 162, 69, 148, 89, + 250, 51, 173, 255, 168, 32, 13, 74, 30, 127, 76, 144, 105, 74, + 158, 184, 201, 107, 207, 116, 214, 230, 159, 105, 39, 111, 128, 29, + 174, 70, 153, 169, 183, 116, 125, 222, 122, 229, 93, 213, 220, 176, + 202, 36, 89, 97, 162, 230, 148, 71, 121, 75, 231, 170, 26, 77, + 79, 26, 148, 28, 21, 13, 73, 166, 41, 105, 205, 241, 154, 51, + 77, 182, 249, 150, 126, 108, 22, 125, 130, 109, 191, 41, 108, 126, + 84, 215, 75, 214, 71, 244, 135, 235, 249, 119, 81, 112, 4, 150, + 194, 110, 52, 252, 29, 82, 119, 218, 17, 63, 9, 187, 124, 45, + 112, 225, 128, 230, 119, 194, 244, 16, 226, 195, 75, 89, 144, 206, + 122, 211, 133, 235, 42, 152, 229, 27, 236, 158, 151, 114, 79, 235, + 14, 19, 11, 124, 62, 165, 229, 221, 36, 124, 65, 115, 33, 180, + 16, 96, 40, 230, 22, 67, 217, 203, 41, 214, 47, 195, 130, 212, + 40, 57, 98, 9, 210, 160, 228, 99, 39, 4, 153, 166, 228, 201, + 5, 222, 203, 76, 223, 107, 126, 84, 39, 55, 209, 31, 178, 157, + 171, 15, 155, 159, 208, 245, 130, 245, 31, 180, 189, 90, 19, 117, + 173, 62, 172, 234, 4, 69, 186, 147, 7, 168, 78, 212, 147, 240, + 62, 250, 147, 184, 241, 97, 47, 165, 72, 183, 189, 33, 211, 186, + 220, 83, 187, 161, 233, 125, 73, 104, 116, 74, 144, 26, 37, 251, + 196, 222, 222, 103, 80, 114, 120, 68, 144, 105, 74, 30, 122, 63, + 239, 66, 166, 159, 54, 63, 161, 31, 126, 26, 68, 127, 29, 167, + 126, 82, 79, 252, 178, 78, 69, 255, 50, 103, 74, 35, 231, 54, + 177, 243, 83, 62, 53, 26, 106, 206, 227, 210, 45, 244, 39, 245, + 228, 97, 244, 97, 202, 255, 233, 148, 199, 253, 187, 186, 126, 214, + 218, 145, 25, 61, 178, 232, 175, 178, 2, 15, 144, 255, 81, 23, + 99, 204, 57, 63, 128, 89, 166, 245, 32, 130, 212, 41, 121, 250, + 12, 250, 239, 116, 168, 165, 134, 205, 191, 175, 235, 71, 173, 159, + 209, 73, 133, 123, 210, 237, 189, 92, 36, 59, 148, 205, 247, 215, + 25, 150, 26, 152, 149, 145, 166, 237, 122, 16, 150, 108, 61, 176, + 189, 218, 22, 34, 89, 56, 148, 236, 77, 219, 245, 66, 42, 139, + 192, 205, 173, 100, 216, 58, 30, 91, 59, 52, 87, 6, 229, 198, + 240, 206, 93, 167, 62, 150, 71, 36, 75, 89, 65, 192, 10, 4, + 203, 60, 127, 131, 212, 253, 206, 122, 155, 159, 142, 114, 74, 2, + 51, 72, 185, 96, 151, 9, 112, 8, 22, 112, 208, 164, 242, 170, + 96, 171, 253, 90, 173, 19, 192, 150, 220, 227, 150, 116, 12, 145, + 2, 148, 202, 192, 4, 247, 182, 84, 93, 231, 19, 115, 207, 145, + 160, 227, 133, 202, 116, 75, 2, 186, 51, 237, 178, 17, 65, 234, + 148, 60, 50, 138, 190, 197, 58, 84, 199, 230, 47, 232, 186, 101, + 253, 246, 35, 116, 168, 90, 40, 45, 49, 27, 142, 193, 202, 130, + 237, 34, 135, 72, 199, 19, 174, 73, 115, 139, 217, 112, 44, 79, + 178, 85, 14, 228, 31, 50, 125, 10, 120, 159, 179, 195, 128, 225, + 100, 179, 237, 136, 11, 77, 136, 128, 255, 165, 24, 175, 142, 194, + 55, 120, 27, 110, 208, 100, 56, 18, 109, 121, 37, 44, 180, 44, + 240, 222, 239, 120, 117, 215, 219, 68, 100, 195, 174, 181, 193, 123, + 6, 184, 26, 8, 53, 9, 59, 36, 184, 203, 119, 60, 90, 198, + 220, 98, 72, 110, 135, 61, 223, 161, 238, 9, 227, 252, 64, 6, + 131, 206, 223, 95, 208, 245, 67, 130, 132, 222, 31, 61, 138, 254, + 181, 1, 131, 97, 96, 243, 23, 117, 125, 216, 250, 140, 33, 69, + 119, 86, 41, 104, 189, 220, 233, 253, 123, 201, 58, 84, 210, 105, + 209, 147, 38, 58, 55, 106, 66, 210, 20, 27, 60, 184, 83, 49, + 156, 194, 144, 247, 59, 87, 83, 176, 131, 74, 204, 80, 135, 184, + 27, 72, 22, 196, 170, 193, 61, 162, 28, 207, 239, 108, 110, 241, + 141, 160, 105, 215, 157, 168, 110, 89, 27, 198, 217, 7, 19, 67, + 240, 122, 99, 23, 249, 220, 99, 47, 112, 1, 250, 174, 161, 88, + 70, 132, 99, 204, 57, 82, 117, 190, 117, 238, 184, 33, 244, 167, + 4, 248, 136, 215, 131, 33, 210, 197, 215, 12, 146, 38, 137, 210, + 198, 240, 30, 253, 199, 46, 199, 236, 54, 223, 166, 115, 8, 236, + 111, 28, 134, 106, 16, 153, 116, 8, 213, 195, 94, 91, 101, 226, + 7, 164, 135, 165, 178, 28, 101, 202, 7, 254, 162, 206, 110, 98, + 40, 169, 83, 114, 8, 163, 175, 179, 157, 214, 196, 230, 47, 233, + 250, 97, 235, 203, 138, 226, 142, 75, 157, 160, 252, 137, 137, 163, + 116, 56, 243, 36, 187, 228, 183, 185, 37, 34, 99, 22, 186, 88, + 217, 144, 185, 82, 197, 5, 246, 26, 220, 59, 50, 153, 187, 43, + 71, 202, 117, 112, 253, 51, 40, 14, 90, 50, 27, 69, 39, 228, + 115, 241, 177, 226, 122, 219, 226, 58, 80, 68, 181, 107, 218, 94, + 71, 41, 4, 36, 130, 49, 217, 1, 148, 109, 252, 37, 93, 31, + 18, 164, 78, 201, 145, 67, 145, 31, 212, 20, 186, 254, 40, 241, + 229, 246, 58, 67, 245, 10, 47, 247, 231, 209, 219, 233, 251, 241, + 88, 250, 190, 92, 165, 222, 177, 159, 89, 230, 111, 199, 253, 164, + 20, 127, 14, 45, 230, 207, 113, 76, 117, 131, 98, 174, 30, 145, + 251, 147, 165, 56, 49, 25, 68, 203, 166, 21, 255, 165, 203, 210, + 127, 201, 124, 176, 255, 146, 116, 93, 58, 213, 229, 186, 4, 110, + 29, 113, 175, 165, 171, 49, 175, 165, 212, 131, 188, 150, 84, 135, + 165, 43, 138, 195, 82, 223, 3, 28, 150, 20, 95, 37, 17, 48, + 46, 253, 208, 1, 227, 158, 69, 253, 194, 158, 34, 28, 237, 135, + 100, 227, 189, 226, 185, 41, 98, 120, 65, 124, 207, 34, 254, 69, + 233, 247, 58, 50, 13, 252, 64, 28, 153, 246, 189, 35, 71, 38, + 197, 191, 103, 255, 67, 251, 247, 196, 189, 159, 14, 60, 180, 247, + 147, 245, 18, 58, 16, 239, 151, 30, 113, 243, 166, 227, 113, 243, + 142, 247, 234, 103, 145, 137, 18, 46, 239, 25, 51, 141, 6, 7, + 202, 251, 99, 70, 219, 153, 143, 105, 40, 45, 62, 198, 143, 161, + 254, 13, 183, 225, 172, 181, 236, 246, 22, 43, 113, 33, 81, 78, + 211, 71, 43, 118, 123, 11, 31, 71, 105, 97, 252, 3, 101, 239, + 163, 111, 197, 19, 124, 20, 245, 109, 214, 194, 181, 78, 224, 50, + 103, 166, 133, 68, 57, 181, 89, 11, 87, 3, 151, 78, 114, 254, + 217, 90, 123, 183, 229, 48, 239, 194, 242, 0, 127, 86, 221, 109, + 57, 179, 41, 100, 174, 251, 245, 221, 204, 47, 104, 232, 64, 52, + 73, 32, 124, 33, 70, 102, 84, 161, 50, 252, 198, 5, 148, 98, + 231, 42, 84, 228, 192, 244, 216, 253, 39, 27, 205, 39, 207, 116, + 130, 101, 158, 48, 51, 135, 82, 236, 9, 78, 35, 115, 113, 117, + 174, 52, 152, 192, 39, 144, 53, 183, 80, 94, 190, 85, 90, 189, + 181, 246, 76, 101, 121, 137, 169, 246, 152, 5, 120, 101, 80, 195, + 7, 209, 192, 205, 229, 229, 155, 139, 69, 120, 49, 168, 191, 195, + 16, 132, 191, 121, 134, 249, 231, 188, 173, 189, 231, 159, 243, 158, + 127, 206, 187, 21, 131, 48, 27, 249, 231, 156, 139, 252, 115, 198, + 34, 255, 156, 235, 145, 127, 78, 177, 167, 127, 206, 172, 244, 207, + 41, 69, 254, 57, 37, 244, 150, 198, 160, 104, 78, 38, 202, 154, + 181, 67, 10, 132, 238, 38, 13, 66, 71, 236, 182, 221, 224, 216, + 165, 241, 77, 82, 49, 235, 224, 22, 21, 128, 28, 157, 207, 79, + 228, 243, 61, 207, 107, 222, 111, 110, 27, 12, 91, 33, 78, 56, + 116, 92, 221, 105, 219, 110, 67, 69, 130, 57, 169, 184, 165, 144, + 251, 186, 165, 144, 152, 91, 10, 137, 185, 165, 80, 10, 114, 68, + 216, 56, 165, 31, 99, 137, 80, 2, 27, 167, 6, 44, 244, 254, + 8, 103, 230, 144, 117, 137, 20, 239, 211, 208, 248, 25, 87, 5, + 158, 226, 190, 224, 34, 131, 42, 184, 200, 240, 8, 106, 11, 199, + 139, 49, 253, 136, 181, 249, 8, 101, 73, 174, 133, 35, 77, 248, + 76, 206, 207, 17, 155, 4, 182, 87, 247, 155, 57, 225, 185, 193, + 174, 42, 34, 189, 111, 204, 150, 126, 44, 102, 75, 63, 38, 13, + 211, 53, 3, 27, 99, 135, 14, 163, 89, 1, 69, 144, 211, 71, + 172, 43, 143, 80, 191, 200, 198, 90, 49, 131, 207, 73, 35, 98, + 218, 228, 156, 52, 34, 214, 13, 108, 228, 240, 48, 239, 121, 3, + 27, 19, 250, 216, 35, 245, 60, 99, 175, 98, 246, 233, 19, 250, + 99, 138, 125, 250, 196, 137, 51, 138, 125, 250, 196, 249, 44, 186, + 33, 236, 207, 167, 117, 203, 186, 250, 40, 101, 41, 12, 92, 204, + 68, 122, 90, 246, 165, 169, 97, 99, 90, 154, 143, 154, 6, 54, + 166, 71, 143, 178, 88, 113, 180, 27, 174, 232, 23, 173, 39, 30, + 173, 117, 156, 31, 140, 153, 59, 95, 145, 182, 161, 73, 13, 27, + 87, 164, 109, 104, 210, 192, 198, 149, 177, 11, 124, 236, 82, 216, + 120, 159, 158, 125, 164, 177, 147, 34, 135, 52, 142, 133, 76, 44, + 197, 56, 246, 125, 210, 202, 51, 101, 96, 227, 125, 231, 206, 163, + 167, 184, 245, 171, 113, 77, 159, 180, 166, 30, 161, 52, 202, 81, + 70, 54, 175, 38, 205, 64, 181, 128, 189, 54, 112, 78, 177, 128, + 189, 118, 254, 162, 98, 1, 123, 45, 63, 1, 183, 37, 9, 61, + 141, 141, 167, 245, 115, 214, 75, 68, 242, 83, 160, 222, 104, 53, + 124, 155, 67, 6, 138, 144, 101, 226, 132, 219, 99, 87, 10, 170, + 86, 187, 37, 131, 131, 41, 198, 206, 110, 61, 102, 240, 250, 180, + 126, 68, 49, 120, 125, 122, 244, 148, 98, 240, 250, 244, 153, 179, + 232, 166, 48, 104, 157, 213, 47, 89, 51, 143, 210, 21, 49, 25, + 72, 181, 66, 157, 213, 79, 42, 86, 168, 179, 100, 92, 177, 66, + 157, 157, 156, 230, 118, 152, 8, 27, 69, 253, 138, 117, 237, 17, + 138, 236, 146, 217, 68, 153, 40, 69, 179, 34, 130, 210, 176, 81, + 60, 53, 33, 40, 3, 27, 197, 233, 203, 232, 59, 26, 55, 254, + 52, 158, 213, 179, 214, 255, 174, 61, 66, 169, 209, 237, 73, 85, + 185, 220, 19, 193, 35, 21, 123, 144, 200, 200, 128, 89, 70, 1, + 130, 140, 223, 108, 210, 33, 5, 197, 150, 29, 176, 216, 122, 65, + 125, 29, 17, 118, 41, 145, 35, 91, 254, 142, 115, 219, 9, 100, + 104, 20, 122, 208, 6, 110, 29, 208, 34, 237, 186, 140, 71, 39, + 47, 21, 41, 83, 211, 18, 150, 66, 180, 96, 68, 214, 237, 208, + 13, 185, 173, 124, 228, 50, 33, 251, 103, 32, 69, 91, 45, 86, + 196, 128, 134, 141, 103, 143, 101, 4, 101, 96, 227, 217, 179, 231, + 209, 79, 105, 220, 74, 213, 120, 238, 207, 163, 129, 232, 62, 97, + 237, 106, 60, 167, 143, 10, 74, 195, 198, 115, 71, 197, 210, 222, + 103, 96, 227, 185, 115, 89, 244, 159, 152, 193, 130, 249, 82, 194, + 215, 172, 111, 106, 15, 197, 2, 136, 117, 216, 131, 1, 8, 90, + 53, 202, 4, 136, 213, 245, 144, 28, 0, 153, 23, 254, 98, 220, + 101, 144, 133, 138, 8, 136, 98, 217, 31, 191, 0, 234, 198, 20, + 101, 40, 186, 72, 189, 28, 150, 82, 168, 88, 249, 121, 197, 29, + 246, 10, 227, 58, 232, 193, 248, 82, 122, 16, 253, 9, 220, 246, + 164, 19, 216, 92, 211, 183, 13, 235, 247, 52, 50, 235, 215, 119, + 149, 25, 10, 102, 175, 138, 37, 139, 244, 11, 4, 219, 42, 41, + 106, 145, 44, 112, 223, 60, 29, 104, 9, 243, 145, 155, 197, 57, + 194, 197, 42, 21, 167, 139, 25, 91, 142, 209, 108, 228, 135, 217, + 40, 195, 7, 165, 17, 111, 33, 118, 225, 92, 37, 218, 215, 98, + 121, 200, 156, 123, 100, 2, 19, 66, 75, 67, 248, 200, 244, 62, + 244, 26, 55, 238, 48, 214, 205, 163, 86, 133, 20, 214, 1, 252, + 53, 10, 180, 10, 62, 73, 162, 16, 104, 173, 239, 69, 14, 211, + 252, 150, 145, 235, 191, 145, 170, 160, 99, 151, 212, 124, 114, 130, + 117, 131, 177, 110, 74, 74, 195, 198, 250, 192, 136, 160, 12, 108, + 172, 31, 25, 69, 127, 71, 227, 102, 10, 198, 166, 121, 196, 122, + 91, 35, 115, 138, 199, 138, 90, 145, 60, 89, 13, 157, 141, 78, + 131, 121, 97, 132, 14, 168, 216, 121, 228, 77, 1, 100, 47, 189, + 181, 145, 168, 37, 221, 162, 150, 231, 151, 179, 158, 15, 49, 84, + 67, 251, 245, 215, 237, 122, 115, 108, 134, 223, 101, 138, 108, 100, + 231, 81, 105, 106, 171, 227, 109, 135, 178, 17, 148, 205, 218, 52, + 251, 5, 69, 43, 138, 176, 160, 12, 108, 108, 30, 58, 140, 10, + 220, 4, 194, 120, 221, 60, 98, 93, 134, 101, 76, 7, 106, 181, + 92, 234, 110, 5, 113, 55, 136, 219, 62, 79, 55, 10, 63, 96, + 215, 24, 55, 231, 42, 178, 48, 202, 94, 188, 46, 123, 140, 246, + 202, 235, 3, 162, 48, 202, 88, 189, 126, 232, 48, 240, 33, 26, + 37, 60, 221, 122, 48, 31, 34, 22, 114, 94, 149, 233, 101, 121, + 84, 136, 240, 56, 223, 3, 182, 3, 134, 199, 249, 30, 48, 29, + 48, 188, 209, 163, 40, 139, 116, 83, 199, 201, 128, 10, 192, 214, + 49, 82, 96, 61, 206, 142, 97, 197, 216, 150, 51, 249, 128, 63, + 156, 62, 140, 92, 100, 154, 16, 249, 180, 163, 99, 235, 149, 104, + 142, 45, 87, 198, 189, 120, 88, 223, 200, 17, 43, 124, 231, 147, + 77, 135, 201, 214, 225, 77, 97, 145, 82, 59, 220, 179, 154, 197, + 73, 237, 12, 14, 161, 115, 180, 82, 102, 2, 39, 239, 232, 31, + 209, 12, 235, 72, 132, 85, 192, 102, 17, 104, 24, 68, 142, 32, + 175, 220, 233, 219, 143, 182, 81, 138, 82, 180, 49, 111, 154, 251, + 173, 87, 96, 124, 33, 1, 24, 204, 134, 206, 135, 58, 14, 191, + 129, 83, 36, 39, 229, 140, 8, 73, 22, 52, 227, 236, 89, 33, + 8, 236, 221, 49, 126, 118, 42, 129, 151, 89, 209, 7, 80, 31, + 43, 76, 163, 165, 165, 35, 90, 199, 198, 155, 3, 251, 208, 79, + 104, 188, 54, 26, 54, 126, 196, 60, 109, 253, 152, 38, 189, 38, + 207, 135, 172, 0, 48, 244, 81, 194, 211, 66, 240, 167, 71, 11, + 96, 58, 113, 113, 162, 105, 135, 109, 39, 152, 168, 251, 181, 16, + 4, 62, 215, 219, 156, 120, 61, 244, 189, 53, 69, 250, 11, 215, + 120, 189, 155, 245, 168, 230, 26, 212, 236, 68, 68, 235, 216, 248, + 145, 83, 25, 186, 210, 89, 205, 117, 112, 62, 25, 161, 85, 191, + 9, 117, 21, 141, 135, 171, 221, 29, 167, 209, 144, 1, 138, 152, + 139, 104, 179, 213, 112, 100, 184, 162, 25, 165, 45, 97, 92, 153, + 19, 107, 193, 186, 29, 58, 80, 241, 137, 134, 221, 241, 106, 91, + 78, 48, 17, 171, 57, 15, 139, 155, 175, 213, 16, 58, 200, 171, + 170, 51, 191, 152, 131, 209, 3, 168, 43, 30, 70, 167, 97, 58, + 131, 59, 139, 62, 98, 29, 18, 225, 100, 197, 81, 193, 162, 255, + 238, 135, 201, 166, 49, 31, 152, 180, 32, 33, 81, 255, 65, 65, + 130, 15, 12, 30, 150, 247, 16, 111, 31, 66, 143, 63, 202, 61, + 4, 232, 203, 238, 125, 1, 113, 191, 56, 177, 214, 247, 119, 225, + 145, 121, 21, 141, 150, 157, 150, 31, 40, 16, 14, 97, 153, 133, + 147, 195, 5, 180, 79, 237, 222, 81, 13, 212, 202, 39, 238, 175, + 233, 43, 15, 180, 163, 156, 50, 55, 209, 209, 30, 217, 51, 107, + 79, 124, 1, 13, 41, 249, 175, 65, 48, 41, 40, 164, 191, 124, + 48, 202, 100, 137, 62, 206, 252, 158, 134, 206, 178, 156, 34, 187, + 174, 69, 231, 182, 211, 144, 210, 133, 168, 245, 134, 170, 9, 103, + 85, 94, 232, 85, 229, 135, 202, 237, 222, 74, 242, 119, 83, 83, + 60, 253, 7, 26, 50, 233, 134, 136, 3, 52, 180, 167, 255, 112, + 238, 222, 205, 217, 59, 138, 86, 207, 107, 128, 123, 14, 74, 38, + 129, 59, 232, 196, 253, 251, 6, 95, 125, 199, 253, 105, 29, 222, + 163, 132, 135, 88, 129, 153, 196, 59, 212, 228, 254, 196, 1, 6, + 3, 62, 243, 158, 34, 247, 61, 69, 238, 187, 165, 200, 61, 27, + 41, 114, 111, 114, 141, 236, 161, 72, 35, 75, 127, 254, 67, 3, + 233, 169, 4, 54, 73, 98, 76, 179, 254, 107, 131, 84, 120, 52, + 77, 48, 170, 166, 235, 162, 155, 175, 34, 209, 205, 123, 173, 225, + 2, 159, 234, 241, 129, 0, 113, 152, 242, 151, 29, 96, 166, 182, + 193, 144, 20, 158, 44, 84, 171, 43, 100, 203, 177, 105, 165, 129, + 101, 118, 189, 219, 254, 54, 152, 165, 208, 215, 229, 149, 57, 206, + 98, 115, 227, 82, 136, 42, 232, 7, 100, 213, 163, 121, 57, 94, + 155, 197, 28, 229, 120, 174, 0, 2, 14, 30, 183, 237, 78, 224, + 65, 7, 187, 121, 39, 159, 227, 75, 196, 125, 131, 157, 205, 42, + 127, 246, 36, 205, 103, 28, 234, 244, 20, 151, 109, 213, 90, 134, + 10, 218, 209, 109, 215, 38, 146, 105, 85, 118, 10, 250, 253, 26, + 251, 158, 174, 199, 181, 185, 229, 165, 106, 241, 3, 85, 196, 108, + 184, 88, 136, 8, 48, 152, 80, 12, 55, 114, 228, 182, 27, 186, + 10, 199, 179, 233, 182, 183, 58, 235, 192, 226, 192, 30, 65, 255, + 26, 111, 237, 78, 172, 55, 252, 117, 193, 229, 176, 110, 157, 80, + 11, 1, 158, 6, 33, 35, 5, 234, 231, 244, 62, 116, 22, 153, + 41, 240, 78, 203, 232, 167, 115, 214, 17, 194, 246, 176, 176, 123, + 176, 246, 161, 100, 138, 177, 111, 153, 212, 17, 65, 233, 216, 200, + 140, 78, 10, 202, 192, 198, 233, 131, 89, 212, 134, 12, 53, 108, + 158, 215, 179, 89, 107, 67, 102, 24, 89, 2, 143, 199, 221, 228, + 169, 24, 93, 149, 106, 49, 86, 100, 215, 39, 57, 216, 91, 246, + 236, 216, 10, 20, 55, 171, 3, 101, 210, 206, 167, 206, 8, 74, + 199, 198, 249, 179, 207, 8, 202, 192, 70, 246, 224, 25, 132, 216, + 197, 193, 197, 68, 94, 147, 250, 251, 139, 105, 2, 92, 52, 112, + 195, 227, 250, 121, 235, 40, 99, 55, 5, 3, 47, 231, 112, 164, + 70, 55, 233, 135, 106, 212, 251, 113, 233, 146, 77, 115, 28, 63, + 156, 81, 148, 234, 227, 103, 207, 65, 185, 26, 54, 39, 19, 151, + 53, 41, 193, 79, 166, 79, 161, 255, 191, 38, 228, 214, 75, 122, + 214, 122, 147, 44, 242, 232, 151, 123, 32, 142, 36, 22, 114, 204, + 97, 161, 65, 39, 37, 147, 55, 66, 41, 113, 0, 142, 55, 15, + 137, 235, 212, 97, 34, 238, 17, 161, 132, 3, 131, 88, 38, 145, + 124, 107, 210, 170, 168, 210, 238, 165, 129, 33, 69, 218, 189, 132, + 79, 43, 210, 238, 165, 115, 231, 161, 105, 58, 54, 31, 167, 71, + 144, 144, 150, 30, 79, 143, 131, 67, 52, 72, 75, 87, 245, 115, + 214, 77, 197, 28, 189, 123, 6, 168, 29, 252, 80, 42, 79, 29, + 186, 252, 42, 87, 121, 50, 193, 232, 42, 87, 121, 50, 193, 232, + 234, 153, 179, 130, 25, 253, 127, 2, 0, 0, 255, 255, 114, 161, + 185, 185, 131, 196, 1, 0}, ) } diff --git a/vendor/go.starlark.net/starlark/eval.go b/vendor/go.starlark.net/starlark/eval.go index 99e83a1..6c11bc4 100644 --- a/vendor/go.starlark.net/starlark/eval.go +++ b/vendor/go.starlark.net/starlark/eval.go @@ -1659,9 +1659,14 @@ func interpolate(format string, x Value) (Value, error) { index++ } - if index < nargs { + if index < nargs && !is[Mapping](x) { return nil, fmt.Errorf("too many arguments for format string") } return String(buf.String()), nil } + +func is[T any](x any) bool { + _, ok := x.(T) + return ok +} diff --git a/vendor/go.starlark.net/starlark/hashtable.go b/vendor/go.starlark.net/starlark/hashtable.go index 252d21d..40f72bb 100644 --- a/vendor/go.starlark.net/starlark/hashtable.go +++ b/vendor/go.starlark.net/starlark/hashtable.go @@ -6,6 +6,7 @@ package starlark import ( "fmt" + "math/big" _ "unsafe" // for go:linkname hack ) @@ -200,6 +201,57 @@ func (ht *hashtable) lookup(k Value) (v Value, found bool, err error) { return None, false, nil // not found } +// count returns the number of distinct elements of iter that are elements of ht. +func (ht *hashtable) count(iter Iterator) (int, error) { + if ht.table == nil { + return 0, nil // empty + } + + var k Value + count := 0 + + // Use a bitset per table entry to record seen elements of ht. + // Elements are identified by their bucket number and index within the bucket. + // Each bitset gets one word initially, but may grow. + storage := make([]big.Word, len(ht.table)) + bitsets := make([]big.Int, len(ht.table)) + for i := range bitsets { + bitsets[i].SetBits(storage[i : i+1 : i+1]) + } + for iter.Next(&k) && count != int(ht.len) { + h, err := k.Hash() + if err != nil { + return 0, err // unhashable + } + if h == 0 { + h = 1 // zero is reserved + } + + // Inspect each bucket in the bucket list. + bucketId := h & (uint32(len(ht.table) - 1)) + i := 0 + for p := &ht.table[bucketId]; p != nil; p = p.next { + for j := range p.entries { + e := &p.entries[j] + if e.hash == h { + if eq, err := Equal(k, e.key); err != nil { + return 0, err + } else if eq { + bitIndex := i<<3 + j + if bitsets[bucketId].Bit(bitIndex) == 0 { + bitsets[bucketId].SetBit(&bitsets[bucketId], bitIndex, 1) + count++ + } + } + } + } + i++ + } + } + + return count, nil +} + // Items returns all the items in the map (as key/value pairs) in insertion order. func (ht *hashtable) items() []Tuple { items := make([]Tuple, 0, ht.len) diff --git a/vendor/go.starlark.net/starlark/int.go b/vendor/go.starlark.net/starlark/int.go index 93567c5..8f2b279 100644 --- a/vendor/go.starlark.net/starlark/int.go +++ b/vendor/go.starlark.net/starlark/int.go @@ -212,6 +212,12 @@ func (i Int) Float() Float { return Float(iBig.Uint64()) } else if iBig.IsInt64() { return Float(iBig.Int64()) + } else { + // Fast path for very big ints. + const maxFiniteLen = 1023 + 1 // max exponent value + implicit mantissa bit + if iBig.BitLen() > maxFiniteLen { + return Float(math.Inf(iBig.Sign())) + } } f, _ := new(big.Float).SetInt(iBig).Float64() diff --git a/vendor/go.starlark.net/starlark/library.go b/vendor/go.starlark.net/starlark/library.go index ef032ee..4e73a40 100644 --- a/vendor/go.starlark.net/starlark/library.go +++ b/vendor/go.starlark.net/starlark/library.go @@ -40,7 +40,7 @@ func init() { "True": True, "False": False, "abs": NewBuiltin("abs", abs), - "any": NewBuiltin("any", any), + "any": NewBuiltin("any", any_), "all": NewBuiltin("all", all), "bool": NewBuiltin("bool", bool_), "bytes": NewBuiltin("bytes", bytes_), @@ -210,7 +210,7 @@ func all(thread *Thread, _ *Builtin, args Tuple, kwargs []Tuple) (Value, error) } // https://github.com/google/starlark-go/blob/master/doc/spec.md#any -func any(thread *Thread, _ *Builtin, args Tuple, kwargs []Tuple) (Value, error) { +func any_(thread *Thread, _ *Builtin, args Tuple, kwargs []Tuple) (Value, error) { var iterable Iterable if err := UnpackPositionalArgs("any", args, kwargs, 1, &iterable); err != nil { return nil, err diff --git a/vendor/go.starlark.net/starlark/value.go b/vendor/go.starlark.net/starlark/value.go index db9ba11..22a37c8 100644 --- a/vendor/go.starlark.net/starlark/value.go +++ b/vendor/go.starlark.net/starlark/value.go @@ -1236,13 +1236,11 @@ func (s *Set) IsSuperset(other Iterator) (bool, error) { } func (s *Set) IsSubset(other Iterator) (bool, error) { - otherset, err := setFromIterator(other) - if err != nil { + if count, err := s.ht.count(other); err != nil { return false, err + } else { + return count == s.Len(), nil } - iter := s.Iterate() - defer iter.Done() - return otherset.IsSuperset(iter) } func (s *Set) Intersection(other Iterator) (Value, error) { diff --git a/vendor/golang.org/x/net/context/go17.go b/vendor/golang.org/x/net/context/go17.go index 2cb9c40..0c1b867 100644 --- a/vendor/golang.org/x/net/context/go17.go +++ b/vendor/golang.org/x/net/context/go17.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build go1.7 -// +build go1.7 package context diff --git a/vendor/golang.org/x/net/context/go19.go b/vendor/golang.org/x/net/context/go19.go index 64d31ec..e31e35a 100644 --- a/vendor/golang.org/x/net/context/go19.go +++ b/vendor/golang.org/x/net/context/go19.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build go1.9 -// +build go1.9 package context diff --git a/vendor/golang.org/x/net/context/pre_go17.go b/vendor/golang.org/x/net/context/pre_go17.go index 7b6b685..065ff3d 100644 --- a/vendor/golang.org/x/net/context/pre_go17.go +++ b/vendor/golang.org/x/net/context/pre_go17.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build !go1.7 -// +build !go1.7 package context diff --git a/vendor/golang.org/x/net/context/pre_go19.go b/vendor/golang.org/x/net/context/pre_go19.go index 1f97153..ec5a638 100644 --- a/vendor/golang.org/x/net/context/pre_go19.go +++ b/vendor/golang.org/x/net/context/pre_go19.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build !go1.9 -// +build !go1.9 package context diff --git a/vendor/golang.org/x/net/http2/databuffer.go b/vendor/golang.org/x/net/http2/databuffer.go index a3067f8..e6f55cb 100644 --- a/vendor/golang.org/x/net/http2/databuffer.go +++ b/vendor/golang.org/x/net/http2/databuffer.go @@ -20,41 +20,44 @@ import ( // TODO: Benchmark to determine if the pools are necessary. The GC may have // improved enough that we can instead allocate chunks like this: // make([]byte, max(16<<10, expectedBytesRemaining)) -var ( - dataChunkSizeClasses = []int{ - 1 << 10, - 2 << 10, - 4 << 10, - 8 << 10, - 16 << 10, - } - dataChunkPools = [...]sync.Pool{ - {New: func() interface{} { return make([]byte, 1<<10) }}, - {New: func() interface{} { return make([]byte, 2<<10) }}, - {New: func() interface{} { return make([]byte, 4<<10) }}, - {New: func() interface{} { return make([]byte, 8<<10) }}, - {New: func() interface{} { return make([]byte, 16<<10) }}, - } -) +var dataChunkPools = [...]sync.Pool{ + {New: func() interface{} { return new([1 << 10]byte) }}, + {New: func() interface{} { return new([2 << 10]byte) }}, + {New: func() interface{} { return new([4 << 10]byte) }}, + {New: func() interface{} { return new([8 << 10]byte) }}, + {New: func() interface{} { return new([16 << 10]byte) }}, +} func getDataBufferChunk(size int64) []byte { - i := 0 - for ; i < len(dataChunkSizeClasses)-1; i++ { - if size <= int64(dataChunkSizeClasses[i]) { - break - } + switch { + case size <= 1<<10: + return dataChunkPools[0].Get().(*[1 << 10]byte)[:] + case size <= 2<<10: + return dataChunkPools[1].Get().(*[2 << 10]byte)[:] + case size <= 4<<10: + return dataChunkPools[2].Get().(*[4 << 10]byte)[:] + case size <= 8<<10: + return dataChunkPools[3].Get().(*[8 << 10]byte)[:] + default: + return dataChunkPools[4].Get().(*[16 << 10]byte)[:] } - return dataChunkPools[i].Get().([]byte) } func putDataBufferChunk(p []byte) { - for i, n := range dataChunkSizeClasses { - if len(p) == n { - dataChunkPools[i].Put(p) - return - } + switch len(p) { + case 1 << 10: + dataChunkPools[0].Put((*[1 << 10]byte)(p)) + case 2 << 10: + dataChunkPools[1].Put((*[2 << 10]byte)(p)) + case 4 << 10: + dataChunkPools[2].Put((*[4 << 10]byte)(p)) + case 8 << 10: + dataChunkPools[3].Put((*[8 << 10]byte)(p)) + case 16 << 10: + dataChunkPools[4].Put((*[16 << 10]byte)(p)) + default: + panic(fmt.Sprintf("unexpected buffer len=%v", len(p))) } - panic(fmt.Sprintf("unexpected buffer len=%v", len(p))) } // dataBuffer is an io.ReadWriter backed by a list of data chunks. diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index c1f6b90..e2b298d 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -1510,13 +1510,12 @@ func (mh *MetaHeadersFrame) checkPseudos() error { } func (fr *Framer) maxHeaderStringLen() int { - v := fr.maxHeaderListSize() - if uint32(int(v)) == v { - return int(v) + v := int(fr.maxHeaderListSize()) + if v < 0 { + // If maxHeaderListSize overflows an int, use no limit (0). + return 0 } - // They had a crazy big number for MaxHeaderBytes anyway, - // so give them unlimited header lengths: - return 0 + return v } // readMetaFrame returns 0 or more CONTINUATION frames from fr and diff --git a/vendor/golang.org/x/net/http2/go111.go b/vendor/golang.org/x/net/http2/go111.go deleted file mode 100644 index 5bf62b0..0000000 --- a/vendor/golang.org/x/net/http2/go111.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.11 -// +build go1.11 - -package http2 - -import ( - "net/http/httptrace" - "net/textproto" -) - -func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool { - return trace != nil && trace.WroteHeaderField != nil -} - -func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) { - if trace != nil && trace.WroteHeaderField != nil { - trace.WroteHeaderField(k, []string{v}) - } -} - -func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error { - if trace != nil { - return trace.Got1xxResponse - } - return nil -} diff --git a/vendor/golang.org/x/net/http2/go115.go b/vendor/golang.org/x/net/http2/go115.go deleted file mode 100644 index 908af1a..0000000 --- a/vendor/golang.org/x/net/http2/go115.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.15 -// +build go1.15 - -package http2 - -import ( - "context" - "crypto/tls" -) - -// dialTLSWithContext uses tls.Dialer, added in Go 1.15, to open a TLS -// connection. -func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) { - dialer := &tls.Dialer{ - Config: cfg, - } - cn, err := dialer.DialContext(ctx, network, addr) - if err != nil { - return nil, err - } - tlsCn := cn.(*tls.Conn) // DialContext comment promises this will always succeed - return tlsCn, nil -} diff --git a/vendor/golang.org/x/net/http2/go118.go b/vendor/golang.org/x/net/http2/go118.go deleted file mode 100644 index aca4b2b..0000000 --- a/vendor/golang.org/x/net/http2/go118.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.18 -// +build go1.18 - -package http2 - -import ( - "crypto/tls" - "net" -) - -func tlsUnderlyingConn(tc *tls.Conn) net.Conn { - return tc.NetConn() -} diff --git a/vendor/golang.org/x/net/http2/not_go111.go b/vendor/golang.org/x/net/http2/not_go111.go deleted file mode 100644 index cc0baa8..0000000 --- a/vendor/golang.org/x/net/http2/not_go111.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.11 -// +build !go1.11 - -package http2 - -import ( - "net/http/httptrace" - "net/textproto" -) - -func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool { return false } - -func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) {} - -func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error { - return nil -} diff --git a/vendor/golang.org/x/net/http2/not_go115.go b/vendor/golang.org/x/net/http2/not_go115.go deleted file mode 100644 index e6c04cf..0000000 --- a/vendor/golang.org/x/net/http2/not_go115.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.15 -// +build !go1.15 - -package http2 - -import ( - "context" - "crypto/tls" -) - -// dialTLSWithContext opens a TLS connection. -func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) { - cn, err := tls.Dial(network, addr, cfg) - if err != nil { - return nil, err - } - if err := cn.Handshake(); err != nil { - return nil, err - } - if cfg.InsecureSkipVerify { - return cn, nil - } - if err := cn.VerifyHostname(cfg.ServerName); err != nil { - return nil, err - } - return cn, nil -} diff --git a/vendor/golang.org/x/net/http2/not_go118.go b/vendor/golang.org/x/net/http2/not_go118.go deleted file mode 100644 index eab532c..0000000 --- a/vendor/golang.org/x/net/http2/not_go118.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.18 -// +build !go1.18 - -package http2 - -import ( - "crypto/tls" - "net" -) - -func tlsUnderlyingConn(tc *tls.Conn) net.Conn { - return nil -} diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 02c88b6..ae94c64 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -2549,7 +2549,6 @@ type responseWriterState struct { wroteHeader bool // WriteHeader called (explicitly or implicitly). Not necessarily sent to user yet. sentHeader bool // have we sent the header frame? handlerDone bool // handler has finished - dirty bool // a Write failed; don't reuse this responseWriterState sentContentLen int64 // non-zero if handler set a Content-Length header wroteBytes int64 @@ -2669,7 +2668,6 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { date: date, }) if err != nil { - rws.dirty = true return 0, err } if endStream { @@ -2690,7 +2688,6 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { if len(p) > 0 || endStream { // only send a 0 byte DATA frame if we're ending the stream. if err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil { - rws.dirty = true return 0, err } } @@ -2702,9 +2699,6 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { trailers: rws.trailers, endStream: true, }) - if err != nil { - rws.dirty = true - } return len(p), err } return len(p), nil @@ -2920,14 +2914,12 @@ func (rws *responseWriterState) writeHeader(code int) { h.Del("Transfer-Encoding") } - if rws.conn.writeHeaders(rws.stream, &writeResHeaders{ + rws.conn.writeHeaders(rws.stream, &writeResHeaders{ streamID: rws.stream.id, httpResCode: code, h: h, endStream: rws.handlerDone && !rws.hasTrailers(), - }) != nil { - rws.dirty = true - } + }) return } @@ -2992,19 +2984,10 @@ func (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, func (w *responseWriter) handlerDone() { rws := w.rws - dirty := rws.dirty rws.handlerDone = true w.Flush() w.rws = nil - if !dirty { - // Only recycle the pool if all prior Write calls to - // the serverConn goroutine completed successfully. If - // they returned earlier due to resets from the peer - // there might still be write goroutines outstanding - // from the serverConn referencing the rws memory. See - // issue 20704. - responseWriterStatePool.Put(rws) - } + responseWriterStatePool.Put(rws) } // Push errors. @@ -3187,6 +3170,7 @@ func (sc *serverConn) startPush(msg *startPushRequest) { panic(fmt.Sprintf("newWriterAndRequestNoBody(%+v): %v", msg.url, err)) } + sc.curHandlers++ go sc.runHandler(rw, req, sc.handler.ServeHTTP) return promisedID, nil } diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index 4515b22..df578b8 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -1018,7 +1018,7 @@ func (cc *ClientConn) forceCloseConn() { if !ok { return } - if nc := tlsUnderlyingConn(tc); nc != nil { + if nc := tc.NetConn(); nc != nil { nc.Close() } } @@ -3201,3 +3201,34 @@ func traceFirstResponseByte(trace *httptrace.ClientTrace) { trace.GotFirstResponseByte() } } + +func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool { + return trace != nil && trace.WroteHeaderField != nil +} + +func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) { + if trace != nil && trace.WroteHeaderField != nil { + trace.WroteHeaderField(k, []string{v}) + } +} + +func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error { + if trace != nil { + return trace.Got1xxResponse + } + return nil +} + +// dialTLSWithContext uses tls.Dialer, added in Go 1.15, to open a TLS +// connection. +func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) { + dialer := &tls.Dialer{ + Config: cfg, + } + cn, err := dialer.DialContext(ctx, network, addr) + if err != nil { + return nil, err + } + tlsCn := cn.(*tls.Conn) // DialContext comment promises this will always succeed + return tlsCn, nil +} diff --git a/vendor/golang.org/x/net/idna/go118.go b/vendor/golang.org/x/net/idna/go118.go index c5c4338..712f1ad 100644 --- a/vendor/golang.org/x/net/idna/go118.go +++ b/vendor/golang.org/x/net/idna/go118.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build go1.18 -// +build go1.18 package idna diff --git a/vendor/golang.org/x/net/idna/idna10.0.0.go b/vendor/golang.org/x/net/idna/idna10.0.0.go index 64ccf85..7b37178 100644 --- a/vendor/golang.org/x/net/idna/idna10.0.0.go +++ b/vendor/golang.org/x/net/idna/idna10.0.0.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build go1.10 -// +build go1.10 // Package idna implements IDNA2008 using the compatibility processing // defined by UTS (Unicode Technical Standard) #46, which defines a standard to diff --git a/vendor/golang.org/x/net/idna/idna9.0.0.go b/vendor/golang.org/x/net/idna/idna9.0.0.go index ee1698c..cc6a892 100644 --- a/vendor/golang.org/x/net/idna/idna9.0.0.go +++ b/vendor/golang.org/x/net/idna/idna9.0.0.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build !go1.10 -// +build !go1.10 // Package idna implements IDNA2008 using the compatibility processing // defined by UTS (Unicode Technical Standard) #46, which defines a standard to diff --git a/vendor/golang.org/x/net/idna/pre_go118.go b/vendor/golang.org/x/net/idna/pre_go118.go index 3aaccab..40e74bb 100644 --- a/vendor/golang.org/x/net/idna/pre_go118.go +++ b/vendor/golang.org/x/net/idna/pre_go118.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build !go1.18 -// +build !go1.18 package idna diff --git a/vendor/golang.org/x/net/idna/tables10.0.0.go b/vendor/golang.org/x/net/idna/tables10.0.0.go index d1d62ef..c6c2bf1 100644 --- a/vendor/golang.org/x/net/idna/tables10.0.0.go +++ b/vendor/golang.org/x/net/idna/tables10.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.10 && !go1.13 -// +build go1.10,!go1.13 package idna diff --git a/vendor/golang.org/x/net/idna/tables11.0.0.go b/vendor/golang.org/x/net/idna/tables11.0.0.go index 167efba..7678939 100644 --- a/vendor/golang.org/x/net/idna/tables11.0.0.go +++ b/vendor/golang.org/x/net/idna/tables11.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.13 && !go1.14 -// +build go1.13,!go1.14 package idna diff --git a/vendor/golang.org/x/net/idna/tables12.0.0.go b/vendor/golang.org/x/net/idna/tables12.0.0.go index ab40f7b..0600cd2 100644 --- a/vendor/golang.org/x/net/idna/tables12.0.0.go +++ b/vendor/golang.org/x/net/idna/tables12.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.14 && !go1.16 -// +build go1.14,!go1.16 package idna diff --git a/vendor/golang.org/x/net/idna/tables13.0.0.go b/vendor/golang.org/x/net/idna/tables13.0.0.go index 66701ea..2fb768e 100644 --- a/vendor/golang.org/x/net/idna/tables13.0.0.go +++ b/vendor/golang.org/x/net/idna/tables13.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.16 && !go1.21 -// +build go1.16,!go1.21 package idna diff --git a/vendor/golang.org/x/net/idna/tables15.0.0.go b/vendor/golang.org/x/net/idna/tables15.0.0.go index 4003377..5ff05fe 100644 --- a/vendor/golang.org/x/net/idna/tables15.0.0.go +++ b/vendor/golang.org/x/net/idna/tables15.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.21 -// +build go1.21 package idna diff --git a/vendor/golang.org/x/net/idna/tables9.0.0.go b/vendor/golang.org/x/net/idna/tables9.0.0.go index 4074b53..0f25e84 100644 --- a/vendor/golang.org/x/net/idna/tables9.0.0.go +++ b/vendor/golang.org/x/net/idna/tables9.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build !go1.10 -// +build !go1.10 package idna diff --git a/vendor/golang.org/x/net/idna/trie12.0.0.go b/vendor/golang.org/x/net/idna/trie12.0.0.go index bb63f90..8a75b96 100644 --- a/vendor/golang.org/x/net/idna/trie12.0.0.go +++ b/vendor/golang.org/x/net/idna/trie12.0.0.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build !go1.16 -// +build !go1.16 package idna diff --git a/vendor/golang.org/x/net/idna/trie13.0.0.go b/vendor/golang.org/x/net/idna/trie13.0.0.go index 7d68a8d..fa45bb9 100644 --- a/vendor/golang.org/x/net/idna/trie13.0.0.go +++ b/vendor/golang.org/x/net/idna/trie13.0.0.go @@ -5,7 +5,6 @@ // license that can be found in the LICENSE file. //go:build go1.16 -// +build go1.16 package idna diff --git a/vendor/golang.org/x/sync/errgroup/errgroup.go b/vendor/golang.org/x/sync/errgroup/errgroup.go index b18efb7..948a3ee 100644 --- a/vendor/golang.org/x/sync/errgroup/errgroup.go +++ b/vendor/golang.org/x/sync/errgroup/errgroup.go @@ -4,6 +4,9 @@ // Package errgroup provides synchronization, error propagation, and Context // cancelation for groups of goroutines working on subtasks of a common task. +// +// [errgroup.Group] is related to [sync.WaitGroup] but adds handling of tasks +// returning errors. package errgroup import ( diff --git a/vendor/golang.org/x/sync/errgroup/go120.go b/vendor/golang.org/x/sync/errgroup/go120.go index 7d419d3..f93c740 100644 --- a/vendor/golang.org/x/sync/errgroup/go120.go +++ b/vendor/golang.org/x/sync/errgroup/go120.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build go1.20 -// +build go1.20 package errgroup diff --git a/vendor/golang.org/x/sync/errgroup/pre_go120.go b/vendor/golang.org/x/sync/errgroup/pre_go120.go index 1795c18..88ce334 100644 --- a/vendor/golang.org/x/sync/errgroup/pre_go120.go +++ b/vendor/golang.org/x/sync/errgroup/pre_go120.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build !go1.20 -// +build !go1.20 package errgroup diff --git a/vendor/golang.org/x/sys/execabs/execabs.go b/vendor/golang.org/x/sys/execabs/execabs.go deleted file mode 100644 index 3bf40fd..0000000 --- a/vendor/golang.org/x/sys/execabs/execabs.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package execabs is a drop-in replacement for os/exec -// that requires PATH lookups to find absolute paths. -// That is, execabs.Command("cmd") runs the same PATH lookup -// as exec.Command("cmd"), but if the result is a path -// which is relative, the Run and Start methods will report -// an error instead of running the executable. -// -// See https://blog.golang.org/path-security for more information -// about when it may be necessary or appropriate to use this package. -package execabs - -import ( - "context" - "fmt" - "os/exec" - "path/filepath" - "reflect" - "unsafe" -) - -// ErrNotFound is the error resulting if a path search failed to find an executable file. -// It is an alias for exec.ErrNotFound. -var ErrNotFound = exec.ErrNotFound - -// Cmd represents an external command being prepared or run. -// It is an alias for exec.Cmd. -type Cmd = exec.Cmd - -// Error is returned by LookPath when it fails to classify a file as an executable. -// It is an alias for exec.Error. -type Error = exec.Error - -// An ExitError reports an unsuccessful exit by a command. -// It is an alias for exec.ExitError. -type ExitError = exec.ExitError - -func relError(file, path string) error { - return fmt.Errorf("%s resolves to executable in current directory (.%c%s)", file, filepath.Separator, path) -} - -// LookPath searches for an executable named file in the directories -// named by the PATH environment variable. If file contains a slash, -// it is tried directly and the PATH is not consulted. The result will be -// an absolute path. -// -// LookPath differs from exec.LookPath in its handling of PATH lookups, -// which are used for file names without slashes. If exec.LookPath's -// PATH lookup would have returned an executable from the current directory, -// LookPath instead returns an error. -func LookPath(file string) (string, error) { - path, err := exec.LookPath(file) - if err != nil && !isGo119ErrDot(err) { - return "", err - } - if filepath.Base(file) == file && !filepath.IsAbs(path) { - return "", relError(file, path) - } - return path, nil -} - -func fixCmd(name string, cmd *exec.Cmd) { - if filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) && !isGo119ErrFieldSet(cmd) { - // exec.Command was called with a bare binary name and - // exec.LookPath returned a path which is not absolute. - // Set cmd.lookPathErr and clear cmd.Path so that it - // cannot be run. - lookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName("lookPathErr").Addr().Pointer())) - if *lookPathErr == nil { - *lookPathErr = relError(name, cmd.Path) - } - cmd.Path = "" - } -} - -// CommandContext is like Command but includes a context. -// -// The provided context is used to kill the process (by calling os.Process.Kill) -// if the context becomes done before the command completes on its own. -func CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd { - cmd := exec.CommandContext(ctx, name, arg...) - fixCmd(name, cmd) - return cmd - -} - -// Command returns the Cmd struct to execute the named program with the given arguments. -// See exec.Command for most details. -// -// Command differs from exec.Command in its handling of PATH lookups, -// which are used when the program name contains no slashes. -// If exec.Command would have returned an exec.Cmd configured to run an -// executable from the current directory, Command instead -// returns an exec.Cmd that will return an error from Start or Run. -func Command(name string, arg ...string) *exec.Cmd { - cmd := exec.Command(name, arg...) - fixCmd(name, cmd) - return cmd -} diff --git a/vendor/golang.org/x/sys/execabs/execabs_go118.go b/vendor/golang.org/x/sys/execabs/execabs_go118.go deleted file mode 100644 index 2000064..0000000 --- a/vendor/golang.org/x/sys/execabs/execabs_go118.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.19 -// +build !go1.19 - -package execabs - -import "os/exec" - -func isGo119ErrDot(err error) bool { - return false -} - -func isGo119ErrFieldSet(cmd *exec.Cmd) bool { - return false -} diff --git a/vendor/golang.org/x/sys/execabs/execabs_go119.go b/vendor/golang.org/x/sys/execabs/execabs_go119.go deleted file mode 100644 index f364b34..0000000 --- a/vendor/golang.org/x/sys/execabs/execabs_go119.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2022 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.19 -// +build go1.19 - -package execabs - -import ( - "errors" - "os/exec" -) - -func isGo119ErrDot(err error) bool { - return errors.Is(err, exec.ErrDot) -} - -func isGo119ErrFieldSet(cmd *exec.Cmd) bool { - return cmd.Err != nil -} diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go index abc89c1..e7d3df4 100644 --- a/vendor/golang.org/x/sys/unix/aliases.go +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9 -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos -// +build go1.9 package unix diff --git a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s index db9171c..269e173 100644 --- a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s +++ b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gc -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_386.s b/vendor/golang.org/x/sys/unix/asm_bsd_386.s index e0fcd9b..a4fcef0 100644 --- a/vendor/golang.org/x/sys/unix/asm_bsd_386.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_386.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (freebsd || netbsd || openbsd) && gc -// +build freebsd netbsd openbsd -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s index 2b99c34..1e63615 100644 --- a/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc -// +build darwin dragonfly freebsd netbsd openbsd -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_arm.s b/vendor/golang.org/x/sys/unix/asm_bsd_arm.s index d702d4a..6496c31 100644 --- a/vendor/golang.org/x/sys/unix/asm_bsd_arm.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_arm.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (freebsd || netbsd || openbsd) && gc -// +build freebsd netbsd openbsd -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s index fe36a73..4fd1f54 100644 --- a/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin || freebsd || netbsd || openbsd) && gc -// +build darwin freebsd netbsd openbsd -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s b/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s index e5b9a84..42f7eb9 100644 --- a/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin || freebsd || netbsd || openbsd) && gc -// +build darwin freebsd netbsd openbsd -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s b/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s index d560019..f890266 100644 --- a/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin || freebsd || netbsd || openbsd) && gc -// +build darwin freebsd netbsd openbsd -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s index 8fd101d..3b47348 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_386.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_386.s @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gc -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s index 7ed38e4..67e29f3 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gc -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s index 8ef1d51..d6ae269 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_arm.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_arm.s @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gc -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s index 98ae027..01e5e25 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && arm64 && gc -// +build linux -// +build arm64 -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s index 5653572..2abf12f 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_loong64.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && loong64 && gc -// +build linux -// +build loong64 -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s index 21231d2..f84bae7 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (mips64 || mips64le) && gc -// +build linux -// +build mips64 mips64le -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s index 6783b26..f08f628 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (mips || mipsle) && gc -// +build linux -// +build mips mipsle -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s index 19d4989..bdfc024 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (ppc64 || ppc64le) && gc -// +build linux -// +build ppc64 ppc64le -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s index e42eb81..2e8c996 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build riscv64 && gc -// +build riscv64 -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s index c46aab3..2c394b1 100644 --- a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s +++ b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && s390x && gc -// +build linux -// +build s390x -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s index 5e7a116..fab586a 100644 --- a/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gc -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s index f8c5394..f949ec5 100644 --- a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gc -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s index 3b54e18..2f67ba8 100644 --- a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s +++ b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x && gc -// +build zos -// +build s390x -// +build gc #include "textflag.h" diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go index 0b7c6ad..a086578 100644 --- a/vendor/golang.org/x/sys/unix/cap_freebsd.go +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build freebsd -// +build freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go index 394a396..6fb7cb7 100644 --- a/vendor/golang.org/x/sys/unix/constants.go +++ b/vendor/golang.org/x/sys/unix/constants.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go index 65a9985..d785134 100644 --- a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix && ppc -// +build aix,ppc // Functions to access/create device major and minor numbers matching the // encoding used by AIX. diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go index 8fc08ad..623a5e6 100644 --- a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix && ppc64 -// +build aix,ppc64 // Functions to access/create device major and minor numbers matching the // encoding used AIX. diff --git a/vendor/golang.org/x/sys/unix/dev_zos.go b/vendor/golang.org/x/sys/unix/dev_zos.go index a388e59..bb6a64f 100644 --- a/vendor/golang.org/x/sys/unix/dev_zos.go +++ b/vendor/golang.org/x/sys/unix/dev_zos.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x // Functions to access/create device major and minor numbers matching the // encoding used by z/OS. diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 2499f97..1ebf117 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go index a520265..1095fd3 100644 --- a/vendor/golang.org/x/sys/unix/endian_big.go +++ b/vendor/golang.org/x/sys/unix/endian_big.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. // //go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 -// +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go index b0f2bc4..b9f0e27 100644 --- a/vendor/golang.org/x/sys/unix/endian_little.go +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. // //go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh -// +build 386 amd64 amd64p32 alpha arm arm64 loong64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh package unix diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go index 29ccc4d..a96da71 100644 --- a/vendor/golang.org/x/sys/unix/env_unix.go +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Unix environment variables. diff --git a/vendor/golang.org/x/sys/unix/epoll_zos.go b/vendor/golang.org/x/sys/unix/epoll_zos.go index cedaf7e..7753fdd 100644 --- a/vendor/golang.org/x/sys/unix/epoll_zos.go +++ b/vendor/golang.org/x/sys/unix/epoll_zos.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go index e9b9912..6200876 100644 --- a/vendor/golang.org/x/sys/unix/fcntl.go +++ b/vendor/golang.org/x/sys/unix/fcntl.go @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build dragonfly || freebsd || linux || netbsd || openbsd -// +build dragonfly freebsd linux netbsd openbsd +//go:build dragonfly || freebsd || linux || netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go index 29d4480..13b4acd 100644 --- a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +++ b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) -// +build linux,386 linux,arm linux,mips linux,mipsle linux,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/fdset.go b/vendor/golang.org/x/sys/unix/fdset.go index a8068f9..9e83d18 100644 --- a/vendor/golang.org/x/sys/unix/fdset.go +++ b/vendor/golang.org/x/sys/unix/fdset.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/fstatfs_zos.go b/vendor/golang.org/x/sys/unix/fstatfs_zos.go index e377cc9..c8bde60 100644 --- a/vendor/golang.org/x/sys/unix/fstatfs_zos.go +++ b/vendor/golang.org/x/sys/unix/fstatfs_zos.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go index b06f52d..aca5721 100644 --- a/vendor/golang.org/x/sys/unix/gccgo.go +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gccgo && !aix && !hurd -// +build gccgo,!aix,!hurd package unix diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c index f98a1c5..d468b7b 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_c.c +++ b/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gccgo && !aix && !hurd -// +build gccgo,!aix,!hurd #include #include diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go index e60e49a..972d61b 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build gccgo && linux && amd64 -// +build gccgo,linux,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/ifreq_linux.go b/vendor/golang.org/x/sys/unix/ifreq_linux.go index 15721a5..848840a 100644 --- a/vendor/golang.org/x/sys/unix/ifreq_linux.go +++ b/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux -// +build linux package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go index 0d12c08..dbe680e 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_linux.go +++ b/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -231,3 +231,8 @@ func IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) { func IoctlLoopSetStatus64(fd int, value *LoopInfo64) error { return ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value)) } + +// IoctlLoopConfigure configures all loop device parameters in a single step +func IoctlLoopConfigure(fd int, value *LoopConfig) error { + return ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value)) +} diff --git a/vendor/golang.org/x/sys/unix/ioctl_signed.go b/vendor/golang.org/x/sys/unix/ioctl_signed.go index 7def958..5b0759b 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_signed.go +++ b/vendor/golang.org/x/sys/unix/ioctl_signed.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || solaris -// +build aix solaris package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl_unsigned.go b/vendor/golang.org/x/sys/unix/ioctl_unsigned.go index 649913d..20f470b 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_unsigned.go +++ b/vendor/golang.org/x/sys/unix/ioctl_unsigned.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd -// +build darwin dragonfly freebsd hurd linux netbsd openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl_zos.go b/vendor/golang.org/x/sys/unix/ioctl_zos.go index cdc21bf..c8b2a75 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_zos.go +++ b/vendor/golang.org/x/sys/unix/ioctl_zos.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index 47fa6a7..fdcaa97 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -248,6 +248,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -283,10 +284,6 @@ struct ltchars { #include #endif -#ifndef MSG_FASTOPEN -#define MSG_FASTOPEN 0x20000000 -#endif - #ifndef PTRACE_GETREGS #define PTRACE_GETREGS 0xc #endif @@ -295,14 +292,6 @@ struct ltchars { #define PTRACE_SETREGS 0xd #endif -#ifndef SOL_NETLINK -#define SOL_NETLINK 270 -#endif - -#ifndef SOL_SMC -#define SOL_SMC 286 -#endif - #ifdef SOL_BLUETOOTH // SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h // but it is already in bluetooth_linux.go @@ -319,10 +308,23 @@ struct ltchars { #undef TIPC_WAIT_FOREVER #define TIPC_WAIT_FOREVER 0xffffffff -// Copied from linux/l2tp.h -// Including linux/l2tp.h here causes conflicts between linux/in.h -// and netinet/in.h included via net/route.h above. -#define IPPROTO_L2TP 115 +// Copied from linux/netfilter/nf_nat.h +// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h +// and netinet/in.h. +#define NF_NAT_RANGE_MAP_IPS (1 << 0) +#define NF_NAT_RANGE_PROTO_SPECIFIED (1 << 1) +#define NF_NAT_RANGE_PROTO_RANDOM (1 << 2) +#define NF_NAT_RANGE_PERSISTENT (1 << 3) +#define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4) +#define NF_NAT_RANGE_PROTO_OFFSET (1 << 5) +#define NF_NAT_RANGE_NETMAP (1 << 6) +#define NF_NAT_RANGE_PROTO_RANDOM_ALL \ + (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY) +#define NF_NAT_RANGE_MASK \ + (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | \ + NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | \ + NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \ + NF_NAT_RANGE_NETMAP) // Copied from linux/hid.h. // Keep in sync with the size of the referenced fields. @@ -519,6 +521,7 @@ ccflags="$@" $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || $2 ~ /^LO_(KEY|NAME)_SIZE$/ || $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || + $2 == "LOOP_CONFIGURE" || $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ || $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || $2 ~ /^NFC_.*_(MAX)?SIZE$/ || @@ -560,7 +563,7 @@ ccflags="$@" $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || $2 ~ /^CLONE_[A-Z_]+/ || - $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+)$/ && + $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ && $2 ~ /^(BPF|DLT)_/ || $2 ~ /^AUDIT_/ || $2 ~ /^(CLOCK|TIMER)_/ || @@ -581,7 +584,7 @@ ccflags="$@" $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || $2 ~ /^KEYCTL_/ || $2 ~ /^PERF_/ || - $2 ~ /^SECCOMP_MODE_/ || + $2 ~ /^SECCOMP_/ || $2 ~ /^SEEK_/ || $2 ~ /^SCHED_/ || $2 ~ /^SPLICE_/ || @@ -602,6 +605,9 @@ ccflags="$@" $2 ~ /^FSOPT_/ || $2 ~ /^WDIO[CFS]_/ || $2 ~ /^NFN/ || + $2 !~ /^NFT_META_IIFTYPE/ && + $2 ~ /^NFT_/ || + $2 ~ /^NF_NAT_/ || $2 ~ /^XDP_/ || $2 ~ /^RWF_/ || $2 ~ /^(HDIO|WIN|SMART)_/ || @@ -663,7 +669,6 @@ echo '// mkerrors.sh' "$@" echo '// Code generated by the command above; see README.md. DO NOT EDIT.' echo echo "//go:build ${GOARCH} && ${GOOS}" -echo "// +build ${GOARCH},${GOOS}" echo go tool cgo -godefs -- "$@" _const.go >_error.out cat _error.out | grep -vf _error.grep | grep -vf _signal.grep diff --git a/vendor/golang.org/x/sys/unix/mmap_nomremap.go b/vendor/golang.org/x/sys/unix/mmap_nomremap.go index ca05136..4b68e59 100644 --- a/vendor/golang.org/x/sys/unix/mmap_nomremap.go +++ b/vendor/golang.org/x/sys/unix/mmap_nomremap.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || openbsd || solaris -// +build aix darwin dragonfly freebsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/mremap.go b/vendor/golang.org/x/sys/unix/mremap.go index fa93d0a..fd45fe5 100644 --- a/vendor/golang.org/x/sys/unix/mremap.go +++ b/vendor/golang.org/x/sys/unix/mremap.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux || netbsd -// +build linux netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go index 53f1b4c..4d0a343 100644 --- a/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // For Unix, get the pagesize from the runtime. diff --git a/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/vendor/golang.org/x/sys/unix/pledge_openbsd.go index eb48294..6a09af5 100644 --- a/vendor/golang.org/x/sys/unix/pledge_openbsd.go +++ b/vendor/golang.org/x/sys/unix/pledge_openbsd.go @@ -8,54 +8,31 @@ import ( "errors" "fmt" "strconv" - "syscall" - "unsafe" ) // Pledge implements the pledge syscall. // -// The pledge syscall does not accept execpromises on OpenBSD releases -// before 6.3. -// -// execpromises must be empty when Pledge is called on OpenBSD -// releases predating 6.3, otherwise an error will be returned. +// This changes both the promises and execpromises; use PledgePromises or +// PledgeExecpromises to only change the promises or execpromises +// respectively. // // For more information see pledge(2). func Pledge(promises, execpromises string) error { - maj, min, err := majmin() - if err != nil { + if err := pledgeAvailable(); err != nil { return err } - err = pledgeAvailable(maj, min, execpromises) + pptr, err := BytePtrFromString(promises) if err != nil { return err } - pptr, err := syscall.BytePtrFromString(promises) + exptr, err := BytePtrFromString(execpromises) if err != nil { return err } - // This variable will hold either a nil unsafe.Pointer or - // an unsafe.Pointer to a string (execpromises). - var expr unsafe.Pointer - - // If we're running on OpenBSD > 6.2, pass execpromises to the syscall. - if maj > 6 || (maj == 6 && min > 2) { - exptr, err := syscall.BytePtrFromString(execpromises) - if err != nil { - return err - } - expr = unsafe.Pointer(exptr) - } - - _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) - if e != 0 { - return e - } - - return nil + return pledge(pptr, exptr) } // PledgePromises implements the pledge syscall. @@ -64,30 +41,16 @@ func Pledge(promises, execpromises string) error { // // For more information see pledge(2). func PledgePromises(promises string) error { - maj, min, err := majmin() - if err != nil { - return err - } - - err = pledgeAvailable(maj, min, "") - if err != nil { + if err := pledgeAvailable(); err != nil { return err } - // This variable holds the execpromises and is always nil. - var expr unsafe.Pointer - - pptr, err := syscall.BytePtrFromString(promises) + pptr, err := BytePtrFromString(promises) if err != nil { return err } - _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) - if e != 0 { - return e - } - - return nil + return pledge(pptr, nil) } // PledgeExecpromises implements the pledge syscall. @@ -96,30 +59,16 @@ func PledgePromises(promises string) error { // // For more information see pledge(2). func PledgeExecpromises(execpromises string) error { - maj, min, err := majmin() - if err != nil { + if err := pledgeAvailable(); err != nil { return err } - err = pledgeAvailable(maj, min, execpromises) + exptr, err := BytePtrFromString(execpromises) if err != nil { return err } - // This variable holds the promises and is always nil. - var pptr unsafe.Pointer - - exptr, err := syscall.BytePtrFromString(execpromises) - if err != nil { - return err - } - - _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0) - if e != 0 { - return e - } - - return nil + return pledge(nil, exptr) } // majmin returns major and minor version number for an OpenBSD system. @@ -147,16 +96,15 @@ func majmin() (major int, minor int, err error) { // pledgeAvailable checks for availability of the pledge(2) syscall // based on the running OpenBSD version. -func pledgeAvailable(maj, min int, execpromises string) error { - // If OpenBSD <= 5.9, pledge is not available. - if (maj == 5 && min != 9) || maj < 5 { - return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min) +func pledgeAvailable() error { + maj, min, err := majmin() + if err != nil { + return err } - // If OpenBSD <= 6.2 and execpromises is not empty, - // return an error - execpromises is not available before 6.3 - if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" { - return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min) + // Require OpenBSD 6.4 as a minimum. + if maj < 6 || (maj == 6 && min <= 3) { + return fmt.Errorf("cannot call Pledge on OpenBSD %d.%d", maj, min) } return nil diff --git a/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/vendor/golang.org/x/sys/unix/ptrace_darwin.go index 463c3ef..3f0975f 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_darwin.go +++ b/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build darwin && !ios -// +build darwin,!ios package unix diff --git a/vendor/golang.org/x/sys/unix/ptrace_ios.go b/vendor/golang.org/x/sys/unix/ptrace_ios.go index ed0509a..a4d35db 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_ios.go +++ b/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build ios -// +build ios package unix diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go index 6f6c5fe..714d2aa 100644 --- a/vendor/golang.org/x/sys/unix/race.go +++ b/vendor/golang.org/x/sys/unix/race.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin && race) || (linux && race) || (freebsd && race) -// +build darwin,race linux,race freebsd,race package unix diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go index 706e132..4a9f663 100644 --- a/vendor/golang.org/x/sys/unix/race0.go +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos -// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly zos package unix diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/vendor/golang.org/x/sys/unix/readdirent_getdents.go index 4d62575..dbd2b6c 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdents.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdents.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || dragonfly || freebsd || linux || netbsd || openbsd -// +build aix dragonfly freebsd linux netbsd openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go index 2a4ba47..130398b 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build darwin -// +build darwin package unix diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go index 3865943..c3a62db 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Socket control messages diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go index 0840fe4..4a1eab3 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index 63e8c83..5ea74da 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Package unix contains an interface to the low-level operating system // primitives. OS details vary depending on the underlying system, and diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index e94e6cd..67ce6ce 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix -// +build aix // Aix system calls. // This file is compiled as ordinary Go code, @@ -107,7 +106,8 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { if n > 0 { sl += _Socklen(n) + 1 } - if sa.raw.Path[0] == '@' { + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. sa.raw.Path[0] = 0 // Don't count trailing NUL for abstract address. sl-- diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go index f2871fa..1fdaa47 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix && ppc -// +build aix,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go index 75718ec..c87f9a9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix && ppc64 -// +build aix,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 4217de5..a00c3e5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build darwin || dragonfly || freebsd || netbsd || openbsd -// +build darwin dragonfly freebsd netbsd openbsd // BSD system call wrappers shared by *BSD based systems // including OS X (Darwin) and FreeBSD. Like the other @@ -317,7 +316,7 @@ func GetsockoptString(fd, level, opt int) (string, error) { if err != nil { return "", err } - return string(buf[:vallen-1]), nil + return ByteSliceToString(buf[:vallen]), nil } //sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index b37310c..0eaecf5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && darwin -// +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index d51ec99..f36c670 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm64 && darwin -// +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index 53c9664..16dc699 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build darwin && go1.12 -// +build darwin,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go index 4e2d321..14bab6b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && dragonfly -// +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index b8da510..3967bca 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build 386 && freebsd -// +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index 47155c4..eff19ad 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && freebsd -// +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 0893209..4f24b51 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm && freebsd -// +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index d151a0d..ac30759 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm64 && freebsd -// +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go index d5cd64b..aab725c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build riscv64 && freebsd -// +build riscv64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd.go b/vendor/golang.org/x/sys/unix/syscall_hurd.go index 381fd46..ba46651 100644 --- a/vendor/golang.org/x/sys/unix/syscall_hurd.go +++ b/vendor/golang.org/x/sys/unix/syscall_hurd.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build hurd -// +build hurd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd_386.go b/vendor/golang.org/x/sys/unix/syscall_hurd_386.go index 7cf54a3..df89f9e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_hurd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_hurd_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build 386 && hurd -// +build 386,hurd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go index 87db5a6..a863f70 100644 --- a/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -5,7 +5,6 @@ // illumos system calls not present on Solaris. //go:build amd64 && illumos -// +build amd64,illumos package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index fb4e502..0f85e29 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -61,15 +61,23 @@ func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) ( } //sys fchmodat(dirfd int, path string, mode uint32) (err error) - -func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { - // Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior - // and check the flags. Otherwise the mode would be applied to the symlink - // destination which is not what the user expects. - if flags&^AT_SYMLINK_NOFOLLOW != 0 { - return EINVAL - } else if flags&AT_SYMLINK_NOFOLLOW != 0 { - return EOPNOTSUPP +//sys fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) error { + // Linux fchmodat doesn't support the flags parameter, but fchmodat2 does. + // Try fchmodat2 if flags are specified. + if flags != 0 { + err := fchmodat2(dirfd, path, mode, flags) + if err == ENOSYS { + // fchmodat2 isn't available. If the flags are known to be valid, + // return EOPNOTSUPP to indicate that fchmodat doesn't support them. + if flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 { + return EINVAL + } else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 { + return EOPNOTSUPP + } + } + return err } return fchmodat(dirfd, path, mode) } @@ -417,7 +425,8 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { if n > 0 { sl += _Socklen(n) + 1 } - if sa.raw.Path[0] == '@' { + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. sa.raw.Path[0] = 0 // Don't count trailing NUL for abstract address. sl-- @@ -1301,7 +1310,7 @@ func GetsockoptString(fd, level, opt int) (string, error) { return "", err } } - return string(buf[:vallen-1]), nil + return ByteSliceToString(buf[:vallen]), nil } func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) { @@ -2482,3 +2491,5 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { } return attr, nil } + +//sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index c7d9945..506dafa 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build 386 && linux -// +build 386,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go b/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go index 08086ac..38d5564 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) -// +build linux -// +build 386 amd64 mips mipsle mips64 mipsle ppc64 ppc64le ppc s390x sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 70601ce..d557cf8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && linux -// +build amd64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go index 8b0f0f3..facdb83 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && linux && gc -// +build amd64,linux,gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index da29864..cd2dd79 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm && linux -// +build arm,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index f526668..cf2ee6c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm64 && linux -// +build arm64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go index 2b1168d..ffc4c2b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && gc -// +build linux,gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go index 9843fb4..9ebfdcf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && gc && 386 -// +build linux,gc,386 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go index a6008fc..5f2b57c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm && gc && linux -// +build arm,gc,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go index 7740af2..d1a3ad8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && gccgo && 386 -// +build linux,gccgo,386 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go index e16a122..f2f6742 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && gccgo && arm -// +build linux,gccgo,arm package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go index f6ab02e..3d0e984 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build loong64 && linux -// +build loong64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 93fe59d..70963a9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (mips64 || mips64le) -// +build linux -// +build mips64 mips64le package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index aae7f0f..c218ebd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (mips || mipsle) -// +build linux -// +build mips mipsle package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go index 66eff19..e6c4850 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && ppc -// +build linux,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 806aa25..7286a9a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (ppc64 || ppc64le) -// +build linux -// +build ppc64 ppc64le package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 5e6ceee..6f5a288 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build riscv64 && linux -// +build riscv64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index 2f89e8f..66f3121 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build s390x && linux -// +build s390x,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index 7ca064a..11d1f16 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build sparc64 && linux -// +build sparc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go index 5199d28..7a5eb57 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build 386 && netbsd -// +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go index 70a9c52..62d8957 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && netbsd -// +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go index 3eb5942..ce6a068 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm && netbsd -// +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go index fc6ccfd..d46d689 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm64 && netbsd -// +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 6f34479..b25343c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -137,18 +137,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e } func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { - var _p0 unsafe.Pointer + var bufptr *Statfs_t var bufsize uintptr if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) + bufptr = &buf[0] bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } - r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) - n = int(r0) - if e1 != 0 { - err = e1 - } - return + return getfsstat(bufptr, bufsize, flags) } //sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) @@ -171,6 +166,20 @@ func Getresgid() (rgid, egid, sgid int) { //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys fcntl(fd int, cmd int, arg int) (n int, err error) +//sys fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk)) + return err +} + //sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { @@ -326,4 +335,7 @@ func Uname(uname *Utsname) error { //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) +//sys getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) +//sys pledge(promises *byte, execpromises *byte) (err error) +//sys unveil(path *byte, flags *byte) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go index 6baabcd..9ddc89f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build 386 && openbsd -// +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index bab2536..70a3c96 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && openbsd -// +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go index 8eed3c4..265caa8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm && openbsd -// +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go index 483dde9..ac4fda1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build arm64 && openbsd -// +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go index 04aa43f..0a451e6 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build openbsd -// +build openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go index c279613..30a308c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build ppc64 && openbsd -// +build ppc64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go index 23199a7..ea95433 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build riscv64 && openbsd -// +build riscv64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index b99cfa1..21974af 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -128,7 +128,8 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { if n > 0 { sl += _Socklen(n) + 1 } - if sa.raw.Path[0] == '@' { + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. sa.raw.Path[0] = 0 // Don't count trailing NUL for abstract address. sl-- @@ -157,7 +158,7 @@ func GetsockoptString(fd, level, opt int) (string, error) { if err != nil { return "", err } - return string(buf[:vallen-1]), nil + return ByteSliceToString(buf[:vallen]), nil } const ImplementsGetwd = true diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go index 0bd25ef..e02d8ce 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build amd64 && solaris -// +build amd64,solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index f6eda27..77081de 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go index b6919ca..05c95bc 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -3,8 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc -// +build darwin dragonfly freebsd linux,!ppc64,!ppc64le netbsd openbsd solaris -// +build gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go index f6f707a..23f39b7 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -3,9 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux && (ppc64le || ppc64) && gc -// +build linux -// +build ppc64le ppc64 -// +build gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index 4596d04..b473038 100644 --- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x package unix @@ -1105,7 +1104,7 @@ func GetsockoptString(fd, level, opt int) (string, error) { return "", err } - return string(buf[:vallen-1]), nil + return ByteSliceToString(buf[:vallen]), nil } func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { diff --git a/vendor/golang.org/x/sys/unix/sysvshm_linux.go b/vendor/golang.org/x/sys/unix/sysvshm_linux.go index 2c3a443..4fcd38d 100644 --- a/vendor/golang.org/x/sys/unix/sysvshm_linux.go +++ b/vendor/golang.org/x/sys/unix/sysvshm_linux.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build linux -// +build linux package unix diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/vendor/golang.org/x/sys/unix/sysvshm_unix.go index 5bb41d1..79a84f1 100644 --- a/vendor/golang.org/x/sys/unix/sysvshm_unix.go +++ b/vendor/golang.org/x/sys/unix/sysvshm_unix.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build (darwin && !ios) || linux -// +build darwin,!ios linux package unix diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go b/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go index 71bddef..9eb0db6 100644 --- a/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go +++ b/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build darwin && !ios -// +build darwin,!ios package unix diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 616b1b2..7997b19 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go index 168d5ae..cb7e598 100644 --- a/vendor/golang.org/x/sys/unix/unveil_openbsd.go +++ b/vendor/golang.org/x/sys/unix/unveil_openbsd.go @@ -4,39 +4,48 @@ package unix -import ( - "syscall" - "unsafe" -) +import "fmt" // Unveil implements the unveil syscall. // For more information see unveil(2). // Note that the special case of blocking further // unveil calls is handled by UnveilBlock. func Unveil(path string, flags string) error { - pathPtr, err := syscall.BytePtrFromString(path) - if err != nil { + if err := supportsUnveil(); err != nil { return err } - flagsPtr, err := syscall.BytePtrFromString(flags) + pathPtr, err := BytePtrFromString(path) if err != nil { return err } - _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0) - if e != 0 { - return e + flagsPtr, err := BytePtrFromString(flags) + if err != nil { + return err } - return nil + return unveil(pathPtr, flagsPtr) } // UnveilBlock blocks future unveil calls. // For more information see unveil(2). func UnveilBlock() error { - // Both pointers must be nil. - var pathUnsafe, flagsUnsafe unsafe.Pointer - _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0) - if e != 0 { - return e + if err := supportsUnveil(); err != nil { + return err } + return unveil(nil, nil) +} + +// supportsUnveil checks for availability of the unveil(2) system call based +// on the running OpenBSD version. +func supportsUnveil() error { + maj, min, err := majmin() + if err != nil { + return err + } + + // unveil is not available before 6.4 + if maj < 6 || (maj == 6 && min <= 3) { + return fmt.Errorf("cannot call Unveil on OpenBSD %d.%d", maj, min) + } + return nil } diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go index f5f8e9f..e168793 100644 --- a/vendor/golang.org/x/sys/unix/xattr_bsd.go +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build freebsd || netbsd -// +build freebsd netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go index ca9799b..2fb219d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && aix -// +build ppc,aix // Created by cgo -godefs - DO NOT EDIT // cgo -godefs -- -maix32 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go index 200c8c2..b0e6f5c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && aix -// +build ppc64,aix // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -maix64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 1430076..e40fa85 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && darwin -// +build amd64,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index ab044a7..bb02aa6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && darwin -// +build arm64,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index 17bba0e..c0e0f86 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && dragonfly -// +build amd64,dragonfly // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index f8c2c51..6c69239 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && freebsd -// +build 386,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index 96310c3..dd9163f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && freebsd -// +build amd64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 777b69d..493a2a7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && freebsd -// +build arm,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index c557ac2..8b437b3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && freebsd -// +build arm64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go index 341b4d9..67c02dd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && freebsd -// +build riscv64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index f9c7f47..36bf839 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -1,7 +1,6 @@ // Code generated by mkmerge; DO NOT EDIT. //go:build linux -// +build linux package unix @@ -481,10 +480,13 @@ const ( BPF_FROM_BE = 0x8 BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_AFTER = 0x10 BPF_F_ALLOW_MULTI = 0x2 BPF_F_ALLOW_OVERRIDE = 0x1 BPF_F_ANY_ALIGNMENT = 0x2 - BPF_F_KPROBE_MULTI_RETURN = 0x1 + BPF_F_BEFORE = 0x8 + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 BPF_F_QUERY_EFFECTIVE = 0x1 BPF_F_REPLACE = 0x4 BPF_F_SLEEPABLE = 0x10 @@ -521,6 +523,7 @@ const ( BPF_MAJOR_VERSION = 0x1 BPF_MAXINSNS = 0x1000 BPF_MEM = 0x60 + BPF_MEMSX = 0x80 BPF_MEMWORDS = 0x10 BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 @@ -776,6 +779,8 @@ const ( DEVLINK_GENL_MCGRP_CONFIG_NAME = "config" DEVLINK_GENL_NAME = "devlink" DEVLINK_GENL_VERSION = 0x1 + DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO = 0x4 + DEVLINK_PORT_FN_CAP_IPSEC_PACKET = 0x8 DEVLINK_PORT_FN_CAP_MIGRATABLE = 0x2 DEVLINK_PORT_FN_CAP_ROCE = 0x1 DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14 @@ -1698,6 +1703,7 @@ const ( KEXEC_ON_CRASH = 0x1 KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 + KEXEC_UPDATE_ELFCOREHDR = 0x4 KEYCTL_ASSUME_AUTHORITY = 0x10 KEYCTL_CAPABILITIES = 0x1f KEYCTL_CAPS0_BIG_KEY = 0x10 @@ -1779,6 +1785,8 @@ const ( LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 LANDLOCK_ACCESS_FS_TRUNCATE = 0x4000 LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 LANDLOCK_CREATE_RULESET_VERSION = 0x1 LINUX_REBOOT_CMD_CAD_OFF = 0x0 LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef @@ -1795,6 +1803,7 @@ const ( LOCK_SH = 0x1 LOCK_UN = 0x8 LOOP_CLR_FD = 0x4c01 + LOOP_CONFIGURE = 0x4c0a LOOP_CTL_ADD = 0x4c80 LOOP_CTL_GET_FREE = 0x4c82 LOOP_CTL_REMOVE = 0x4c81 @@ -2120,6 +2129,60 @@ const ( NFNL_SUBSYS_QUEUE = 0x3 NFNL_SUBSYS_ULOG = 0x4 NFS_SUPER_MAGIC = 0x6969 + NFT_CHAIN_FLAGS = 0x7 + NFT_CHAIN_MAXNAMELEN = 0x100 + NFT_CT_MAX = 0x17 + NFT_DATA_RESERVED_MASK = 0xffffff00 + NFT_DATA_VALUE_MAXLEN = 0x40 + NFT_EXTHDR_OP_MAX = 0x4 + NFT_FIB_RESULT_MAX = 0x3 + NFT_INNER_MASK = 0xf + NFT_LOGLEVEL_MAX = 0x8 + NFT_NAME_MAXLEN = 0x100 + NFT_NG_MAX = 0x1 + NFT_OBJECT_CONNLIMIT = 0x5 + NFT_OBJECT_COUNTER = 0x1 + NFT_OBJECT_CT_EXPECT = 0x9 + NFT_OBJECT_CT_HELPER = 0x3 + NFT_OBJECT_CT_TIMEOUT = 0x7 + NFT_OBJECT_LIMIT = 0x4 + NFT_OBJECT_MAX = 0xa + NFT_OBJECT_QUOTA = 0x2 + NFT_OBJECT_SECMARK = 0x8 + NFT_OBJECT_SYNPROXY = 0xa + NFT_OBJECT_TUNNEL = 0x6 + NFT_OBJECT_UNSPEC = 0x0 + NFT_OBJ_MAXNAMELEN = 0x100 + NFT_OSF_MAXGENRELEN = 0x10 + NFT_QUEUE_FLAG_BYPASS = 0x1 + NFT_QUEUE_FLAG_CPU_FANOUT = 0x2 + NFT_QUEUE_FLAG_MASK = 0x3 + NFT_REG32_COUNT = 0x10 + NFT_REG32_SIZE = 0x4 + NFT_REG_MAX = 0x4 + NFT_REG_SIZE = 0x10 + NFT_REJECT_ICMPX_MAX = 0x3 + NFT_RT_MAX = 0x4 + NFT_SECMARK_CTX_MAXLEN = 0x100 + NFT_SET_MAXNAMELEN = 0x100 + NFT_SOCKET_MAX = 0x3 + NFT_TABLE_F_MASK = 0x3 + NFT_TABLE_MAXNAMELEN = 0x100 + NFT_TRACETYPE_MAX = 0x3 + NFT_TUNNEL_F_MASK = 0x7 + NFT_TUNNEL_MAX = 0x1 + NFT_TUNNEL_MODE_MAX = 0x2 + NFT_USERDATA_MAXLEN = 0x100 + NFT_XFRM_KEY_MAX = 0x6 + NF_NAT_RANGE_MAP_IPS = 0x1 + NF_NAT_RANGE_MASK = 0x7f + NF_NAT_RANGE_NETMAP = 0x40 + NF_NAT_RANGE_PERSISTENT = 0x8 + NF_NAT_RANGE_PROTO_OFFSET = 0x20 + NF_NAT_RANGE_PROTO_RANDOM = 0x4 + NF_NAT_RANGE_PROTO_RANDOM_ALL = 0x14 + NF_NAT_RANGE_PROTO_RANDOM_FULLY = 0x10 + NF_NAT_RANGE_PROTO_SPECIFIED = 0x2 NILFS_SUPER_MAGIC = 0x3434 NL0 = 0x0 NL1 = 0x100 @@ -2275,6 +2338,7 @@ const ( PERF_MEM_LVLNUM_PMEM = 0xe PERF_MEM_LVLNUM_RAM = 0xd PERF_MEM_LVLNUM_SHIFT = 0x21 + PERF_MEM_LVLNUM_UNC = 0x8 PERF_MEM_LVL_HIT = 0x2 PERF_MEM_LVL_IO = 0x1000 PERF_MEM_LVL_L1 = 0x8 @@ -2403,6 +2467,7 @@ const ( PR_MCE_KILL_GET = 0x22 PR_MCE_KILL_LATE = 0x0 PR_MCE_KILL_SET = 0x1 + PR_MDWE_NO_INHERIT = 0x2 PR_MDWE_REFUSE_EXEC_GAIN = 0x1 PR_MPX_DISABLE_MANAGEMENT = 0x2c PR_MPX_ENABLE_MANAGEMENT = 0x2b @@ -2607,8 +2672,9 @@ const ( RTAX_FEATURES = 0xc RTAX_FEATURE_ALLFRAG = 0x8 RTAX_FEATURE_ECN = 0x1 - RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_MASK = 0x1f RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TCP_USEC_TS = 0x10 RTAX_FEATURE_TIMESTAMP = 0x4 RTAX_HOPLIMIT = 0xa RTAX_INITCWND = 0xb @@ -2851,9 +2917,38 @@ const ( SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x1d SC_LOG_FLUSH = 0x100000 + SECCOMP_ADDFD_FLAG_SEND = 0x2 + SECCOMP_ADDFD_FLAG_SETFD = 0x1 + SECCOMP_FILTER_FLAG_LOG = 0x2 + SECCOMP_FILTER_FLAG_NEW_LISTENER = 0x8 + SECCOMP_FILTER_FLAG_SPEC_ALLOW = 0x4 + SECCOMP_FILTER_FLAG_TSYNC = 0x1 + SECCOMP_FILTER_FLAG_TSYNC_ESRCH = 0x10 + SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV = 0x20 + SECCOMP_GET_ACTION_AVAIL = 0x2 + SECCOMP_GET_NOTIF_SIZES = 0x3 + SECCOMP_IOCTL_NOTIF_RECV = 0xc0502100 + SECCOMP_IOCTL_NOTIF_SEND = 0xc0182101 + SECCOMP_IOC_MAGIC = '!' SECCOMP_MODE_DISABLED = 0x0 SECCOMP_MODE_FILTER = 0x2 SECCOMP_MODE_STRICT = 0x1 + SECCOMP_RET_ACTION = 0x7fff0000 + SECCOMP_RET_ACTION_FULL = 0xffff0000 + SECCOMP_RET_ALLOW = 0x7fff0000 + SECCOMP_RET_DATA = 0xffff + SECCOMP_RET_ERRNO = 0x50000 + SECCOMP_RET_KILL = 0x0 + SECCOMP_RET_KILL_PROCESS = 0x80000000 + SECCOMP_RET_KILL_THREAD = 0x0 + SECCOMP_RET_LOG = 0x7ffc0000 + SECCOMP_RET_TRACE = 0x7ff00000 + SECCOMP_RET_TRAP = 0x30000 + SECCOMP_RET_USER_NOTIF = 0x7fc00000 + SECCOMP_SET_MODE_FILTER = 0x1 + SECCOMP_SET_MODE_STRICT = 0x0 + SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP = 0x1 + SECCOMP_USER_NOTIF_FLAG_CONTINUE = 0x1 SECRETMEM_MAGIC = 0x5345434d SECURITYFS_MAGIC = 0x73636673 SEEK_CUR = 0x1 @@ -3013,6 +3108,7 @@ const ( SOL_TIPC = 0x10f SOL_TLS = 0x11a SOL_UDP = 0x11 + SOL_VSOCK = 0x11f SOL_X25 = 0x106 SOL_XDP = 0x11b SOMAXCONN = 0x1000 @@ -3461,6 +3557,7 @@ const ( XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 + XDP_PKT_CONTD = 0x1 XDP_RING_NEED_WAKEUP = 0x1 XDP_RX_RING = 0x2 XDP_SHARED_UMEM = 0x1 @@ -3473,6 +3570,7 @@ const ( XDP_UMEM_REG = 0x4 XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1 XDP_USE_NEED_WAKEUP = 0x8 + XDP_USE_SG = 0x10 XDP_ZEROCOPY = 0x4 XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 30aee00..42ff8c3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux -// +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go @@ -282,6 +281,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 8ebfa51..dca4360 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux -// +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go @@ -283,6 +282,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 271a21c..5cca668 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux -// +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go @@ -289,6 +288,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 910c330..d8cae6d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux -// +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go @@ -279,6 +278,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index a640798..28e39af 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build loong64 && linux -// +build loong64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go @@ -119,6 +118,7 @@ const ( IXOFF = 0x1000 IXON = 0x400 LASX_CTX_MAGIC = 0x41535801 + LBT_CTX_MAGIC = 0x42540001 LSX_CTX_MAGIC = 0x53580001 MAP_ANON = 0x20 MAP_ANONYMOUS = 0x20 @@ -275,6 +275,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 0d5925d..cd66e92 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux -// +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go @@ -282,6 +281,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x80 SIOCATMARK = 0x40047307 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index d72a00e..c1595eb 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux -// +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go @@ -282,6 +281,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x80 SIOCATMARK = 0x40047307 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 02ba129..ee9456b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux -// +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go @@ -282,6 +281,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x80 SIOCATMARK = 0x40047307 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 8daa6dd..8cfca81 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux -// +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go @@ -282,6 +281,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x80 SIOCATMARK = 0x40047307 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 63c8fa2..60b0deb 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux -// +build ppc,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go @@ -337,6 +336,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 930799e..f90aa72 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux -// +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go @@ -341,6 +340,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 8605a7d..ba9e015 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux -// +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go @@ -341,6 +340,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 95a016f..07cdfd6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux -// +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go @@ -228,6 +227,9 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTRACE_GETFDPIC = 0x21 + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 RLIMIT_AS = 0x9 RLIMIT_MEMLOCK = 0x8 RLIMIT_NOFILE = 0x7 @@ -270,6 +272,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 1ae0108..2f1dd21 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux -// +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go @@ -345,6 +344,9 @@ const ( SCM_TIMESTAMPNS = 0x23 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 SFD_CLOEXEC = 0x80000 SFD_NONBLOCK = 0x800 SIOCATMARK = 0x8905 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 1bb7c63..f40519d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux -// +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go @@ -336,6 +335,9 @@ const ( SCM_TIMESTAMPNS = 0x21 SCM_TXTIME = 0x3f SCM_WIFI_STATUS = 0x25 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 SFD_CLOEXEC = 0x400000 SFD_NONBLOCK = 0x4000 SF_FP = 0x38 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index 72f7420..130085d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && netbsd -// +build 386,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 8d4eb0c..84769a1 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && netbsd -// +build amd64,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index 9eef974..602ded0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && netbsd -// +build arm,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -marm _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go index 3b62ba1..efc0406 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && netbsd -// +build arm64,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index af20e47..5a6500f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && openbsd -// +build 386,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index 6015fcb..a5aeeb9 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && openbsd -// +build amd64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 8d44955..0e9748a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && openbsd -// +build arm,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go index ae16fe7..4f4449a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && openbsd -// +build arm64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go index 03d90fe..76a363f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && openbsd -// +build mips64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go index 8e2c51b..43ca0cd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && openbsd -// +build ppc64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go index 13d4030..b1b8bb2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && openbsd -// +build riscv64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 1afee6a..d2ddd31 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && solaris -// +build amd64,solaris // Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go index fc7d050..4dfd2e0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x // Hand edited based on zerrors_linux_s390x.go // TODO: auto-generate. diff --git a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go index 97f20ca..586317c 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go @@ -1,8 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT. //go:build linux && (arm || arm64) -// +build linux -// +build arm arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go index 0b5f794..d7c881b 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go @@ -1,8 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT. //go:build linux && (mips || mips64) -// +build linux -// +build mips mips64 package unix diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go index 2807f7e..2d2de5d 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go @@ -1,8 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT. //go:build linux && (mipsle || mips64le) -// +build linux -// +build mipsle mips64le package unix diff --git a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go index 281ea64..5adc79f 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go @@ -1,8 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT. //go:build linux && (386 || amd64) -// +build linux -// +build 386 amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go index d1d1d23..6ea64a3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build aix && ppc -// +build aix,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go index f99a18a..99ee439 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build aix && ppc64 -// +build aix,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go index c4d50ae..b68a783 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build aix && ppc64 && gc -// +build aix,ppc64,gc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go index 6903d3b..0a87450 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build aix && ppc64 && gccgo -// +build aix,ppc64,gccgo package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 1cad561..ccb02f2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build darwin && amd64 -// +build darwin,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index b18edbd..1b40b99 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build darwin && arm64 -// +build darwin,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index 0c67df6..aad65fc 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build dragonfly && amd64 -// +build dragonfly,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index e6e05d1..c009639 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build freebsd && 386 -// +build freebsd,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index 7508acc..7664df7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build freebsd && amd64 -// +build freebsd,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 7b56aea..ae09918 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build freebsd && arm -// +build freebsd,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index cc623dc..11fd5d4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build freebsd && arm64 -// +build freebsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go index 5818491..c3d2d65 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build freebsd && riscv64 -// +build freebsd,riscv64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go index 6be25cd..c698cbc 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build illumos && amd64 -// +build illumos,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 1ff3aec..1488d27 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -1,7 +1,6 @@ // Code generated by mkmerge; DO NOT EDIT. //go:build linux -// +build linux package unix @@ -38,6 +37,21 @@ func fchmodat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctl(fd int, req uint, arg uintptr) (err error) { _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -2195,3 +2209,13 @@ func schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) { + _, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 07b549c..4def3e9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && 386 -// +build linux,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 5f481bf..fef2bc8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && amd64 -// +build linux,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index 824cd52..a9fd76a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && arm -// +build linux,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index e77aecf..4600650 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && arm64 -// +build linux,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go index 806ffd1..c8987d2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && loong64 -// +build linux,loong64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 961a3af..921f430 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && mips -// +build linux,mips package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index ed05005..44f0678 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && mips64 -// +build linux,mips64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index d365b71..e7fa0ab 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && mips64le -// +build linux,mips64le package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index c3f1b8b..8c51256 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && mipsle -// +build linux,mipsle package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go index a6574cf..7392fd4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && ppc -// +build linux,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index f409902..4118043 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && ppc64 -// +build linux,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index 9dfcc29..40c6ce7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && ppc64le -// +build linux,ppc64le package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index 0ab4f2e..2cfe34a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && riscv64 -// +build linux,riscv64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index 6cde322..61e6f07 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && s390x -// +build linux,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index 5253d65..834b842 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build linux && sparc64 -// +build linux,sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 2df3c5b..e91ebc1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build netbsd && 386 -// +build netbsd,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index a60556b..be28bab 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build netbsd && amd64 -// +build netbsd,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 9f78891..fb587e8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build netbsd && arm -// +build netbsd,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 82a4cb2..d576438 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build netbsd && arm64 -// +build netbsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 66b3b64..9dc4241 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && 386 -// +build openbsd,386 package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s index 3dcacd3..41b5617 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s @@ -178,6 +178,11 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ppoll(SB) GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 @@ -668,7 +673,22 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index c5c4cc1..0d3a075 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && amd64 -// +build openbsd,amd64 package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s index 2763620..4019a65 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s @@ -178,6 +178,11 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ppoll(SB) GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 @@ -668,7 +673,22 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index 93bfbb3..c39f777 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && arm -// +build openbsd,arm package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s index c922314..ac4af24 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s @@ -178,6 +178,11 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ppoll(SB) GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 @@ -668,7 +673,22 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index a107b8f..57571d0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && arm64 -// +build openbsd,arm64 package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s index a6bc32c..f77d532 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s @@ -178,6 +178,11 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ppoll(SB) GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 @@ -668,7 +673,22 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go index c427de5..e62963e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && mips64 -// +build openbsd,mips64 package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s index b4e7bce..fae140b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s @@ -178,6 +178,11 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ppoll(SB) GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 @@ -668,7 +673,22 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go index 60c1a99..0083135 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && ppc64 -// +build openbsd,ppc64 package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s index ca3f766..9d1e0ff 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s @@ -213,6 +213,12 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fcntl(SB) + RET +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 CALL libc_ppoll(SB) RET @@ -801,8 +807,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getfsstat(SB) + RET +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 CALL libc_utimensat(SB) RET GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pledge(SB) + RET +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unveil(SB) + RET +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go index 52eba36..79029ed 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && riscv64 -// +build openbsd,riscv64 package unix @@ -585,6 +584,32 @@ var libc_sysctl_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) @@ -2213,6 +2238,21 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2229,3 +2269,31 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error var libc_utimensat_trampoline_addr uintptr //go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s index 477a7d5..da115f9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s @@ -178,6 +178,11 @@ TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_ppoll(SB) GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 @@ -668,7 +673,22 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_utimensat(SB) GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index b401894..829b87f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build solaris && amd64 -// +build solaris,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go index 1d8fe1d..94f0112 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build zos && s390x -// +build zos,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index 55e0484..3a58ae8 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build 386 && openbsd -// +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index d2243cf..dcb7a0e 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build amd64 && openbsd -// +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index 82dc51b..db5a7bf 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build arm && openbsd -// +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go index cbdda1a..7be575a 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build arm64 && openbsd -// +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go index f55eae1..d6e3174 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build mips64 && openbsd -// +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go index e440544..ee97157 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build ppc64 && openbsd -// +build ppc64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go index a0db82f..35c3b91 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build riscv64 && openbsd -// +build riscv64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go index f8298ff..5edda76 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && darwin -// +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go index 5eb433b..0dc9e8b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && darwin -// +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go index 703675c..308ddf3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && dragonfly -// +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 4e0d961..418664e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && freebsd -// +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 01636b8..34d0b86 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && freebsd -// +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index ad99bc1..b71cf45 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && freebsd -// +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 89dcc42..e32df1c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && freebsd -// +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go index ee37aaa..15ad611 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && freebsd -// +build riscv64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 9862853..0cc3ce4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux -// +build 386,linux package unix @@ -448,4 +447,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 8901f0f..856d92d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux -// +build amd64,linux package unix @@ -370,4 +369,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 6902c37..8d46709 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux -// +build arm,linux package unix @@ -412,4 +411,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index a6d3dff..edc1732 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux -// +build arm64,linux package unix @@ -315,4 +314,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index b18f3f7..445eba2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build loong64 && linux -// +build loong64,linux package unix @@ -309,4 +308,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 0302e5e..adba01b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux -// +build mips,linux package unix @@ -432,4 +431,9 @@ const ( SYS_FUTEX_WAITV = 4449 SYS_SET_MEMPOLICY_HOME_NODE = 4450 SYS_CACHESTAT = 4451 + SYS_FCHMODAT2 = 4452 + SYS_MAP_SHADOW_STACK = 4453 + SYS_FUTEX_WAKE = 4454 + SYS_FUTEX_WAIT = 4455 + SYS_FUTEX_REQUEUE = 4456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 6693ba4..014c4e9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux -// +build mips64,linux package unix @@ -362,4 +361,9 @@ const ( SYS_FUTEX_WAITV = 5449 SYS_SET_MEMPOLICY_HOME_NODE = 5450 SYS_CACHESTAT = 5451 + SYS_FCHMODAT2 = 5452 + SYS_MAP_SHADOW_STACK = 5453 + SYS_FUTEX_WAKE = 5454 + SYS_FUTEX_WAIT = 5455 + SYS_FUTEX_REQUEUE = 5456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index fd93f49..ccc97d7 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux -// +build mips64le,linux package unix @@ -362,4 +361,9 @@ const ( SYS_FUTEX_WAITV = 5449 SYS_SET_MEMPOLICY_HOME_NODE = 5450 SYS_CACHESTAT = 5451 + SYS_FCHMODAT2 = 5452 + SYS_MAP_SHADOW_STACK = 5453 + SYS_FUTEX_WAKE = 5454 + SYS_FUTEX_WAIT = 5455 + SYS_FUTEX_REQUEUE = 5456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 760ddca..ec2b64a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux -// +build mipsle,linux package unix @@ -432,4 +431,9 @@ const ( SYS_FUTEX_WAITV = 4449 SYS_SET_MEMPOLICY_HOME_NODE = 4450 SYS_CACHESTAT = 4451 + SYS_FCHMODAT2 = 4452 + SYS_MAP_SHADOW_STACK = 4453 + SYS_FUTEX_WAKE = 4454 + SYS_FUTEX_WAIT = 4455 + SYS_FUTEX_REQUEUE = 4456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index cff2b25..21a839e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux -// +build ppc,linux package unix @@ -439,4 +438,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index a4b2405..c11121e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux -// +build ppc64,linux package unix @@ -411,4 +410,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index aca54b4..909b631 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux -// +build ppc64le,linux package unix @@ -411,4 +410,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 9d1738d..e49bed1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux -// +build riscv64,linux package unix @@ -316,4 +315,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 022878d..66017d2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux -// +build s390x,linux package unix @@ -377,4 +376,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 4100a76..47bab18 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux -// +build sparc64,linux package unix @@ -390,4 +389,9 @@ const ( SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go index 3a6699e..b2aa8cd 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && netbsd -// +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go index 5677cd4..524a1b1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && netbsd -// +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go index e784cb6..d59b943 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && netbsd -// +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go index bd4952e..31e771d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; DO NOT EDIT. //go:build arm64 && netbsd -// +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go index 5977338..9fd77c6 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && openbsd -// +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go index 16af291..af10af2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && openbsd -// +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go index f59b18a..cc2028a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && openbsd -// +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go index 721ef59..c06dd44 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && openbsd -// +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go index 01c43a0..9ddbf3e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && openbsd -// +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go index f258cfa..19a6ee4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && openbsd -// +build ppc64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go index 07919e0..05192a7 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && openbsd -// +build riscv64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go index 073daad..b2e3085 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go index 7a8161c..3e6d57c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && aix -// +build ppc,aix package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go index 07ed733..3a219bd 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && aix -// +build ppc64,aix package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 690cefc..091d107 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && darwin -// +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index 5bffc10..28ff4ef 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && darwin -// +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index d0ba8e9..30e405b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && dragonfly -// +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 29dc483..6cbd094 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && freebsd -// +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 0a89b28..7c03b6e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && freebsd -// +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index c8666bb..422107e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && freebsd -// +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 88fb48a..505a12a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && freebsd -// +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go index 698dc97..cc986c7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && freebsd -// +build riscv64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 18aa70b..dc0c955 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1,7 +1,6 @@ // Code generated by mkmerge; DO NOT EDIT. //go:build linux -// +build linux package unix @@ -175,7 +174,8 @@ type FscryptPolicyV2 struct { Contents_encryption_mode uint8 Filenames_encryption_mode uint8 Flags uint8 - _ [4]uint8 + Log2_data_unit_size uint8 + _ [3]uint8 Master_key_identifier [16]uint8 } @@ -456,60 +456,63 @@ type Ucred struct { } type TCPInfo struct { - State uint8 - Ca_state uint8 - Retransmits uint8 - Probes uint8 - Backoff uint8 - Options uint8 - Rto uint32 - Ato uint32 - Snd_mss uint32 - Rcv_mss uint32 - Unacked uint32 - Sacked uint32 - Lost uint32 - Retrans uint32 - Fackets uint32 - Last_data_sent uint32 - Last_ack_sent uint32 - Last_data_recv uint32 - Last_ack_recv uint32 - Pmtu uint32 - Rcv_ssthresh uint32 - Rtt uint32 - Rttvar uint32 - Snd_ssthresh uint32 - Snd_cwnd uint32 - Advmss uint32 - Reordering uint32 - Rcv_rtt uint32 - Rcv_space uint32 - Total_retrans uint32 - Pacing_rate uint64 - Max_pacing_rate uint64 - Bytes_acked uint64 - Bytes_received uint64 - Segs_out uint32 - Segs_in uint32 - Notsent_bytes uint32 - Min_rtt uint32 - Data_segs_in uint32 - Data_segs_out uint32 - Delivery_rate uint64 - Busy_time uint64 - Rwnd_limited uint64 - Sndbuf_limited uint64 - Delivered uint32 - Delivered_ce uint32 - Bytes_sent uint64 - Bytes_retrans uint64 - Dsack_dups uint32 - Reord_seen uint32 - Rcv_ooopack uint32 - Snd_wnd uint32 - Rcv_wnd uint32 - Rehash uint32 + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 + Pacing_rate uint64 + Max_pacing_rate uint64 + Bytes_acked uint64 + Bytes_received uint64 + Segs_out uint32 + Segs_in uint32 + Notsent_bytes uint32 + Min_rtt uint32 + Data_segs_in uint32 + Data_segs_out uint32 + Delivery_rate uint64 + Busy_time uint64 + Rwnd_limited uint64 + Sndbuf_limited uint64 + Delivered uint32 + Delivered_ce uint32 + Bytes_sent uint64 + Bytes_retrans uint64 + Dsack_dups uint32 + Reord_seen uint32 + Rcv_ooopack uint32 + Snd_wnd uint32 + Rcv_wnd uint32 + Rehash uint32 + Total_rto uint16 + Total_rto_recoveries uint16 + Total_rto_time uint32 } type CanFilter struct { @@ -552,7 +555,7 @@ const ( SizeofIPv6MTUInfo = 0x20 SizeofICMPv6Filter = 0x20 SizeofUcred = 0xc - SizeofTCPInfo = 0xf0 + SizeofTCPInfo = 0xf8 SizeofCanFilter = 0x8 SizeofTCPRepairOpt = 0x8 ) @@ -2672,6 +2675,7 @@ const ( BPF_PROG_TYPE_LSM = 0x1d BPF_PROG_TYPE_SK_LOOKUP = 0x1e BPF_PROG_TYPE_SYSCALL = 0x1f + BPF_PROG_TYPE_NETFILTER = 0x20 BPF_CGROUP_INET_INGRESS = 0x0 BPF_CGROUP_INET_EGRESS = 0x1 BPF_CGROUP_INET_SOCK_CREATE = 0x2 @@ -2716,6 +2720,11 @@ const ( BPF_PERF_EVENT = 0x29 BPF_TRACE_KPROBE_MULTI = 0x2a BPF_LSM_CGROUP = 0x2b + BPF_STRUCT_OPS = 0x2c + BPF_NETFILTER = 0x2d + BPF_TCX_INGRESS = 0x2e + BPF_TCX_EGRESS = 0x2f + BPF_TRACE_UPROBE_MULTI = 0x30 BPF_LINK_TYPE_UNSPEC = 0x0 BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1 BPF_LINK_TYPE_TRACING = 0x2 @@ -2726,6 +2735,18 @@ const ( BPF_LINK_TYPE_PERF_EVENT = 0x7 BPF_LINK_TYPE_KPROBE_MULTI = 0x8 BPF_LINK_TYPE_STRUCT_OPS = 0x9 + BPF_LINK_TYPE_NETFILTER = 0xa + BPF_LINK_TYPE_TCX = 0xb + BPF_LINK_TYPE_UPROBE_MULTI = 0xc + BPF_PERF_EVENT_UNSPEC = 0x0 + BPF_PERF_EVENT_UPROBE = 0x1 + BPF_PERF_EVENT_URETPROBE = 0x2 + BPF_PERF_EVENT_KPROBE = 0x3 + BPF_PERF_EVENT_KRETPROBE = 0x4 + BPF_PERF_EVENT_TRACEPOINT = 0x5 + BPF_PERF_EVENT_EVENT = 0x6 + BPF_F_KPROBE_MULTI_RETURN = 0x1 + BPF_F_UPROBE_MULTI_RETURN = 0x1 BPF_ANY = 0x0 BPF_NOEXIST = 0x1 BPF_EXIST = 0x2 @@ -2743,6 +2764,8 @@ const ( BPF_F_MMAPABLE = 0x400 BPF_F_PRESERVE_ELEMS = 0x800 BPF_F_INNER_MAP = 0x1000 + BPF_F_LINK = 0x2000 + BPF_F_PATH_FD = 0x4000 BPF_STATS_RUN_TIME = 0x0 BPF_STACK_BUILD_ID_EMPTY = 0x0 BPF_STACK_BUILD_ID_VALID = 0x1 @@ -2763,6 +2786,7 @@ const ( BPF_F_ZERO_CSUM_TX = 0x2 BPF_F_DONT_FRAGMENT = 0x4 BPF_F_SEQ_NUMBER = 0x8 + BPF_F_NO_TUNNEL_KEY = 0x10 BPF_F_TUNINFO_FLAGS = 0x10 BPF_F_INDEX_MASK = 0xffffffff BPF_F_CURRENT_CPU = 0xffffffff @@ -2779,6 +2803,8 @@ const ( BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20 BPF_F_ADJ_ROOM_ENCAP_L2_ETH = 0x40 + BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = 0x80 + BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = 0x100 BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_F_SYSCTL_BASE_NAME = 0x1 @@ -2867,6 +2893,8 @@ const ( BPF_DEVCG_DEV_CHAR = 0x2 BPF_FIB_LOOKUP_DIRECT = 0x1 BPF_FIB_LOOKUP_OUTPUT = 0x2 + BPF_FIB_LOOKUP_SKIP_NEIGH = 0x4 + BPF_FIB_LOOKUP_TBID = 0x8 BPF_FIB_LKUP_RET_SUCCESS = 0x0 BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 @@ -2902,6 +2930,7 @@ const ( BPF_CORE_ENUMVAL_EXISTS = 0xa BPF_CORE_ENUMVAL_VALUE = 0xb BPF_CORE_TYPE_MATCHES = 0xc + BPF_F_TIMER_ABS = 0x1 ) const ( @@ -2980,6 +3009,12 @@ type LoopInfo64 struct { Encrypt_key [32]uint8 Init [2]uint64 } +type LoopConfig struct { + Fd uint32 + Size uint32 + Info LoopInfo64 + _ [8]uint64 +} type TIPCSocketAddr struct { Ref uint32 @@ -3368,7 +3403,7 @@ const ( DEVLINK_PORT_FN_ATTR_STATE = 0x2 DEVLINK_PORT_FN_ATTR_OPSTATE = 0x3 DEVLINK_PORT_FN_ATTR_CAPS = 0x4 - DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x4 + DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x5 ) type FsverityDigest struct { @@ -4152,7 +4187,8 @@ const ( ) type LandlockRulesetAttr struct { - Access_fs uint64 + Access_fs uint64 + Access_net uint64 } type LandlockPathBeneathAttr struct { @@ -5103,7 +5139,7 @@ const ( NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf - NL80211_FREQUENCY_ATTR_MAX = 0x1b + NL80211_FREQUENCY_ATTR_MAX = 0x1c NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc @@ -5516,7 +5552,7 @@ const ( NL80211_REGDOM_TYPE_CUSTOM_WORLD = 0x2 NL80211_REGDOM_TYPE_INTERSECTION = 0x3 NL80211_REGDOM_TYPE_WORLD = 0x1 - NL80211_REG_RULE_ATTR_MAX = 0x7 + NL80211_REG_RULE_ATTR_MAX = 0x8 NL80211_REKEY_DATA_AKM = 0x4 NL80211_REKEY_DATA_KCK = 0x2 NL80211_REKEY_DATA_KEK = 0x1 @@ -5883,3 +5919,15 @@ type SchedAttr struct { } const SizeofSchedAttr = 0x38 + +type Cachestat_t struct { + Cache uint64 + Dirty uint64 + Writeback uint64 + Evicted uint64 + Recently_evicted uint64 +} +type CachestatRange struct { + Off uint64 + Len uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 6d8acbc..438a30a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux -// +build 386,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 59293c6..adceca3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux -// +build amd64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 40cfa38..eeaa00a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux -// +build arm,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 055bc42..6739aa9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux -// +build arm64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index f28affb..9920ef6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build loong64 && linux -// +build loong64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 9d71e7c..2923b79 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux -// +build mips,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index fd5ccd3..ce2750e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux -// +build mips64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 7704de7..3038811 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux -// +build mips64le,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index df00b87..efc6fed 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux -// +build mipsle,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 0942840..9a654b7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux -// +build ppc,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 0348743..40d358e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux -// +build ppc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index bad0670..148c6ce 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux -// +build ppc64le,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 1b4c97c..72ba815 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux -// +build riscv64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index aa268d0..71e7655 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux -// +build s390x,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 444045b..4abbdb9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux -// +build sparc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index 9bc4c8f..f22e794 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && netbsd -// +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index bb05f65..066a7d8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && netbsd -// +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index db40e3a..439548e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && netbsd -// +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index 1112115..16085d3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && netbsd -// +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 26eba23..afd13a3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && openbsd -// +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 5a54798..5d97f1f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && openbsd -// +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index be58c4e..34871cd 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && openbsd -// +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index 5233826..5911bce 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && openbsd -// +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index 605cfdb..e4f24f3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && openbsd -// +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go index d6724c0..ca50a79 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && openbsd -// +build ppc64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go index ddfd27a..d7d7f79 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && openbsd -// +build riscv64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 0400747..1416057 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -2,7 +2,6 @@ // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && solaris -// +build amd64,solaris package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go index aec1efc..54f31be 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build zos && s390x -// +build zos,s390x // Hand edited based on ztypes_linux_s390x.go // TODO: auto-generate. diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go new file mode 100644 index 0000000..ce2d713 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/aliases.go @@ -0,0 +1,12 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows && go1.9 + +package windows + +import "syscall" + +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go new file mode 100644 index 0000000..115341f --- /dev/null +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -0,0 +1,416 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "sync" + "sync/atomic" + "syscall" + "unsafe" +) + +// We need to use LoadLibrary and GetProcAddress from the Go runtime, because +// the these symbols are loaded by the system linker and are required to +// dynamically load additional symbols. Note that in the Go runtime, these +// return syscall.Handle and syscall.Errno, but these are the same, in fact, +// as windows.Handle and windows.Errno, and we intend to keep these the same. + +//go:linkname syscall_loadlibrary syscall.loadlibrary +func syscall_loadlibrary(filename *uint16) (handle Handle, err Errno) + +//go:linkname syscall_getprocaddress syscall.getprocaddress +func syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno) + +// DLLError describes reasons for DLL load failures. +type DLLError struct { + Err error + ObjName string + Msg string +} + +func (e *DLLError) Error() string { return e.Msg } + +func (e *DLLError) Unwrap() error { return e.Err } + +// A DLL implements access to a single DLL. +type DLL struct { + Name string + Handle Handle +} + +// LoadDLL loads DLL file into memory. +// +// Warning: using LoadDLL without an absolute path name is subject to +// DLL preloading attacks. To safely load a system DLL, use LazyDLL +// with System set to true, or use LoadLibraryEx directly. +func LoadDLL(name string) (dll *DLL, err error) { + namep, err := UTF16PtrFromString(name) + if err != nil { + return nil, err + } + h, e := syscall_loadlibrary(namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to load " + name + ": " + e.Error(), + } + } + d := &DLL{ + Name: name, + Handle: h, + } + return d, nil +} + +// MustLoadDLL is like LoadDLL but panics if load operation failes. +func MustLoadDLL(name string) *DLL { + d, e := LoadDLL(name) + if e != nil { + panic(e) + } + return d +} + +// FindProc searches DLL d for procedure named name and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProc(name string) (proc *Proc, err error) { + namep, err := BytePtrFromString(name) + if err != nil { + return nil, err + } + a, e := syscall_getprocaddress(d.Handle, namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProc is like FindProc but panics if search fails. +func (d *DLL) MustFindProc(name string) *Proc { + p, e := d.FindProc(name) + if e != nil { + panic(e) + } + return p +} + +// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) { + a, e := GetProcAddressByOrdinal(d.Handle, ordinal) + name := "#" + itoa(int(ordinal)) + if e != nil { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails. +func (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc { + p, e := d.FindProcByOrdinal(ordinal) + if e != nil { + panic(e) + } + return p +} + +// Release unloads DLL d from memory. +func (d *DLL) Release() (err error) { + return FreeLibrary(d.Handle) +} + +// A Proc implements access to a procedure inside a DLL. +type Proc struct { + Dll *DLL + Name string + addr uintptr +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +func (p *Proc) Addr() uintptr { + return p.addr +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + switch len(a) { + case 0: + return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0) + case 1: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0) + case 2: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0) + case 3: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2]) + case 4: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0) + case 5: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0) + case 6: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5]) + case 7: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0) + case 8: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0) + case 9: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]) + case 10: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0) + case 11: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0) + case 12: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11]) + case 13: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0) + case 14: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0) + case 15: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14]) + default: + panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".") + } +} + +// A LazyDLL implements access to a single DLL. +// It will delay the load of the DLL until the first +// call to its Handle method or to one of its +// LazyProc's Addr method. +type LazyDLL struct { + Name string + + // System determines whether the DLL must be loaded from the + // Windows System directory, bypassing the normal DLL search + // path. + System bool + + mu sync.Mutex + dll *DLL // non nil once DLL is loaded +} + +// Load loads DLL file d.Name into memory. It returns an error if fails. +// Load will not try to load DLL, if it is already loaded into memory. +func (d *LazyDLL) Load() error { + // Non-racy version of: + // if d.dll != nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil { + return nil + } + d.mu.Lock() + defer d.mu.Unlock() + if d.dll != nil { + return nil + } + + // kernel32.dll is special, since it's where LoadLibraryEx comes from. + // The kernel already special-cases its name, so it's always + // loaded from system32. + var dll *DLL + var err error + if d.Name == "kernel32.dll" { + dll, err = LoadDLL(d.Name) + } else { + dll, err = loadLibraryEx(d.Name, d.System) + } + if err != nil { + return err + } + + // Non-racy version of: + // d.dll = dll + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll)) + return nil +} + +// mustLoad is like Load but panics if search fails. +func (d *LazyDLL) mustLoad() { + e := d.Load() + if e != nil { + panic(e) + } +} + +// Handle returns d's module handle. +func (d *LazyDLL) Handle() uintptr { + d.mustLoad() + return uintptr(d.dll.Handle) +} + +// NewProc returns a LazyProc for accessing the named procedure in the DLL d. +func (d *LazyDLL) NewProc(name string) *LazyProc { + return &LazyProc{l: d, Name: name} +} + +// NewLazyDLL creates new LazyDLL associated with DLL file. +func NewLazyDLL(name string) *LazyDLL { + return &LazyDLL{Name: name} +} + +// NewLazySystemDLL is like NewLazyDLL, but will only +// search Windows System directory for the DLL if name is +// a base name (like "advapi32.dll"). +func NewLazySystemDLL(name string) *LazyDLL { + return &LazyDLL{Name: name, System: true} +} + +// A LazyProc implements access to a procedure inside a LazyDLL. +// It delays the lookup until the Addr method is called. +type LazyProc struct { + Name string + + mu sync.Mutex + l *LazyDLL + proc *Proc +} + +// Find searches DLL for procedure named p.Name. It returns +// an error if search fails. Find will not search procedure, +// if it is already found and loaded into memory. +func (p *LazyProc) Find() error { + // Non-racy version of: + // if p.proc == nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil { + p.mu.Lock() + defer p.mu.Unlock() + if p.proc == nil { + e := p.l.Load() + if e != nil { + return e + } + proc, e := p.l.dll.FindProc(p.Name) + if e != nil { + return e + } + // Non-racy version of: + // p.proc = proc + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc)) + } + } + return nil +} + +// mustFind is like Find but panics if search fails. +func (p *LazyProc) mustFind() { + e := p.Find() + if e != nil { + panic(e) + } +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +// It will panic if the procedure cannot be found. +func (p *LazyProc) Addr() uintptr { + p.mustFind() + return p.proc.Addr() +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. It will also panic if the procedure cannot be found. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + p.mustFind() + return p.proc.Call(a...) +} + +var canDoSearchSystem32Once struct { + sync.Once + v bool +} + +func initCanDoSearchSystem32() { + // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says: + // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows + // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on + // systems that have KB2533623 installed. To determine whether the + // flags are available, use GetProcAddress to get the address of the + // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories + // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_* + // flags can be used with LoadLibraryEx." + canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil) +} + +func canDoSearchSystem32() bool { + canDoSearchSystem32Once.Do(initCanDoSearchSystem32) + return canDoSearchSystem32Once.v +} + +func isBaseName(name string) bool { + for _, c := range name { + if c == ':' || c == '/' || c == '\\' { + return false + } + } + return true +} + +// loadLibraryEx wraps the Windows LoadLibraryEx function. +// +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx +// +// If name is not an absolute path, LoadLibraryEx searches for the DLL +// in a variety of automatic locations unless constrained by flags. +// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx +func loadLibraryEx(name string, system bool) (*DLL, error) { + loadDLL := name + var flags uintptr + if system { + if canDoSearchSystem32() { + flags = LOAD_LIBRARY_SEARCH_SYSTEM32 + } else if isBaseName(name) { + // WindowsXP or unpatched Windows machine + // trying to load "foo.dll" out of the system + // folder, but LoadLibraryEx doesn't support + // that yet on their system, so emulate it. + systemdir, err := GetSystemDirectory() + if err != nil { + return nil, err + } + loadDLL = systemdir + "\\" + name + } + } + h, err := LoadLibraryEx(loadDLL, 0, flags) + if err != nil { + return nil, err + } + return &DLL{Name: name, Handle: h}, nil +} + +type errString string + +func (s errString) Error() string { return string(s) } diff --git a/vendor/golang.org/x/sys/windows/empty.s b/vendor/golang.org/x/sys/windows/empty.s new file mode 100644 index 0000000..ba64cac --- /dev/null +++ b/vendor/golang.org/x/sys/windows/empty.s @@ -0,0 +1,8 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.12 + +// This file is here to allow bodyless functions with go:linkname for Go 1.11 +// and earlier (see https://golang.org/issue/23311). diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go new file mode 100644 index 0000000..d4577a4 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -0,0 +1,57 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows environment variables. + +package windows + +import ( + "syscall" + "unsafe" +) + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +// Returns a default environment associated with the token, rather than the current +// process. If inheritExisting is true, then this environment also inherits the +// environment of the current process. +func (token Token) Environ(inheritExisting bool) (env []string, err error) { + var block *uint16 + err = CreateEnvironmentBlock(&block, token, inheritExisting) + if err != nil { + return nil, err + } + defer DestroyEnvironmentBlock(block) + size := unsafe.Sizeof(*block) + for *block != 0 { + // find NUL terminator + end := unsafe.Pointer(block) + for *(*uint16)(end) != 0 { + end = unsafe.Add(end, size) + } + + entry := unsafe.Slice(block, (uintptr(end)-uintptr(unsafe.Pointer(block)))/size) + env = append(env, UTF16ToString(entry)) + block = (*uint16)(unsafe.Add(end, size)) + } + return env, nil +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go new file mode 100644 index 0000000..6c36695 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/eventlog.go @@ -0,0 +1,20 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +const ( + EVENTLOG_SUCCESS = 0 + EVENTLOG_ERROR_TYPE = 1 + EVENTLOG_WARNING_TYPE = 2 + EVENTLOG_INFORMATION_TYPE = 4 + EVENTLOG_AUDIT_SUCCESS = 8 + EVENTLOG_AUDIT_FAILURE = 16 +) + +//sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW +//sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource +//sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go new file mode 100644 index 0000000..9cabbb6 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -0,0 +1,248 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Fork, exec, wait, etc. + +package windows + +import ( + errorspkg "errors" + "unsafe" +) + +// EscapeArg rewrites command line argument s as prescribed +// in http://msdn.microsoft.com/en-us/library/ms880421. +// This function returns "" (2 double quotes) if s is empty. +// Alternatively, these transformations are done: +// - every back slash (\) is doubled, but only if immediately +// followed by double quote ("); +// - every double quote (") is escaped by back slash (\); +// - finally, s is wrapped with double quotes (arg -> "arg"), +// but only if there is space or tab inside s. +func EscapeArg(s string) string { + if len(s) == 0 { + return `""` + } + n := len(s) + hasSpace := false + for i := 0; i < len(s); i++ { + switch s[i] { + case '"', '\\': + n++ + case ' ', '\t': + hasSpace = true + } + } + if hasSpace { + n += 2 // Reserve space for quotes. + } + if n == len(s) { + return s + } + + qs := make([]byte, n) + j := 0 + if hasSpace { + qs[j] = '"' + j++ + } + slashes := 0 + for i := 0; i < len(s); i++ { + switch s[i] { + default: + slashes = 0 + qs[j] = s[i] + case '\\': + slashes++ + qs[j] = s[i] + case '"': + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '\\' + j++ + qs[j] = s[i] + } + j++ + } + if hasSpace { + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '"' + j++ + } + return string(qs[:j]) +} + +// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line, +// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument, +// or any program that uses CommandLineToArgv. +func ComposeCommandLine(args []string) string { + if len(args) == 0 { + return "" + } + + // Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw: + // “This function accepts command lines that contain a program name; the + // program name can be enclosed in quotation marks or not.” + // + // Unfortunately, it provides no means of escaping interior quotation marks + // within that program name, and we have no way to report them here. + prog := args[0] + mustQuote := len(prog) == 0 + for i := 0; i < len(prog); i++ { + c := prog[i] + if c <= ' ' || (c == '"' && i == 0) { + // Force quotes for not only the ASCII space and tab as described in the + // MSDN article, but also ASCII control characters. + // The documentation for CommandLineToArgvW doesn't say what happens when + // the first argument is not a valid program name, but it empirically + // seems to drop unquoted control characters. + mustQuote = true + break + } + } + var commandLine []byte + if mustQuote { + commandLine = make([]byte, 0, len(prog)+2) + commandLine = append(commandLine, '"') + for i := 0; i < len(prog); i++ { + c := prog[i] + if c == '"' { + // This quote would interfere with our surrounding quotes. + // We have no way to report an error, so just strip out + // the offending character instead. + continue + } + commandLine = append(commandLine, c) + } + commandLine = append(commandLine, '"') + } else { + if len(args) == 1 { + // args[0] is a valid command line representing itself. + // No need to allocate a new slice or string for it. + return prog + } + commandLine = []byte(prog) + } + + for _, arg := range args[1:] { + commandLine = append(commandLine, ' ') + // TODO(bcmills): since we're already appending to a slice, it would be nice + // to avoid the intermediate allocations of EscapeArg. + // Perhaps we can factor out an appendEscapedArg function. + commandLine = append(commandLine, EscapeArg(arg)...) + } + return string(commandLine) +} + +// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv, +// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that +// command lines are passed around. +// DecomposeCommandLine returns an error if commandLine contains NUL. +func DecomposeCommandLine(commandLine string) ([]string, error) { + if len(commandLine) == 0 { + return []string{}, nil + } + utf16CommandLine, err := UTF16FromString(commandLine) + if err != nil { + return nil, errorspkg.New("string with NUL passed to DecomposeCommandLine") + } + var argc int32 + argv, err := commandLineToArgv(&utf16CommandLine[0], &argc) + if err != nil { + return nil, err + } + defer LocalFree(Handle(unsafe.Pointer(argv))) + + var args []string + for _, p := range unsafe.Slice(argv, argc) { + args = append(args, UTF16PtrToString(p)) + } + return args, nil +} + +// CommandLineToArgv parses a Unicode command line string and sets +// argc to the number of parsed arguments. +// +// The returned memory should be freed using a single call to LocalFree. +// +// Note that although the return type of CommandLineToArgv indicates 8192 +// entries of up to 8192 characters each, the actual count of parsed arguments +// may exceed 8192, and the documentation for CommandLineToArgvW does not mention +// any bound on the lengths of the individual argument strings. +// (See https://go.dev/issue/63236.) +func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { + argp, err := commandLineToArgv(cmd, argc) + argv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp)) + return argv, err +} + +func CloseOnExec(fd Handle) { + SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) +} + +// FullPath retrieves the full path of the specified file. +func FullPath(name string) (path string, err error) { + p, err := UTF16PtrFromString(name) + if err != nil { + return "", err + } + n := uint32(100) + for { + buf := make([]uint16, n) + n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil) + if err != nil { + return "", err + } + if n <= uint32(len(buf)) { + return UTF16ToString(buf[:n]), nil + } + } +} + +// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes. +func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) { + var size uintptr + err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size) + if err != ERROR_INSUFFICIENT_BUFFER { + if err == nil { + return nil, errorspkg.New("unable to query buffer size from InitializeProcThreadAttributeList") + } + return nil, err + } + alloc, err := LocalAlloc(LMEM_FIXED, uint32(size)) + if err != nil { + return nil, err + } + // size is guaranteed to be ≥1 by InitializeProcThreadAttributeList. + al := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))} + err = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size) + if err != nil { + return nil, err + } + return al, err +} + +// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute. +func (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error { + al.pointers = append(al.pointers, value) + return updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil) +} + +// Delete frees ProcThreadAttributeList's resources. +func (al *ProcThreadAttributeListContainer) Delete() { + deleteProcThreadAttributeList(al.data) + LocalFree(Handle(unsafe.Pointer(al.data))) + al.data = nil + al.pointers = nil +} + +// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx. +func (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList { + return al.data +} diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go new file mode 100644 index 0000000..6dc0920 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/memory_windows.go @@ -0,0 +1,48 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +const ( + MEM_COMMIT = 0x00001000 + MEM_RESERVE = 0x00002000 + MEM_DECOMMIT = 0x00004000 + MEM_RELEASE = 0x00008000 + MEM_RESET = 0x00080000 + MEM_TOP_DOWN = 0x00100000 + MEM_WRITE_WATCH = 0x00200000 + MEM_PHYSICAL = 0x00400000 + MEM_RESET_UNDO = 0x01000000 + MEM_LARGE_PAGES = 0x20000000 + + PAGE_NOACCESS = 0x00000001 + PAGE_READONLY = 0x00000002 + PAGE_READWRITE = 0x00000004 + PAGE_WRITECOPY = 0x00000008 + PAGE_EXECUTE = 0x00000010 + PAGE_EXECUTE_READ = 0x00000020 + PAGE_EXECUTE_READWRITE = 0x00000040 + PAGE_EXECUTE_WRITECOPY = 0x00000080 + PAGE_GUARD = 0x00000100 + PAGE_NOCACHE = 0x00000200 + PAGE_WRITECOMBINE = 0x00000400 + PAGE_TARGETS_INVALID = 0x40000000 + PAGE_TARGETS_NO_UPDATE = 0x40000000 + + QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002 + QUOTA_LIMITS_HARDWS_MIN_ENABLE = 0x00000001 + QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008 + QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004 +) + +type MemoryBasicInformation struct { + BaseAddress uintptr + AllocationBase uintptr + AllocationProtect uint32 + PartitionId uint16 + RegionSize uintptr + State uint32 + Protect uint32 + Type uint32 +} diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash new file mode 100644 index 0000000..58e0188 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -0,0 +1,70 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" +[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } +ntstatus="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)" +[[ -n $ntstatus ]] || { echo "Unable to find ntstatus.h" >&2; exit 1; } + +declare -A errors + +{ + echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT." + echo + echo "package windows" + echo "import \"syscall\"" + echo "const (" + + while read -r line; do + unset vtype + if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + else + continue + fi + [[ -n $key && -n $value ]] || continue + [[ -z ${errors["$key"]} ]] || continue + errors["$key"]="$value" + if [[ -v vtype ]]; then + if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then + vtype="" + elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then + vtype="Handle" + else + vtype="syscall.Errno" + fi + last_vtype="$vtype" + else + vtype="" + if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then + value="S_OK" + elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then + value="ERROR_SUCCESS" + fi + fi + + echo "$key $vtype = $value" + done < "$winerror" + + while read -r line; do + [[ $line =~ ^#define\ (STATUS_[^\s]+)\ +\(\(NTSTATUS\)((0x)?[0-9a-fA-F]+)L?\) ]] || continue + echo "${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}" + done < "$ntstatus" + + echo ")" +} | gofmt > "zerrors_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash new file mode 100644 index 0000000..ab8924e --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)" +[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; } + +{ + echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT." + echo + echo "package windows" + echo "type KNOWNFOLDERID GUID" + echo "var (" + while read -r line; do + [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue + printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \ + "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \ + $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \ + $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" )) + done < "$knownfolders" + echo ")" +} | gofmt > "zknownfolderids_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go new file mode 100644 index 0000000..dbcdb09 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -0,0 +1,9 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build generate + +package windows + +//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go new file mode 100644 index 0000000..0f1bdc3 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows && race + +package windows + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go new file mode 100644 index 0000000..0c78da7 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows && !race + +package windows + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go new file mode 100644 index 0000000..26be94a --- /dev/null +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -0,0 +1,1435 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "syscall" + "unsafe" +) + +const ( + NameUnknown = 0 + NameFullyQualifiedDN = 1 + NameSamCompatible = 2 + NameDisplay = 3 + NameUniqueId = 6 + NameCanonical = 7 + NameUserPrincipal = 8 + NameCanonicalEx = 9 + NameServicePrincipal = 10 + NameDnsDomain = 12 +) + +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx +//sys TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW +//sys GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW + +// TranslateAccountName converts a directory service +// object name from one format to another. +func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) { + u, e := UTF16PtrFromString(username) + if e != nil { + return "", e + } + n := uint32(50) + for { + b := make([]uint16, n) + e = TranslateName(u, from, to, &b[0], &n) + if e == nil { + return UTF16ToString(b[:n]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +const ( + // do not reorder + NetSetupUnknownStatus = iota + NetSetupUnjoined + NetSetupWorkgroupName + NetSetupDomainName +) + +type UserInfo10 struct { + Name *uint16 + Comment *uint16 + UsrComment *uint16 + FullName *uint16 +} + +//sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo +//sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation +//sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree + +const ( + // do not reorder + SidTypeUser = 1 + iota + SidTypeGroup + SidTypeDomain + SidTypeAlias + SidTypeWellKnownGroup + SidTypeDeletedAccount + SidTypeInvalid + SidTypeUnknown + SidTypeComputer + SidTypeLabel +) + +type SidIdentifierAuthority struct { + Value [6]byte +} + +var ( + SECURITY_NULL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}} + SECURITY_WORLD_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}} + SECURITY_LOCAL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}} + SECURITY_CREATOR_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}} + SECURITY_NON_UNIQUE_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}} + SECURITY_NT_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}} + SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}} +) + +const ( + SECURITY_NULL_RID = 0 + SECURITY_WORLD_RID = 0 + SECURITY_LOCAL_RID = 0 + SECURITY_CREATOR_OWNER_RID = 0 + SECURITY_CREATOR_GROUP_RID = 1 + SECURITY_DIALUP_RID = 1 + SECURITY_NETWORK_RID = 2 + SECURITY_BATCH_RID = 3 + SECURITY_INTERACTIVE_RID = 4 + SECURITY_LOGON_IDS_RID = 5 + SECURITY_SERVICE_RID = 6 + SECURITY_LOCAL_SYSTEM_RID = 18 + SECURITY_BUILTIN_DOMAIN_RID = 32 + SECURITY_PRINCIPAL_SELF_RID = 10 + SECURITY_CREATOR_OWNER_SERVER_RID = 0x2 + SECURITY_CREATOR_GROUP_SERVER_RID = 0x3 + SECURITY_LOGON_IDS_RID_COUNT = 0x3 + SECURITY_ANONYMOUS_LOGON_RID = 0x7 + SECURITY_PROXY_RID = 0x8 + SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9 + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID + SECURITY_AUTHENTICATED_USER_RID = 0xb + SECURITY_RESTRICTED_CODE_RID = 0xc + SECURITY_NT_NON_UNIQUE_RID = 0x15 +) + +// Predefined domain-relative RIDs for local groups. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx +const ( + DOMAIN_ALIAS_RID_ADMINS = 0x220 + DOMAIN_ALIAS_RID_USERS = 0x221 + DOMAIN_ALIAS_RID_GUESTS = 0x222 + DOMAIN_ALIAS_RID_POWER_USERS = 0x223 + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224 + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225 + DOMAIN_ALIAS_RID_PRINT_OPS = 0x226 + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227 + DOMAIN_ALIAS_RID_REPLICATOR = 0x228 + DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229 + DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a + DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b + DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c + DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d + DOMAIN_ALIAS_RID_MONITORING_USERS = 0x22e + DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f + DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230 + DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231 + DOMAIN_ALIAS_RID_DCOM_USERS = 0x232 + DOMAIN_ALIAS_RID_IUSERS = 0x238 + DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239 + DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b + DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c + DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d + DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e +) + +//sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW +//sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW +//sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW +//sys ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW +//sys GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid +//sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid +//sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid +//sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid +//sys isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid +//sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid +//sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid +//sys getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority +//sys getSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount +//sys getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority +//sys isValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid + +// The security identifier (SID) structure is a variable-length +// structure used to uniquely identify users or groups. +type SID struct{} + +// StringToSid converts a string-format security identifier +// SID into a valid, functional SID. +func StringToSid(s string) (*SID, error) { + var sid *SID + p, e := UTF16PtrFromString(s) + if e != nil { + return nil, e + } + e = ConvertStringSidToSid(p, &sid) + if e != nil { + return nil, e + } + defer LocalFree((Handle)(unsafe.Pointer(sid))) + return sid.Copy() +} + +// LookupSID retrieves a security identifier SID for the account +// and the name of the domain on which the account was found. +// System specify target computer to search. +func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { + if len(account) == 0 { + return nil, "", 0, syscall.EINVAL + } + acc, e := UTF16PtrFromString(account) + if e != nil { + return nil, "", 0, e + } + var sys *uint16 + if len(system) > 0 { + sys, e = UTF16PtrFromString(system) + if e != nil { + return nil, "", 0, e + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]byte, n) + db := make([]uint16, dn) + sid = (*SID)(unsafe.Pointer(&b[0])) + e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) + if e == nil { + return sid, UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, "", 0, e + } + if n <= uint32(len(b)) { + return nil, "", 0, e + } + } +} + +// String converts SID to a string format suitable for display, storage, or transmission. +func (sid *SID) String() string { + var s *uint16 + e := ConvertSidToStringSid(sid, &s) + if e != nil { + return "" + } + defer LocalFree((Handle)(unsafe.Pointer(s))) + return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]) +} + +// Len returns the length, in bytes, of a valid security identifier SID. +func (sid *SID) Len() int { + return int(GetLengthSid(sid)) +} + +// Copy creates a duplicate of security identifier SID. +func (sid *SID) Copy() (*SID, error) { + b := make([]byte, sid.Len()) + sid2 := (*SID)(unsafe.Pointer(&b[0])) + e := CopySid(uint32(len(b)), sid2, sid) + if e != nil { + return nil, e + } + return sid2, nil +} + +// IdentifierAuthority returns the identifier authority of the SID. +func (sid *SID) IdentifierAuthority() SidIdentifierAuthority { + return *getSidIdentifierAuthority(sid) +} + +// SubAuthorityCount returns the number of sub-authorities in the SID. +func (sid *SID) SubAuthorityCount() uint8 { + return *getSidSubAuthorityCount(sid) +} + +// SubAuthority returns the sub-authority of the SID as specified by +// the index, which must be less than sid.SubAuthorityCount(). +func (sid *SID) SubAuthority(idx uint32) uint32 { + if idx >= uint32(sid.SubAuthorityCount()) { + panic("sub-authority index out of range") + } + return *getSidSubAuthority(sid, idx) +} + +// IsValid returns whether the SID has a valid revision and length. +func (sid *SID) IsValid() bool { + return isValidSid(sid) +} + +// Equals compares two SIDs for equality. +func (sid *SID) Equals(sid2 *SID) bool { + return EqualSid(sid, sid2) +} + +// IsWellKnown determines whether the SID matches the well-known sidType. +func (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool { + return isWellKnownSid(sid, sidType) +} + +// LookupAccount retrieves the name of the account for this SID +// and the name of the first domain on which this SID is found. +// System specify target computer to search for. +func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { + var sys *uint16 + if len(system) > 0 { + sys, err = UTF16PtrFromString(system) + if err != nil { + return "", "", 0, err + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]uint16, n) + db := make([]uint16, dn) + e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType) + if e == nil { + return UTF16ToString(b), UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", "", 0, e + } + if n <= uint32(len(b)) { + return "", "", 0, e + } + } +} + +// Various types of pre-specified SIDs that can be synthesized and compared at runtime. +type WELL_KNOWN_SID_TYPE uint32 + +const ( + WinNullSid = 0 + WinWorldSid = 1 + WinLocalSid = 2 + WinCreatorOwnerSid = 3 + WinCreatorGroupSid = 4 + WinCreatorOwnerServerSid = 5 + WinCreatorGroupServerSid = 6 + WinNtAuthoritySid = 7 + WinDialupSid = 8 + WinNetworkSid = 9 + WinBatchSid = 10 + WinInteractiveSid = 11 + WinServiceSid = 12 + WinAnonymousSid = 13 + WinProxySid = 14 + WinEnterpriseControllersSid = 15 + WinSelfSid = 16 + WinAuthenticatedUserSid = 17 + WinRestrictedCodeSid = 18 + WinTerminalServerSid = 19 + WinRemoteLogonIdSid = 20 + WinLogonIdsSid = 21 + WinLocalSystemSid = 22 + WinLocalServiceSid = 23 + WinNetworkServiceSid = 24 + WinBuiltinDomainSid = 25 + WinBuiltinAdministratorsSid = 26 + WinBuiltinUsersSid = 27 + WinBuiltinGuestsSid = 28 + WinBuiltinPowerUsersSid = 29 + WinBuiltinAccountOperatorsSid = 30 + WinBuiltinSystemOperatorsSid = 31 + WinBuiltinPrintOperatorsSid = 32 + WinBuiltinBackupOperatorsSid = 33 + WinBuiltinReplicatorSid = 34 + WinBuiltinPreWindows2000CompatibleAccessSid = 35 + WinBuiltinRemoteDesktopUsersSid = 36 + WinBuiltinNetworkConfigurationOperatorsSid = 37 + WinAccountAdministratorSid = 38 + WinAccountGuestSid = 39 + WinAccountKrbtgtSid = 40 + WinAccountDomainAdminsSid = 41 + WinAccountDomainUsersSid = 42 + WinAccountDomainGuestsSid = 43 + WinAccountComputersSid = 44 + WinAccountControllersSid = 45 + WinAccountCertAdminsSid = 46 + WinAccountSchemaAdminsSid = 47 + WinAccountEnterpriseAdminsSid = 48 + WinAccountPolicyAdminsSid = 49 + WinAccountRasAndIasServersSid = 50 + WinNTLMAuthenticationSid = 51 + WinDigestAuthenticationSid = 52 + WinSChannelAuthenticationSid = 53 + WinThisOrganizationSid = 54 + WinOtherOrganizationSid = 55 + WinBuiltinIncomingForestTrustBuildersSid = 56 + WinBuiltinPerfMonitoringUsersSid = 57 + WinBuiltinPerfLoggingUsersSid = 58 + WinBuiltinAuthorizationAccessSid = 59 + WinBuiltinTerminalServerLicenseServersSid = 60 + WinBuiltinDCOMUsersSid = 61 + WinBuiltinIUsersSid = 62 + WinIUserSid = 63 + WinBuiltinCryptoOperatorsSid = 64 + WinUntrustedLabelSid = 65 + WinLowLabelSid = 66 + WinMediumLabelSid = 67 + WinHighLabelSid = 68 + WinSystemLabelSid = 69 + WinWriteRestrictedCodeSid = 70 + WinCreatorOwnerRightsSid = 71 + WinCacheablePrincipalsGroupSid = 72 + WinNonCacheablePrincipalsGroupSid = 73 + WinEnterpriseReadonlyControllersSid = 74 + WinAccountReadonlyControllersSid = 75 + WinBuiltinEventLogReadersGroup = 76 + WinNewEnterpriseReadonlyControllersSid = 77 + WinBuiltinCertSvcDComAccessGroup = 78 + WinMediumPlusLabelSid = 79 + WinLocalLogonSid = 80 + WinConsoleLogonSid = 81 + WinThisOrganizationCertificateSid = 82 + WinApplicationPackageAuthoritySid = 83 + WinBuiltinAnyPackageSid = 84 + WinCapabilityInternetClientSid = 85 + WinCapabilityInternetClientServerSid = 86 + WinCapabilityPrivateNetworkClientServerSid = 87 + WinCapabilityPicturesLibrarySid = 88 + WinCapabilityVideosLibrarySid = 89 + WinCapabilityMusicLibrarySid = 90 + WinCapabilityDocumentsLibrarySid = 91 + WinCapabilitySharedUserCertificatesSid = 92 + WinCapabilityEnterpriseAuthenticationSid = 93 + WinCapabilityRemovableStorageSid = 94 + WinBuiltinRDSRemoteAccessServersSid = 95 + WinBuiltinRDSEndpointServersSid = 96 + WinBuiltinRDSManagementServersSid = 97 + WinUserModeDriversSid = 98 + WinBuiltinHyperVAdminsSid = 99 + WinAccountCloneableControllersSid = 100 + WinBuiltinAccessControlAssistanceOperatorsSid = 101 + WinBuiltinRemoteManagementUsersSid = 102 + WinAuthenticationAuthorityAssertedSid = 103 + WinAuthenticationServiceAssertedSid = 104 + WinLocalAccountSid = 105 + WinLocalAccountAndAdministratorSid = 106 + WinAccountProtectedUsersSid = 107 + WinCapabilityAppointmentsSid = 108 + WinCapabilityContactsSid = 109 + WinAccountDefaultSystemManagedSid = 110 + WinBuiltinDefaultSystemManagedGroupSid = 111 + WinBuiltinStorageReplicaAdminsSid = 112 + WinAccountKeyAdminsSid = 113 + WinAccountEnterpriseKeyAdminsSid = 114 + WinAuthenticationKeyTrustSid = 115 + WinAuthenticationKeyPropertyMFASid = 116 + WinAuthenticationKeyPropertyAttestationSid = 117 + WinAuthenticationFreshKeyAuthSid = 118 + WinBuiltinDeviceOwnersSid = 119 +) + +// Creates a SID for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the local machine. +func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { + return CreateWellKnownDomainSid(sidType, nil) +} + +// Creates a SID for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the domain specified by the domainSid parameter. +func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { + n := uint32(50) + for { + b := make([]byte, n) + sid := (*SID)(unsafe.Pointer(&b[0])) + err := createWellKnownSid(sidType, domainSid, sid, &n) + if err == nil { + return sid, nil + } + if err != ERROR_INSUFFICIENT_BUFFER { + return nil, err + } + if n <= uint32(len(b)) { + return nil, err + } + } +} + +const ( + // do not reorder + TOKEN_ASSIGN_PRIMARY = 1 << iota + TOKEN_DUPLICATE + TOKEN_IMPERSONATE + TOKEN_QUERY + TOKEN_QUERY_SOURCE + TOKEN_ADJUST_PRIVILEGES + TOKEN_ADJUST_GROUPS + TOKEN_ADJUST_DEFAULT + TOKEN_ADJUST_SESSIONID + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | + TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | + TOKEN_IMPERSONATE | + TOKEN_QUERY | + TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY + TOKEN_WRITE = STANDARD_RIGHTS_WRITE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE +) + +const ( + // do not reorder + TokenUser = 1 + iota + TokenGroups + TokenPrivileges + TokenOwner + TokenPrimaryGroup + TokenDefaultDacl + TokenSource + TokenType + TokenImpersonationLevel + TokenStatistics + TokenRestrictedSids + TokenSessionId + TokenGroupsAndPrivileges + TokenSessionReference + TokenSandBoxInert + TokenAuditPolicy + TokenOrigin + TokenElevationType + TokenLinkedToken + TokenElevation + TokenHasRestrictions + TokenAccessInformation + TokenVirtualizationAllowed + TokenVirtualizationEnabled + TokenIntegrityLevel + TokenUIAccess + TokenMandatoryPolicy + TokenLogonSid + MaxTokenInfoClass +) + +// Group attributes inside of Tokengroups.Groups[i].Attributes +const ( + SE_GROUP_MANDATORY = 0x00000001 + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 + SE_GROUP_ENABLED = 0x00000004 + SE_GROUP_OWNER = 0x00000008 + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 + SE_GROUP_INTEGRITY = 0x00000020 + SE_GROUP_INTEGRITY_ENABLED = 0x00000040 + SE_GROUP_LOGON_ID = 0xC0000000 + SE_GROUP_RESOURCE = 0x20000000 + SE_GROUP_VALID_ATTRIBUTES = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED +) + +// Privilege attributes +const ( + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 + SE_PRIVILEGE_ENABLED = 0x00000002 + SE_PRIVILEGE_REMOVED = 0x00000004 + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 + SE_PRIVILEGE_VALID_ATTRIBUTES = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS +) + +// Token types +const ( + TokenPrimary = 1 + TokenImpersonation = 2 +) + +// Impersonation levels +const ( + SecurityAnonymous = 0 + SecurityIdentification = 1 + SecurityImpersonation = 2 + SecurityDelegation = 3 +) + +type LUID struct { + LowPart uint32 + HighPart int32 +} + +type LUIDAndAttributes struct { + Luid LUID + Attributes uint32 +} + +type SIDAndAttributes struct { + Sid *SID + Attributes uint32 +} + +type Tokenuser struct { + User SIDAndAttributes +} + +type Tokenprimarygroup struct { + PrimaryGroup *SID +} + +type Tokengroups struct { + GroupCount uint32 + Groups [1]SIDAndAttributes // Use AllGroups() for iterating. +} + +// AllGroups returns a slice that can be used to iterate over the groups in g. +func (g *Tokengroups) AllGroups() []SIDAndAttributes { + return (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount] +} + +type Tokenprivileges struct { + PrivilegeCount uint32 + Privileges [1]LUIDAndAttributes // Use AllPrivileges() for iterating. +} + +// AllPrivileges returns a slice that can be used to iterate over the privileges in p. +func (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes { + return (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount] +} + +type Tokenmandatorylabel struct { + Label SIDAndAttributes +} + +func (tml *Tokenmandatorylabel) Size() uint32 { + return uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid) +} + +// Authorization Functions +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys isTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted +//sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken +//sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken +//sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf +//sys RevertToSelf() (err error) = advapi32.RevertToSelf +//sys SetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken +//sys LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW +//sys AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges +//sys AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups +//sys GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation +//sys DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx +//sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW +//sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW +//sys getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW +//sys getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW + +// An access token contains the security information for a logon session. +// The system creates an access token when a user logs on, and every +// process executed on behalf of the user has a copy of the token. +// The token identifies the user, the user's groups, and the user's +// privileges. The system uses the token to control access to securable +// objects and to control the ability of the user to perform various +// system-related operations on the local computer. +type Token Handle + +// OpenCurrentProcessToken opens an access token associated with current +// process with TOKEN_QUERY access. It is a real token that needs to be closed. +// +// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...) +// with the desired access instead, or use GetCurrentProcessToken for a +// TOKEN_QUERY token. +func OpenCurrentProcessToken() (Token, error) { + var token Token + err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token) + return token, err +} + +// GetCurrentProcessToken returns the access token associated with +// the current process. It is a pseudo token that does not need +// to be closed. +func GetCurrentProcessToken() Token { + return Token(^uintptr(4 - 1)) +} + +// GetCurrentThreadToken return the access token associated with +// the current thread. It is a pseudo token that does not need +// to be closed. +func GetCurrentThreadToken() Token { + return Token(^uintptr(5 - 1)) +} + +// GetCurrentThreadEffectiveToken returns the effective access token +// associated with the current thread. It is a pseudo token that does +// not need to be closed. +func GetCurrentThreadEffectiveToken() Token { + return Token(^uintptr(6 - 1)) +} + +// Close releases access to access token. +func (t Token) Close() error { + return CloseHandle(Handle(t)) +} + +// getInfo retrieves a specified type of information about an access token. +func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) { + n := uint32(initSize) + for { + b := make([]byte, n) + e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n) + if e == nil { + return unsafe.Pointer(&b[0]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, e + } + if n <= uint32(len(b)) { + return nil, e + } + } +} + +// GetTokenUser retrieves access token t user account information. +func (t Token) GetTokenUser() (*Tokenuser, error) { + i, e := t.getInfo(TokenUser, 50) + if e != nil { + return nil, e + } + return (*Tokenuser)(i), nil +} + +// GetTokenGroups retrieves group accounts associated with access token t. +func (t Token) GetTokenGroups() (*Tokengroups, error) { + i, e := t.getInfo(TokenGroups, 50) + if e != nil { + return nil, e + } + return (*Tokengroups)(i), nil +} + +// GetTokenPrimaryGroup retrieves access token t primary group information. +// A pointer to a SID structure representing a group that will become +// the primary group of any objects created by a process using this access token. +func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) { + i, e := t.getInfo(TokenPrimaryGroup, 50) + if e != nil { + return nil, e + } + return (*Tokenprimarygroup)(i), nil +} + +// GetUserProfileDirectory retrieves path to the +// root directory of the access token t user's profile. +func (t Token) GetUserProfileDirectory() (string, error) { + n := uint32(100) + for { + b := make([]uint16, n) + e := GetUserProfileDirectory(t, &b[0], &n) + if e == nil { + return UTF16ToString(b), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +// IsElevated returns whether the current token is elevated from a UAC perspective. +func (token Token) IsElevated() bool { + var isElevated uint32 + var outLen uint32 + err := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen) + if err != nil { + return false + } + return outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0 +} + +// GetLinkedToken returns the linked token, which may be an elevated UAC token. +func (token Token) GetLinkedToken() (Token, error) { + var linkedToken Token + var outLen uint32 + err := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen) + if err != nil { + return Token(0), err + } + return linkedToken, nil +} + +// GetSystemDirectory retrieves the path to current location of the system +// directory, which is typically, though not always, `C:\Windows\System32`. +func GetSystemDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// GetWindowsDirectory retrieves the path to current location of the Windows +// directory, which is typically, though not always, `C:\Windows`. This may +// be a private user directory in the case that the application is running +// under a terminal server. +func GetWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// GetSystemWindowsDirectory retrieves the path to current location of the +// Windows directory, which is typically, though not always, `C:\Windows`. +func GetSystemWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// IsMember reports whether the access token t is a member of the provided SID. +func (t Token) IsMember(sid *SID) (bool, error) { + var b int32 + if e := checkTokenMembership(t, sid, &b); e != nil { + return false, e + } + return b != 0, nil +} + +// IsRestricted reports whether the access token t is a restricted token. +func (t Token) IsRestricted() (isRestricted bool, err error) { + isRestricted, err = isTokenRestricted(t) + if !isRestricted && err == syscall.EINVAL { + // If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token. + err = nil + } + return +} + +const ( + WTS_CONSOLE_CONNECT = 0x1 + WTS_CONSOLE_DISCONNECT = 0x2 + WTS_REMOTE_CONNECT = 0x3 + WTS_REMOTE_DISCONNECT = 0x4 + WTS_SESSION_LOGON = 0x5 + WTS_SESSION_LOGOFF = 0x6 + WTS_SESSION_LOCK = 0x7 + WTS_SESSION_UNLOCK = 0x8 + WTS_SESSION_REMOTE_CONTROL = 0x9 + WTS_SESSION_CREATE = 0xa + WTS_SESSION_TERMINATE = 0xb +) + +const ( + WTSActive = 0 + WTSConnected = 1 + WTSConnectQuery = 2 + WTSShadow = 3 + WTSDisconnected = 4 + WTSIdle = 5 + WTSListen = 6 + WTSReset = 7 + WTSDown = 8 + WTSInit = 9 +) + +type WTSSESSION_NOTIFICATION struct { + Size uint32 + SessionID uint32 +} + +type WTS_SESSION_INFO struct { + SessionID uint32 + WindowStationName *uint16 + State uint32 +} + +//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken +//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW +//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory +//sys WTSGetActiveConsoleSessionId() (sessionID uint32) + +type ACL struct { + aclRevision byte + sbz1 byte + aclSize uint16 + aceCount uint16 + sbz2 uint16 +} + +type SECURITY_DESCRIPTOR struct { + revision byte + sbz1 byte + control SECURITY_DESCRIPTOR_CONTROL + owner *SID + group *SID + sacl *ACL + dacl *ACL +} + +type SECURITY_QUALITY_OF_SERVICE struct { + Length uint32 + ImpersonationLevel uint32 + ContextTrackingMode byte + EffectiveOnly byte +} + +// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE. +const ( + SECURITY_STATIC_TRACKING = 0 + SECURITY_DYNAMIC_TRACKING = 1 +) + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor *SECURITY_DESCRIPTOR + InheritHandle uint32 +} + +type SE_OBJECT_TYPE uint32 + +// Constants for type SE_OBJECT_TYPE +const ( + SE_UNKNOWN_OBJECT_TYPE = 0 + SE_FILE_OBJECT = 1 + SE_SERVICE = 2 + SE_PRINTER = 3 + SE_REGISTRY_KEY = 4 + SE_LMSHARE = 5 + SE_KERNEL_OBJECT = 6 + SE_WINDOW_OBJECT = 7 + SE_DS_OBJECT = 8 + SE_DS_OBJECT_ALL = 9 + SE_PROVIDER_DEFINED_OBJECT = 10 + SE_WMIGUID_OBJECT = 11 + SE_REGISTRY_WOW64_32KEY = 12 + SE_REGISTRY_WOW64_64KEY = 13 +) + +type SECURITY_INFORMATION uint32 + +// Constants for type SECURITY_INFORMATION +const ( + OWNER_SECURITY_INFORMATION = 0x00000001 + GROUP_SECURITY_INFORMATION = 0x00000002 + DACL_SECURITY_INFORMATION = 0x00000004 + SACL_SECURITY_INFORMATION = 0x00000008 + LABEL_SECURITY_INFORMATION = 0x00000010 + ATTRIBUTE_SECURITY_INFORMATION = 0x00000020 + SCOPE_SECURITY_INFORMATION = 0x00000040 + BACKUP_SECURITY_INFORMATION = 0x00010000 + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 +) + +type SECURITY_DESCRIPTOR_CONTROL uint16 + +// Constants for type SECURITY_DESCRIPTOR_CONTROL +const ( + SE_OWNER_DEFAULTED = 0x0001 + SE_GROUP_DEFAULTED = 0x0002 + SE_DACL_PRESENT = 0x0004 + SE_DACL_DEFAULTED = 0x0008 + SE_SACL_PRESENT = 0x0010 + SE_SACL_DEFAULTED = 0x0020 + SE_DACL_AUTO_INHERIT_REQ = 0x0100 + SE_SACL_AUTO_INHERIT_REQ = 0x0200 + SE_DACL_AUTO_INHERITED = 0x0400 + SE_SACL_AUTO_INHERITED = 0x0800 + SE_DACL_PROTECTED = 0x1000 + SE_SACL_PROTECTED = 0x2000 + SE_RM_CONTROL_VALID = 0x4000 + SE_SELF_RELATIVE = 0x8000 +) + +type ACCESS_MASK uint32 + +// Constants for type ACCESS_MASK +const ( + DELETE = 0x00010000 + READ_CONTROL = 0x00020000 + WRITE_DAC = 0x00040000 + WRITE_OWNER = 0x00080000 + SYNCHRONIZE = 0x00100000 + STANDARD_RIGHTS_REQUIRED = 0x000F0000 + STANDARD_RIGHTS_READ = READ_CONTROL + STANDARD_RIGHTS_WRITE = READ_CONTROL + STANDARD_RIGHTS_EXECUTE = READ_CONTROL + STANDARD_RIGHTS_ALL = 0x001F0000 + SPECIFIC_RIGHTS_ALL = 0x0000FFFF + ACCESS_SYSTEM_SECURITY = 0x01000000 + MAXIMUM_ALLOWED = 0x02000000 + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 +) + +type ACCESS_MODE uint32 + +// Constants for type ACCESS_MODE +const ( + NOT_USED_ACCESS = 0 + GRANT_ACCESS = 1 + SET_ACCESS = 2 + DENY_ACCESS = 3 + REVOKE_ACCESS = 4 + SET_AUDIT_SUCCESS = 5 + SET_AUDIT_FAILURE = 6 +) + +// Constants for AceFlags and Inheritance fields +const ( + NO_INHERITANCE = 0x0 + SUB_OBJECTS_ONLY_INHERIT = 0x1 + SUB_CONTAINERS_ONLY_INHERIT = 0x2 + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3 + INHERIT_NO_PROPAGATE = 0x4 + INHERIT_ONLY = 0x8 + INHERITED_ACCESS_ENTRY = 0x10 + INHERITED_PARENT = 0x10000000 + INHERITED_GRANDPARENT = 0x20000000 + OBJECT_INHERIT_ACE = 0x1 + CONTAINER_INHERIT_ACE = 0x2 + NO_PROPAGATE_INHERIT_ACE = 0x4 + INHERIT_ONLY_ACE = 0x8 + INHERITED_ACE = 0x10 + VALID_INHERIT_FLAGS = 0x1F +) + +type MULTIPLE_TRUSTEE_OPERATION uint32 + +// Constants for MULTIPLE_TRUSTEE_OPERATION +const ( + NO_MULTIPLE_TRUSTEE = 0 + TRUSTEE_IS_IMPERSONATE = 1 +) + +type TRUSTEE_FORM uint32 + +// Constants for TRUSTEE_FORM +const ( + TRUSTEE_IS_SID = 0 + TRUSTEE_IS_NAME = 1 + TRUSTEE_BAD_FORM = 2 + TRUSTEE_IS_OBJECTS_AND_SID = 3 + TRUSTEE_IS_OBJECTS_AND_NAME = 4 +) + +type TRUSTEE_TYPE uint32 + +// Constants for TRUSTEE_TYPE +const ( + TRUSTEE_IS_UNKNOWN = 0 + TRUSTEE_IS_USER = 1 + TRUSTEE_IS_GROUP = 2 + TRUSTEE_IS_DOMAIN = 3 + TRUSTEE_IS_ALIAS = 4 + TRUSTEE_IS_WELL_KNOWN_GROUP = 5 + TRUSTEE_IS_DELETED = 6 + TRUSTEE_IS_INVALID = 7 + TRUSTEE_IS_COMPUTER = 8 +) + +// Constants for ObjectsPresent field +const ( + ACE_OBJECT_TYPE_PRESENT = 0x1 + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 +) + +type EXPLICIT_ACCESS struct { + AccessPermissions ACCESS_MASK + AccessMode ACCESS_MODE + Inheritance uint32 + Trustee TRUSTEE +} + +// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions. +type TrusteeValue uintptr + +func TrusteeValueFromString(str string) TrusteeValue { + return TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str))) +} +func TrusteeValueFromSID(sid *SID) TrusteeValue { + return TrusteeValue(unsafe.Pointer(sid)) +} +func TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue { + return TrusteeValue(unsafe.Pointer(objectsAndSid)) +} +func TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue { + return TrusteeValue(unsafe.Pointer(objectsAndName)) +} + +type TRUSTEE struct { + MultipleTrustee *TRUSTEE + MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION + TrusteeForm TRUSTEE_FORM + TrusteeType TRUSTEE_TYPE + TrusteeValue TrusteeValue +} + +type OBJECTS_AND_SID struct { + ObjectsPresent uint32 + ObjectTypeGuid GUID + InheritedObjectTypeGuid GUID + Sid *SID +} + +type OBJECTS_AND_NAME struct { + ObjectsPresent uint32 + ObjectType SE_OBJECT_TYPE + ObjectTypeName *uint16 + InheritedObjectTypeName *uint16 + Name *uint16 +} + +//sys getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo +//sys SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo +//sys getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW +//sys SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW +//sys SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity + +//sys buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW +//sys initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor + +//sys getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl +//sys getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl +//sys getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl +//sys getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner +//sys getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup +//sys getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength +//sys getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl +//sys isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor + +//sys setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl +//sys setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl +//sys setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl +//sys setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner +//sys setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup +//sys setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl + +//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW +//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW + +//sys makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD +//sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD + +//sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW + +// Control returns the security descriptor control bits. +func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) { + err = getSecurityDescriptorControl(sd, &control, &revision) + return +} + +// SetControl sets the security descriptor control bits. +func (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error { + return setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet) +} + +// RMControl returns the security descriptor resource manager control bits. +func (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) { + err = getSecurityDescriptorRMControl(sd, &control) + return +} + +// SetRMControl sets the security descriptor resource manager control bits. +func (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) { + setSecurityDescriptorRMControl(sd, &rmControl) +} + +// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil +// if a DACL exists but is an "empty DACL", meaning fully permissive. If the DACL does not exist, err returns +// ERROR_OBJECT_NOT_FOUND. +func (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) { + var present bool + err = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted) + if !present { + err = ERROR_OBJECT_NOT_FOUND + } + return +} + +// SetDACL sets the absolute security descriptor DACL. +func (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error { + return setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted) +} + +// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil +// if a SACL exists but is an "empty SACL", meaning fully permissive. If the SACL does not exist, err returns +// ERROR_OBJECT_NOT_FOUND. +func (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) { + var present bool + err = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted) + if !present { + err = ERROR_OBJECT_NOT_FOUND + } + return +} + +// SetSACL sets the absolute security descriptor SACL. +func (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error { + return setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted) +} + +// Owner returns the security descriptor owner and whether it was defaulted. +func (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) { + err = getSecurityDescriptorOwner(sd, &owner, &defaulted) + return +} + +// SetOwner sets the absolute security descriptor owner. +func (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error { + return setSecurityDescriptorOwner(absoluteSD, owner, defaulted) +} + +// Group returns the security descriptor group and whether it was defaulted. +func (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) { + err = getSecurityDescriptorGroup(sd, &group, &defaulted) + return +} + +// SetGroup sets the absolute security descriptor owner. +func (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error { + return setSecurityDescriptorGroup(absoluteSD, group, defaulted) +} + +// Length returns the length of the security descriptor. +func (sd *SECURITY_DESCRIPTOR) Length() uint32 { + return getSecurityDescriptorLength(sd) +} + +// IsValid returns whether the security descriptor is valid. +func (sd *SECURITY_DESCRIPTOR) IsValid() bool { + return isValidSecurityDescriptor(sd) +} + +// String returns the SDDL form of the security descriptor, with a function signature that can be +// used with %v formatting directives. +func (sd *SECURITY_DESCRIPTOR) String() string { + var sddl *uint16 + err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil) + if err != nil { + return "" + } + defer LocalFree(Handle(unsafe.Pointer(sddl))) + return UTF16PtrToString(sddl) +} + +// ToAbsolute converts a self-relative security descriptor into an absolute one. +func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) { + control, _, err := selfRelativeSD.Control() + if err != nil { + return + } + if control&SE_SELF_RELATIVE == 0 { + err = ERROR_INVALID_PARAMETER + return + } + var absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32 + err = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize, + nil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize) + switch err { + case ERROR_INSUFFICIENT_BUFFER: + case nil: + // makeAbsoluteSD is expected to fail, but it succeeds. + return nil, ERROR_INTERNAL_ERROR + default: + return nil, err + } + if absoluteSDSize > 0 { + absoluteSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0])) + } + var ( + dacl *ACL + sacl *ACL + owner *SID + group *SID + ) + if daclSize > 0 { + dacl = (*ACL)(unsafe.Pointer(&make([]byte, daclSize)[0])) + } + if saclSize > 0 { + sacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0])) + } + if ownerSize > 0 { + owner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0])) + } + if groupSize > 0 { + group = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0])) + } + err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize, + dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize) + return +} + +// ToSelfRelative converts an absolute security descriptor into a self-relative one. +func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) { + control, _, err := absoluteSD.Control() + if err != nil { + return + } + if control&SE_SELF_RELATIVE != 0 { + err = ERROR_INVALID_PARAMETER + return + } + var selfRelativeSDSize uint32 + err = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize) + switch err { + case ERROR_INSUFFICIENT_BUFFER: + case nil: + // makeSelfRelativeSD is expected to fail, but it succeeds. + return nil, ERROR_INTERNAL_ERROR + default: + return nil, err + } + if selfRelativeSDSize > 0 { + selfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0])) + } + err = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize) + return +} + +func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR { + sdLen := int(selfRelativeSD.Length()) + const min = int(unsafe.Sizeof(SECURITY_DESCRIPTOR{})) + if sdLen < min { + sdLen = min + } + + src := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen) + // SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to + // be aligned properly. When we're copying a Windows-allocated struct to a + // Go-allocated one, make sure that the Go allocation is aligned to the + // pointer size. + const psize = int(unsafe.Sizeof(uintptr(0))) + alloc := make([]uintptr, (sdLen+psize-1)/psize) + dst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen) + copy(dst, src) + return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0])) +} + +// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a +// self-relative security descriptor object allocated on the Go heap. +func SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// GetSecurityInfo queries the security information for a given handle and returns the self-relative security +// descriptor result on the Go heap. +func GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security +// descriptor result on the Go heap. +func GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and +// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor +// result on the Go heap. +func BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + var winHeapSDSize uint32 + var firstAccessEntry *EXPLICIT_ACCESS + if len(accessEntries) > 0 { + firstAccessEntry = &accessEntries[0] + } + var firstAuditEntry *EXPLICIT_ACCESS + if len(auditEntries) > 0 { + firstAuditEntry = &auditEntries[0] + } + err = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// NewSecurityDescriptor creates and initializes a new absolute security descriptor. +func NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) { + absoluteSD = &SECURITY_DESCRIPTOR{} + err = initializeSecurityDescriptor(absoluteSD, 1) + return +} + +// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL. +// Both explicitEntries and mergedACL are optional and can be nil. +func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) { + var firstExplicitEntry *EXPLICIT_ACCESS + if len(explicitEntries) > 0 { + firstExplicitEntry = &explicitEntries[0] + } + var winHeapACL *ACL + err = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapACL))) + aclBytes := make([]byte, winHeapACL.aclSize) + copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)]) + return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil +} diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go new file mode 100644 index 0000000..a9dc630 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/service.go @@ -0,0 +1,257 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +const ( + SC_MANAGER_CONNECT = 1 + SC_MANAGER_CREATE_SERVICE = 2 + SC_MANAGER_ENUMERATE_SERVICE = 4 + SC_MANAGER_LOCK = 8 + SC_MANAGER_QUERY_LOCK_STATUS = 16 + SC_MANAGER_MODIFY_BOOT_CONFIG = 32 + SC_MANAGER_ALL_ACCESS = 0xf003f +) + +const ( + SERVICE_KERNEL_DRIVER = 1 + SERVICE_FILE_SYSTEM_DRIVER = 2 + SERVICE_ADAPTER = 4 + SERVICE_RECOGNIZER_DRIVER = 8 + SERVICE_WIN32_OWN_PROCESS = 16 + SERVICE_WIN32_SHARE_PROCESS = 32 + SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS = 256 + SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER + SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS + + SERVICE_BOOT_START = 0 + SERVICE_SYSTEM_START = 1 + SERVICE_AUTO_START = 2 + SERVICE_DEMAND_START = 3 + SERVICE_DISABLED = 4 + + SERVICE_ERROR_IGNORE = 0 + SERVICE_ERROR_NORMAL = 1 + SERVICE_ERROR_SEVERE = 2 + SERVICE_ERROR_CRITICAL = 3 + + SC_STATUS_PROCESS_INFO = 0 + + SC_ACTION_NONE = 0 + SC_ACTION_RESTART = 1 + SC_ACTION_REBOOT = 2 + SC_ACTION_RUN_COMMAND = 3 + + SERVICE_STOPPED = 1 + SERVICE_START_PENDING = 2 + SERVICE_STOP_PENDING = 3 + SERVICE_RUNNING = 4 + SERVICE_CONTINUE_PENDING = 5 + SERVICE_PAUSE_PENDING = 6 + SERVICE_PAUSED = 7 + SERVICE_NO_CHANGE = 0xffffffff + + SERVICE_ACCEPT_STOP = 1 + SERVICE_ACCEPT_PAUSE_CONTINUE = 2 + SERVICE_ACCEPT_SHUTDOWN = 4 + SERVICE_ACCEPT_PARAMCHANGE = 8 + SERVICE_ACCEPT_NETBINDCHANGE = 16 + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32 + SERVICE_ACCEPT_POWEREVENT = 64 + SERVICE_ACCEPT_SESSIONCHANGE = 128 + SERVICE_ACCEPT_PRESHUTDOWN = 256 + + SERVICE_CONTROL_STOP = 1 + SERVICE_CONTROL_PAUSE = 2 + SERVICE_CONTROL_CONTINUE = 3 + SERVICE_CONTROL_INTERROGATE = 4 + SERVICE_CONTROL_SHUTDOWN = 5 + SERVICE_CONTROL_PARAMCHANGE = 6 + SERVICE_CONTROL_NETBINDADD = 7 + SERVICE_CONTROL_NETBINDREMOVE = 8 + SERVICE_CONTROL_NETBINDENABLE = 9 + SERVICE_CONTROL_NETBINDDISABLE = 10 + SERVICE_CONTROL_DEVICEEVENT = 11 + SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12 + SERVICE_CONTROL_POWEREVENT = 13 + SERVICE_CONTROL_SESSIONCHANGE = 14 + SERVICE_CONTROL_PRESHUTDOWN = 15 + + SERVICE_ACTIVE = 1 + SERVICE_INACTIVE = 2 + SERVICE_STATE_ALL = 3 + + SERVICE_QUERY_CONFIG = 1 + SERVICE_CHANGE_CONFIG = 2 + SERVICE_QUERY_STATUS = 4 + SERVICE_ENUMERATE_DEPENDENTS = 8 + SERVICE_START = 16 + SERVICE_STOP = 32 + SERVICE_PAUSE_CONTINUE = 64 + SERVICE_INTERROGATE = 128 + SERVICE_USER_DEFINED_CONTROL = 256 + SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + + SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 + + SERVICE_CONFIG_DESCRIPTION = 1 + SERVICE_CONFIG_FAILURE_ACTIONS = 2 + SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 3 + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 4 + SERVICE_CONFIG_SERVICE_SID_INFO = 5 + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6 + SERVICE_CONFIG_PRESHUTDOWN_INFO = 7 + SERVICE_CONFIG_TRIGGER_INFO = 8 + SERVICE_CONFIG_PREFERRED_NODE = 9 + SERVICE_CONFIG_LAUNCH_PROTECTED = 12 + + SERVICE_SID_TYPE_NONE = 0 + SERVICE_SID_TYPE_UNRESTRICTED = 1 + SERVICE_SID_TYPE_RESTRICTED = 2 | SERVICE_SID_TYPE_UNRESTRICTED + + SC_ENUM_PROCESS_INFO = 0 + + SERVICE_NOTIFY_STATUS_CHANGE = 2 + SERVICE_NOTIFY_STOPPED = 0x00000001 + SERVICE_NOTIFY_START_PENDING = 0x00000002 + SERVICE_NOTIFY_STOP_PENDING = 0x00000004 + SERVICE_NOTIFY_RUNNING = 0x00000008 + SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010 + SERVICE_NOTIFY_PAUSE_PENDING = 0x00000020 + SERVICE_NOTIFY_PAUSED = 0x00000040 + SERVICE_NOTIFY_CREATED = 0x00000080 + SERVICE_NOTIFY_DELETED = 0x00000100 + SERVICE_NOTIFY_DELETE_PENDING = 0x00000200 + + SC_EVENT_DATABASE_CHANGE = 0 + SC_EVENT_PROPERTY_CHANGE = 1 + SC_EVENT_STATUS_CHANGE = 2 + + SERVICE_START_REASON_DEMAND = 0x00000001 + SERVICE_START_REASON_AUTO = 0x00000002 + SERVICE_START_REASON_TRIGGER = 0x00000004 + SERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008 + SERVICE_START_REASON_DELAYEDAUTO = 0x00000010 + + SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1 +) + +type ENUM_SERVICE_STATUS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatus SERVICE_STATUS +} + +type SERVICE_STATUS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 +} + +type SERVICE_TABLE_ENTRY struct { + ServiceName *uint16 + ServiceProc uintptr +} + +type QUERY_SERVICE_CONFIG struct { + ServiceType uint32 + StartType uint32 + ErrorControl uint32 + BinaryPathName *uint16 + LoadOrderGroup *uint16 + TagId uint32 + Dependencies *uint16 + ServiceStartName *uint16 + DisplayName *uint16 +} + +type SERVICE_DESCRIPTION struct { + Description *uint16 +} + +type SERVICE_DELAYED_AUTO_START_INFO struct { + IsDelayedAutoStartUp uint32 +} + +type SERVICE_STATUS_PROCESS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 + ProcessId uint32 + ServiceFlags uint32 +} + +type ENUM_SERVICE_STATUS_PROCESS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatusProcess SERVICE_STATUS_PROCESS +} + +type SERVICE_NOTIFY struct { + Version uint32 + NotifyCallback uintptr + Context uintptr + NotificationStatus uint32 + ServiceStatus SERVICE_STATUS_PROCESS + NotificationTriggered uint32 + ServiceNames *uint16 +} + +type SERVICE_FAILURE_ACTIONS struct { + ResetPeriod uint32 + RebootMsg *uint16 + Command *uint16 + ActionsCount uint32 + Actions *SC_ACTION +} + +type SERVICE_FAILURE_ACTIONS_FLAG struct { + FailureActionsOnNonCrashFailures int32 +} + +type SC_ACTION struct { + Type uint32 + Delay uint32 +} + +type QUERY_SERVICE_LOCK_STATUS struct { + IsLocked uint32 + LockOwner *uint16 + LockDuration uint32 +} + +//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW +//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle +//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW +//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW +//sys DeleteService(service Handle) (err error) = advapi32.DeleteService +//sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW +//sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus +//sys QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW +//sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService +//sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW +//sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus +//sys ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW +//sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW +//sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W +//sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W +//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW +//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx +//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW +//sys SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications? +//sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications? +//sys RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW +//sys QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation? +//sys EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW diff --git a/vendor/golang.org/x/sys/windows/setupapi_windows.go b/vendor/golang.org/x/sys/windows/setupapi_windows.go new file mode 100644 index 0000000..f812648 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/setupapi_windows.go @@ -0,0 +1,1425 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "encoding/binary" + "errors" + "fmt" + "runtime" + "strings" + "syscall" + "unsafe" +) + +// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll, +// core system functions for managing hardware devices, drivers, and the PnP tree. +// Information about these APIs can be found at: +// https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi +// https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32- + +const ( + ERROR_EXPECTED_SECTION_NAME Errno = 0x20000000 | 0xC0000000 | 0 + ERROR_BAD_SECTION_NAME_LINE Errno = 0x20000000 | 0xC0000000 | 1 + ERROR_SECTION_NAME_TOO_LONG Errno = 0x20000000 | 0xC0000000 | 2 + ERROR_GENERAL_SYNTAX Errno = 0x20000000 | 0xC0000000 | 3 + ERROR_WRONG_INF_STYLE Errno = 0x20000000 | 0xC0000000 | 0x100 + ERROR_SECTION_NOT_FOUND Errno = 0x20000000 | 0xC0000000 | 0x101 + ERROR_LINE_NOT_FOUND Errno = 0x20000000 | 0xC0000000 | 0x102 + ERROR_NO_BACKUP Errno = 0x20000000 | 0xC0000000 | 0x103 + ERROR_NO_ASSOCIATED_CLASS Errno = 0x20000000 | 0xC0000000 | 0x200 + ERROR_CLASS_MISMATCH Errno = 0x20000000 | 0xC0000000 | 0x201 + ERROR_DUPLICATE_FOUND Errno = 0x20000000 | 0xC0000000 | 0x202 + ERROR_NO_DRIVER_SELECTED Errno = 0x20000000 | 0xC0000000 | 0x203 + ERROR_KEY_DOES_NOT_EXIST Errno = 0x20000000 | 0xC0000000 | 0x204 + ERROR_INVALID_DEVINST_NAME Errno = 0x20000000 | 0xC0000000 | 0x205 + ERROR_INVALID_CLASS Errno = 0x20000000 | 0xC0000000 | 0x206 + ERROR_DEVINST_ALREADY_EXISTS Errno = 0x20000000 | 0xC0000000 | 0x207 + ERROR_DEVINFO_NOT_REGISTERED Errno = 0x20000000 | 0xC0000000 | 0x208 + ERROR_INVALID_REG_PROPERTY Errno = 0x20000000 | 0xC0000000 | 0x209 + ERROR_NO_INF Errno = 0x20000000 | 0xC0000000 | 0x20A + ERROR_NO_SUCH_DEVINST Errno = 0x20000000 | 0xC0000000 | 0x20B + ERROR_CANT_LOAD_CLASS_ICON Errno = 0x20000000 | 0xC0000000 | 0x20C + ERROR_INVALID_CLASS_INSTALLER Errno = 0x20000000 | 0xC0000000 | 0x20D + ERROR_DI_DO_DEFAULT Errno = 0x20000000 | 0xC0000000 | 0x20E + ERROR_DI_NOFILECOPY Errno = 0x20000000 | 0xC0000000 | 0x20F + ERROR_INVALID_HWPROFILE Errno = 0x20000000 | 0xC0000000 | 0x210 + ERROR_NO_DEVICE_SELECTED Errno = 0x20000000 | 0xC0000000 | 0x211 + ERROR_DEVINFO_LIST_LOCKED Errno = 0x20000000 | 0xC0000000 | 0x212 + ERROR_DEVINFO_DATA_LOCKED Errno = 0x20000000 | 0xC0000000 | 0x213 + ERROR_DI_BAD_PATH Errno = 0x20000000 | 0xC0000000 | 0x214 + ERROR_NO_CLASSINSTALL_PARAMS Errno = 0x20000000 | 0xC0000000 | 0x215 + ERROR_FILEQUEUE_LOCKED Errno = 0x20000000 | 0xC0000000 | 0x216 + ERROR_BAD_SERVICE_INSTALLSECT Errno = 0x20000000 | 0xC0000000 | 0x217 + ERROR_NO_CLASS_DRIVER_LIST Errno = 0x20000000 | 0xC0000000 | 0x218 + ERROR_NO_ASSOCIATED_SERVICE Errno = 0x20000000 | 0xC0000000 | 0x219 + ERROR_NO_DEFAULT_DEVICE_INTERFACE Errno = 0x20000000 | 0xC0000000 | 0x21A + ERROR_DEVICE_INTERFACE_ACTIVE Errno = 0x20000000 | 0xC0000000 | 0x21B + ERROR_DEVICE_INTERFACE_REMOVED Errno = 0x20000000 | 0xC0000000 | 0x21C + ERROR_BAD_INTERFACE_INSTALLSECT Errno = 0x20000000 | 0xC0000000 | 0x21D + ERROR_NO_SUCH_INTERFACE_CLASS Errno = 0x20000000 | 0xC0000000 | 0x21E + ERROR_INVALID_REFERENCE_STRING Errno = 0x20000000 | 0xC0000000 | 0x21F + ERROR_INVALID_MACHINENAME Errno = 0x20000000 | 0xC0000000 | 0x220 + ERROR_REMOTE_COMM_FAILURE Errno = 0x20000000 | 0xC0000000 | 0x221 + ERROR_MACHINE_UNAVAILABLE Errno = 0x20000000 | 0xC0000000 | 0x222 + ERROR_NO_CONFIGMGR_SERVICES Errno = 0x20000000 | 0xC0000000 | 0x223 + ERROR_INVALID_PROPPAGE_PROVIDER Errno = 0x20000000 | 0xC0000000 | 0x224 + ERROR_NO_SUCH_DEVICE_INTERFACE Errno = 0x20000000 | 0xC0000000 | 0x225 + ERROR_DI_POSTPROCESSING_REQUIRED Errno = 0x20000000 | 0xC0000000 | 0x226 + ERROR_INVALID_COINSTALLER Errno = 0x20000000 | 0xC0000000 | 0x227 + ERROR_NO_COMPAT_DRIVERS Errno = 0x20000000 | 0xC0000000 | 0x228 + ERROR_NO_DEVICE_ICON Errno = 0x20000000 | 0xC0000000 | 0x229 + ERROR_INVALID_INF_LOGCONFIG Errno = 0x20000000 | 0xC0000000 | 0x22A + ERROR_DI_DONT_INSTALL Errno = 0x20000000 | 0xC0000000 | 0x22B + ERROR_INVALID_FILTER_DRIVER Errno = 0x20000000 | 0xC0000000 | 0x22C + ERROR_NON_WINDOWS_NT_DRIVER Errno = 0x20000000 | 0xC0000000 | 0x22D + ERROR_NON_WINDOWS_DRIVER Errno = 0x20000000 | 0xC0000000 | 0x22E + ERROR_NO_CATALOG_FOR_OEM_INF Errno = 0x20000000 | 0xC0000000 | 0x22F + ERROR_DEVINSTALL_QUEUE_NONNATIVE Errno = 0x20000000 | 0xC0000000 | 0x230 + ERROR_NOT_DISABLEABLE Errno = 0x20000000 | 0xC0000000 | 0x231 + ERROR_CANT_REMOVE_DEVINST Errno = 0x20000000 | 0xC0000000 | 0x232 + ERROR_INVALID_TARGET Errno = 0x20000000 | 0xC0000000 | 0x233 + ERROR_DRIVER_NONNATIVE Errno = 0x20000000 | 0xC0000000 | 0x234 + ERROR_IN_WOW64 Errno = 0x20000000 | 0xC0000000 | 0x235 + ERROR_SET_SYSTEM_RESTORE_POINT Errno = 0x20000000 | 0xC0000000 | 0x236 + ERROR_SCE_DISABLED Errno = 0x20000000 | 0xC0000000 | 0x238 + ERROR_UNKNOWN_EXCEPTION Errno = 0x20000000 | 0xC0000000 | 0x239 + ERROR_PNP_REGISTRY_ERROR Errno = 0x20000000 | 0xC0000000 | 0x23A + ERROR_REMOTE_REQUEST_UNSUPPORTED Errno = 0x20000000 | 0xC0000000 | 0x23B + ERROR_NOT_AN_INSTALLED_OEM_INF Errno = 0x20000000 | 0xC0000000 | 0x23C + ERROR_INF_IN_USE_BY_DEVICES Errno = 0x20000000 | 0xC0000000 | 0x23D + ERROR_DI_FUNCTION_OBSOLETE Errno = 0x20000000 | 0xC0000000 | 0x23E + ERROR_NO_AUTHENTICODE_CATALOG Errno = 0x20000000 | 0xC0000000 | 0x23F + ERROR_AUTHENTICODE_DISALLOWED Errno = 0x20000000 | 0xC0000000 | 0x240 + ERROR_AUTHENTICODE_TRUSTED_PUBLISHER Errno = 0x20000000 | 0xC0000000 | 0x241 + ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED Errno = 0x20000000 | 0xC0000000 | 0x242 + ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Errno = 0x20000000 | 0xC0000000 | 0x243 + ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH Errno = 0x20000000 | 0xC0000000 | 0x244 + ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE Errno = 0x20000000 | 0xC0000000 | 0x245 + ERROR_DEVICE_INSTALLER_NOT_READY Errno = 0x20000000 | 0xC0000000 | 0x246 + ERROR_DRIVER_STORE_ADD_FAILED Errno = 0x20000000 | 0xC0000000 | 0x247 + ERROR_DEVICE_INSTALL_BLOCKED Errno = 0x20000000 | 0xC0000000 | 0x248 + ERROR_DRIVER_INSTALL_BLOCKED Errno = 0x20000000 | 0xC0000000 | 0x249 + ERROR_WRONG_INF_TYPE Errno = 0x20000000 | 0xC0000000 | 0x24A + ERROR_FILE_HASH_NOT_IN_CATALOG Errno = 0x20000000 | 0xC0000000 | 0x24B + ERROR_DRIVER_STORE_DELETE_FAILED Errno = 0x20000000 | 0xC0000000 | 0x24C + ERROR_UNRECOVERABLE_STACK_OVERFLOW Errno = 0x20000000 | 0xC0000000 | 0x300 + EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW + ERROR_NO_DEFAULT_INTERFACE_DEVICE Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE + ERROR_INTERFACE_DEVICE_ACTIVE Errno = ERROR_DEVICE_INTERFACE_ACTIVE + ERROR_INTERFACE_DEVICE_REMOVED Errno = ERROR_DEVICE_INTERFACE_REMOVED + ERROR_NO_SUCH_INTERFACE_DEVICE Errno = ERROR_NO_SUCH_DEVICE_INTERFACE +) + +const ( + MAX_DEVICE_ID_LEN = 200 + MAX_DEVNODE_ID_LEN = MAX_DEVICE_ID_LEN + MAX_GUID_STRING_LEN = 39 // 38 chars + terminator null + MAX_CLASS_NAME_LEN = 32 + MAX_PROFILE_LEN = 80 + MAX_CONFIG_VALUE = 9999 + MAX_INSTANCE_VALUE = 9999 + CONFIGMG_VERSION = 0x0400 +) + +// Maximum string length constants +const ( + LINE_LEN = 256 // Windows 9x-compatible maximum for displayable strings coming from a device INF. + MAX_INF_STRING_LENGTH = 4096 // Actual maximum size of an INF string (including string substitutions). + MAX_INF_SECTION_NAME_LENGTH = 255 // For Windows 9x compatibility, INF section names should be constrained to 32 characters. + MAX_TITLE_LEN = 60 + MAX_INSTRUCTION_LEN = 256 + MAX_LABEL_LEN = 30 + MAX_SERVICE_NAME_LEN = 256 + MAX_SUBTITLE_LEN = 256 +) + +const ( + // SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., "\\\\MachineName\0"). + SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 +) + +// HSPFILEQ is type for setup file queue +type HSPFILEQ uintptr + +// DevInfo holds reference to device information set +type DevInfo Handle + +// DEVINST is a handle usually recognized by cfgmgr32 APIs +type DEVINST uint32 + +// DevInfoData is a device information structure (references a device instance that is a member of a device information set) +type DevInfoData struct { + size uint32 + ClassGUID GUID + DevInst DEVINST + _ uintptr +} + +// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass). +type DevInfoListDetailData struct { + size uint32 // Use unsafeSizeOf method + ClassGUID GUID + RemoteMachineHandle Handle + remoteMachineName [SP_MAX_MACHINENAME_LENGTH]uint16 +} + +func (*DevInfoListDetailData) unsafeSizeOf() uint32 { + if unsafe.Sizeof(uintptr(0)) == 4 { + // Windows declares this with pshpack1.h + return uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName)) + } + return uint32(unsafe.Sizeof(DevInfoListDetailData{})) +} + +func (data *DevInfoListDetailData) RemoteMachineName() string { + return UTF16ToString(data.remoteMachineName[:]) +} + +func (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error { + str, err := UTF16FromString(remoteMachineName) + if err != nil { + return err + } + copy(data.remoteMachineName[:], str) + return nil +} + +// DI_FUNCTION is function type for device installer +type DI_FUNCTION uint32 + +const ( + DIF_SELECTDEVICE DI_FUNCTION = 0x00000001 + DIF_INSTALLDEVICE DI_FUNCTION = 0x00000002 + DIF_ASSIGNRESOURCES DI_FUNCTION = 0x00000003 + DIF_PROPERTIES DI_FUNCTION = 0x00000004 + DIF_REMOVE DI_FUNCTION = 0x00000005 + DIF_FIRSTTIMESETUP DI_FUNCTION = 0x00000006 + DIF_FOUNDDEVICE DI_FUNCTION = 0x00000007 + DIF_SELECTCLASSDRIVERS DI_FUNCTION = 0x00000008 + DIF_VALIDATECLASSDRIVERS DI_FUNCTION = 0x00000009 + DIF_INSTALLCLASSDRIVERS DI_FUNCTION = 0x0000000A + DIF_CALCDISKSPACE DI_FUNCTION = 0x0000000B + DIF_DESTROYPRIVATEDATA DI_FUNCTION = 0x0000000C + DIF_VALIDATEDRIVER DI_FUNCTION = 0x0000000D + DIF_DETECT DI_FUNCTION = 0x0000000F + DIF_INSTALLWIZARD DI_FUNCTION = 0x00000010 + DIF_DESTROYWIZARDDATA DI_FUNCTION = 0x00000011 + DIF_PROPERTYCHANGE DI_FUNCTION = 0x00000012 + DIF_ENABLECLASS DI_FUNCTION = 0x00000013 + DIF_DETECTVERIFY DI_FUNCTION = 0x00000014 + DIF_INSTALLDEVICEFILES DI_FUNCTION = 0x00000015 + DIF_UNREMOVE DI_FUNCTION = 0x00000016 + DIF_SELECTBESTCOMPATDRV DI_FUNCTION = 0x00000017 + DIF_ALLOW_INSTALL DI_FUNCTION = 0x00000018 + DIF_REGISTERDEVICE DI_FUNCTION = 0x00000019 + DIF_NEWDEVICEWIZARD_PRESELECT DI_FUNCTION = 0x0000001A + DIF_NEWDEVICEWIZARD_SELECT DI_FUNCTION = 0x0000001B + DIF_NEWDEVICEWIZARD_PREANALYZE DI_FUNCTION = 0x0000001C + DIF_NEWDEVICEWIZARD_POSTANALYZE DI_FUNCTION = 0x0000001D + DIF_NEWDEVICEWIZARD_FINISHINSTALL DI_FUNCTION = 0x0000001E + DIF_INSTALLINTERFACES DI_FUNCTION = 0x00000020 + DIF_DETECTCANCEL DI_FUNCTION = 0x00000021 + DIF_REGISTER_COINSTALLERS DI_FUNCTION = 0x00000022 + DIF_ADDPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000023 + DIF_ADDPROPERTYPAGE_BASIC DI_FUNCTION = 0x00000024 + DIF_TROUBLESHOOTER DI_FUNCTION = 0x00000026 + DIF_POWERMESSAGEWAKE DI_FUNCTION = 0x00000027 + DIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028 + DIF_UPDATEDRIVER_UI DI_FUNCTION = 0x00000029 + DIF_FINISHINSTALL_ACTION DI_FUNCTION = 0x0000002A +) + +// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set) +type DevInstallParams struct { + size uint32 + Flags DI_FLAGS + FlagsEx DI_FLAGSEX + hwndParent uintptr + InstallMsgHandler uintptr + InstallMsgHandlerContext uintptr + FileQueue HSPFILEQ + _ uintptr + _ uint32 + driverPath [MAX_PATH]uint16 +} + +func (params *DevInstallParams) DriverPath() string { + return UTF16ToString(params.driverPath[:]) +} + +func (params *DevInstallParams) SetDriverPath(driverPath string) error { + str, err := UTF16FromString(driverPath) + if err != nil { + return err + } + copy(params.driverPath[:], str) + return nil +} + +// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values +type DI_FLAGS uint32 + +const ( + // Flags for choosing a device + DI_SHOWOEM DI_FLAGS = 0x00000001 // support Other... button + DI_SHOWCOMPAT DI_FLAGS = 0x00000002 // show compatibility list + DI_SHOWCLASS DI_FLAGS = 0x00000004 // show class list + DI_SHOWALL DI_FLAGS = 0x00000007 // both class & compat list shown + DI_NOVCP DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue + DI_DIDCOMPAT DI_FLAGS = 0x00000010 // Searched for compatible devices + DI_DIDCLASS DI_FLAGS = 0x00000020 // Searched for class devices + DI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible + + // Flags returned by DiInstallDevice to indicate need to reboot/restart + DI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect + DI_NEEDREBOOT DI_FLAGS = 0x00000100 // "" + + // Flags for device installation + DI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk + + // Flags set by DiBuildDriverInfoList + DI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list + + // Flag indicates that device is disabled + DI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled + + // Flags for Device/Class Properties + DI_GENERALPAGE_ADDED DI_FLAGS = 0x00001000 + DI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000 + + // Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated. + DI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000 + + // Flag to indicate that the sorting from the INF file should be used. + DI_INF_IS_SORTED DI_FLAGS = 0x00008000 + + // Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched. + DI_ENUMSINGLEINF DI_FLAGS = 0x00010000 + + // Flag that prevents ConfigMgr from removing/re-enumerating devices during device + // registration, installation, and deletion. + DI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000 + + // The following flag can be used to install a device disabled + DI_INSTALLDISABLED DI_FLAGS = 0x00040000 + + // Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver + // list from its existing class driver list, instead of the normal INF search. + DI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000 + + // This flag is set if the Class Install params should be used. + DI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000 + + // This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT. + DI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000 + + // Flags for device installation + DI_QUIETINSTALL DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info + DI_NOFILECOPY DI_FLAGS = 0x01000000 // No file Copy necessary + DI_FORCECOPY DI_FLAGS = 0x02000000 // Force files to be copied from install path + DI_DRIVERPAGE_ADDED DI_FLAGS = 0x04000000 // Prop provider added Driver page. + DI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg + DI_OVERRIDE_INFFLAGS DI_FLAGS = 0x10000000 // Override INF flags + DI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props + + DI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs + + DI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install +) + +// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values +type DI_FLAGSEX uint32 + +const ( + DI_FLAGSEX_CI_FAILED DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer + DI_FLAGSEX_FINISHINSTALL_ACTION DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context. + DI_FLAGSEX_DIDINFOLIST DI_FLAGSEX = 0x00000010 // Did the Class Info List + DI_FLAGSEX_DIDCOMPATINFO DI_FLAGSEX = 0x00000020 // Did the Compat Info List + DI_FLAGSEX_FILTERCLASSES DI_FLAGSEX = 0x00000040 + DI_FLAGSEX_SETFAILEDINSTALL DI_FLAGSEX = 0x00000080 + DI_FLAGSEX_DEVICECHANGE DI_FLAGSEX = 0x00000100 + DI_FLAGSEX_ALWAYSWRITEIDS DI_FLAGSEX = 0x00000200 + DI_FLAGSEX_PROPCHANGE_PENDING DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur. + DI_FLAGSEX_ALLOWEXCLUDEDDRVS DI_FLAGSEX = 0x00000800 + DI_FLAGSEX_NOUIONQUERYREMOVE DI_FLAGSEX = 0x00001000 + DI_FLAGSEX_USECLASSFORCOMPAT DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.) + DI_FLAGSEX_NO_DRVREG_MODIFY DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key. + DI_FLAGSEX_IN_SYSTEM_SETUP DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup. + DI_FLAGSEX_INET_DRIVER DI_FLAGSEX = 0x00020000 // Driver came from Windows Update + DI_FLAGSEX_APPENDDRIVERLIST DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list. + DI_FLAGSEX_PREINSTALLBACKUP DI_FLAGSEX = 0x00080000 // not used + DI_FLAGSEX_BACKUPONREPLACE DI_FLAGSEX = 0x00100000 // not used + DI_FLAGSEX_DRIVERLIST_FROM_URL DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website) + DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later. + DI_FLAGSEX_POWERPAGE_ADDED DI_FLAGSEX = 0x01000000 // class installer added their own power page + DI_FLAGSEX_FILTERSIMILARDRIVERS DI_FLAGSEX = 0x02000000 // only include similar drivers in class list + DI_FLAGSEX_INSTALLEDDRIVER DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list. Used in calls to SetupDiBuildDriverInfoList + DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list + DI_FLAGSEX_ALTPLATFORM_DRVSEARCH DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue + DI_FLAGSEX_RESTART_DEVICE_ONLY DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers. + DI_FLAGSEX_RECURSIVESEARCH DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search + DI_FLAGSEX_SEARCH_PUBLISHED_INFS DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a "published INF" search +) + +// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure. +type ClassInstallHeader struct { + size uint32 + InstallFunction DI_FUNCTION +} + +func MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader { + hdr := &ClassInstallHeader{InstallFunction: installFunction} + hdr.size = uint32(unsafe.Sizeof(*hdr)) + return hdr +} + +// DICS_STATE specifies values indicating a change in a device's state +type DICS_STATE uint32 + +const ( + DICS_ENABLE DICS_STATE = 0x00000001 // The device is being enabled. + DICS_DISABLE DICS_STATE = 0x00000002 // The device is being disabled. + DICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed. + DICS_START DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile). + DICS_STOP DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device. +) + +// DICS_FLAG specifies the scope of a device property change +type DICS_FLAG uint32 + +const ( + DICS_FLAG_GLOBAL DICS_FLAG = 0x00000001 // make change in all hardware profiles + DICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only + DICS_FLAG_CONFIGGENERAL DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete) +) + +// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function. +type PropChangeParams struct { + ClassInstallHeader ClassInstallHeader + StateChange DICS_STATE + Scope DICS_FLAG + HwProfile uint32 +} + +// DI_REMOVEDEVICE specifies the scope of the device removal +type DI_REMOVEDEVICE uint32 + +const ( + DI_REMOVEDEVICE_GLOBAL DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry. + DI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal. +) + +// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function. +type RemoveDeviceParams struct { + ClassInstallHeader ClassInstallHeader + Scope DI_REMOVEDEVICE + HwProfile uint32 +} + +// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set) +type DrvInfoData struct { + size uint32 + DriverType uint32 + _ uintptr + description [LINE_LEN]uint16 + mfgName [LINE_LEN]uint16 + providerName [LINE_LEN]uint16 + DriverDate Filetime + DriverVersion uint64 +} + +func (data *DrvInfoData) Description() string { + return UTF16ToString(data.description[:]) +} + +func (data *DrvInfoData) SetDescription(description string) error { + str, err := UTF16FromString(description) + if err != nil { + return err + } + copy(data.description[:], str) + return nil +} + +func (data *DrvInfoData) MfgName() string { + return UTF16ToString(data.mfgName[:]) +} + +func (data *DrvInfoData) SetMfgName(mfgName string) error { + str, err := UTF16FromString(mfgName) + if err != nil { + return err + } + copy(data.mfgName[:], str) + return nil +} + +func (data *DrvInfoData) ProviderName() string { + return UTF16ToString(data.providerName[:]) +} + +func (data *DrvInfoData) SetProviderName(providerName string) error { + str, err := UTF16FromString(providerName) + if err != nil { + return err + } + copy(data.providerName[:], str) + return nil +} + +// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters. +func (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool { + if data.DriverDate.HighDateTime > driverDate.HighDateTime { + return true + } + if data.DriverDate.HighDateTime < driverDate.HighDateTime { + return false + } + + if data.DriverDate.LowDateTime > driverDate.LowDateTime { + return true + } + if data.DriverDate.LowDateTime < driverDate.LowDateTime { + return false + } + + if data.DriverVersion > driverVersion { + return true + } + if data.DriverVersion < driverVersion { + return false + } + + return false +} + +// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure) +type DrvInfoDetailData struct { + size uint32 // Use unsafeSizeOf method + InfDate Filetime + compatIDsOffset uint32 + compatIDsLength uint32 + _ uintptr + sectionName [LINE_LEN]uint16 + infFileName [MAX_PATH]uint16 + drvDescription [LINE_LEN]uint16 + hardwareID [1]uint16 +} + +func (*DrvInfoDetailData) unsafeSizeOf() uint32 { + if unsafe.Sizeof(uintptr(0)) == 4 { + // Windows declares this with pshpack1.h + return uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID)) + } + return uint32(unsafe.Sizeof(DrvInfoDetailData{})) +} + +func (data *DrvInfoDetailData) SectionName() string { + return UTF16ToString(data.sectionName[:]) +} + +func (data *DrvInfoDetailData) InfFileName() string { + return UTF16ToString(data.infFileName[:]) +} + +func (data *DrvInfoDetailData) DrvDescription() string { + return UTF16ToString(data.drvDescription[:]) +} + +func (data *DrvInfoDetailData) HardwareID() string { + if data.compatIDsOffset > 1 { + bufW := data.getBuf() + return UTF16ToString(bufW[:wcslen(bufW)]) + } + + return "" +} + +func (data *DrvInfoDetailData) CompatIDs() []string { + a := make([]string, 0) + + if data.compatIDsLength > 0 { + bufW := data.getBuf() + bufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength] + for i := 0; i < len(bufW); { + j := i + wcslen(bufW[i:]) + if i < j { + a = append(a, UTF16ToString(bufW[i:j])) + } + i = j + 1 + } + } + + return a +} + +func (data *DrvInfoDetailData) getBuf() []uint16 { + len := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2 + sl := struct { + addr *uint16 + len int + cap int + }{&data.hardwareID[0], int(len), int(len)} + return *(*[]uint16)(unsafe.Pointer(&sl)) +} + +// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list. +func (data *DrvInfoDetailData) IsCompatible(hwid string) bool { + hwidLC := strings.ToLower(hwid) + if strings.ToLower(data.HardwareID()) == hwidLC { + return true + } + a := data.CompatIDs() + for i := range a { + if strings.ToLower(a[i]) == hwidLC { + return true + } + } + + return false +} + +// DICD flags control SetupDiCreateDeviceInfo +type DICD uint32 + +const ( + DICD_GENERATE_ID DICD = 0x00000001 + DICD_INHERIT_CLASSDRVS DICD = 0x00000002 +) + +// SUOI flags control SetupUninstallOEMInf +type SUOI uint32 + +const ( + SUOI_FORCEDELETE SUOI = 0x0001 +) + +// SPDIT flags to distinguish between class drivers and +// device drivers. (Passed in 'DriverType' parameter of +// driver information list APIs) +type SPDIT uint32 + +const ( + SPDIT_NODRIVER SPDIT = 0x00000000 + SPDIT_CLASSDRIVER SPDIT = 0x00000001 + SPDIT_COMPATDRIVER SPDIT = 0x00000002 +) + +// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs +type DIGCF uint32 + +const ( + DIGCF_DEFAULT DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE + DIGCF_PRESENT DIGCF = 0x00000002 + DIGCF_ALLCLASSES DIGCF = 0x00000004 + DIGCF_PROFILE DIGCF = 0x00000008 + DIGCF_DEVICEINTERFACE DIGCF = 0x00000010 +) + +// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey. +type DIREG uint32 + +const ( + DIREG_DEV DIREG = 0x00000001 // Open/Create/Delete device key + DIREG_DRV DIREG = 0x00000002 // Open/Create/Delete driver key + DIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key +) + +// SPDRP specifies device registry property codes +// (Codes marked as read-only (R) may only be used for +// SetupDiGetDeviceRegistryProperty) +// +// These values should cover the same set of registry properties +// as defined by the CM_DRP codes in cfgmgr32.h. +// +// Note that SPDRP codes are zero based while CM_DRP codes are one based! +type SPDRP uint32 + +const ( + SPDRP_DEVICEDESC SPDRP = 0x00000000 // DeviceDesc (R/W) + SPDRP_HARDWAREID SPDRP = 0x00000001 // HardwareID (R/W) + SPDRP_COMPATIBLEIDS SPDRP = 0x00000002 // CompatibleIDs (R/W) + SPDRP_SERVICE SPDRP = 0x00000004 // Service (R/W) + SPDRP_CLASS SPDRP = 0x00000007 // Class (R--tied to ClassGUID) + SPDRP_CLASSGUID SPDRP = 0x00000008 // ClassGUID (R/W) + SPDRP_DRIVER SPDRP = 0x00000009 // Driver (R/W) + SPDRP_CONFIGFLAGS SPDRP = 0x0000000A // ConfigFlags (R/W) + SPDRP_MFG SPDRP = 0x0000000B // Mfg (R/W) + SPDRP_FRIENDLYNAME SPDRP = 0x0000000C // FriendlyName (R/W) + SPDRP_LOCATION_INFORMATION SPDRP = 0x0000000D // LocationInformation (R/W) + SPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R) + SPDRP_CAPABILITIES SPDRP = 0x0000000F // Capabilities (R) + SPDRP_UI_NUMBER SPDRP = 0x00000010 // UiNumber (R) + SPDRP_UPPERFILTERS SPDRP = 0x00000011 // UpperFilters (R/W) + SPDRP_LOWERFILTERS SPDRP = 0x00000012 // LowerFilters (R/W) + SPDRP_BUSTYPEGUID SPDRP = 0x00000013 // BusTypeGUID (R) + SPDRP_LEGACYBUSTYPE SPDRP = 0x00000014 // LegacyBusType (R) + SPDRP_BUSNUMBER SPDRP = 0x00000015 // BusNumber (R) + SPDRP_ENUMERATOR_NAME SPDRP = 0x00000016 // Enumerator Name (R) + SPDRP_SECURITY SPDRP = 0x00000017 // Security (R/W, binary form) + SPDRP_SECURITY_SDS SPDRP = 0x00000018 // Security (W, SDS form) + SPDRP_DEVTYPE SPDRP = 0x00000019 // Device Type (R/W) + SPDRP_EXCLUSIVE SPDRP = 0x0000001A // Device is exclusive-access (R/W) + SPDRP_CHARACTERISTICS SPDRP = 0x0000001B // Device Characteristics (R/W) + SPDRP_ADDRESS SPDRP = 0x0000001C // Device Address (R) + SPDRP_UI_NUMBER_DESC_FORMAT SPDRP = 0x0000001D // UiNumberDescFormat (R/W) + SPDRP_DEVICE_POWER_DATA SPDRP = 0x0000001E // Device Power Data (R) + SPDRP_REMOVAL_POLICY SPDRP = 0x0000001F // Removal Policy (R) + SPDRP_REMOVAL_POLICY_HW_DEFAULT SPDRP = 0x00000020 // Hardware Removal Policy (R) + SPDRP_REMOVAL_POLICY_OVERRIDE SPDRP = 0x00000021 // Removal Policy Override (RW) + SPDRP_INSTALL_STATE SPDRP = 0x00000022 // Device Install State (R) + SPDRP_LOCATION_PATHS SPDRP = 0x00000023 // Device Location Paths (R) + SPDRP_BASE_CONTAINERID SPDRP = 0x00000024 // Base ContainerID (R) + + SPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals +) + +// DEVPROPTYPE represents the property-data-type identifier that specifies the +// data type of a device property value in the unified device property model. +type DEVPROPTYPE uint32 + +const ( + DEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000 + DEVPROP_TYPEMOD_LIST DEVPROPTYPE = 0x00002000 + + DEVPROP_TYPE_EMPTY DEVPROPTYPE = 0x00000000 + DEVPROP_TYPE_NULL DEVPROPTYPE = 0x00000001 + DEVPROP_TYPE_SBYTE DEVPROPTYPE = 0x00000002 + DEVPROP_TYPE_BYTE DEVPROPTYPE = 0x00000003 + DEVPROP_TYPE_INT16 DEVPROPTYPE = 0x00000004 + DEVPROP_TYPE_UINT16 DEVPROPTYPE = 0x00000005 + DEVPROP_TYPE_INT32 DEVPROPTYPE = 0x00000006 + DEVPROP_TYPE_UINT32 DEVPROPTYPE = 0x00000007 + DEVPROP_TYPE_INT64 DEVPROPTYPE = 0x00000008 + DEVPROP_TYPE_UINT64 DEVPROPTYPE = 0x00000009 + DEVPROP_TYPE_FLOAT DEVPROPTYPE = 0x0000000A + DEVPROP_TYPE_DOUBLE DEVPROPTYPE = 0x0000000B + DEVPROP_TYPE_DECIMAL DEVPROPTYPE = 0x0000000C + DEVPROP_TYPE_GUID DEVPROPTYPE = 0x0000000D + DEVPROP_TYPE_CURRENCY DEVPROPTYPE = 0x0000000E + DEVPROP_TYPE_DATE DEVPROPTYPE = 0x0000000F + DEVPROP_TYPE_FILETIME DEVPROPTYPE = 0x00000010 + DEVPROP_TYPE_BOOLEAN DEVPROPTYPE = 0x00000011 + DEVPROP_TYPE_STRING DEVPROPTYPE = 0x00000012 + DEVPROP_TYPE_STRING_LIST DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST + DEVPROP_TYPE_SECURITY_DESCRIPTOR DEVPROPTYPE = 0x00000013 + DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014 + DEVPROP_TYPE_DEVPROPKEY DEVPROPTYPE = 0x00000015 + DEVPROP_TYPE_DEVPROPTYPE DEVPROPTYPE = 0x00000016 + DEVPROP_TYPE_BINARY DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY + DEVPROP_TYPE_ERROR DEVPROPTYPE = 0x00000017 + DEVPROP_TYPE_NTSTATUS DEVPROPTYPE = 0x00000018 + DEVPROP_TYPE_STRING_INDIRECT DEVPROPTYPE = 0x00000019 + + MAX_DEVPROP_TYPE DEVPROPTYPE = 0x00000019 + MAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000 + + DEVPROP_MASK_TYPE DEVPROPTYPE = 0x00000FFF + DEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000 +) + +// DEVPROPGUID specifies a property category. +type DEVPROPGUID GUID + +// DEVPROPID uniquely identifies the property within the property category. +type DEVPROPID uint32 + +const DEVPROPID_FIRST_USABLE DEVPROPID = 2 + +// DEVPROPKEY represents a device property key for a device property in the +// unified device property model. +type DEVPROPKEY struct { + FmtID DEVPROPGUID + PID DEVPROPID +} + +// CONFIGRET is a return value or error code from cfgmgr32 APIs +type CONFIGRET uint32 + +func (ret CONFIGRET) Error() string { + if win32Error, ok := ret.Unwrap().(Errno); ok { + return fmt.Sprintf("%s (CfgMgr error: 0x%08x)", win32Error.Error(), uint32(ret)) + } + return fmt.Sprintf("CfgMgr error: 0x%08x", uint32(ret)) +} + +func (ret CONFIGRET) Win32Error(defaultError Errno) Errno { + return cm_MapCrToWin32Err(ret, defaultError) +} + +func (ret CONFIGRET) Unwrap() error { + const noMatch = Errno(^uintptr(0)) + win32Error := ret.Win32Error(noMatch) + if win32Error == noMatch { + return nil + } + return win32Error +} + +const ( + CR_SUCCESS CONFIGRET = 0x00000000 + CR_DEFAULT CONFIGRET = 0x00000001 + CR_OUT_OF_MEMORY CONFIGRET = 0x00000002 + CR_INVALID_POINTER CONFIGRET = 0x00000003 + CR_INVALID_FLAG CONFIGRET = 0x00000004 + CR_INVALID_DEVNODE CONFIGRET = 0x00000005 + CR_INVALID_DEVINST = CR_INVALID_DEVNODE + CR_INVALID_RES_DES CONFIGRET = 0x00000006 + CR_INVALID_LOG_CONF CONFIGRET = 0x00000007 + CR_INVALID_ARBITRATOR CONFIGRET = 0x00000008 + CR_INVALID_NODELIST CONFIGRET = 0x00000009 + CR_DEVNODE_HAS_REQS CONFIGRET = 0x0000000A + CR_DEVINST_HAS_REQS = CR_DEVNODE_HAS_REQS + CR_INVALID_RESOURCEID CONFIGRET = 0x0000000B + CR_DLVXD_NOT_FOUND CONFIGRET = 0x0000000C + CR_NO_SUCH_DEVNODE CONFIGRET = 0x0000000D + CR_NO_SUCH_DEVINST = CR_NO_SUCH_DEVNODE + CR_NO_MORE_LOG_CONF CONFIGRET = 0x0000000E + CR_NO_MORE_RES_DES CONFIGRET = 0x0000000F + CR_ALREADY_SUCH_DEVNODE CONFIGRET = 0x00000010 + CR_ALREADY_SUCH_DEVINST = CR_ALREADY_SUCH_DEVNODE + CR_INVALID_RANGE_LIST CONFIGRET = 0x00000011 + CR_INVALID_RANGE CONFIGRET = 0x00000012 + CR_FAILURE CONFIGRET = 0x00000013 + CR_NO_SUCH_LOGICAL_DEV CONFIGRET = 0x00000014 + CR_CREATE_BLOCKED CONFIGRET = 0x00000015 + CR_NOT_SYSTEM_VM CONFIGRET = 0x00000016 + CR_REMOVE_VETOED CONFIGRET = 0x00000017 + CR_APM_VETOED CONFIGRET = 0x00000018 + CR_INVALID_LOAD_TYPE CONFIGRET = 0x00000019 + CR_BUFFER_SMALL CONFIGRET = 0x0000001A + CR_NO_ARBITRATOR CONFIGRET = 0x0000001B + CR_NO_REGISTRY_HANDLE CONFIGRET = 0x0000001C + CR_REGISTRY_ERROR CONFIGRET = 0x0000001D + CR_INVALID_DEVICE_ID CONFIGRET = 0x0000001E + CR_INVALID_DATA CONFIGRET = 0x0000001F + CR_INVALID_API CONFIGRET = 0x00000020 + CR_DEVLOADER_NOT_READY CONFIGRET = 0x00000021 + CR_NEED_RESTART CONFIGRET = 0x00000022 + CR_NO_MORE_HW_PROFILES CONFIGRET = 0x00000023 + CR_DEVICE_NOT_THERE CONFIGRET = 0x00000024 + CR_NO_SUCH_VALUE CONFIGRET = 0x00000025 + CR_WRONG_TYPE CONFIGRET = 0x00000026 + CR_INVALID_PRIORITY CONFIGRET = 0x00000027 + CR_NOT_DISABLEABLE CONFIGRET = 0x00000028 + CR_FREE_RESOURCES CONFIGRET = 0x00000029 + CR_QUERY_VETOED CONFIGRET = 0x0000002A + CR_CANT_SHARE_IRQ CONFIGRET = 0x0000002B + CR_NO_DEPENDENT CONFIGRET = 0x0000002C + CR_SAME_RESOURCES CONFIGRET = 0x0000002D + CR_NO_SUCH_REGISTRY_KEY CONFIGRET = 0x0000002E + CR_INVALID_MACHINENAME CONFIGRET = 0x0000002F + CR_REMOTE_COMM_FAILURE CONFIGRET = 0x00000030 + CR_MACHINE_UNAVAILABLE CONFIGRET = 0x00000031 + CR_NO_CM_SERVICES CONFIGRET = 0x00000032 + CR_ACCESS_DENIED CONFIGRET = 0x00000033 + CR_CALL_NOT_IMPLEMENTED CONFIGRET = 0x00000034 + CR_INVALID_PROPERTY CONFIGRET = 0x00000035 + CR_DEVICE_INTERFACE_ACTIVE CONFIGRET = 0x00000036 + CR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037 + CR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038 + CR_INVALID_CONFLICT_LIST CONFIGRET = 0x00000039 + CR_INVALID_INDEX CONFIGRET = 0x0000003A + CR_INVALID_STRUCTURE_SIZE CONFIGRET = 0x0000003B + NUM_CR_RESULTS CONFIGRET = 0x0000003C +) + +const ( + CM_GET_DEVICE_INTERFACE_LIST_PRESENT = 0 // only currently 'live' device interfaces + CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not +) + +const ( + DN_ROOT_ENUMERATED = 0x00000001 // Was enumerated by ROOT + DN_DRIVER_LOADED = 0x00000002 // Has Register_Device_Driver + DN_ENUM_LOADED = 0x00000004 // Has Register_Enumerator + DN_STARTED = 0x00000008 // Is currently configured + DN_MANUAL = 0x00000010 // Manually installed + DN_NEED_TO_ENUM = 0x00000020 // May need reenumeration + DN_NOT_FIRST_TIME = 0x00000040 // Has received a config + DN_HARDWARE_ENUM = 0x00000080 // Enum generates hardware ID + DN_LIAR = 0x00000100 // Lied about can reconfig once + DN_HAS_MARK = 0x00000200 // Not CM_Create_DevInst lately + DN_HAS_PROBLEM = 0x00000400 // Need device installer + DN_FILTERED = 0x00000800 // Is filtered + DN_MOVED = 0x00001000 // Has been moved + DN_DISABLEABLE = 0x00002000 // Can be disabled + DN_REMOVABLE = 0x00004000 // Can be removed + DN_PRIVATE_PROBLEM = 0x00008000 // Has a private problem + DN_MF_PARENT = 0x00010000 // Multi function parent + DN_MF_CHILD = 0x00020000 // Multi function child + DN_WILL_BE_REMOVED = 0x00040000 // DevInst is being removed + DN_NOT_FIRST_TIMEE = 0x00080000 // Has received a config enumerate + DN_STOP_FREE_RES = 0x00100000 // When child is stopped, free resources + DN_REBAL_CANDIDATE = 0x00200000 // Don't skip during rebalance + DN_BAD_PARTIAL = 0x00400000 // This devnode's log_confs do not have same resources + DN_NT_ENUMERATOR = 0x00800000 // This devnode's is an NT enumerator + DN_NT_DRIVER = 0x01000000 // This devnode's is an NT driver + DN_NEEDS_LOCKING = 0x02000000 // Devnode need lock resume processing + DN_ARM_WAKEUP = 0x04000000 // Devnode can be the wakeup device + DN_APM_ENUMERATOR = 0x08000000 // APM aware enumerator + DN_APM_DRIVER = 0x10000000 // APM aware driver + DN_SILENT_INSTALL = 0x20000000 // Silent install + DN_NO_SHOW_IN_DM = 0x40000000 // No show in device manager + DN_BOOT_LOG_PROB = 0x80000000 // Had a problem during preassignment of boot log conf + DN_NEED_RESTART = DN_LIAR // System needs to be restarted for this Devnode to work properly + DN_DRIVER_BLOCKED = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode + DN_LEGACY_DRIVER = DN_MOVED // This device is using a legacy driver + DN_CHILD_WITH_INVALID_ID = DN_HAS_MARK // One or more children have invalid IDs + DN_DEVICE_DISCONNECTED = DN_NEEDS_LOCKING // The function driver for a device reported that the device is not connected. Typically this means a wireless device is out of range. + DN_QUERY_REMOVE_PENDING = DN_MF_PARENT // Device is part of a set of related devices collectively pending query-removal + DN_QUERY_REMOVE_ACTIVE = DN_MF_CHILD // Device is actively engaged in a query-remove IRP + DN_CHANGEABLE_FLAGS = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM +) + +//sys setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW + +// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class. +func SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) { + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return + } + } + return setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0) +} + +//sys setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW + +// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name. +func SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) { + data := &DevInfoListDetailData{} + data.size = data.unsafeSizeOf() + + return data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data) +} + +// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name. +func (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) { + return SetupDiGetDeviceInfoListDetail(deviceInfoSet) +} + +//sys setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW + +// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set. +func SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) { + deviceNameUTF16, err := UTF16PtrFromString(deviceName) + if err != nil { + return + } + + var deviceDescriptionUTF16 *uint16 + if deviceDescription != "" { + deviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription) + if err != nil { + return + } + } + + data := &DevInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data) +} + +// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set. +func (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) { + return SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags) +} + +//sys setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo + +// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set. +func SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) { + data := &DevInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data) +} + +// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set. +func (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) { + return SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex) +} + +// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory. +//sys SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList + +// Close method deletes a device information set and frees all associated memory. +func (deviceInfoSet DevInfo) Close() error { + return SetupDiDestroyDeviceInfoList(deviceInfoSet) +} + +//sys SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList + +// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set. +func (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error { + return SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType) +} + +//sys SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch + +// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread. +func (deviceInfoSet DevInfo) CancelDriverInfoSearch() error { + return SetupDiCancelDriverInfoSearch(deviceInfoSet) +} + +//sys setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW + +// SetupDiEnumDriverInfo function enumerates the members of a driver list. +func SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) { + data := &DrvInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data) +} + +// EnumDriverInfo method enumerates the members of a driver list. +func (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) { + return SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex) +} + +//sys setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW + +// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element. +func SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) { + data := &DrvInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data) +} + +// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) { + return SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData) +} + +//sys SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW + +// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set. +func (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error { + return SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData) +} + +//sys setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW + +// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set. +func SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) { + reqSize := uint32(2048) + for { + buf := make([]byte, reqSize) + data := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0])) + data.size = data.unsafeSizeOf() + err := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return nil, err + } + data.size = reqSize + return data, nil + } +} + +// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set. +func (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) { + return SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData) +} + +//sys SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList + +// DestroyDriverInfoList method deletes a driver list. +func (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error { + return SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType) +} + +//sys setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW + +// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer. +func SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) { + var enumeratorUTF16 *uint16 + if enumerator != "" { + enumeratorUTF16, err = UTF16PtrFromString(enumerator) + if err != nil { + return + } + } + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return + } + } + return setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0) +} + +// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code). +//sys SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller + +// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code). +func (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error { + return SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData) +} + +// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information. +//sys SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey + +// OpenDevRegKey method opens a registry key for device-specific configuration information. +func (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) { + return SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired) +} + +//sys setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW + +// SetupDiGetDeviceProperty function retrieves a specified device instance property. +func SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value interface{}, err error) { + reqSize := uint32(256) + for { + var dataType DEVPROPTYPE + buf := make([]byte, reqSize) + err = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return + } + switch dataType { + case DEVPROP_TYPE_STRING: + ret := UTF16ToString(bufToUTF16(buf)) + runtime.KeepAlive(buf) + return ret, nil + } + return nil, errors.New("unimplemented property type") + } +} + +//sys setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW + +// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property. +func SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value interface{}, err error) { + reqSize := uint32(256) + for { + var dataType uint32 + buf := make([]byte, reqSize) + err = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return + } + return getRegistryValue(buf[:reqSize], dataType) + } +} + +func getRegistryValue(buf []byte, dataType uint32) (interface{}, error) { + switch dataType { + case REG_SZ: + ret := UTF16ToString(bufToUTF16(buf)) + runtime.KeepAlive(buf) + return ret, nil + case REG_EXPAND_SZ: + value := UTF16ToString(bufToUTF16(buf)) + if value == "" { + return "", nil + } + p, err := syscall.UTF16PtrFromString(value) + if err != nil { + return "", err + } + ret := make([]uint16, 100) + for { + n, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret))) + if err != nil { + return "", err + } + if n <= uint32(len(ret)) { + return UTF16ToString(ret[:n]), nil + } + ret = make([]uint16, n) + } + case REG_BINARY: + return buf, nil + case REG_DWORD_LITTLE_ENDIAN: + return binary.LittleEndian.Uint32(buf), nil + case REG_DWORD_BIG_ENDIAN: + return binary.BigEndian.Uint32(buf), nil + case REG_MULTI_SZ: + bufW := bufToUTF16(buf) + a := []string{} + for i := 0; i < len(bufW); { + j := i + wcslen(bufW[i:]) + if i < j { + a = append(a, UTF16ToString(bufW[i:j])) + } + i = j + 1 + } + runtime.KeepAlive(buf) + return a, nil + case REG_QWORD_LITTLE_ENDIAN: + return binary.LittleEndian.Uint64(buf), nil + default: + return nil, fmt.Errorf("Unsupported registry value type: %v", dataType) + } +} + +// bufToUTF16 function reinterprets []byte buffer as []uint16 +func bufToUTF16(buf []byte) []uint16 { + sl := struct { + addr *uint16 + len int + cap int + }{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2} + return *(*[]uint16)(unsafe.Pointer(&sl)) +} + +// utf16ToBuf function reinterprets []uint16 as []byte +func utf16ToBuf(buf []uint16) []byte { + sl := struct { + addr *byte + len int + cap int + }{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2} + return *(*[]byte)(unsafe.Pointer(&sl)) +} + +func wcslen(str []uint16) int { + for i := 0; i < len(str); i++ { + if str[i] == 0 { + return i + } + } + return len(str) +} + +// DeviceRegistryProperty method retrieves a specified Plug and Play device property. +func (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (interface{}, error) { + return SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property) +} + +//sys setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW + +// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device. +func SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error { + return setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers))) +} + +// SetDeviceRegistryProperty function sets a Plug and Play device property for a device. +func (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error { + return SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers) +} + +// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device. +func (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error { + str16, err := UTF16FromString(str) + if err != nil { + return err + } + err = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0))) + runtime.KeepAlive(str16) + return err +} + +//sys setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW + +// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element. +func SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) { + params := &DevInstallParams{} + params.size = uint32(unsafe.Sizeof(*params)) + + return params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params) +} + +// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) { + return SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData) +} + +//sys setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW + +// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device. +func SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) { + reqSize := uint32(1024) + for { + buf := make([]uint16, reqSize) + err := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return "", err + } + return UTF16ToString(buf), nil + } +} + +// DeviceInstanceID method retrieves the instance ID of the device. +func (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) { + return SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData) +} + +// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element. +//sys SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW + +// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error { + return SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize) +} + +//sys SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW + +// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error { + return SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams) +} + +// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element. +//sys SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW + +// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error { + return SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize) +} + +//sys setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW + +// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer. +func SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) { + var classNameUTF16 [MAX_CLASS_NAME_LEN]uint16 + + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return + } + } + + err = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0) + if err != nil { + return + } + + className = UTF16ToString(classNameUTF16[:]) + return +} + +//sys setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW + +// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer. +func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) { + classNameUTF16, err := UTF16PtrFromString(className) + if err != nil { + return nil, err + } + + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return nil, err + } + } + + reqSize := uint32(4) + for { + buf := make([]GUID, reqSize) + err = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return nil, err + } + return buf[:reqSize], nil + } +} + +//sys setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice + +// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set. +func SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) { + data := &DevInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiGetSelectedDevice(deviceInfoSet, data) +} + +// SelectedDevice method retrieves the selected device information element in a device information set. +func (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) { + return SetupDiGetSelectedDevice(deviceInfoSet) +} + +// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard. +//sys SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice + +// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard. +func (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error { + return SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData) +} + +//sys setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW + +// SetupUninstallOEMInf uninstalls the specified driver. +func SetupUninstallOEMInf(infFileName string, flags SUOI) error { + infFileName16, err := UTF16PtrFromString(infFileName) + if err != nil { + return err + } + return setupUninstallOEMInf(infFileName16, flags, 0) +} + +//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err + +//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW +//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW + +func CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) { + deviceID16, err := UTF16PtrFromString(deviceID) + if err != nil { + return nil, err + } + var buf []uint16 + var buflen uint32 + for { + if ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS { + return nil, ret + } + buf = make([]uint16, buflen) + if ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS { + break + } else if ret != CR_BUFFER_SMALL { + return nil, ret + } + } + var interfaces []string + for i := 0; i < len(buf); { + j := i + wcslen(buf[i:]) + if i < j { + interfaces = append(interfaces, UTF16ToString(buf[i:j])) + } + i = j + 1 + } + if interfaces == nil { + return nil, ERROR_NO_SUCH_DEVICE_INTERFACE + } + return interfaces, nil +} + +//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status + +func CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error { + ret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags) + if ret == CR_SUCCESS { + return nil + } + return ret +} diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go new file mode 100644 index 0000000..6a4f9ce --- /dev/null +++ b/vendor/golang.org/x/sys/windows/str.go @@ -0,0 +1,22 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + itoa(-val) + } + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go new file mode 100644 index 0000000..e85ed6b --- /dev/null +++ b/vendor/golang.org/x/sys/windows/syscall.go @@ -0,0 +1,104 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +// Package windows contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display the OS-specific documentation for the current +// system. If you want godoc to display syscall documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package windows // import "golang.org/x/sys/windows" + +import ( + "bytes" + "strings" + "syscall" + "unsafe" +) + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, syscall.EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any +// bytes after the NUL removed. +func ByteSliceToString(s []byte) string { + if i := bytes.IndexByte(s, 0); i != -1 { + s = s[:i] + } + return string(s) +} + +// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string. +// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated +// at a zero byte; if the zero byte is not present, the program may crash. +func BytePtrToString(p *byte) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + 1) + } + + return string(unsafe.Slice(p, n)) +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +// See mksyscall.pl. +var _zero uintptr + +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go new file mode 100644 index 0000000..6395a03 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -0,0 +1,1836 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows system calls. + +package windows + +import ( + errorspkg "errors" + "fmt" + "runtime" + "sync" + "syscall" + "time" + "unicode/utf16" + "unsafe" +) + +type Handle uintptr +type HWND uintptr + +const ( + InvalidHandle = ^Handle(0) + InvalidHWND = ^HWND(0) + + // Flags for DefineDosDevice. + DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 + DDD_NO_BROADCAST_SYSTEM = 0x00000008 + DDD_RAW_TARGET_PATH = 0x00000001 + DDD_REMOVE_DEFINITION = 0x00000002 + + // Return values for GetDriveType. + DRIVE_UNKNOWN = 0 + DRIVE_NO_ROOT_DIR = 1 + DRIVE_REMOVABLE = 2 + DRIVE_FIXED = 3 + DRIVE_REMOTE = 4 + DRIVE_CDROM = 5 + DRIVE_RAMDISK = 6 + + // File system flags from GetVolumeInformation and GetVolumeInformationByHandle. + FILE_CASE_SENSITIVE_SEARCH = 0x00000001 + FILE_CASE_PRESERVED_NAMES = 0x00000002 + FILE_FILE_COMPRESSION = 0x00000010 + FILE_DAX_VOLUME = 0x20000000 + FILE_NAMED_STREAMS = 0x00040000 + FILE_PERSISTENT_ACLS = 0x00000008 + FILE_READ_ONLY_VOLUME = 0x00080000 + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000 + FILE_SUPPORTS_ENCRYPTION = 0x00020000 + FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000 + FILE_SUPPORTS_HARD_LINKS = 0x00400000 + FILE_SUPPORTS_OBJECT_IDS = 0x00010000 + FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000 + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 + FILE_SUPPORTS_SPARSE_FILES = 0x00000040 + FILE_SUPPORTS_TRANSACTIONS = 0x00200000 + FILE_SUPPORTS_USN_JOURNAL = 0x02000000 + FILE_UNICODE_ON_DISK = 0x00000004 + FILE_VOLUME_IS_COMPRESSED = 0x00008000 + FILE_VOLUME_QUOTAS = 0x00000020 + + // Flags for LockFileEx. + LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 + LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 + + // Return value of SleepEx and other APC functions + WAIT_IO_COMPLETION = 0x000000C0 +) + +// StringToUTF16 is deprecated. Use UTF16FromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16(s string) []uint16 { + a, err := UTF16FromString(s) + if err != nil { + panic("windows: string with NUL passed to StringToUTF16") + } + return a +} + +// UTF16FromString returns the UTF-16 encoding of the UTF-8 string +// s, with a terminating NUL added. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func UTF16FromString(s string) ([]uint16, error) { + return syscall.UTF16FromString(s) +} + +// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, +// with a terminating NUL and any bytes after the NUL removed. +func UTF16ToString(s []uint16) string { + return syscall.UTF16ToString(s) +} + +// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] } + +// UTF16PtrFromString returns pointer to the UTF-16 encoding of +// the UTF-8 string s, with a terminating NUL added. If s +// contains a NUL byte at any location, it returns (nil, syscall.EINVAL). +func UTF16PtrFromString(s string) (*uint16, error) { + a, err := UTF16FromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string. +// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated +// at a zero word; if the zero word is not present, the program may crash. +func UTF16PtrToString(p *uint16) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p)) + } + return UTF16ToString(unsafe.Slice(p, n)) +} + +func Getpagesize() int { return 4096 } + +// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallback(fn interface{}) uintptr { + return syscall.NewCallback(fn) +} + +// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallbackCDecl(fn interface{}) uintptr { + return syscall.NewCallbackCDecl(fn) +} + +// windows api calls + +//sys GetLastError() (lasterr error) +//sys LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW +//sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW +//sys FreeLibrary(handle Handle) (err error) +//sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) +//sys GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW +//sys GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW +//sys SetDefaultDllDirectories(directoryFlags uint32) (err error) +//sys AddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory +//sys RemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory +//sys SetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW +//sys GetVersion() (ver uint32, err error) +//sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW +//sys ExitProcess(exitcode uint32) +//sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process +//sys IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2? +//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW +//sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) +//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) +//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW +//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState +//sys readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile +//sys writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile +//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) +//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] +//sys CloseHandle(handle Handle) (err error) +//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] +//sys SetStdHandle(stdhandle uint32, handle Handle) (err error) +//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW +//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW +//sys FindClose(handle Handle) (err error) +//sys GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) +//sys GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) +//sys SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) +//sys GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW +//sys SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW +//sys CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW +//sys RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW +//sys DeleteFile(path *uint16) (err error) = DeleteFileW +//sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW +//sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW +//sys LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) +//sys UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) +//sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW +//sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW +//sys SetEndOfFile(handle Handle) (err error) +//sys SetFileValidData(handle Handle, validDataLength int64) (err error) +//sys GetSystemTimeAsFileTime(time *Filetime) +//sys GetSystemTimePreciseAsFileTime(time *Filetime) +//sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] +//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) +//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) +//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) +//sys CancelIo(s Handle) (err error) +//sys CancelIoEx(s Handle, o *Overlapped) (err error) +//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW +//sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList +//sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList +//sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute +//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) +//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW +//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId +//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow +//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW +//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx +//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath +//sys TerminateProcess(handle Handle, exitcode uint32) (err error) +//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) +//sys getStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW +//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) +//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) +//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] +//sys waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects +//sys GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW +//sys CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) +//sys GetFileType(filehandle Handle) (n uint32, err error) +//sys CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW +//sys CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext +//sys CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom +//sys GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW +//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW +//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW +//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW +//sys ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW +//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock +//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock +//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64 +//sys GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) +//sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) +//sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW +//sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW +//sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW +//sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW +//sys commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW +//sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] +//sys LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) +//sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) +//sys FlushFileBuffers(handle Handle) (err error) +//sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW +//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW +//sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW +//sys GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW +//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW +//sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) +//sys UnmapViewOfFile(addr uintptr) (err error) +//sys FlushViewOfFile(addr uintptr, length uintptr) (err error) +//sys VirtualLock(addr uintptr, length uintptr) (err error) +//sys VirtualUnlock(addr uintptr, length uintptr) (err error) +//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc +//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree +//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect +//sys VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx +//sys VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery +//sys VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx +//sys ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory +//sys WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory +//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile +//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW +//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW +//sys FindNextChangeNotification(handle Handle) (err error) +//sys FindCloseChangeNotification(handle Handle) (err error) +//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW +//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore +//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore +//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore +//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore +//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore +//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext +//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore +//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain +//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain +//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext +//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext +//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy +//sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW +//sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension +//sys CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore +//sys CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore +//sys CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey +//sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject +//sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject +//sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData +//sys CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData +//sys WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx +//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW +//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey +//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW +//sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW +//sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW +//sys RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue +//sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId +//sys ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId +//sys ClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole +//sys createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole +//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode +//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode +//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo +//sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition +//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW +//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW +//sys resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole +//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot +//sys Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW +//sys Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW +//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW +//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW +//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) +//sys Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) +//sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +//sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW +//sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW +//sys GetCurrentThreadId() (id uint32) +//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW +//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW +//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW +//sys SetEvent(event Handle) (err error) = kernel32.SetEvent +//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent +//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent +//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW +//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW +//sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW +//sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex +//sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx +//sys CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW +//sys AssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject +//sys TerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject +//sys SetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode +//sys ResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread +//sys SetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass +//sys GetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass +//sys QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject +//sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) +//sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) +//sys GetProcessId(process Handle) (id uint32, err error) +//sys QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW +//sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) +//sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost +//sys GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) +//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) +//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys GetActiveProcessorCount(groupNumber uint16) (ret uint32) +//sys GetMaximumProcessorCount(groupNumber uint16) (ret uint32) +//sys EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows +//sys EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows +//sys GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW +//sys GetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow +//sys GetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow +//sys IsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow +//sys IsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode +//sys IsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible +//sys GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo +//sys GetLargePageMinimum() (size uintptr) + +// Volume Management Functions +//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW +//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW +//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW +//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW +//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW +//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW +//sys FindVolumeClose(findVolume Handle) (err error) +//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) +//sys GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW +//sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW +//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] +//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW +//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW +//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW +//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW +//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW +//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW +//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW +//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW +//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW +//sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW +//sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters +//sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters +//sys clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString +//sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2 +//sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid +//sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree +//sys CoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx +//sys CoUninitialize() = ole32.CoUninitialize +//sys CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject +//sys getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages +//sys getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages +//sys getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages +//sys getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages +//sys findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW +//sys SizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource +//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource +//sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource + +// Version APIs +//sys GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW +//sys GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW +//sys VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW + +// Process Status API (PSAPI) +//sys enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses +//sys EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules +//sys EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx +//sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation +//sys GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW +//sys GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW +//sys QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx + +// NT Native APIs +//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb +//sys rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion +//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers +//sys RtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb +//sys RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString +//sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString +//sys NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile +//sys NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile +//sys NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile +//sys RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus +//sys RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus +//sys RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl +//sys NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess +//sys NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess +//sys NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation +//sys NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation +//sys RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable +//sys RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable + +// Desktop Window Manager API (Dwmapi) +//sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute +//sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute + +// Windows Multimedia API +//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod +//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod + +// syscall interface implementation for other packages + +// GetCurrentProcess returns the handle for the current process. +// It is a pseudo handle that does not need to be closed. +// The returned error is always nil. +// +// Deprecated: use CurrentProcess for the same Handle without the nil +// error. +func GetCurrentProcess() (Handle, error) { + return CurrentProcess(), nil +} + +// CurrentProcess returns the handle for the current process. +// It is a pseudo handle that does not need to be closed. +func CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) } + +// GetCurrentThread returns the handle for the current thread. +// It is a pseudo handle that does not need to be closed. +// The returned error is always nil. +// +// Deprecated: use CurrentThread for the same Handle without the nil +// error. +func GetCurrentThread() (Handle, error) { + return CurrentThread(), nil +} + +// CurrentThread returns the handle for the current thread. +// It is a pseudo handle that does not need to be closed. +func CurrentThread() Handle { return Handle(^uintptr(2 - 1)) } + +// GetProcAddressByOrdinal retrieves the address of the exported +// function from module by ordinal. +func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0) + proc = uintptr(r0) + if proc == 0 { + err = errnoErr(e1) + } + return +} + +func Exit(code int) { ExitProcess(uint32(code)) } + +func makeInheritSa() *SecurityAttributes { + var sa SecurityAttributes + sa.Length = uint32(unsafe.Sizeof(sa)) + sa.InheritHandle = 1 + return &sa +} + +func Open(path string, mode int, perm uint32) (fd Handle, err error) { + if len(path) == 0 { + return InvalidHandle, ERROR_FILE_NOT_FOUND + } + pathp, err := UTF16PtrFromString(path) + if err != nil { + return InvalidHandle, err + } + var access uint32 + switch mode & (O_RDONLY | O_WRONLY | O_RDWR) { + case O_RDONLY: + access = GENERIC_READ + case O_WRONLY: + access = GENERIC_WRITE + case O_RDWR: + access = GENERIC_READ | GENERIC_WRITE + } + if mode&O_CREAT != 0 { + access |= GENERIC_WRITE + } + if mode&O_APPEND != 0 { + access &^= GENERIC_WRITE + access |= FILE_APPEND_DATA + } + sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE) + var sa *SecurityAttributes + if mode&O_CLOEXEC == 0 { + sa = makeInheritSa() + } + var createmode uint32 + switch { + case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL): + createmode = CREATE_NEW + case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC): + createmode = CREATE_ALWAYS + case mode&O_CREAT == O_CREAT: + createmode = OPEN_ALWAYS + case mode&O_TRUNC == O_TRUNC: + createmode = TRUNCATE_EXISTING + default: + createmode = OPEN_EXISTING + } + var attrs uint32 = FILE_ATTRIBUTE_NORMAL + if perm&S_IWRITE == 0 { + attrs = FILE_ATTRIBUTE_READONLY + } + h, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0) + return h, e +} + +func Read(fd Handle, p []byte) (n int, err error) { + var done uint32 + e := ReadFile(fd, p, &done, nil) + if e != nil { + if e == ERROR_BROKEN_PIPE { + // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin + return 0, nil + } + return 0, e + } + return int(done), nil +} + +func Write(fd Handle, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var done uint32 + e := WriteFile(fd, p, &done, nil) + if e != nil { + return 0, e + } + return int(done), nil +} + +func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error { + err := readFile(fd, p, done, overlapped) + if raceenabled { + if *done > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), int(*done)) + } + raceAcquire(unsafe.Pointer(&ioSync)) + } + return err +} + +func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + err := writeFile(fd, p, done, overlapped) + if raceenabled && *done > 0 { + raceReadRange(unsafe.Pointer(&p[0]), int(*done)) + } + return err +} + +var ioSync int64 + +func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) { + var w uint32 + switch whence { + case 0: + w = FILE_BEGIN + case 1: + w = FILE_CURRENT + case 2: + w = FILE_END + } + hi := int32(offset >> 32) + lo := int32(offset) + // use GetFileType to check pipe, pipe can't do seek + ft, _ := GetFileType(fd) + if ft == FILE_TYPE_PIPE { + return 0, syscall.EPIPE + } + rlo, e := SetFilePointer(fd, lo, &hi, w) + if e != nil { + return 0, e + } + return int64(hi)<<32 + int64(rlo), nil +} + +func Close(fd Handle) (err error) { + return CloseHandle(fd) +} + +var ( + Stdin = getStdHandle(STD_INPUT_HANDLE) + Stdout = getStdHandle(STD_OUTPUT_HANDLE) + Stderr = getStdHandle(STD_ERROR_HANDLE) +) + +func getStdHandle(stdhandle uint32) (fd Handle) { + r, _ := GetStdHandle(stdhandle) + return r +} + +const ImplementsGetwd = true + +func Getwd() (wd string, err error) { + b := make([]uint16, 300) + n, e := GetCurrentDirectory(uint32(len(b)), &b[0]) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func Chdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return SetCurrentDirectory(pathp) +} + +func Mkdir(path string, mode uint32) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return CreateDirectory(pathp, nil) +} + +func Rmdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return RemoveDirectory(pathp) +} + +func Unlink(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return DeleteFile(pathp) +} + +func Rename(oldpath, newpath string) (err error) { + from, err := UTF16PtrFromString(oldpath) + if err != nil { + return err + } + to, err := UTF16PtrFromString(newpath) + if err != nil { + return err + } + return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) +} + +func ComputerName() (name string, err error) { + var n uint32 = MAX_COMPUTERNAME_LENGTH + 1 + b := make([]uint16, n) + e := GetComputerName(&b[0], &n) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func DurationSinceBoot() time.Duration { + return time.Duration(getTickCount64()) * time.Millisecond +} + +func Ftruncate(fd Handle, length int64) (err error) { + curoffset, e := Seek(fd, 0, 1) + if e != nil { + return e + } + defer Seek(fd, curoffset, 0) + _, e = Seek(fd, length, 0) + if e != nil { + return e + } + e = SetEndOfFile(fd) + if e != nil { + return e + } + return nil +} + +func Gettimeofday(tv *Timeval) (err error) { + var ft Filetime + GetSystemTimeAsFileTime(&ft) + *tv = NsecToTimeval(ft.Nanoseconds()) + return nil +} + +func Pipe(p []Handle) (err error) { + if len(p) != 2 { + return syscall.EINVAL + } + var r, w Handle + e := CreatePipe(&r, &w, makeInheritSa(), 0) + if e != nil { + return e + } + p[0] = r + p[1] = w + return nil +} + +func Utimes(path string, tv []Timeval) (err error) { + if len(tv) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer CloseHandle(h) + a := NsecToFiletime(tv[0].Nanoseconds()) + w := NsecToFiletime(tv[1].Nanoseconds()) + return SetFileTime(h, nil, &a, &w) +} + +func UtimesNano(path string, ts []Timespec) (err error) { + if len(ts) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer CloseHandle(h) + a := NsecToFiletime(TimespecToNsec(ts[0])) + w := NsecToFiletime(TimespecToNsec(ts[1])) + return SetFileTime(h, nil, &a, &w) +} + +func Fsync(fd Handle) (err error) { + return FlushFileBuffers(fd) +} + +func Chmod(path string, mode uint32) (err error) { + p, e := UTF16PtrFromString(path) + if e != nil { + return e + } + attrs, e := GetFileAttributes(p) + if e != nil { + return e + } + if mode&S_IWRITE != 0 { + attrs &^= FILE_ATTRIBUTE_READONLY + } else { + attrs |= FILE_ATTRIBUTE_READONLY + } + return SetFileAttributes(p, attrs) +} + +func LoadGetSystemTimePreciseAsFileTime() error { + return procGetSystemTimePreciseAsFileTime.Find() +} + +func LoadCancelIoEx() error { + return procCancelIoEx.Find() +} + +func LoadSetFileCompletionNotificationModes() error { + return procSetFileCompletionNotificationModes.Find() +} + +func WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + // Every other win32 array API takes arguments as "pointer, count", except for this function. So we + // can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore + // trivially stub this ourselves. + + var handlePtr *Handle + if len(handles) > 0 { + handlePtr = &handles[0] + } + return waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds) +} + +// net api calls + +const socket_error = uintptr(^uint32(0)) + +//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup +//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup +//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl +//sys WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW +//sys WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW +//sys WSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd +//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket +//sys sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto +//sys recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom +//sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt +//sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt +//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind +//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect +//sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname +//sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername +//sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen +//sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown +//sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket +//sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx +//sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs +//sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv +//sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend +//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom +//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo +//sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW +//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname +//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname +//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs +//sys GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname +//sys DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W +//sys DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree +//sys DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W +//sys GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW +//sys FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW +//sys GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry +//sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo +//sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes +//sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW +//sys WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult +//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses +//sys GetACP() (acp uint32) = kernel32.GetACP +//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar +//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [100]int8 +} + +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs +} + +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type RawSockaddrUnix struct { + Family uint16 + Path [UNIX_PATH_MAX]int8 +} + +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, syscall.EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := int32(2) + if n > 0 { + sl += int32(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +type RawSockaddrBth struct { + AddressFamily [2]byte + BtAddr [8]byte + ServiceClassId [16]byte + Port [4]byte +} + +type SockaddrBth struct { + BtAddr uint64 + ServiceClassId GUID + Port uint32 + + raw RawSockaddrBth +} + +func (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) { + family := AF_BTH + sa.raw = RawSockaddrBth{ + AddressFamily: *(*[2]byte)(unsafe.Pointer(&family)), + BtAddr: *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)), + Port: *(*[4]byte)(unsafe.Pointer(&sa.Port)), + ServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)), + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return nil, syscall.EAFNOSUPPORT +} + +func Socket(domain, typ, proto int) (fd Handle, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return InvalidHandle, syscall.EAFNOSUPPORT + } + return socket(int32(domain), int32(typ), int32(proto)) +} + +func SetsockoptInt(fd Handle, level, opt int, value int) (err error) { + v := int32(value) + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v))) +} + +func Bind(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) { + ptr, _, err := sa.sockaddr() + if err != nil { + return err + } + return getBestInterfaceEx(ptr, pdwBestIfIndex) +} + +func Getsockname(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getsockname(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Getpeername(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getpeername(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Listen(s Handle, n int) (err error) { + return listen(s, int32(n)) +} + +func Shutdown(fd Handle, how int) (err error) { + return shutdown(fd, int32(how)) +} + +func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) { + var rsa unsafe.Pointer + var l int32 + if to != nil { + rsa, l, err = to.sockaddr() + if err != nil { + return err + } + } + return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine) +} + +func LoadGetAddrInfo() error { + return procGetAddrInfoW.Find() +} + +var connectExFunc struct { + once sync.Once + addr uintptr + err error +} + +func LoadConnectEx() error { + connectExFunc.once.Do(func() { + var s Handle + s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) + if connectExFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + connectExFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)), + uint32(unsafe.Sizeof(WSAID_CONNECTEX)), + (*byte)(unsafe.Pointer(&connectExFunc.addr)), + uint32(unsafe.Sizeof(connectExFunc.addr)), + &n, nil, 0) + }) + return connectExFunc.err +} + +func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error { + err := LoadConnectEx() + if err != nil { + return errorspkg.New("failed to find ConnectEx: " + err.Error()) + } + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped) +} + +var sendRecvMsgFunc struct { + once sync.Once + sendAddr uintptr + recvAddr uintptr + err error +} + +func loadWSASendRecvMsg() error { + sendRecvMsgFunc.once.Do(func() { + var s Handle + s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) + if sendRecvMsgFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)), + uint32(unsafe.Sizeof(WSAID_WSARECVMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)), + &n, nil, 0) + if sendRecvMsgFunc.err != nil { + return + } + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)), + uint32(unsafe.Sizeof(WSAID_WSASENDMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)), + &n, nil, 0) + }) + return sendRecvMsgFunc.err +} + +func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return err +} + +func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return err +} + +// Invented structures to support what package os expects. +type Rusage struct { + CreationTime Filetime + ExitTime Filetime + KernelTime Filetime + UserTime Filetime +} + +type WaitStatus struct { + ExitCode uint32 +} + +func (w WaitStatus) Exited() bool { return true } + +func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) } + +func (w WaitStatus) Signal() Signal { return -1 } + +func (w WaitStatus) CoreDump() bool { return false } + +func (w WaitStatus) Stopped() bool { return false } + +func (w WaitStatus) Continued() bool { return false } + +func (w WaitStatus) StopSignal() Signal { return -1 } + +func (w WaitStatus) Signaled() bool { return false } + +func (w WaitStatus) TrapCause() int { return -1 } + +// Timespec is an invented structure on Windows, but here for +// consistency with the corresponding package for other operating systems. +type Timespec struct { + Sec int64 + Nsec int64 +} + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = nsec / 1e9 + ts.Nsec = nsec % 1e9 + return +} + +// TODO(brainman): fix all needed for net + +func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS } + +func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + n32, err := recvfrom(fd, p, int32(flags), &rsa, &l) + n = int(n32) + if err != nil { + return + } + from, err = rsa.Sockaddr() + return +} + +func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) { + ptr, l, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, int32(flags), ptr, l) +} + +func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS } + +// The Linger struct is wrong but we only noticed after Go 1. +// sysLinger is the real system call structure. + +// BUG(brainman): The definition of Linger is not appropriate for direct use +// with Setsockopt and Getsockopt. +// Use SetsockoptLinger instead. + +type Linger struct { + Onoff int32 + Linger int32 +} + +type sysLinger struct { + Onoff uint16 + Linger uint16 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +func GetsockoptInt(fd Handle, level, opt int) (int, error) { + v := int32(0) + l := int32(unsafe.Sizeof(v)) + err := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l) + return int(v), err +} + +func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { + sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)} + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys))) +} + +func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) +} +func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) +} +func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { + return syscall.EWINDOWS +} + +func EnumProcesses(processIds []uint32, bytesReturned *uint32) error { + // EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses + // the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy. + var p *uint32 + if len(processIds) > 0 { + p = &processIds[0] + } + size := uint32(len(processIds) * 4) + return enumProcesses(p, size, bytesReturned) +} + +func Getpid() (pid int) { return int(GetCurrentProcessId()) } + +func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { + // NOTE(rsc): The Win32finddata struct is wrong for the system call: + // the two paths are each one uint16 short. Use the correct struct, + // a win32finddata1, and then copy the results out. + // There is no loss of expressivity here, because the final + // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that. + // For Go 1.1, we might avoid the allocation of win32finddata1 here + // by adding a final Bug [2]uint16 field to the struct and then + // adjusting the fields in the result directly. + var data1 win32finddata1 + handle, err = findFirstFile1(name, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func FindNextFile(handle Handle, data *Win32finddata) (err error) { + var data1 win32finddata1 + err = findNextFile1(handle, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func getProcessEntry(pid int) (*ProcessEntry32, error) { + snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) + if err != nil { + return nil, err + } + defer CloseHandle(snapshot) + var procEntry ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + if err = Process32First(snapshot, &procEntry); err != nil { + return nil, err + } + for { + if procEntry.ProcessID == uint32(pid) { + return &procEntry, nil + } + err = Process32Next(snapshot, &procEntry) + if err != nil { + return nil, err + } + } +} + +func Getppid() (ppid int) { + pe, err := getProcessEntry(Getpid()) + if err != nil { + return -1 + } + return int(pe.ParentProcessID) +} + +// TODO(brainman): fix all needed for os +func Fchdir(fd Handle) (err error) { return syscall.EWINDOWS } +func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS } +func Symlink(path, link string) (err error) { return syscall.EWINDOWS } + +func Fchmod(fd Handle, mode uint32) (err error) { return syscall.EWINDOWS } +func Chown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Fchown(fd Handle, uid int, gid int) (err error) { return syscall.EWINDOWS } + +func Getuid() (uid int) { return -1 } +func Geteuid() (euid int) { return -1 } +func Getgid() (gid int) { return -1 } +func Getegid() (egid int) { return -1 } +func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS } + +type Signal int + +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa(int(s)) +} + +func LoadCreateSymbolicLink() error { + return procCreateSymbolicLinkW.Find() +} + +// Readlink returns the destination of the named symbolic link. +func Readlink(path string, buf []byte) (n int, err error) { + fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING, + FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0) + if err != nil { + return -1, err + } + defer CloseHandle(fd) + + rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE) + var bytesReturned uint32 + err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil) + if err != nil { + return -1, err + } + + rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0])) + var s string + switch rdb.ReparseTag { + case IO_REPARSE_TAG_SYMLINK: + data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + case IO_REPARSE_TAG_MOUNT_POINT: + data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + default: + // the path is not a symlink or junction but another type of reparse + // point + return -1, syscall.ENOENT + } + n = copy(buf, []byte(s)) + + return n, nil +} + +// GUIDFromString parses a string in the form of +// "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" into a GUID. +func GUIDFromString(str string) (GUID, error) { + guid := GUID{} + str16, err := syscall.UTF16PtrFromString(str) + if err != nil { + return guid, err + } + err = clsidFromString(str16, &guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// GenerateGUID creates a new random GUID. +func GenerateGUID() (GUID, error) { + guid := GUID{} + err := coCreateGuid(&guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// String returns the canonical string form of the GUID, +// in the form of "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}". +func (guid GUID) String() string { + var str [100]uint16 + chars := stringFromGUID2(&guid, &str[0], int32(len(str))) + if chars <= 1 { + return "" + } + return string(utf16.Decode(str[:chars-1])) +} + +// KnownFolderPath returns a well-known folder path for the current user, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + return Token(0).KnownFolderPath(folderID, flags) +} + +// KnownFolderPath returns a well-known folder path for the user token, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + var p *uint16 + err := shGetKnownFolderPath(folderID, flags, t, &p) + if err != nil { + return "", err + } + defer CoTaskMemFree(unsafe.Pointer(p)) + return UTF16PtrToString(p), nil +} + +// RtlGetVersion returns the version of the underlying operating system, ignoring +// manifest semantics but is affected by the application compatibility layer. +func RtlGetVersion() *OsVersionInfoEx { + info := &OsVersionInfoEx{} + info.osVersionInfoSize = uint32(unsafe.Sizeof(*info)) + // According to documentation, this function always succeeds. + // The function doesn't even check the validity of the + // osVersionInfoSize member. Disassembling ntdll.dll indicates + // that the documentation is indeed correct about that. + _ = rtlGetVersion(info) + return info +} + +// RtlGetNtVersionNumbers returns the version of the underlying operating system, +// ignoring manifest semantics and the application compatibility layer. +func RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) { + rtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber) + buildNumber &= 0xffff + return +} + +// GetProcessPreferredUILanguages retrieves the process preferred UI languages. +func GetProcessPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getProcessPreferredUILanguages) +} + +// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread. +func GetThreadPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getThreadPreferredUILanguages) +} + +// GetUserPreferredUILanguages retrieves information about the user preferred UI languages. +func GetUserPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getUserPreferredUILanguages) +} + +// GetSystemPreferredUILanguages retrieves the system preferred UI languages. +func GetSystemPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getSystemPreferredUILanguages) +} + +func getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) { + size := uint32(128) + for { + var numLanguages uint32 + buf := make([]uint16, size) + err := f(flags, &numLanguages, &buf[0], &size) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return nil, err + } + buf = buf[:size] + if numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with "\0\0" + return []string{}, nil + } + if buf[len(buf)-1] == 0 { + buf = buf[:len(buf)-1] // remove terminating null + } + languages := make([]string, 0, numLanguages) + from := 0 + for i, c := range buf { + if c == 0 { + languages = append(languages, string(utf16.Decode(buf[from:i]))) + from = i + 1 + } + } + return languages, nil + } +} + +func SetConsoleCursorPosition(console Handle, position Coord) error { + return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position)))) +} + +func GetStartupInfo(startupInfo *StartupInfo) error { + getStartupInfo(startupInfo) + return nil +} + +func (s NTStatus) Errno() syscall.Errno { + return rtlNtStatusToDosErrorNoTeb(s) +} + +func langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) } + +func (s NTStatus) Error() string { + b := make([]uint16, 300) + n, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil) + if err != nil { + return fmt.Sprintf("NTSTATUS 0x%08x", uint32(s)) + } + // trim terminating \r and \n + for ; n > 0 && (b[n-1] == '\n' || b[n-1] == '\r'); n-- { + } + return string(utf16.Decode(b[:n])) +} + +// NewNTUnicodeString returns a new NTUnicodeString structure for use with native +// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs +// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for +// the more common *uint16 string type. +func NewNTUnicodeString(s string) (*NTUnicodeString, error) { + var u NTUnicodeString + s16, err := UTF16PtrFromString(s) + if err != nil { + return nil, err + } + RtlInitUnicodeString(&u, s16) + return &u, nil +} + +// Slice returns a uint16 slice that aliases the data in the NTUnicodeString. +func (s *NTUnicodeString) Slice() []uint16 { + slice := unsafe.Slice(s.Buffer, s.MaximumLength) + return slice[:s.Length] +} + +func (s *NTUnicodeString) String() string { + return UTF16ToString(s.Slice()) +} + +// NewNTString returns a new NTString structure for use with native +// NT APIs that work over the NTString type. Note that most Windows APIs +// do not use NTString, and instead UTF16PtrFromString should be used for +// the more common *uint16 string type. +func NewNTString(s string) (*NTString, error) { + var nts NTString + s8, err := BytePtrFromString(s) + if err != nil { + return nil, err + } + RtlInitString(&nts, s8) + return &nts, nil +} + +// Slice returns a byte slice that aliases the data in the NTString. +func (s *NTString) Slice() []byte { + slice := unsafe.Slice(s.Buffer, s.MaximumLength) + return slice[:s.Length] +} + +func (s *NTString) String() string { + return ByteSliceToString(s.Slice()) +} + +// FindResource resolves a resource of the given name and resource type. +func FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) { + var namePtr, resTypePtr uintptr + var name16, resType16 *uint16 + var err error + resolvePtr := func(i interface{}, keep **uint16) (uintptr, error) { + switch v := i.(type) { + case string: + *keep, err = UTF16PtrFromString(v) + if err != nil { + return 0, err + } + return uintptr(unsafe.Pointer(*keep)), nil + case ResourceID: + return uintptr(v), nil + } + return 0, errorspkg.New("parameter must be a ResourceID or a string") + } + namePtr, err = resolvePtr(name, &name16) + if err != nil { + return 0, err + } + resTypePtr, err = resolvePtr(resType, &resType16) + if err != nil { + return 0, err + } + resInfo, err := findResource(module, namePtr, resTypePtr) + runtime.KeepAlive(name16) + runtime.KeepAlive(resType16) + return resInfo, err +} + +func LoadResourceData(module, resInfo Handle) (data []byte, err error) { + size, err := SizeofResource(module, resInfo) + if err != nil { + return + } + resData, err := LoadResource(module, resInfo) + if err != nil { + return + } + ptr, err := LockResource(resData) + if err != nil { + return + } + data = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size) + return +} + +// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page. +type PSAPI_WORKING_SET_EX_BLOCK uint64 + +// Valid returns the validity of this page. +// If this bit is 1, the subsequent members are valid; otherwise they should be ignored. +func (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool { + return (b & 1) == 1 +} + +// ShareCount is the number of processes that share this page. The maximum value of this member is 7. +func (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 { + return b.intField(1, 3) +} + +// Win32Protection is the memory protection attributes of the page. For a list of values, see +// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants +func (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 { + return b.intField(4, 11) +} + +// Shared returns the shared status of this page. +// If this bit is 1, the page can be shared. +func (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool { + return (b & (1 << 15)) == 1 +} + +// Node is the NUMA node. The maximum value of this member is 63. +func (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 { + return b.intField(16, 6) +} + +// Locked returns the locked status of this page. +// If this bit is 1, the virtual page is locked in physical memory. +func (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool { + return (b & (1 << 22)) == 1 +} + +// LargePage returns the large page status of this page. +// If this bit is 1, the page is a large page. +func (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool { + return (b & (1 << 23)) == 1 +} + +// Bad returns the bad status of this page. +// If this bit is 1, the page is has been reported as bad. +func (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool { + return (b & (1 << 31)) == 1 +} + +// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union. +func (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 { + var mask PSAPI_WORKING_SET_EX_BLOCK + for pos := start; pos < start+length; pos++ { + mask |= (1 << pos) + } + + masked := b & mask + return uint64(masked >> start) +} + +// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process. +type PSAPI_WORKING_SET_EX_INFORMATION struct { + // The virtual address. + VirtualAddress Pointer + // A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress. + VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK +} + +// CreatePseudoConsole creates a windows pseudo console. +func CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error { + // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only + // accept arguments that can be casted to uintptr, and Coord can't. + return createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole) +} + +// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`. +func ResizePseudoConsole(pconsole Handle, size Coord) error { + // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only + // accept arguments that can be casted to uintptr, and Coord can't. + return resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size)))) +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go new file mode 100644 index 0000000..359780f --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -0,0 +1,3382 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "net" + "syscall" + "unsafe" +) + +// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and +// other native functions. +type NTStatus uint32 + +const ( + // Invented values to support what package os expects. + O_RDONLY = 0x00000 + O_WRONLY = 0x00001 + O_RDWR = 0x00002 + O_CREAT = 0x00040 + O_EXCL = 0x00080 + O_NOCTTY = 0x00100 + O_TRUNC = 0x00200 + O_NONBLOCK = 0x00800 + O_APPEND = 0x00400 + O_SYNC = 0x01000 + O_ASYNC = 0x02000 + O_CLOEXEC = 0x80000 +) + +const ( + // More invented values for signals + SIGHUP = Signal(0x1) + SIGINT = Signal(0x2) + SIGQUIT = Signal(0x3) + SIGILL = Signal(0x4) + SIGTRAP = Signal(0x5) + SIGABRT = Signal(0x6) + SIGBUS = Signal(0x7) + SIGFPE = Signal(0x8) + SIGKILL = Signal(0x9) + SIGSEGV = Signal(0xb) + SIGPIPE = Signal(0xd) + SIGALRM = Signal(0xe) + SIGTERM = Signal(0xf) +) + +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "bus error", + 8: "floating point exception", + 9: "killed", + 10: "user defined signal 1", + 11: "segmentation fault", + 12: "user defined signal 2", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", +} + +const ( + FILE_READ_DATA = 0x00000001 + FILE_READ_ATTRIBUTES = 0x00000080 + FILE_READ_EA = 0x00000008 + FILE_WRITE_DATA = 0x00000002 + FILE_WRITE_ATTRIBUTES = 0x00000100 + FILE_WRITE_EA = 0x00000010 + FILE_APPEND_DATA = 0x00000004 + FILE_EXECUTE = 0x00000020 + + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_TRAVERSE = 0x00000020 + + FILE_SHARE_READ = 0x00000001 + FILE_SHARE_WRITE = 0x00000002 + FILE_SHARE_DELETE = 0x00000004 + + FILE_ATTRIBUTE_READONLY = 0x00000001 + FILE_ATTRIBUTE_HIDDEN = 0x00000002 + FILE_ATTRIBUTE_SYSTEM = 0x00000004 + FILE_ATTRIBUTE_DIRECTORY = 0x00000010 + FILE_ATTRIBUTE_ARCHIVE = 0x00000020 + FILE_ATTRIBUTE_DEVICE = 0x00000040 + FILE_ATTRIBUTE_NORMAL = 0x00000080 + FILE_ATTRIBUTE_TEMPORARY = 0x00000100 + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 + FILE_ATTRIBUTE_COMPRESSED = 0x00000800 + FILE_ATTRIBUTE_OFFLINE = 0x00001000 + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 + FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 + FILE_ATTRIBUTE_VIRTUAL = 0x00010000 + FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 + FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 + FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 + + INVALID_FILE_ATTRIBUTES = 0xffffffff + + CREATE_NEW = 1 + CREATE_ALWAYS = 2 + OPEN_EXISTING = 3 + OPEN_ALWAYS = 4 + TRUNCATE_EXISTING = 5 + + FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 + FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 + FILE_FLAG_OPEN_NO_RECALL = 0x00100000 + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 + FILE_FLAG_SESSION_AWARE = 0x00800000 + FILE_FLAG_POSIX_SEMANTICS = 0x01000000 + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 + FILE_FLAG_RANDOM_ACCESS = 0x10000000 + FILE_FLAG_NO_BUFFERING = 0x20000000 + FILE_FLAG_OVERLAPPED = 0x40000000 + FILE_FLAG_WRITE_THROUGH = 0x80000000 + + HANDLE_FLAG_INHERIT = 0x00000001 + STARTF_USESTDHANDLES = 0x00000100 + STARTF_USESHOWWINDOW = 0x00000001 + DUPLICATE_CLOSE_SOURCE = 0x00000001 + DUPLICATE_SAME_ACCESS = 0x00000002 + + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) + + FILE_BEGIN = 0 + FILE_CURRENT = 1 + FILE_END = 2 + + LANG_ENGLISH = 0x09 + SUBLANG_ENGLISH_US = 0x01 + + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 + FORMAT_MESSAGE_IGNORE_INSERTS = 512 + FORMAT_MESSAGE_FROM_STRING = 1024 + FORMAT_MESSAGE_FROM_HMODULE = 2048 + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 + FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 + + MAX_PATH = 260 + MAX_LONG_PATH = 32768 + + MAX_MODULE_NAME32 = 255 + + MAX_COMPUTERNAME_LENGTH = 15 + + MAX_DHCPV6_DUID_LENGTH = 130 + + MAX_DNS_SUFFIX_STRING_LENGTH = 256 + + TIME_ZONE_ID_UNKNOWN = 0 + TIME_ZONE_ID_STANDARD = 1 + + TIME_ZONE_ID_DAYLIGHT = 2 + IGNORE = 0 + INFINITE = 0xffffffff + + WAIT_ABANDONED = 0x00000080 + WAIT_OBJECT_0 = 0x00000000 + WAIT_FAILED = 0xFFFFFFFF + + // Access rights for process. + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 + PROCESS_QUERY_INFORMATION = 0x0400 + PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 + PROCESS_SET_INFORMATION = 0x0200 + PROCESS_SET_QUOTA = 0x0100 + PROCESS_SUSPEND_RESUME = 0x0800 + PROCESS_TERMINATE = 0x0001 + PROCESS_VM_OPERATION = 0x0008 + PROCESS_VM_READ = 0x0010 + PROCESS_VM_WRITE = 0x0020 + + // Access rights for thread. + THREAD_DIRECT_IMPERSONATION = 0x0200 + THREAD_GET_CONTEXT = 0x0008 + THREAD_IMPERSONATE = 0x0100 + THREAD_QUERY_INFORMATION = 0x0040 + THREAD_QUERY_LIMITED_INFORMATION = 0x0800 + THREAD_SET_CONTEXT = 0x0010 + THREAD_SET_INFORMATION = 0x0020 + THREAD_SET_LIMITED_INFORMATION = 0x0400 + THREAD_SET_THREAD_TOKEN = 0x0080 + THREAD_SUSPEND_RESUME = 0x0002 + THREAD_TERMINATE = 0x0001 + + FILE_MAP_COPY = 0x01 + FILE_MAP_WRITE = 0x02 + FILE_MAP_READ = 0x04 + FILE_MAP_EXECUTE = 0x20 + + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + CTRL_CLOSE_EVENT = 2 + CTRL_LOGOFF_EVENT = 5 + CTRL_SHUTDOWN_EVENT = 6 + + // Windows reserves errors >= 1<<29 for application use. + APPLICATION_ERROR = 1 << 29 +) + +const ( + // Process creation flags. + CREATE_BREAKAWAY_FROM_JOB = 0x01000000 + CREATE_DEFAULT_ERROR_MODE = 0x04000000 + CREATE_NEW_CONSOLE = 0x00000010 + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_NO_WINDOW = 0x08000000 + CREATE_PROTECTED_PROCESS = 0x00040000 + CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 + CREATE_SEPARATE_WOW_VDM = 0x00000800 + CREATE_SHARED_WOW_VDM = 0x00001000 + CREATE_SUSPENDED = 0x00000004 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + DEBUG_ONLY_THIS_PROCESS = 0x00000002 + DEBUG_PROCESS = 0x00000001 + DETACHED_PROCESS = 0x00000008 + EXTENDED_STARTUPINFO_PRESENT = 0x00080000 + INHERIT_PARENT_AFFINITY = 0x00010000 +) + +const ( + // attributes for ProcThreadAttributeList + PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000 + PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002 + PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003 + PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004 + PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005 + PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 + PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 + PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b + PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016 +) + +const ( + // flags for CreateToolhelp32Snapshot + TH32CS_SNAPHEAPLIST = 0x01 + TH32CS_SNAPPROCESS = 0x02 + TH32CS_SNAPTHREAD = 0x04 + TH32CS_SNAPMODULE = 0x08 + TH32CS_SNAPMODULE32 = 0x10 + TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD + TH32CS_INHERIT = 0x80000000 +) + +const ( + // flags for EnumProcessModulesEx + LIST_MODULES_32BIT = 0x01 + LIST_MODULES_64BIT = 0x02 + LIST_MODULES_ALL = 0x03 + LIST_MODULES_DEFAULT = 0x00 +) + +const ( + // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW + FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 + FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 + FILE_NOTIFY_CHANGE_SIZE = 0x008 + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 + FILE_NOTIFY_CHANGE_CREATION = 0x040 + FILE_NOTIFY_CHANGE_SECURITY = 0x100 +) + +const ( + // do not reorder + FILE_ACTION_ADDED = iota + 1 + FILE_ACTION_REMOVED + FILE_ACTION_MODIFIED + FILE_ACTION_RENAMED_OLD_NAME + FILE_ACTION_RENAMED_NEW_NAME +) + +const ( + // wincrypt.h + /* certenrolld_begin -- PROV_RSA_*/ + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + + /* dwFlags definitions for CryptAcquireContext */ + CRYPT_VERIFYCONTEXT = 0xF0000000 + CRYPT_NEWKEYSET = 0x00000008 + CRYPT_DELETEKEYSET = 0x00000010 + CRYPT_MACHINE_KEYSET = 0x00000020 + CRYPT_SILENT = 0x00000040 + CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + /* Flags for PFXImportCertStore */ + CRYPT_EXPORTABLE = 0x00000001 + CRYPT_USER_PROTECTED = 0x00000002 + CRYPT_USER_KEYSET = 0x00001000 + PKCS12_PREFER_CNG_KSP = 0x00000100 + PKCS12_ALWAYS_CNG_KSP = 0x00000200 + PKCS12_ALLOW_OVERWRITE_KEY = 0x00004000 + PKCS12_NO_PERSIST_KEY = 0x00008000 + PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 + + /* Flags for CryptAcquireCertificatePrivateKey */ + CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001 + CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002 + CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004 + CRYPT_ACQUIRE_NO_HEALING = 0x00000008 + CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040 + CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080 + CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000 + CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000 + CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000 + CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000 + + /* pdwKeySpec for CryptAcquireCertificatePrivateKey */ + AT_KEYEXCHANGE = 1 + AT_SIGNATURE = 2 + CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF + + /* Default usage match type is AND with value zero */ + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + /* msgAndCertEncodingType values for CertOpenStore function */ + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + /* storeProvider values for CertOpenStore function */ + CERT_STORE_PROV_MSG = 1 + CERT_STORE_PROV_MEMORY = 2 + CERT_STORE_PROV_FILE = 3 + CERT_STORE_PROV_REG = 4 + CERT_STORE_PROV_PKCS7 = 5 + CERT_STORE_PROV_SERIALIZED = 6 + CERT_STORE_PROV_FILENAME_A = 7 + CERT_STORE_PROV_FILENAME_W = 8 + CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W + CERT_STORE_PROV_SYSTEM_A = 9 + CERT_STORE_PROV_SYSTEM_W = 10 + CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W + CERT_STORE_PROV_COLLECTION = 11 + CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 + CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 + CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W + CERT_STORE_PROV_PHYSICAL_W = 14 + CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W + CERT_STORE_PROV_SMART_CARD_W = 15 + CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W + CERT_STORE_PROV_LDAP_W = 16 + CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W + CERT_STORE_PROV_PKCS12 = 17 + + /* store characteristics (low WORD of flag) for CertOpenStore function */ + CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 + CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + CERT_STORE_DELETE_FLAG = 0x00000010 + CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 + CERT_STORE_SHARE_STORE_FLAG = 0x00000040 + CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 + CERT_STORE_MANIFOLD_FLAG = 0x00000100 + CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 + CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 + CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 + CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 + CERT_STORE_CREATE_NEW_FLAG = 0x00002000 + CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 + CERT_STORE_READONLY_FLAG = 0x00008000 + + /* store locations (high WORD of flag) for CertOpenStore function */ + CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 + CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 + CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 + CERT_SYSTEM_STORE_SERVICES = 0x00050000 + CERT_SYSTEM_STORE_USERS = 0x00060000 + CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 + CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 + CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 + + /* Miscellaneous high-WORD flags for CertOpenStore function */ + CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 + CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 + CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 + CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 + CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 + CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 + CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 + CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 + CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 + CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 + CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 + + /* addDisposition values for CertAddCertificateContextToStore function */ + CERT_STORE_ADD_NEW = 1 + CERT_STORE_ADD_USE_EXISTING = 2 + CERT_STORE_ADD_REPLACE_EXISTING = 3 + CERT_STORE_ADD_ALWAYS = 4 + CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 + CERT_STORE_ADD_NEWER = 6 + CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 + + /* ErrorStatus values for CertTrustStatus struct */ + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 + CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + /* InfoStatus values for CertTrustStatus struct */ + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 + CERT_TRUST_IS_SELF_SIGNED = 0x00000008 + CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 + CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 + CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 + CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 + CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 + CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 + CERT_TRUST_IS_CA_TRUSTED = 0x00004000 + CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + + /* Certificate Information Flags */ + CERT_INFO_VERSION_FLAG = 1 + CERT_INFO_SERIAL_NUMBER_FLAG = 2 + CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 + CERT_INFO_ISSUER_FLAG = 4 + CERT_INFO_NOT_BEFORE_FLAG = 5 + CERT_INFO_NOT_AFTER_FLAG = 6 + CERT_INFO_SUBJECT_FLAG = 7 + CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 + CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 + CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 + CERT_INFO_EXTENSION_FLAG = 11 + + /* dwFindType for CertFindCertificateInStore */ + CERT_COMPARE_MASK = 0xFFFF + CERT_COMPARE_SHIFT = 16 + CERT_COMPARE_ANY = 0 + CERT_COMPARE_SHA1_HASH = 1 + CERT_COMPARE_NAME = 2 + CERT_COMPARE_ATTR = 3 + CERT_COMPARE_MD5_HASH = 4 + CERT_COMPARE_PROPERTY = 5 + CERT_COMPARE_PUBLIC_KEY = 6 + CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH + CERT_COMPARE_NAME_STR_A = 7 + CERT_COMPARE_NAME_STR_W = 8 + CERT_COMPARE_KEY_SPEC = 9 + CERT_COMPARE_ENHKEY_USAGE = 10 + CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE + CERT_COMPARE_SUBJECT_CERT = 11 + CERT_COMPARE_ISSUER_OF = 12 + CERT_COMPARE_EXISTING = 13 + CERT_COMPARE_SIGNATURE_HASH = 14 + CERT_COMPARE_KEY_IDENTIFIER = 15 + CERT_COMPARE_CERT_ID = 16 + CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 + CERT_COMPARE_PUBKEY_MD5_HASH = 18 + CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 + CERT_COMPARE_HASH_STR = 20 + CERT_COMPARE_HAS_PRIVATE_KEY = 21 + CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) + CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) + CERT_FIND_HASH = CERT_FIND_SHA1_HASH + CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) + CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) + CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME<> 32 & 0xffffffff) + return ft +} + +type Win32finddata struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH - 1]uint16 + AlternateFileName [13]uint16 +} + +// This is the actual system call structure. +// Win32finddata is what we committed to in Go 1. +type win32finddata1 struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH]uint16 + AlternateFileName [14]uint16 + + // The Microsoft documentation for this struct¹ describes three additional + // fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields + // are empirically only present in the macOS port of the Win32 API,² and thus + // not needed for binaries built for Windows. + // + // ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe + // ² https://golang.org/issue/42637#issuecomment-760715755. +} + +func copyFindData(dst *Win32finddata, src *win32finddata1) { + dst.FileAttributes = src.FileAttributes + dst.CreationTime = src.CreationTime + dst.LastAccessTime = src.LastAccessTime + dst.LastWriteTime = src.LastWriteTime + dst.FileSizeHigh = src.FileSizeHigh + dst.FileSizeLow = src.FileSizeLow + dst.Reserved0 = src.Reserved0 + dst.Reserved1 = src.Reserved1 + + // The src is 1 element bigger than dst, but it must be NUL. + copy(dst.FileName[:], src.FileName[:]) + copy(dst.AlternateFileName[:], src.AlternateFileName[:]) +} + +type ByHandleFileInformation struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + VolumeSerialNumber uint32 + FileSizeHigh uint32 + FileSizeLow uint32 + NumberOfLinks uint32 + FileIndexHigh uint32 + FileIndexLow uint32 +} + +const ( + GetFileExInfoStandard = 0 + GetFileExMaxInfoLevel = 1 +) + +type Win32FileAttributeData struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 +} + +// ShowWindow constants +const ( + // winuser.h + SW_HIDE = 0 + SW_NORMAL = 1 + SW_SHOWNORMAL = 1 + SW_SHOWMINIMIZED = 2 + SW_SHOWMAXIMIZED = 3 + SW_MAXIMIZE = 3 + SW_SHOWNOACTIVATE = 4 + SW_SHOW = 5 + SW_MINIMIZE = 6 + SW_SHOWMINNOACTIVE = 7 + SW_SHOWNA = 8 + SW_RESTORE = 9 + SW_SHOWDEFAULT = 10 + SW_FORCEMINIMIZE = 11 +) + +type StartupInfo struct { + Cb uint32 + _ *uint16 + Desktop *uint16 + Title *uint16 + X uint32 + Y uint32 + XSize uint32 + YSize uint32 + XCountChars uint32 + YCountChars uint32 + FillAttribute uint32 + Flags uint32 + ShowWindow uint16 + _ uint16 + _ *byte + StdInput Handle + StdOutput Handle + StdErr Handle +} + +type StartupInfoEx struct { + StartupInfo + ProcThreadAttributeList *ProcThreadAttributeList +} + +// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST. +// +// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update +// it with ProcThreadAttributeListContainer.Update, free its memory using +// ProcThreadAttributeListContainer.Delete, and access the list itself using +// ProcThreadAttributeListContainer.List. +type ProcThreadAttributeList struct{} + +type ProcThreadAttributeListContainer struct { + data *ProcThreadAttributeList + pointers []unsafe.Pointer +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type ProcessEntry32 struct { + Size uint32 + Usage uint32 + ProcessID uint32 + DefaultHeapID uintptr + ModuleID uint32 + Threads uint32 + ParentProcessID uint32 + PriClassBase int32 + Flags uint32 + ExeFile [MAX_PATH]uint16 +} + +type ThreadEntry32 struct { + Size uint32 + Usage uint32 + ThreadID uint32 + OwnerProcessID uint32 + BasePri int32 + DeltaPri int32 + Flags uint32 +} + +type ModuleEntry32 struct { + Size uint32 + ModuleID uint32 + ProcessID uint32 + GlblcntUsage uint32 + ProccntUsage uint32 + ModBaseAddr uintptr + ModBaseSize uint32 + ModuleHandle Handle + Module [MAX_MODULE_NAME32 + 1]uint16 + ExePath [MAX_PATH]uint16 +} + +const SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{}) + +type Systemtime struct { + Year uint16 + Month uint16 + DayOfWeek uint16 + Day uint16 + Hour uint16 + Minute uint16 + Second uint16 + Milliseconds uint16 +} + +type Timezoneinformation struct { + Bias int32 + StandardName [32]uint16 + StandardDate Systemtime + StandardBias int32 + DaylightName [32]uint16 + DaylightDate Systemtime + DaylightBias int32 +} + +// Socket related. + +const ( + AF_UNSPEC = 0 + AF_UNIX = 1 + AF_INET = 2 + AF_NETBIOS = 17 + AF_INET6 = 23 + AF_IRDA = 26 + AF_BTH = 32 + + SOCK_STREAM = 1 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_RDM = 4 + SOCK_SEQPACKET = 5 + + IPPROTO_IP = 0 + IPPROTO_ICMP = 1 + IPPROTO_IGMP = 2 + BTHPROTO_RFCOMM = 3 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + IPPROTO_IPV6 = 41 + IPPROTO_ICMPV6 = 58 + IPPROTO_RM = 113 + + SOL_SOCKET = 0xffff + SO_REUSEADDR = 4 + SO_KEEPALIVE = 8 + SO_DONTROUTE = 16 + SO_BROADCAST = 32 + SO_LINGER = 128 + SO_RCVBUF = 0x1002 + SO_RCVTIMEO = 0x1006 + SO_SNDBUF = 0x1001 + SO_UPDATE_ACCEPT_CONTEXT = 0x700b + SO_UPDATE_CONNECT_CONTEXT = 0x7010 + + IOC_OUT = 0x40000000 + IOC_IN = 0x80000000 + IOC_VENDOR = 0x18000000 + IOC_INOUT = IOC_IN | IOC_OUT + IOC_WS2 = 0x08000000 + SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 + SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 + SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + + // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 + + IP_HDRINCL = 0x2 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_LOOP = 0xb + IP_ADD_MEMBERSHIP = 0xc + IP_DROP_MEMBERSHIP = 0xd + IP_PKTINFO = 0x13 + + IPV6_V6ONLY = 0x1b + IPV6_UNICAST_HOPS = 0x4 + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_LOOP = 0xb + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_PKTINFO = 0x13 + + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_DONTROUTE = 0x4 + MSG_WAITALL = 0x8 + + MSG_TRUNC = 0x0100 + MSG_CTRUNC = 0x0200 + MSG_BCAST = 0x0400 + MSG_MCAST = 0x0800 + + SOMAXCONN = 0x7fffffff + + TCP_NODELAY = 1 + TCP_EXPEDITED_1122 = 2 + TCP_KEEPALIVE = 3 + TCP_MAXSEG = 4 + TCP_MAXRT = 5 + TCP_STDURG = 6 + TCP_NOURG = 7 + TCP_ATMARK = 8 + TCP_NOSYNRETRIES = 9 + TCP_TIMESTAMPS = 10 + TCP_OFFLOAD_PREFERENCE = 11 + TCP_CONGESTION_ALGORITHM = 12 + TCP_DELAY_FIN_ACK = 13 + TCP_MAXRTMS = 14 + TCP_FASTOPEN = 15 + TCP_KEEPCNT = 16 + TCP_KEEPIDLE = TCP_KEEPALIVE + TCP_KEEPINTVL = 17 + TCP_FAIL_CONNECT_ON_ICMP_ERROR = 18 + TCP_ICMP_ERROR_INFO = 19 + + UDP_NOCHECKSUM = 1 + UDP_SEND_MSG_SIZE = 2 + UDP_RECV_MAX_COALESCED_SIZE = 3 + UDP_CHECKSUM_COVERAGE = 20 + + UDP_COALESCED_INFO = 3 + + SHUT_RD = 0 + SHUT_WR = 1 + SHUT_RDWR = 2 + + WSADESCRIPTION_LEN = 256 + WSASYS_STATUS_LEN = 128 +) + +type WSABuf struct { + Len uint32 + Buf *byte +} + +type WSAMsg struct { + Name *syscall.RawSockaddrAny + Namelen int32 + Buffers *WSABuf + BufferCount uint32 + Control WSABuf + Flags uint32 +} + +// Flags for WSASocket +const ( + WSA_FLAG_OVERLAPPED = 0x01 + WSA_FLAG_MULTIPOINT_C_ROOT = 0x02 + WSA_FLAG_MULTIPOINT_C_LEAF = 0x04 + WSA_FLAG_MULTIPOINT_D_ROOT = 0x08 + WSA_FLAG_MULTIPOINT_D_LEAF = 0x10 + WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40 + WSA_FLAG_NO_HANDLE_INHERIT = 0x80 + WSA_FLAG_REGISTERED_IO = 0x100 +) + +// Invented values to support what package os expects. +const ( + S_IFMT = 0x1f000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +const ( + FILE_TYPE_CHAR = 0x0002 + FILE_TYPE_DISK = 0x0001 + FILE_TYPE_PIPE = 0x0003 + FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0x0000 +) + +type Hostent struct { + Name *byte + Aliases **byte + AddrType uint16 + Length uint16 + AddrList **byte +} + +type Protoent struct { + Name *byte + Aliases **byte + Proto uint16 +} + +const ( + DNS_TYPE_A = 0x0001 + DNS_TYPE_NS = 0x0002 + DNS_TYPE_MD = 0x0003 + DNS_TYPE_MF = 0x0004 + DNS_TYPE_CNAME = 0x0005 + DNS_TYPE_SOA = 0x0006 + DNS_TYPE_MB = 0x0007 + DNS_TYPE_MG = 0x0008 + DNS_TYPE_MR = 0x0009 + DNS_TYPE_NULL = 0x000a + DNS_TYPE_WKS = 0x000b + DNS_TYPE_PTR = 0x000c + DNS_TYPE_HINFO = 0x000d + DNS_TYPE_MINFO = 0x000e + DNS_TYPE_MX = 0x000f + DNS_TYPE_TEXT = 0x0010 + DNS_TYPE_RP = 0x0011 + DNS_TYPE_AFSDB = 0x0012 + DNS_TYPE_X25 = 0x0013 + DNS_TYPE_ISDN = 0x0014 + DNS_TYPE_RT = 0x0015 + DNS_TYPE_NSAP = 0x0016 + DNS_TYPE_NSAPPTR = 0x0017 + DNS_TYPE_SIG = 0x0018 + DNS_TYPE_KEY = 0x0019 + DNS_TYPE_PX = 0x001a + DNS_TYPE_GPOS = 0x001b + DNS_TYPE_AAAA = 0x001c + DNS_TYPE_LOC = 0x001d + DNS_TYPE_NXT = 0x001e + DNS_TYPE_EID = 0x001f + DNS_TYPE_NIMLOC = 0x0020 + DNS_TYPE_SRV = 0x0021 + DNS_TYPE_ATMA = 0x0022 + DNS_TYPE_NAPTR = 0x0023 + DNS_TYPE_KX = 0x0024 + DNS_TYPE_CERT = 0x0025 + DNS_TYPE_A6 = 0x0026 + DNS_TYPE_DNAME = 0x0027 + DNS_TYPE_SINK = 0x0028 + DNS_TYPE_OPT = 0x0029 + DNS_TYPE_DS = 0x002B + DNS_TYPE_RRSIG = 0x002E + DNS_TYPE_NSEC = 0x002F + DNS_TYPE_DNSKEY = 0x0030 + DNS_TYPE_DHCID = 0x0031 + DNS_TYPE_UINFO = 0x0064 + DNS_TYPE_UID = 0x0065 + DNS_TYPE_GID = 0x0066 + DNS_TYPE_UNSPEC = 0x0067 + DNS_TYPE_ADDRS = 0x00f8 + DNS_TYPE_TKEY = 0x00f9 + DNS_TYPE_TSIG = 0x00fa + DNS_TYPE_IXFR = 0x00fb + DNS_TYPE_AXFR = 0x00fc + DNS_TYPE_MAILB = 0x00fd + DNS_TYPE_MAILA = 0x00fe + DNS_TYPE_ALL = 0x00ff + DNS_TYPE_ANY = 0x00ff + DNS_TYPE_WINS = 0xff01 + DNS_TYPE_WINSR = 0xff02 + DNS_TYPE_NBSTAT = 0xff01 +) + +const ( + // flags inside DNSRecord.Dw + DnsSectionQuestion = 0x0000 + DnsSectionAnswer = 0x0001 + DnsSectionAuthority = 0x0002 + DnsSectionAdditional = 0x0003 +) + +const ( + // flags of WSALookupService + LUP_DEEP = 0x0001 + LUP_CONTAINERS = 0x0002 + LUP_NOCONTAINERS = 0x0004 + LUP_NEAREST = 0x0008 + LUP_RETURN_NAME = 0x0010 + LUP_RETURN_TYPE = 0x0020 + LUP_RETURN_VERSION = 0x0040 + LUP_RETURN_COMMENT = 0x0080 + LUP_RETURN_ADDR = 0x0100 + LUP_RETURN_BLOB = 0x0200 + LUP_RETURN_ALIASES = 0x0400 + LUP_RETURN_QUERY_STRING = 0x0800 + LUP_RETURN_ALL = 0x0FF0 + LUP_RES_SERVICE = 0x8000 + + LUP_FLUSHCACHE = 0x1000 + LUP_FLUSHPREVIOUS = 0x2000 + + LUP_NON_AUTHORITATIVE = 0x4000 + LUP_SECURE = 0x8000 + LUP_RETURN_PREFERRED_NAMES = 0x10000 + LUP_DNS_ONLY = 0x20000 + + LUP_ADDRCONFIG = 0x100000 + LUP_DUAL_ADDR = 0x200000 + LUP_FILESERVER = 0x400000 + LUP_DISABLE_IDN_ENCODING = 0x00800000 + LUP_API_ANSI = 0x01000000 + + LUP_RESOLUTION_HANDLE = 0x80000000 +) + +const ( + // values of WSAQUERYSET's namespace + NS_ALL = 0 + NS_DNS = 12 + NS_NLA = 15 + NS_BTH = 16 + NS_EMAIL = 37 + NS_PNRPNAME = 38 + NS_PNRPCLOUD = 39 +) + +type DNSSRVData struct { + Target *uint16 + Priority uint16 + Weight uint16 + Port uint16 + Pad uint16 +} + +type DNSPTRData struct { + Host *uint16 +} + +type DNSMXData struct { + NameExchange *uint16 + Preference uint16 + Pad uint16 +} + +type DNSTXTData struct { + StringCount uint16 + StringArray [1]*uint16 +} + +type DNSRecord struct { + Next *DNSRecord + Name *uint16 + Type uint16 + Length uint16 + Dw uint32 + Ttl uint32 + Reserved uint32 + Data [40]byte +} + +const ( + TF_DISCONNECT = 1 + TF_REUSE_SOCKET = 2 + TF_WRITE_BEHIND = 4 + TF_USE_DEFAULT_WORKER = 0 + TF_USE_SYSTEM_THREAD = 16 + TF_USE_KERNEL_APC = 32 +) + +type TransmitFileBuffers struct { + Head uintptr + HeadLength uint32 + Tail uintptr + TailLength uint32 +} + +const ( + IFF_UP = 1 + IFF_BROADCAST = 2 + IFF_LOOPBACK = 4 + IFF_POINTTOPOINT = 8 + IFF_MULTICAST = 16 +) + +const SIO_GET_INTERFACE_LIST = 0x4004747F + +// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. +// will be fixed to change variable type as suitable. + +type SockaddrGen [24]byte + +type InterfaceInfo struct { + Flags uint32 + Address SockaddrGen + BroadcastAddress SockaddrGen + Netmask SockaddrGen +} + +type IpAddressString struct { + String [16]byte +} + +type IpMaskString IpAddressString + +type IpAddrString struct { + Next *IpAddrString + IpAddress IpAddressString + IpMask IpMaskString + Context uint32 +} + +const MAX_ADAPTER_NAME_LENGTH = 256 +const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +const MAX_ADAPTER_ADDRESS_LENGTH = 8 + +type IpAdapterInfo struct { + Next *IpAdapterInfo + ComboIndex uint32 + AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte + Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte + AddressLength uint32 + Address [MAX_ADAPTER_ADDRESS_LENGTH]byte + Index uint32 + Type uint32 + DhcpEnabled uint32 + CurrentIpAddress *IpAddrString + IpAddressList IpAddrString + GatewayList IpAddrString + DhcpServer IpAddrString + HaveWins bool + PrimaryWinsServer IpAddrString + SecondaryWinsServer IpAddrString + LeaseObtained int64 + LeaseExpires int64 +} + +const MAXLEN_PHYSADDR = 8 +const MAX_INTERFACE_NAME_LEN = 256 +const MAXLEN_IFDESCR = 256 + +type MibIfRow struct { + Name [MAX_INTERFACE_NAME_LEN]uint16 + Index uint32 + Type uint32 + Mtu uint32 + Speed uint32 + PhysAddrLen uint32 + PhysAddr [MAXLEN_PHYSADDR]byte + AdminStatus uint32 + OperStatus uint32 + LastChange uint32 + InOctets uint32 + InUcastPkts uint32 + InNUcastPkts uint32 + InDiscards uint32 + InErrors uint32 + InUnknownProtos uint32 + OutOctets uint32 + OutUcastPkts uint32 + OutNUcastPkts uint32 + OutDiscards uint32 + OutErrors uint32 + OutQLen uint32 + DescrLen uint32 + Descr [MAXLEN_IFDESCR]byte +} + +type CertInfo struct { + Version uint32 + SerialNumber CryptIntegerBlob + SignatureAlgorithm CryptAlgorithmIdentifier + Issuer CertNameBlob + NotBefore Filetime + NotAfter Filetime + Subject CertNameBlob + SubjectPublicKeyInfo CertPublicKeyInfo + IssuerUniqueId CryptBitBlob + SubjectUniqueId CryptBitBlob + CountExtensions uint32 + Extensions *CertExtension +} + +type CertExtension struct { + ObjId *byte + Critical int32 + Value CryptObjidBlob +} + +type CryptAlgorithmIdentifier struct { + ObjId *byte + Parameters CryptObjidBlob +} + +type CertPublicKeyInfo struct { + Algorithm CryptAlgorithmIdentifier + PublicKey CryptBitBlob +} + +type DataBlob struct { + Size uint32 + Data *byte +} +type CryptIntegerBlob DataBlob +type CryptUintBlob DataBlob +type CryptObjidBlob DataBlob +type CertNameBlob DataBlob +type CertRdnValueBlob DataBlob +type CertBlob DataBlob +type CrlBlob DataBlob +type CryptDataBlob DataBlob +type CryptHashBlob DataBlob +type CryptDigestBlob DataBlob +type CryptDerBlob DataBlob +type CryptAttrBlob DataBlob + +type CryptBitBlob struct { + Size uint32 + Data *byte + UnusedBits uint32 +} + +type CertContext struct { + EncodingType uint32 + EncodedCert *byte + Length uint32 + CertInfo *CertInfo + Store Handle +} + +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertTrustListInfo struct { + // Not implemented +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo *CertTrustListInfo + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationCrlInfo struct { + // Not implemented +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo Pointer + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara Pointer +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus Pointer +} + +type CertPolicyInfo struct { + Identifier *byte + CountQualifiers uint32 + Qualifiers *CertPolicyQualifierInfo +} + +type CertPoliciesInfo struct { + Count uint32 + PolicyInfos *CertPolicyInfo +} + +type CertPolicyQualifierInfo struct { + // Not implemented +} + +type CertStrongSignPara struct { + Size uint32 + InfoChoice uint32 + InfoOrSerializedInfoOrOID unsafe.Pointer +} + +type CryptProtectPromptStruct struct { + Size uint32 + PromptFlags uint32 + App HWND + Prompt *uint16 +} + +type CertChainFindByIssuerPara struct { + Size uint32 + UsageIdentifier *byte + KeySpec uint32 + AcquirePrivateKeyFlags uint32 + IssuerCount uint32 + Issuer Pointer + FindCallback Pointer + FindArg Pointer + IssuerChainIndex *uint32 + IssuerElementIndex *uint32 +} + +type WinTrustData struct { + Size uint32 + PolicyCallbackData uintptr + SIPClientData uintptr + UIChoice uint32 + RevocationChecks uint32 + UnionChoice uint32 + FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer + StateAction uint32 + StateData Handle + URLReference *uint16 + ProvFlags uint32 + UIContext uint32 + SignatureSettings *WinTrustSignatureSettings +} + +type WinTrustFileInfo struct { + Size uint32 + FilePath *uint16 + File Handle + KnownSubject *GUID +} + +type WinTrustSignatureSettings struct { + Size uint32 + Index uint32 + Flags uint32 + SecondarySigs uint32 + VerifiedSigIndex uint32 + CryptoPolicy *CertStrongSignPara +} + +const ( + // do not reorder + HKEY_CLASSES_ROOT = 0x80000000 + iota + HKEY_CURRENT_USER + HKEY_LOCAL_MACHINE + HKEY_USERS + HKEY_PERFORMANCE_DATA + HKEY_CURRENT_CONFIG + HKEY_DYN_DATA + + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_ENUMERATE_SUB_KEYS = 8 + KEY_NOTIFY = 16 + KEY_CREATE_LINK = 32 + KEY_WRITE = 0x20006 + KEY_EXECUTE = 0x20019 + KEY_READ = 0x20019 + KEY_WOW64_64KEY = 0x0100 + KEY_WOW64_32KEY = 0x0200 + KEY_ALL_ACCESS = 0xf003f +) + +const ( + // do not reorder + REG_NONE = iota + REG_SZ + REG_EXPAND_SZ + REG_BINARY + REG_DWORD_LITTLE_ENDIAN + REG_DWORD_BIG_ENDIAN + REG_LINK + REG_MULTI_SZ + REG_RESOURCE_LIST + REG_FULL_RESOURCE_DESCRIPTOR + REG_RESOURCE_REQUIREMENTS_LIST + REG_QWORD_LITTLE_ENDIAN + REG_DWORD = REG_DWORD_LITTLE_ENDIAN + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +) + +const ( + EVENT_MODIFY_STATE = 0x0002 + EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + MUTANT_QUERY_STATE = 0x0001 + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE + + SEMAPHORE_MODIFY_STATE = 0x0002 + SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + TIMER_QUERY_STATE = 0x0001 + TIMER_MODIFY_STATE = 0x0002 + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE + + MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE + MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS + + CREATE_EVENT_MANUAL_RESET = 0x1 + CREATE_EVENT_INITIAL_SET = 0x2 + CREATE_MUTEX_INITIAL_OWNER = 0x1 +) + +type AddrinfoW struct { + Flags int32 + Family int32 + Socktype int32 + Protocol int32 + Addrlen uintptr + Canonname *uint16 + Addr uintptr + Next *AddrinfoW +} + +const ( + AI_PASSIVE = 1 + AI_CANONNAME = 2 + AI_NUMERICHOST = 4 +) + +type GUID struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +var WSAID_CONNECTEX = GUID{ + 0x25a207b9, + 0xddf3, + 0x4660, + [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, +} + +var WSAID_WSASENDMSG = GUID{ + 0xa441e712, + 0x754f, + 0x43ca, + [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, +} + +var WSAID_WSARECVMSG = GUID{ + 0xf689d7c8, + 0x6f1f, + 0x436b, + [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, +} + +const ( + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 + FILE_SKIP_SET_EVENT_ON_HANDLE = 2 +) + +const ( + WSAPROTOCOL_LEN = 255 + MAX_PROTOCOL_CHAIN = 7 + BASE_PROTOCOL = 1 + LAYERED_PROTOCOL = 0 + + XP1_CONNECTIONLESS = 0x00000001 + XP1_GUARANTEED_DELIVERY = 0x00000002 + XP1_GUARANTEED_ORDER = 0x00000004 + XP1_MESSAGE_ORIENTED = 0x00000008 + XP1_PSEUDO_STREAM = 0x00000010 + XP1_GRACEFUL_CLOSE = 0x00000020 + XP1_EXPEDITED_DATA = 0x00000040 + XP1_CONNECT_DATA = 0x00000080 + XP1_DISCONNECT_DATA = 0x00000100 + XP1_SUPPORT_BROADCAST = 0x00000200 + XP1_SUPPORT_MULTIPOINT = 0x00000400 + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 + XP1_MULTIPOINT_DATA_PLANE = 0x00001000 + XP1_QOS_SUPPORTED = 0x00002000 + XP1_UNI_SEND = 0x00008000 + XP1_UNI_RECV = 0x00010000 + XP1_IFS_HANDLES = 0x00020000 + XP1_PARTIAL_MESSAGE = 0x00040000 + XP1_SAN_SUPPORT_SDP = 0x00080000 + + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 + PFL_HIDDEN = 0x00000004 + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 + PFL_NETWORKDIRECT_PROVIDER = 0x00000010 +) + +type WSAProtocolInfo struct { + ServiceFlags1 uint32 + ServiceFlags2 uint32 + ServiceFlags3 uint32 + ServiceFlags4 uint32 + ProviderFlags uint32 + ProviderId GUID + CatalogEntryId uint32 + ProtocolChain WSAProtocolChain + Version int32 + AddressFamily int32 + MaxSockAddr int32 + MinSockAddr int32 + SocketType int32 + Protocol int32 + ProtocolMaxOffset int32 + NetworkByteOrder int32 + SecurityScheme int32 + MessageSize uint32 + ProviderReserved uint32 + ProtocolName [WSAPROTOCOL_LEN + 1]uint16 +} + +type WSAProtocolChain struct { + ChainLen int32 + ChainEntries [MAX_PROTOCOL_CHAIN]uint32 +} + +type TCPKeepalive struct { + OnOff uint32 + Time uint32 + Interval uint32 +} + +type symbolicLinkReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + Flags uint32 + PathBuffer [1]uint16 +} + +type mountPointReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + PathBuffer [1]uint16 +} + +type reparseDataBuffer struct { + ReparseTag uint32 + ReparseDataLength uint16 + Reserved uint16 + + // GenericReparseBuffer + reparseBuffer byte +} + +const ( + FSCTL_CREATE_OR_GET_OBJECT_ID = 0x0900C0 + FSCTL_DELETE_OBJECT_ID = 0x0900A0 + FSCTL_DELETE_REPARSE_POINT = 0x0900AC + FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x098344 + FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX = 0x0983E8 + FSCTL_FILESYSTEM_GET_STATISTICS = 0x090060 + FSCTL_FILE_LEVEL_TRIM = 0x098208 + FSCTL_FIND_FILES_BY_SID = 0x09008F + FSCTL_GET_COMPRESSION = 0x09003C + FSCTL_GET_INTEGRITY_INFORMATION = 0x09027C + FSCTL_GET_NTFS_VOLUME_DATA = 0x090064 + FSCTL_GET_REFS_VOLUME_DATA = 0x0902D8 + FSCTL_GET_OBJECT_ID = 0x09009C + FSCTL_GET_REPARSE_POINT = 0x0900A8 + FSCTL_GET_RETRIEVAL_POINTER_COUNT = 0x09042B + FSCTL_GET_RETRIEVAL_POINTERS = 0x090073 + FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3 + FSCTL_IS_PATHNAME_VALID = 0x09002C + FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400EC + FSCTL_MARK_HANDLE = 0x0900FC + FSCTL_OFFLOAD_READ = 0x094264 + FSCTL_OFFLOAD_WRITE = 0x098268 + FSCTL_PIPE_PEEK = 0x11400C + FSCTL_PIPE_TRANSCEIVE = 0x11C017 + FSCTL_PIPE_WAIT = 0x110018 + FSCTL_QUERY_ALLOCATED_RANGES = 0x0940CF + FSCTL_QUERY_FAT_BPB = 0x090058 + FSCTL_QUERY_FILE_REGIONS = 0x090284 + FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x09013C + FSCTL_QUERY_SPARING_INFO = 0x090138 + FSCTL_READ_FILE_USN_DATA = 0x0900EB + FSCTL_RECALL_FILE = 0x090117 + FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT = 0x090440 + FSCTL_SET_COMPRESSION = 0x09C040 + FSCTL_SET_DEFECT_MANAGEMENT = 0x098134 + FSCTL_SET_ENCRYPTION = 0x0900D7 + FSCTL_SET_INTEGRITY_INFORMATION = 0x09C280 + FSCTL_SET_INTEGRITY_INFORMATION_EX = 0x090380 + FSCTL_SET_OBJECT_ID = 0x090098 + FSCTL_SET_OBJECT_ID_EXTENDED = 0x0900BC + FSCTL_SET_REPARSE_POINT = 0x0900A4 + FSCTL_SET_SPARSE = 0x0900C4 + FSCTL_SET_ZERO_DATA = 0x0980C8 + FSCTL_SET_ZERO_ON_DEALLOCATION = 0x090194 + FSCTL_SIS_COPYFILE = 0x090100 + FSCTL_WRITE_USN_CLOSE_RECORD = 0x0900EF + + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 + IO_REPARSE_TAG_SYMLINK = 0xA000000C + SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 +) + +const ( + ComputerNameNetBIOS = 0 + ComputerNameDnsHostname = 1 + ComputerNameDnsDomain = 2 + ComputerNameDnsFullyQualified = 3 + ComputerNamePhysicalNetBIOS = 4 + ComputerNamePhysicalDnsHostname = 5 + ComputerNamePhysicalDnsDomain = 6 + ComputerNamePhysicalDnsFullyQualified = 7 + ComputerNameMax = 8 +) + +// For MessageBox() +const ( + MB_OK = 0x00000000 + MB_OKCANCEL = 0x00000001 + MB_ABORTRETRYIGNORE = 0x00000002 + MB_YESNOCANCEL = 0x00000003 + MB_YESNO = 0x00000004 + MB_RETRYCANCEL = 0x00000005 + MB_CANCELTRYCONTINUE = 0x00000006 + MB_ICONHAND = 0x00000010 + MB_ICONQUESTION = 0x00000020 + MB_ICONEXCLAMATION = 0x00000030 + MB_ICONASTERISK = 0x00000040 + MB_USERICON = 0x00000080 + MB_ICONWARNING = MB_ICONEXCLAMATION + MB_ICONERROR = MB_ICONHAND + MB_ICONINFORMATION = MB_ICONASTERISK + MB_ICONSTOP = MB_ICONHAND + MB_DEFBUTTON1 = 0x00000000 + MB_DEFBUTTON2 = 0x00000100 + MB_DEFBUTTON3 = 0x00000200 + MB_DEFBUTTON4 = 0x00000300 + MB_APPLMODAL = 0x00000000 + MB_SYSTEMMODAL = 0x00001000 + MB_TASKMODAL = 0x00002000 + MB_HELP = 0x00004000 + MB_NOFOCUS = 0x00008000 + MB_SETFOREGROUND = 0x00010000 + MB_DEFAULT_DESKTOP_ONLY = 0x00020000 + MB_TOPMOST = 0x00040000 + MB_RIGHT = 0x00080000 + MB_RTLREADING = 0x00100000 + MB_SERVICE_NOTIFICATION = 0x00200000 +) + +const ( + MOVEFILE_REPLACE_EXISTING = 0x1 + MOVEFILE_COPY_ALLOWED = 0x2 + MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 + MOVEFILE_WRITE_THROUGH = 0x8 + MOVEFILE_CREATE_HARDLINK = 0x10 + MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 +) + +const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 + +const ( + IF_TYPE_OTHER = 1 + IF_TYPE_ETHERNET_CSMACD = 6 + IF_TYPE_ISO88025_TOKENRING = 9 + IF_TYPE_PPP = 23 + IF_TYPE_SOFTWARE_LOOPBACK = 24 + IF_TYPE_ATM = 37 + IF_TYPE_IEEE80211 = 71 + IF_TYPE_TUNNEL = 131 + IF_TYPE_IEEE1394 = 144 +) + +type SocketAddress struct { + Sockaddr *syscall.RawSockaddrAny + SockaddrLength int32 +} + +// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. +func (addr *SocketAddress) IP() net.IP { + if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { + return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { + return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } + return nil +} + +type IpAdapterUnicastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterUnicastAddress + Address SocketAddress + PrefixOrigin int32 + SuffixOrigin int32 + DadState int32 + ValidLifetime uint32 + PreferredLifetime uint32 + LeaseLifetime uint32 + OnLinkPrefixLength uint8 +} + +type IpAdapterAnycastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterAnycastAddress + Address SocketAddress +} + +type IpAdapterMulticastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterMulticastAddress + Address SocketAddress +} + +type IpAdapterDnsServerAdapter struct { + Length uint32 + Reserved uint32 + Next *IpAdapterDnsServerAdapter + Address SocketAddress +} + +type IpAdapterPrefix struct { + Length uint32 + Flags uint32 + Next *IpAdapterPrefix + Address SocketAddress + PrefixLength uint32 +} + +type IpAdapterAddresses struct { + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + FirstWinsServerAddress *IpAdapterWinsServerAddress + FirstGatewayAddress *IpAdapterGatewayAddress + Ipv4Metric uint32 + Ipv6Metric uint32 + Luid uint64 + Dhcpv4Server SocketAddress + CompartmentId uint32 + NetworkGuid GUID + ConnectionType uint32 + TunnelType uint32 + Dhcpv6Server SocketAddress + Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte + Dhcpv6ClientDuidLength uint32 + Dhcpv6Iaid uint32 + FirstDnsSuffix *IpAdapterDNSSuffix +} + +type IpAdapterWinsServerAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterWinsServerAddress + Address SocketAddress +} + +type IpAdapterGatewayAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterGatewayAddress + Address SocketAddress +} + +type IpAdapterDNSSuffix struct { + Next *IpAdapterDNSSuffix + String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16 +} + +const ( + IfOperStatusUp = 1 + IfOperStatusDown = 2 + IfOperStatusTesting = 3 + IfOperStatusUnknown = 4 + IfOperStatusDormant = 5 + IfOperStatusNotPresent = 6 + IfOperStatusLowerLayerDown = 7 +) + +// Console related constants used for the mode parameter to SetConsoleMode. See +// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. + +const ( + ENABLE_PROCESSED_INPUT = 0x1 + ENABLE_LINE_INPUT = 0x2 + ENABLE_ECHO_INPUT = 0x4 + ENABLE_WINDOW_INPUT = 0x8 + ENABLE_MOUSE_INPUT = 0x10 + ENABLE_INSERT_MODE = 0x20 + ENABLE_QUICK_EDIT_MODE = 0x40 + ENABLE_EXTENDED_FLAGS = 0x80 + ENABLE_AUTO_POSITION = 0x100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 + + ENABLE_PROCESSED_OUTPUT = 0x1 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 + DISABLE_NEWLINE_AUTO_RETURN = 0x8 + ENABLE_LVB_GRID_WORLDWIDE = 0x10 +) + +// Pseudo console related constants used for the flags parameter to +// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole +const ( + PSEUDOCONSOLE_INHERIT_CURSOR = 0x1 +) + +type Coord struct { + X int16 + Y int16 +} + +type SmallRect struct { + Left int16 + Top int16 + Right int16 + Bottom int16 +} + +// Used with GetConsoleScreenBuffer to retrieve information about a console +// screen buffer. See +// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str +// for details. + +type ConsoleScreenBufferInfo struct { + Size Coord + CursorPosition Coord + Attributes uint16 + Window SmallRect + MaximumWindowSize Coord +} + +const UNIX_PATH_MAX = 108 // defined in afunix.h + +const ( + // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 + JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 + JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 + JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 + JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 + JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 + JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 +) + +type IO_COUNTERS struct { + ReadOperationCount uint64 + WriteOperationCount uint64 + OtherOperationCount uint64 + ReadTransferCount uint64 + WriteTransferCount uint64 + OtherTransferCount uint64 +} + +type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { + BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION + IoInfo IO_COUNTERS + ProcessMemoryLimit uintptr + JobMemoryLimit uintptr + PeakProcessMemoryUsed uintptr + PeakJobMemoryUsed uintptr +} + +const ( + // UIRestrictionsClass + JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 + JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 +) + +type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { + UIRestrictionsClass uint32 +} + +const ( + // JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject + JobObjectAssociateCompletionPortInformation = 7 + JobObjectBasicAccountingInformation = 1 + JobObjectBasicAndIoAccountingInformation = 8 + JobObjectBasicLimitInformation = 2 + JobObjectBasicProcessIdList = 3 + JobObjectBasicUIRestrictions = 4 + JobObjectCpuRateControlInformation = 15 + JobObjectEndOfJobTimeInformation = 6 + JobObjectExtendedLimitInformation = 9 + JobObjectGroupInformation = 11 + JobObjectGroupInformationEx = 14 + JobObjectLimitViolationInformation = 13 + JobObjectLimitViolationInformation2 = 34 + JobObjectNetRateControlInformation = 32 + JobObjectNotificationLimitInformation = 12 + JobObjectNotificationLimitInformation2 = 33 + JobObjectSecurityLimitInformation = 5 +) + +const ( + KF_FLAG_DEFAULT = 0x00000000 + KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 + KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 + KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 + KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 + KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 + KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 + KF_FLAG_CREATE = 0x00008000 + KF_FLAG_DONT_VERIFY = 0x00004000 + KF_FLAG_DONT_UNEXPAND = 0x00002000 + KF_FLAG_NO_ALIAS = 0x00001000 + KF_FLAG_INIT = 0x00000800 + KF_FLAG_DEFAULT_PATH = 0x00000400 + KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 + KF_FLAG_SIMPLE_IDLIST = 0x00000100 + KF_FLAG_ALIAS_ONLY = 0x80000000 +) + +type OsVersionInfoEx struct { + osVersionInfoSize uint32 + MajorVersion uint32 + MinorVersion uint32 + BuildNumber uint32 + PlatformId uint32 + CsdVersion [128]uint16 + ServicePackMajor uint16 + ServicePackMinor uint16 + SuiteMask uint16 + ProductType byte + _ byte +} + +const ( + EWX_LOGOFF = 0x00000000 + EWX_SHUTDOWN = 0x00000001 + EWX_REBOOT = 0x00000002 + EWX_FORCE = 0x00000004 + EWX_POWEROFF = 0x00000008 + EWX_FORCEIFHUNG = 0x00000010 + EWX_QUICKRESOLVE = 0x00000020 + EWX_RESTARTAPPS = 0x00000040 + EWX_HYBRID_SHUTDOWN = 0x00400000 + EWX_BOOTOPTIONS = 0x01000000 + + SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 + SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 + SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 + SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 + SHTDN_REASON_FLAG_PLANNED = 0x80000000 + SHTDN_REASON_MAJOR_OTHER = 0x00000000 + SHTDN_REASON_MAJOR_NONE = 0x00000000 + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 + SHTDN_REASON_MAJOR_POWER = 0x00060000 + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 + SHTDN_REASON_MINOR_OTHER = 0x00000000 + SHTDN_REASON_MINOR_NONE = 0x000000ff + SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 + SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 + SHTDN_REASON_MINOR_UPGRADE = 0x00000003 + SHTDN_REASON_MINOR_RECONFIG = 0x00000004 + SHTDN_REASON_MINOR_HUNG = 0x00000005 + SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 + SHTDN_REASON_MINOR_DISK = 0x00000007 + SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 + SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 + SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a + SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b + SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c + SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d + SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e + SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F + SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010 + SHTDN_REASON_MINOR_HOTFIX = 0x00000011 + SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012 + SHTDN_REASON_MINOR_SECURITY = 0x00000013 + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014 + SHTDN_REASON_MINOR_WMI = 0x00000015 + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016 + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017 + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018 + SHTDN_REASON_MINOR_MMC = 0x00000019 + SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 + SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021 + SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022 + SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE + SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED + SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff + + SHUTDOWN_NORETRY = 0x1 +) + +// Flags used for GetModuleHandleEx +const ( + GET_MODULE_HANDLE_EX_FLAG_PIN = 1 + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 +) + +// MUI function flag values +const ( + MUI_LANGUAGE_ID = 0x4 + MUI_LANGUAGE_NAME = 0x8 + MUI_MERGE_SYSTEM_FALLBACK = 0x10 + MUI_MERGE_USER_FALLBACK = 0x20 + MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK + MUI_THREAD_LANGUAGES = 0x40 + MUI_CONSOLE_FILTER = 0x100 + MUI_COMPLEX_SCRIPT_FILTER = 0x200 + MUI_RESET_FILTERS = 0x001 + MUI_USER_PREFERRED_UI_LANGUAGES = 0x10 + MUI_USE_INSTALLED_LANGUAGES = 0x20 + MUI_USE_SEARCH_ALL_LANGUAGES = 0x40 + MUI_LANG_NEUTRAL_PE_FILE = 0x100 + MUI_NON_LANG_NEUTRAL_FILE = 0x200 + MUI_MACHINE_LANGUAGE_SETTINGS = 0x400 + MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001 + MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002 + MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004 + MUI_QUERY_TYPE = 0x001 + MUI_QUERY_CHECKSUM = 0x002 + MUI_QUERY_LANGUAGE_NAME = 0x004 + MUI_QUERY_RESOURCE_TYPES = 0x008 + MUI_FILEINFO_VERSION = 0x001 + + MUI_FULL_LANGUAGE = 0x01 + MUI_PARTIAL_LANGUAGE = 0x02 + MUI_LIP_LANGUAGE = 0x04 + MUI_LANGUAGE_INSTALLED = 0x20 + MUI_LANGUAGE_LICENSED = 0x40 +) + +// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx +const ( + FileBasicInfo = 0 + FileStandardInfo = 1 + FileNameInfo = 2 + FileRenameInfo = 3 + FileDispositionInfo = 4 + FileAllocationInfo = 5 + FileEndOfFileInfo = 6 + FileStreamInfo = 7 + FileCompressionInfo = 8 + FileAttributeTagInfo = 9 + FileIdBothDirectoryInfo = 10 + FileIdBothDirectoryRestartInfo = 11 + FileIoPriorityHintInfo = 12 + FileRemoteProtocolInfo = 13 + FileFullDirectoryInfo = 14 + FileFullDirectoryRestartInfo = 15 + FileStorageInfo = 16 + FileAlignmentInfo = 17 + FileIdInfo = 18 + FileIdExtdDirectoryInfo = 19 + FileIdExtdDirectoryRestartInfo = 20 + FileDispositionInfoEx = 21 + FileRenameInfoEx = 22 + FileCaseSensitiveInfo = 23 + FileNormalizedNameInfo = 24 +) + +// LoadLibrary flags for determining from where to search for a DLL +const ( + DONT_RESOLVE_DLL_REFERENCES = 0x1 + LOAD_LIBRARY_AS_DATAFILE = 0x2 + LOAD_WITH_ALTERED_SEARCH_PATH = 0x8 + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10 + LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20 + LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40 + LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80 + LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100 + LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200 + LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400 + LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800 + LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000 + LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000 + LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000 + LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000 +) + +// RegNotifyChangeKeyValue notifyFilter flags. +const ( + // REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted. + REG_NOTIFY_CHANGE_NAME = 0x00000001 + + // REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information. + REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 + + // REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value. + REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 + + // REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key. + REG_NOTIFY_CHANGE_SECURITY = 0x00000008 + + // REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later. + REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000 +) + +type CommTimeouts struct { + ReadIntervalTimeout uint32 + ReadTotalTimeoutMultiplier uint32 + ReadTotalTimeoutConstant uint32 + WriteTotalTimeoutMultiplier uint32 + WriteTotalTimeoutConstant uint32 +} + +// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING. +type NTUnicodeString struct { + Length uint16 + MaximumLength uint16 + Buffer *uint16 +} + +// NTString is an ANSI string for NT native APIs, corresponding to STRING. +type NTString struct { + Length uint16 + MaximumLength uint16 + Buffer *byte +} + +type LIST_ENTRY struct { + Flink *LIST_ENTRY + Blink *LIST_ENTRY +} + +type RUNTIME_FUNCTION struct { + BeginAddress uint32 + EndAddress uint32 + UnwindData uint32 +} + +type LDR_DATA_TABLE_ENTRY struct { + reserved1 [2]uintptr + InMemoryOrderLinks LIST_ENTRY + reserved2 [2]uintptr + DllBase uintptr + reserved3 [2]uintptr + FullDllName NTUnicodeString + reserved4 [8]byte + reserved5 [3]uintptr + reserved6 uintptr + TimeDateStamp uint32 +} + +type PEB_LDR_DATA struct { + reserved1 [8]byte + reserved2 [3]uintptr + InMemoryOrderModuleList LIST_ENTRY +} + +type CURDIR struct { + DosPath NTUnicodeString + Handle Handle +} + +type RTL_DRIVE_LETTER_CURDIR struct { + Flags uint16 + Length uint16 + TimeStamp uint32 + DosPath NTString +} + +type RTL_USER_PROCESS_PARAMETERS struct { + MaximumLength, Length uint32 + + Flags, DebugFlags uint32 + + ConsoleHandle Handle + ConsoleFlags uint32 + StandardInput, StandardOutput, StandardError Handle + + CurrentDirectory CURDIR + DllPath NTUnicodeString + ImagePathName NTUnicodeString + CommandLine NTUnicodeString + Environment unsafe.Pointer + + StartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32 + + WindowFlags, ShowWindowFlags uint32 + WindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString + CurrentDirectories [32]RTL_DRIVE_LETTER_CURDIR + + EnvironmentSize, EnvironmentVersion uintptr + + PackageDependencyData unsafe.Pointer + ProcessGroupId uint32 + LoaderThreads uint32 + + RedirectionDllName NTUnicodeString + HeapPartitionName NTUnicodeString + DefaultThreadpoolCpuSetMasks uintptr + DefaultThreadpoolCpuSetMaskCount uint32 +} + +type PEB struct { + reserved1 [2]byte + BeingDebugged byte + BitField byte + reserved3 uintptr + ImageBaseAddress uintptr + Ldr *PEB_LDR_DATA + ProcessParameters *RTL_USER_PROCESS_PARAMETERS + reserved4 [3]uintptr + AtlThunkSListPtr uintptr + reserved5 uintptr + reserved6 uint32 + reserved7 uintptr + reserved8 uint32 + AtlThunkSListPtr32 uint32 + reserved9 [45]uintptr + reserved10 [96]byte + PostProcessInitRoutine uintptr + reserved11 [128]byte + reserved12 [1]uintptr + SessionId uint32 +} + +type OBJECT_ATTRIBUTES struct { + Length uint32 + RootDirectory Handle + ObjectName *NTUnicodeString + Attributes uint32 + SecurityDescriptor *SECURITY_DESCRIPTOR + SecurityQoS *SECURITY_QUALITY_OF_SERVICE +} + +// Values for the Attributes member of OBJECT_ATTRIBUTES. +const ( + OBJ_INHERIT = 0x00000002 + OBJ_PERMANENT = 0x00000010 + OBJ_EXCLUSIVE = 0x00000020 + OBJ_CASE_INSENSITIVE = 0x00000040 + OBJ_OPENIF = 0x00000080 + OBJ_OPENLINK = 0x00000100 + OBJ_KERNEL_HANDLE = 0x00000200 + OBJ_FORCE_ACCESS_CHECK = 0x00000400 + OBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800 + OBJ_DONT_REPARSE = 0x00001000 + OBJ_VALID_ATTRIBUTES = 0x00001FF2 +) + +type IO_STATUS_BLOCK struct { + Status NTStatus + Information uintptr +} + +type RTLP_CURDIR_REF struct { + RefCount int32 + Handle Handle +} + +type RTL_RELATIVE_NAME struct { + RelativeName NTUnicodeString + ContainingDirectory Handle + CurDirRef *RTLP_CURDIR_REF +} + +const ( + // CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile. + FILE_SUPERSEDE = 0x00000000 + FILE_OPEN = 0x00000001 + FILE_CREATE = 0x00000002 + FILE_OPEN_IF = 0x00000003 + FILE_OVERWRITE = 0x00000004 + FILE_OVERWRITE_IF = 0x00000005 + FILE_MAXIMUM_DISPOSITION = 0x00000005 + + // CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile. + FILE_DIRECTORY_FILE = 0x00000001 + FILE_WRITE_THROUGH = 0x00000002 + FILE_SEQUENTIAL_ONLY = 0x00000004 + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008 + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010 + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 + FILE_NON_DIRECTORY_FILE = 0x00000040 + FILE_CREATE_TREE_CONNECTION = 0x00000080 + FILE_COMPLETE_IF_OPLOCKED = 0x00000100 + FILE_NO_EA_KNOWLEDGE = 0x00000200 + FILE_OPEN_REMOTE_INSTANCE = 0x00000400 + FILE_RANDOM_ACCESS = 0x00000800 + FILE_DELETE_ON_CLOSE = 0x00001000 + FILE_OPEN_BY_FILE_ID = 0x00002000 + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 + FILE_NO_COMPRESSION = 0x00008000 + FILE_OPEN_REQUIRING_OPLOCK = 0x00010000 + FILE_DISALLOW_EXCLUSIVE = 0x00020000 + FILE_RESERVE_OPFILTER = 0x00100000 + FILE_OPEN_REPARSE_POINT = 0x00200000 + FILE_OPEN_NO_RECALL = 0x00400000 + FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000 + + // Parameter constants for NtCreateNamedPipeFile. + + FILE_PIPE_BYTE_STREAM_TYPE = 0x00000000 + FILE_PIPE_MESSAGE_TYPE = 0x00000001 + + FILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000 + FILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002 + + FILE_PIPE_TYPE_VALID_MASK = 0x00000003 + + FILE_PIPE_BYTE_STREAM_MODE = 0x00000000 + FILE_PIPE_MESSAGE_MODE = 0x00000001 + + FILE_PIPE_QUEUE_OPERATION = 0x00000000 + FILE_PIPE_COMPLETE_OPERATION = 0x00000001 + + FILE_PIPE_INBOUND = 0x00000000 + FILE_PIPE_OUTBOUND = 0x00000001 + FILE_PIPE_FULL_DUPLEX = 0x00000002 + + FILE_PIPE_DISCONNECTED_STATE = 0x00000001 + FILE_PIPE_LISTENING_STATE = 0x00000002 + FILE_PIPE_CONNECTED_STATE = 0x00000003 + FILE_PIPE_CLOSING_STATE = 0x00000004 + + FILE_PIPE_CLIENT_END = 0x00000000 + FILE_PIPE_SERVER_END = 0x00000001 +) + +const ( + // FileInformationClass for NtSetInformationFile + FileBasicInformation = 4 + FileRenameInformation = 10 + FileDispositionInformation = 13 + FilePositionInformation = 14 + FileEndOfFileInformation = 20 + FileValidDataLengthInformation = 39 + FileShortNameInformation = 40 + FileIoPriorityHintInformation = 43 + FileReplaceCompletionInformation = 61 + FileDispositionInformationEx = 64 + FileCaseSensitiveInformation = 71 + FileLinkInformation = 72 + FileCaseSensitiveInformationForceAccessCheck = 75 + FileKnownFolderInformation = 76 + + // Flags for FILE_RENAME_INFORMATION + FILE_RENAME_REPLACE_IF_EXISTS = 0x00000001 + FILE_RENAME_POSIX_SEMANTICS = 0x00000002 + FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE = 0x00000004 + FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 + FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 + FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 + FILE_RENAME_PRESERVE_AVAILABLE_SPACE = 0x00000030 + FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x00000040 + FILE_RENAME_FORCE_RESIZE_TARGET_SR = 0x00000080 + FILE_RENAME_FORCE_RESIZE_SOURCE_SR = 0x00000100 + FILE_RENAME_FORCE_RESIZE_SR = 0x00000180 + + // Flags for FILE_DISPOSITION_INFORMATION_EX + FILE_DISPOSITION_DO_NOT_DELETE = 0x00000000 + FILE_DISPOSITION_DELETE = 0x00000001 + FILE_DISPOSITION_POSIX_SEMANTICS = 0x00000002 + FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004 + FILE_DISPOSITION_ON_CLOSE = 0x00000008 + FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010 + + // Flags for FILE_CASE_SENSITIVE_INFORMATION + FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001 + + // Flags for FILE_LINK_INFORMATION + FILE_LINK_REPLACE_IF_EXISTS = 0x00000001 + FILE_LINK_POSIX_SEMANTICS = 0x00000002 + FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 + FILE_LINK_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 + FILE_LINK_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 + FILE_LINK_PRESERVE_AVAILABLE_SPACE = 0x00000030 + FILE_LINK_IGNORE_READONLY_ATTRIBUTE = 0x00000040 + FILE_LINK_FORCE_RESIZE_TARGET_SR = 0x00000080 + FILE_LINK_FORCE_RESIZE_SOURCE_SR = 0x00000100 + FILE_LINK_FORCE_RESIZE_SR = 0x00000180 +) + +// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess. +const ( + ProcessBasicInformation = iota + ProcessQuotaLimits + ProcessIoCounters + ProcessVmCounters + ProcessTimes + ProcessBasePriority + ProcessRaisePriority + ProcessDebugPort + ProcessExceptionPort + ProcessAccessToken + ProcessLdtInformation + ProcessLdtSize + ProcessDefaultHardErrorMode + ProcessIoPortHandlers + ProcessPooledUsageAndLimits + ProcessWorkingSetWatch + ProcessUserModeIOPL + ProcessEnableAlignmentFaultFixup + ProcessPriorityClass + ProcessWx86Information + ProcessHandleCount + ProcessAffinityMask + ProcessPriorityBoost + ProcessDeviceMap + ProcessSessionInformation + ProcessForegroundInformation + ProcessWow64Information + ProcessImageFileName + ProcessLUIDDeviceMapsEnabled + ProcessBreakOnTermination + ProcessDebugObjectHandle + ProcessDebugFlags + ProcessHandleTracing + ProcessIoPriority + ProcessExecuteFlags + ProcessTlsInformation + ProcessCookie + ProcessImageInformation + ProcessCycleTime + ProcessPagePriority + ProcessInstrumentationCallback + ProcessThreadStackAllocation + ProcessWorkingSetWatchEx + ProcessImageFileNameWin32 + ProcessImageFileMapping + ProcessAffinityUpdateMode + ProcessMemoryAllocationMode + ProcessGroupInformation + ProcessTokenVirtualizationEnabled + ProcessConsoleHostProcess + ProcessWindowInformation + ProcessHandleInformation + ProcessMitigationPolicy + ProcessDynamicFunctionTableInformation + ProcessHandleCheckingMode + ProcessKeepAliveCount + ProcessRevokeFileHandles + ProcessWorkingSetControl + ProcessHandleTable + ProcessCheckStackExtentsMode + ProcessCommandLineInformation + ProcessProtectionInformation + ProcessMemoryExhaustion + ProcessFaultInformation + ProcessTelemetryIdInformation + ProcessCommitReleaseInformation + ProcessDefaultCpuSetsInformation + ProcessAllowedCpuSetsInformation + ProcessSubsystemProcess + ProcessJobMemoryInformation + ProcessInPrivate + ProcessRaiseUMExceptionOnInvalidHandleClose + ProcessIumChallengeResponse + ProcessChildProcessInformation + ProcessHighGraphicsPriorityInformation + ProcessSubsystemInformation + ProcessEnergyValues + ProcessActivityThrottleState + ProcessActivityThrottlePolicy + ProcessWin32kSyscallFilterInformation + ProcessDisableSystemAllowedCpuSets + ProcessWakeInformation + ProcessEnergyTrackingState + ProcessManageWritesToExecutableMemory + ProcessCaptureTrustletLiveDump + ProcessTelemetryCoverage + ProcessEnclaveInformation + ProcessEnableReadWriteVmLogging + ProcessUptimeInformation + ProcessImageSection + ProcessDebugAuthInformation + ProcessSystemResourceManagement + ProcessSequenceNumber + ProcessLoaderDetour + ProcessSecurityDomainInformation + ProcessCombineSecurityDomainsInformation + ProcessEnableLogging + ProcessLeapSecondInformation + ProcessFiberShadowStackAllocation + ProcessFreeFiberShadowStackAllocation + ProcessAltSystemCallInformation + ProcessDynamicEHContinuationTargets + ProcessDynamicEnforcedCetCompatibleRanges +) + +type PROCESS_BASIC_INFORMATION struct { + ExitStatus NTStatus + PebBaseAddress *PEB + AffinityMask uintptr + BasePriority int32 + UniqueProcessId uintptr + InheritedFromUniqueProcessId uintptr +} + +type SYSTEM_PROCESS_INFORMATION struct { + NextEntryOffset uint32 + NumberOfThreads uint32 + WorkingSetPrivateSize int64 + HardFaultCount uint32 + NumberOfThreadsHighWatermark uint32 + CycleTime uint64 + CreateTime int64 + UserTime int64 + KernelTime int64 + ImageName NTUnicodeString + BasePriority int32 + UniqueProcessID uintptr + InheritedFromUniqueProcessID uintptr + HandleCount uint32 + SessionID uint32 + UniqueProcessKey *uint32 + PeakVirtualSize uintptr + VirtualSize uintptr + PageFaultCount uint32 + PeakWorkingSetSize uintptr + WorkingSetSize uintptr + QuotaPeakPagedPoolUsage uintptr + QuotaPagedPoolUsage uintptr + QuotaPeakNonPagedPoolUsage uintptr + QuotaNonPagedPoolUsage uintptr + PagefileUsage uintptr + PeakPagefileUsage uintptr + PrivatePageCount uintptr + ReadOperationCount int64 + WriteOperationCount int64 + OtherOperationCount int64 + ReadTransferCount int64 + WriteTransferCount int64 + OtherTransferCount int64 +} + +// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation +const ( + SystemBasicInformation = iota + SystemProcessorInformation + SystemPerformanceInformation + SystemTimeOfDayInformation + SystemPathInformation + SystemProcessInformation + SystemCallCountInformation + SystemDeviceInformation + SystemProcessorPerformanceInformation + SystemFlagsInformation + SystemCallTimeInformation + SystemModuleInformation + SystemLocksInformation + SystemStackTraceInformation + SystemPagedPoolInformation + SystemNonPagedPoolInformation + SystemHandleInformation + SystemObjectInformation + SystemPageFileInformation + SystemVdmInstemulInformation + SystemVdmBopInformation + SystemFileCacheInformation + SystemPoolTagInformation + SystemInterruptInformation + SystemDpcBehaviorInformation + SystemFullMemoryInformation + SystemLoadGdiDriverInformation + SystemUnloadGdiDriverInformation + SystemTimeAdjustmentInformation + SystemSummaryMemoryInformation + SystemMirrorMemoryInformation + SystemPerformanceTraceInformation + systemObsolete0 + SystemExceptionInformation + SystemCrashDumpStateInformation + SystemKernelDebuggerInformation + SystemContextSwitchInformation + SystemRegistryQuotaInformation + SystemExtendServiceTableInformation + SystemPrioritySeperation + SystemVerifierAddDriverInformation + SystemVerifierRemoveDriverInformation + SystemProcessorIdleInformation + SystemLegacyDriverInformation + SystemCurrentTimeZoneInformation + SystemLookasideInformation + SystemTimeSlipNotification + SystemSessionCreate + SystemSessionDetach + SystemSessionInformation + SystemRangeStartInformation + SystemVerifierInformation + SystemVerifierThunkExtend + SystemSessionProcessInformation + SystemLoadGdiDriverInSystemSpace + SystemNumaProcessorMap + SystemPrefetcherInformation + SystemExtendedProcessInformation + SystemRecommendedSharedDataAlignment + SystemComPlusPackage + SystemNumaAvailableMemory + SystemProcessorPowerInformation + SystemEmulationBasicInformation + SystemEmulationProcessorInformation + SystemExtendedHandleInformation + SystemLostDelayedWriteInformation + SystemBigPoolInformation + SystemSessionPoolTagInformation + SystemSessionMappedViewInformation + SystemHotpatchInformation + SystemObjectSecurityMode + SystemWatchdogTimerHandler + SystemWatchdogTimerInformation + SystemLogicalProcessorInformation + SystemWow64SharedInformationObsolete + SystemRegisterFirmwareTableInformationHandler + SystemFirmwareTableInformation + SystemModuleInformationEx + SystemVerifierTriageInformation + SystemSuperfetchInformation + SystemMemoryListInformation + SystemFileCacheInformationEx + SystemThreadPriorityClientIdInformation + SystemProcessorIdleCycleTimeInformation + SystemVerifierCancellationInformation + SystemProcessorPowerInformationEx + SystemRefTraceInformation + SystemSpecialPoolInformation + SystemProcessIdInformation + SystemErrorPortInformation + SystemBootEnvironmentInformation + SystemHypervisorInformation + SystemVerifierInformationEx + SystemTimeZoneInformation + SystemImageFileExecutionOptionsInformation + SystemCoverageInformation + SystemPrefetchPatchInformation + SystemVerifierFaultsInformation + SystemSystemPartitionInformation + SystemSystemDiskInformation + SystemProcessorPerformanceDistribution + SystemNumaProximityNodeInformation + SystemDynamicTimeZoneInformation + SystemCodeIntegrityInformation + SystemProcessorMicrocodeUpdateInformation + SystemProcessorBrandString + SystemVirtualAddressInformation + SystemLogicalProcessorAndGroupInformation + SystemProcessorCycleTimeInformation + SystemStoreInformation + SystemRegistryAppendString + SystemAitSamplingValue + SystemVhdBootInformation + SystemCpuQuotaInformation + SystemNativeBasicInformation + systemSpare1 + SystemLowPriorityIoInformation + SystemTpmBootEntropyInformation + SystemVerifierCountersInformation + SystemPagedPoolInformationEx + SystemSystemPtesInformationEx + SystemNodeDistanceInformation + SystemAcpiAuditInformation + SystemBasicPerformanceInformation + SystemQueryPerformanceCounterInformation + SystemSessionBigPoolInformation + SystemBootGraphicsInformation + SystemScrubPhysicalMemoryInformation + SystemBadPageInformation + SystemProcessorProfileControlArea + SystemCombinePhysicalMemoryInformation + SystemEntropyInterruptTimingCallback + SystemConsoleInformation + SystemPlatformBinaryInformation + SystemThrottleNotificationInformation + SystemHypervisorProcessorCountInformation + SystemDeviceDataInformation + SystemDeviceDataEnumerationInformation + SystemMemoryTopologyInformation + SystemMemoryChannelInformation + SystemBootLogoInformation + SystemProcessorPerformanceInformationEx + systemSpare0 + SystemSecureBootPolicyInformation + SystemPageFileInformationEx + SystemSecureBootInformation + SystemEntropyInterruptTimingRawInformation + SystemPortableWorkspaceEfiLauncherInformation + SystemFullProcessInformation + SystemKernelDebuggerInformationEx + SystemBootMetadataInformation + SystemSoftRebootInformation + SystemElamCertificateInformation + SystemOfflineDumpConfigInformation + SystemProcessorFeaturesInformation + SystemRegistryReconciliationInformation + SystemEdidInformation + SystemManufacturingInformation + SystemEnergyEstimationConfigInformation + SystemHypervisorDetailInformation + SystemProcessorCycleStatsInformation + SystemVmGenerationCountInformation + SystemTrustedPlatformModuleInformation + SystemKernelDebuggerFlags + SystemCodeIntegrityPolicyInformation + SystemIsolatedUserModeInformation + SystemHardwareSecurityTestInterfaceResultsInformation + SystemSingleModuleInformation + SystemAllowedCpuSetsInformation + SystemDmaProtectionInformation + SystemInterruptCpuSetsInformation + SystemSecureBootPolicyFullInformation + SystemCodeIntegrityPolicyFullInformation + SystemAffinitizedInterruptProcessorInformation + SystemRootSiloInformation +) + +type RTL_PROCESS_MODULE_INFORMATION struct { + Section Handle + MappedBase uintptr + ImageBase uintptr + ImageSize uint32 + Flags uint32 + LoadOrderIndex uint16 + InitOrderIndex uint16 + LoadCount uint16 + OffsetToFileName uint16 + FullPathName [256]byte +} + +type RTL_PROCESS_MODULES struct { + NumberOfModules uint32 + Modules [1]RTL_PROCESS_MODULE_INFORMATION +} + +// Constants for LocalAlloc flags. +const ( + LMEM_FIXED = 0x0 + LMEM_MOVEABLE = 0x2 + LMEM_NOCOMPACT = 0x10 + LMEM_NODISCARD = 0x20 + LMEM_ZEROINIT = 0x40 + LMEM_MODIFY = 0x80 + LMEM_DISCARDABLE = 0xf00 + LMEM_VALID_FLAGS = 0xf72 + LMEM_INVALID_HANDLE = 0x8000 + LHND = LMEM_MOVEABLE | LMEM_ZEROINIT + LPTR = LMEM_FIXED | LMEM_ZEROINIT + NONZEROLHND = LMEM_MOVEABLE + NONZEROLPTR = LMEM_FIXED +) + +// Constants for the CreateNamedPipe-family of functions. +const ( + PIPE_ACCESS_INBOUND = 0x1 + PIPE_ACCESS_OUTBOUND = 0x2 + PIPE_ACCESS_DUPLEX = 0x3 + + PIPE_CLIENT_END = 0x0 + PIPE_SERVER_END = 0x1 + + PIPE_WAIT = 0x0 + PIPE_NOWAIT = 0x1 + PIPE_READMODE_BYTE = 0x0 + PIPE_READMODE_MESSAGE = 0x2 + PIPE_TYPE_BYTE = 0x0 + PIPE_TYPE_MESSAGE = 0x4 + PIPE_ACCEPT_REMOTE_CLIENTS = 0x0 + PIPE_REJECT_REMOTE_CLIENTS = 0x8 + + PIPE_UNLIMITED_INSTANCES = 255 +) + +// Constants for security attributes when opening named pipes. +const ( + SECURITY_ANONYMOUS = SecurityAnonymous << 16 + SECURITY_IDENTIFICATION = SecurityIdentification << 16 + SECURITY_IMPERSONATION = SecurityImpersonation << 16 + SECURITY_DELEGATION = SecurityDelegation << 16 + + SECURITY_CONTEXT_TRACKING = 0x40000 + SECURITY_EFFECTIVE_ONLY = 0x80000 + + SECURITY_SQOS_PRESENT = 0x100000 + SECURITY_VALID_SQOS_FLAGS = 0x1f0000 +) + +// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro. +type ResourceID uint16 + +// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID, +// or a string, to specify a resource or resource type by name. +type ResourceIDOrString interface{} + +// Predefined resource names and types. +var ( + // Predefined names. + CREATEPROCESS_MANIFEST_RESOURCE_ID ResourceID = 1 + ISOLATIONAWARE_MANIFEST_RESOURCE_ID ResourceID = 2 + ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3 + ISOLATIONPOLICY_MANIFEST_RESOURCE_ID ResourceID = 4 + ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID ResourceID = 5 + MINIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 1 // inclusive + MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 16 // inclusive + + // Predefined types. + RT_CURSOR ResourceID = 1 + RT_BITMAP ResourceID = 2 + RT_ICON ResourceID = 3 + RT_MENU ResourceID = 4 + RT_DIALOG ResourceID = 5 + RT_STRING ResourceID = 6 + RT_FONTDIR ResourceID = 7 + RT_FONT ResourceID = 8 + RT_ACCELERATOR ResourceID = 9 + RT_RCDATA ResourceID = 10 + RT_MESSAGETABLE ResourceID = 11 + RT_GROUP_CURSOR ResourceID = 12 + RT_GROUP_ICON ResourceID = 14 + RT_VERSION ResourceID = 16 + RT_DLGINCLUDE ResourceID = 17 + RT_PLUGPLAY ResourceID = 19 + RT_VXD ResourceID = 20 + RT_ANICURSOR ResourceID = 21 + RT_ANIICON ResourceID = 22 + RT_HTML ResourceID = 23 + RT_MANIFEST ResourceID = 24 +) + +type VS_FIXEDFILEINFO struct { + Signature uint32 + StrucVersion uint32 + FileVersionMS uint32 + FileVersionLS uint32 + ProductVersionMS uint32 + ProductVersionLS uint32 + FileFlagsMask uint32 + FileFlags uint32 + FileOS uint32 + FileType uint32 + FileSubtype uint32 + FileDateMS uint32 + FileDateLS uint32 +} + +type COAUTHIDENTITY struct { + User *uint16 + UserLength uint32 + Domain *uint16 + DomainLength uint32 + Password *uint16 + PasswordLength uint32 + Flags uint32 +} + +type COAUTHINFO struct { + AuthnSvc uint32 + AuthzSvc uint32 + ServerPrincName *uint16 + AuthnLevel uint32 + ImpersonationLevel uint32 + AuthIdentityData *COAUTHIDENTITY + Capabilities uint32 +} + +type COSERVERINFO struct { + Reserved1 uint32 + Aame *uint16 + AuthInfo *COAUTHINFO + Reserved2 uint32 +} + +type BIND_OPTS3 struct { + CbStruct uint32 + Flags uint32 + Mode uint32 + TickCountDeadline uint32 + TrackFlags uint32 + ClassContext uint32 + Locale uint32 + ServerInfo *COSERVERINFO + Hwnd HWND +} + +const ( + CLSCTX_INPROC_SERVER = 0x1 + CLSCTX_INPROC_HANDLER = 0x2 + CLSCTX_LOCAL_SERVER = 0x4 + CLSCTX_INPROC_SERVER16 = 0x8 + CLSCTX_REMOTE_SERVER = 0x10 + CLSCTX_INPROC_HANDLER16 = 0x20 + CLSCTX_RESERVED1 = 0x40 + CLSCTX_RESERVED2 = 0x80 + CLSCTX_RESERVED3 = 0x100 + CLSCTX_RESERVED4 = 0x200 + CLSCTX_NO_CODE_DOWNLOAD = 0x400 + CLSCTX_RESERVED5 = 0x800 + CLSCTX_NO_CUSTOM_MARSHAL = 0x1000 + CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000 + CLSCTX_NO_FAILURE_LOG = 0x4000 + CLSCTX_DISABLE_AAA = 0x8000 + CLSCTX_ENABLE_AAA = 0x10000 + CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000 + CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000 + CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000 + CLSCTX_ENABLE_CLOAKING = 0x100000 + CLSCTX_APPCONTAINER = 0x400000 + CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000 + CLSCTX_PS_DLL = 0x80000000 + + COINIT_MULTITHREADED = 0x0 + COINIT_APARTMENTTHREADED = 0x2 + COINIT_DISABLE_OLE1DDE = 0x4 + COINIT_SPEED_OVER_MEMORY = 0x8 +) + +// Flag for QueryFullProcessImageName. +const PROCESS_NAME_NATIVE = 1 + +type ModuleInfo struct { + BaseOfDll uintptr + SizeOfImage uint32 + EntryPoint uintptr +} + +const ALL_PROCESSOR_GROUPS = 0xFFFF + +type Rect struct { + Left int32 + Top int32 + Right int32 + Bottom int32 +} + +type GUIThreadInfo struct { + Size uint32 + Flags uint32 + Active HWND + Focus HWND + Capture HWND + MenuOwner HWND + MoveSize HWND + CaretHandle HWND + CaretRect Rect +} + +const ( + DWMWA_NCRENDERING_ENABLED = 1 + DWMWA_NCRENDERING_POLICY = 2 + DWMWA_TRANSITIONS_FORCEDISABLED = 3 + DWMWA_ALLOW_NCPAINT = 4 + DWMWA_CAPTION_BUTTON_BOUNDS = 5 + DWMWA_NONCLIENT_RTL_LAYOUT = 6 + DWMWA_FORCE_ICONIC_REPRESENTATION = 7 + DWMWA_FLIP3D_POLICY = 8 + DWMWA_EXTENDED_FRAME_BOUNDS = 9 + DWMWA_HAS_ICONIC_BITMAP = 10 + DWMWA_DISALLOW_PEEK = 11 + DWMWA_EXCLUDED_FROM_PEEK = 12 + DWMWA_CLOAK = 13 + DWMWA_CLOAKED = 14 + DWMWA_FREEZE_REPRESENTATION = 15 + DWMWA_PASSIVE_UPDATE_MODE = 16 + DWMWA_USE_HOSTBACKDROPBRUSH = 17 + DWMWA_USE_IMMERSIVE_DARK_MODE = 20 + DWMWA_WINDOW_CORNER_PREFERENCE = 33 + DWMWA_BORDER_COLOR = 34 + DWMWA_CAPTION_COLOR = 35 + DWMWA_TEXT_COLOR = 36 + DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37 +) + +type WSAQUERYSET struct { + Size uint32 + ServiceInstanceName *uint16 + ServiceClassId *GUID + Version *WSAVersion + Comment *uint16 + NameSpace uint32 + NSProviderId *GUID + Context *uint16 + NumberOfProtocols uint32 + AfpProtocols *AFProtocols + QueryString *uint16 + NumberOfCsAddrs uint32 + SaBuffer *CSAddrInfo + OutputFlags uint32 + Blob *BLOB +} + +type WSAVersion struct { + Version uint32 + EnumerationOfComparison int32 +} + +type AFProtocols struct { + AddressFamily int32 + Protocol int32 +} + +type CSAddrInfo struct { + LocalAddr SocketAddress + RemoteAddr SocketAddress + SocketType int32 + Protocol int32 +} + +type BLOB struct { + Size uint32 + BlobData *byte +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go new file mode 100644 index 0000000..8bce3e2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_386.go @@ -0,0 +1,35 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 + _ uint32 // pad to 8 byte boundary +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go new file mode 100644 index 0000000..fdddc0c --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_amd64.go @@ -0,0 +1,34 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm.go b/vendor/golang.org/x/sys/windows/types_windows_arm.go new file mode 100644 index 0000000..321872c --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_arm.go @@ -0,0 +1,35 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 + _ uint32 // pad to 8 byte boundary +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm64.go b/vendor/golang.org/x/sys/windows/types_windows_arm64.go new file mode 100644 index 0000000..fdddc0c --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_arm64.go @@ -0,0 +1,34 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 +} diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go new file mode 100644 index 0000000..0cf658f --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -0,0 +1,9468 @@ +// Code generated by 'mkerrors.bash'; DO NOT EDIT. + +package windows + +import "syscall" + +const ( + FACILITY_NULL = 0 + FACILITY_RPC = 1 + FACILITY_DISPATCH = 2 + FACILITY_STORAGE = 3 + FACILITY_ITF = 4 + FACILITY_WIN32 = 7 + FACILITY_WINDOWS = 8 + FACILITY_SSPI = 9 + FACILITY_SECURITY = 9 + FACILITY_CONTROL = 10 + FACILITY_CERT = 11 + FACILITY_INTERNET = 12 + FACILITY_MEDIASERVER = 13 + FACILITY_MSMQ = 14 + FACILITY_SETUPAPI = 15 + FACILITY_SCARD = 16 + FACILITY_COMPLUS = 17 + FACILITY_AAF = 18 + FACILITY_URT = 19 + FACILITY_ACS = 20 + FACILITY_DPLAY = 21 + FACILITY_UMI = 22 + FACILITY_SXS = 23 + FACILITY_WINDOWS_CE = 24 + FACILITY_HTTP = 25 + FACILITY_USERMODE_COMMONLOG = 26 + FACILITY_WER = 27 + FACILITY_USERMODE_FILTER_MANAGER = 31 + FACILITY_BACKGROUNDCOPY = 32 + FACILITY_CONFIGURATION = 33 + FACILITY_WIA = 33 + FACILITY_STATE_MANAGEMENT = 34 + FACILITY_METADIRECTORY = 35 + FACILITY_WINDOWSUPDATE = 36 + FACILITY_DIRECTORYSERVICE = 37 + FACILITY_GRAPHICS = 38 + FACILITY_SHELL = 39 + FACILITY_NAP = 39 + FACILITY_TPM_SERVICES = 40 + FACILITY_TPM_SOFTWARE = 41 + FACILITY_UI = 42 + FACILITY_XAML = 43 + FACILITY_ACTION_QUEUE = 44 + FACILITY_PLA = 48 + FACILITY_WINDOWS_SETUP = 48 + FACILITY_FVE = 49 + FACILITY_FWP = 50 + FACILITY_WINRM = 51 + FACILITY_NDIS = 52 + FACILITY_USERMODE_HYPERVISOR = 53 + FACILITY_CMI = 54 + FACILITY_USERMODE_VIRTUALIZATION = 55 + FACILITY_USERMODE_VOLMGR = 56 + FACILITY_BCD = 57 + FACILITY_USERMODE_VHD = 58 + FACILITY_USERMODE_HNS = 59 + FACILITY_SDIAG = 60 + FACILITY_WEBSERVICES = 61 + FACILITY_WINPE = 61 + FACILITY_WPN = 62 + FACILITY_WINDOWS_STORE = 63 + FACILITY_INPUT = 64 + FACILITY_EAP = 66 + FACILITY_WINDOWS_DEFENDER = 80 + FACILITY_OPC = 81 + FACILITY_XPS = 82 + FACILITY_MBN = 84 + FACILITY_POWERSHELL = 84 + FACILITY_RAS = 83 + FACILITY_P2P_INT = 98 + FACILITY_P2P = 99 + FACILITY_DAF = 100 + FACILITY_BLUETOOTH_ATT = 101 + FACILITY_AUDIO = 102 + FACILITY_STATEREPOSITORY = 103 + FACILITY_VISUALCPP = 109 + FACILITY_SCRIPT = 112 + FACILITY_PARSE = 113 + FACILITY_BLB = 120 + FACILITY_BLB_CLI = 121 + FACILITY_WSBAPP = 122 + FACILITY_BLBUI = 128 + FACILITY_USN = 129 + FACILITY_USERMODE_VOLSNAP = 130 + FACILITY_TIERING = 131 + FACILITY_WSB_ONLINE = 133 + FACILITY_ONLINE_ID = 134 + FACILITY_DEVICE_UPDATE_AGENT = 135 + FACILITY_DRVSERVICING = 136 + FACILITY_DLS = 153 + FACILITY_DELIVERY_OPTIMIZATION = 208 + FACILITY_USERMODE_SPACES = 231 + FACILITY_USER_MODE_SECURITY_CORE = 232 + FACILITY_USERMODE_LICENSING = 234 + FACILITY_SOS = 160 + FACILITY_DEBUGGERS = 176 + FACILITY_SPP = 256 + FACILITY_RESTORE = 256 + FACILITY_DMSERVER = 256 + FACILITY_DEPLOYMENT_SERVICES_SERVER = 257 + FACILITY_DEPLOYMENT_SERVICES_IMAGING = 258 + FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT = 259 + FACILITY_DEPLOYMENT_SERVICES_UTIL = 260 + FACILITY_DEPLOYMENT_SERVICES_BINLSVC = 261 + FACILITY_DEPLOYMENT_SERVICES_PXE = 263 + FACILITY_DEPLOYMENT_SERVICES_TFTP = 264 + FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272 + FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING = 278 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER = 289 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT = 290 + FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER = 293 + FACILITY_LINGUISTIC_SERVICES = 305 + FACILITY_AUDIOSTREAMING = 1094 + FACILITY_ACCELERATOR = 1536 + FACILITY_WMAAECMA = 1996 + FACILITY_DIRECTMUSIC = 2168 + FACILITY_DIRECT3D10 = 2169 + FACILITY_DXGI = 2170 + FACILITY_DXGI_DDI = 2171 + FACILITY_DIRECT3D11 = 2172 + FACILITY_DIRECT3D11_DEBUG = 2173 + FACILITY_DIRECT3D12 = 2174 + FACILITY_DIRECT3D12_DEBUG = 2175 + FACILITY_LEAP = 2184 + FACILITY_AUDCLNT = 2185 + FACILITY_WINCODEC_DWRITE_DWM = 2200 + FACILITY_WINML = 2192 + FACILITY_DIRECT2D = 2201 + FACILITY_DEFRAG = 2304 + FACILITY_USERMODE_SDBUS = 2305 + FACILITY_JSCRIPT = 2306 + FACILITY_PIDGENX = 2561 + FACILITY_EAS = 85 + FACILITY_WEB = 885 + FACILITY_WEB_SOCKET = 886 + FACILITY_MOBILE = 1793 + FACILITY_SQLITE = 1967 + FACILITY_UTC = 1989 + FACILITY_WEP = 2049 + FACILITY_SYNCENGINE = 2050 + FACILITY_XBOX = 2339 + FACILITY_GAME = 2340 + FACILITY_PIX = 2748 + ERROR_SUCCESS syscall.Errno = 0 + NO_ERROR = 0 + SEC_E_OK Handle = 0x00000000 + ERROR_INVALID_FUNCTION syscall.Errno = 1 + ERROR_FILE_NOT_FOUND syscall.Errno = 2 + ERROR_PATH_NOT_FOUND syscall.Errno = 3 + ERROR_TOO_MANY_OPEN_FILES syscall.Errno = 4 + ERROR_ACCESS_DENIED syscall.Errno = 5 + ERROR_INVALID_HANDLE syscall.Errno = 6 + ERROR_ARENA_TRASHED syscall.Errno = 7 + ERROR_NOT_ENOUGH_MEMORY syscall.Errno = 8 + ERROR_INVALID_BLOCK syscall.Errno = 9 + ERROR_BAD_ENVIRONMENT syscall.Errno = 10 + ERROR_BAD_FORMAT syscall.Errno = 11 + ERROR_INVALID_ACCESS syscall.Errno = 12 + ERROR_INVALID_DATA syscall.Errno = 13 + ERROR_OUTOFMEMORY syscall.Errno = 14 + ERROR_INVALID_DRIVE syscall.Errno = 15 + ERROR_CURRENT_DIRECTORY syscall.Errno = 16 + ERROR_NOT_SAME_DEVICE syscall.Errno = 17 + ERROR_NO_MORE_FILES syscall.Errno = 18 + ERROR_WRITE_PROTECT syscall.Errno = 19 + ERROR_BAD_UNIT syscall.Errno = 20 + ERROR_NOT_READY syscall.Errno = 21 + ERROR_BAD_COMMAND syscall.Errno = 22 + ERROR_CRC syscall.Errno = 23 + ERROR_BAD_LENGTH syscall.Errno = 24 + ERROR_SEEK syscall.Errno = 25 + ERROR_NOT_DOS_DISK syscall.Errno = 26 + ERROR_SECTOR_NOT_FOUND syscall.Errno = 27 + ERROR_OUT_OF_PAPER syscall.Errno = 28 + ERROR_WRITE_FAULT syscall.Errno = 29 + ERROR_READ_FAULT syscall.Errno = 30 + ERROR_GEN_FAILURE syscall.Errno = 31 + ERROR_SHARING_VIOLATION syscall.Errno = 32 + ERROR_LOCK_VIOLATION syscall.Errno = 33 + ERROR_WRONG_DISK syscall.Errno = 34 + ERROR_SHARING_BUFFER_EXCEEDED syscall.Errno = 36 + ERROR_HANDLE_EOF syscall.Errno = 38 + ERROR_HANDLE_DISK_FULL syscall.Errno = 39 + ERROR_NOT_SUPPORTED syscall.Errno = 50 + ERROR_REM_NOT_LIST syscall.Errno = 51 + ERROR_DUP_NAME syscall.Errno = 52 + ERROR_BAD_NETPATH syscall.Errno = 53 + ERROR_NETWORK_BUSY syscall.Errno = 54 + ERROR_DEV_NOT_EXIST syscall.Errno = 55 + ERROR_TOO_MANY_CMDS syscall.Errno = 56 + ERROR_ADAP_HDW_ERR syscall.Errno = 57 + ERROR_BAD_NET_RESP syscall.Errno = 58 + ERROR_UNEXP_NET_ERR syscall.Errno = 59 + ERROR_BAD_REM_ADAP syscall.Errno = 60 + ERROR_PRINTQ_FULL syscall.Errno = 61 + ERROR_NO_SPOOL_SPACE syscall.Errno = 62 + ERROR_PRINT_CANCELLED syscall.Errno = 63 + ERROR_NETNAME_DELETED syscall.Errno = 64 + ERROR_NETWORK_ACCESS_DENIED syscall.Errno = 65 + ERROR_BAD_DEV_TYPE syscall.Errno = 66 + ERROR_BAD_NET_NAME syscall.Errno = 67 + ERROR_TOO_MANY_NAMES syscall.Errno = 68 + ERROR_TOO_MANY_SESS syscall.Errno = 69 + ERROR_SHARING_PAUSED syscall.Errno = 70 + ERROR_REQ_NOT_ACCEP syscall.Errno = 71 + ERROR_REDIR_PAUSED syscall.Errno = 72 + ERROR_FILE_EXISTS syscall.Errno = 80 + ERROR_CANNOT_MAKE syscall.Errno = 82 + ERROR_FAIL_I24 syscall.Errno = 83 + ERROR_OUT_OF_STRUCTURES syscall.Errno = 84 + ERROR_ALREADY_ASSIGNED syscall.Errno = 85 + ERROR_INVALID_PASSWORD syscall.Errno = 86 + ERROR_INVALID_PARAMETER syscall.Errno = 87 + ERROR_NET_WRITE_FAULT syscall.Errno = 88 + ERROR_NO_PROC_SLOTS syscall.Errno = 89 + ERROR_TOO_MANY_SEMAPHORES syscall.Errno = 100 + ERROR_EXCL_SEM_ALREADY_OWNED syscall.Errno = 101 + ERROR_SEM_IS_SET syscall.Errno = 102 + ERROR_TOO_MANY_SEM_REQUESTS syscall.Errno = 103 + ERROR_INVALID_AT_INTERRUPT_TIME syscall.Errno = 104 + ERROR_SEM_OWNER_DIED syscall.Errno = 105 + ERROR_SEM_USER_LIMIT syscall.Errno = 106 + ERROR_DISK_CHANGE syscall.Errno = 107 + ERROR_DRIVE_LOCKED syscall.Errno = 108 + ERROR_BROKEN_PIPE syscall.Errno = 109 + ERROR_OPEN_FAILED syscall.Errno = 110 + ERROR_BUFFER_OVERFLOW syscall.Errno = 111 + ERROR_DISK_FULL syscall.Errno = 112 + ERROR_NO_MORE_SEARCH_HANDLES syscall.Errno = 113 + ERROR_INVALID_TARGET_HANDLE syscall.Errno = 114 + ERROR_INVALID_CATEGORY syscall.Errno = 117 + ERROR_INVALID_VERIFY_SWITCH syscall.Errno = 118 + ERROR_BAD_DRIVER_LEVEL syscall.Errno = 119 + ERROR_CALL_NOT_IMPLEMENTED syscall.Errno = 120 + ERROR_SEM_TIMEOUT syscall.Errno = 121 + ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 + ERROR_INVALID_NAME syscall.Errno = 123 + ERROR_INVALID_LEVEL syscall.Errno = 124 + ERROR_NO_VOLUME_LABEL syscall.Errno = 125 + ERROR_MOD_NOT_FOUND syscall.Errno = 126 + ERROR_PROC_NOT_FOUND syscall.Errno = 127 + ERROR_WAIT_NO_CHILDREN syscall.Errno = 128 + ERROR_CHILD_NOT_COMPLETE syscall.Errno = 129 + ERROR_DIRECT_ACCESS_HANDLE syscall.Errno = 130 + ERROR_NEGATIVE_SEEK syscall.Errno = 131 + ERROR_SEEK_ON_DEVICE syscall.Errno = 132 + ERROR_IS_JOIN_TARGET syscall.Errno = 133 + ERROR_IS_JOINED syscall.Errno = 134 + ERROR_IS_SUBSTED syscall.Errno = 135 + ERROR_NOT_JOINED syscall.Errno = 136 + ERROR_NOT_SUBSTED syscall.Errno = 137 + ERROR_JOIN_TO_JOIN syscall.Errno = 138 + ERROR_SUBST_TO_SUBST syscall.Errno = 139 + ERROR_JOIN_TO_SUBST syscall.Errno = 140 + ERROR_SUBST_TO_JOIN syscall.Errno = 141 + ERROR_BUSY_DRIVE syscall.Errno = 142 + ERROR_SAME_DRIVE syscall.Errno = 143 + ERROR_DIR_NOT_ROOT syscall.Errno = 144 + ERROR_DIR_NOT_EMPTY syscall.Errno = 145 + ERROR_IS_SUBST_PATH syscall.Errno = 146 + ERROR_IS_JOIN_PATH syscall.Errno = 147 + ERROR_PATH_BUSY syscall.Errno = 148 + ERROR_IS_SUBST_TARGET syscall.Errno = 149 + ERROR_SYSTEM_TRACE syscall.Errno = 150 + ERROR_INVALID_EVENT_COUNT syscall.Errno = 151 + ERROR_TOO_MANY_MUXWAITERS syscall.Errno = 152 + ERROR_INVALID_LIST_FORMAT syscall.Errno = 153 + ERROR_LABEL_TOO_LONG syscall.Errno = 154 + ERROR_TOO_MANY_TCBS syscall.Errno = 155 + ERROR_SIGNAL_REFUSED syscall.Errno = 156 + ERROR_DISCARDED syscall.Errno = 157 + ERROR_NOT_LOCKED syscall.Errno = 158 + ERROR_BAD_THREADID_ADDR syscall.Errno = 159 + ERROR_BAD_ARGUMENTS syscall.Errno = 160 + ERROR_BAD_PATHNAME syscall.Errno = 161 + ERROR_SIGNAL_PENDING syscall.Errno = 162 + ERROR_MAX_THRDS_REACHED syscall.Errno = 164 + ERROR_LOCK_FAILED syscall.Errno = 167 + ERROR_BUSY syscall.Errno = 170 + ERROR_DEVICE_SUPPORT_IN_PROGRESS syscall.Errno = 171 + ERROR_CANCEL_VIOLATION syscall.Errno = 173 + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED syscall.Errno = 174 + ERROR_INVALID_SEGMENT_NUMBER syscall.Errno = 180 + ERROR_INVALID_ORDINAL syscall.Errno = 182 + ERROR_ALREADY_EXISTS syscall.Errno = 183 + ERROR_INVALID_FLAG_NUMBER syscall.Errno = 186 + ERROR_SEM_NOT_FOUND syscall.Errno = 187 + ERROR_INVALID_STARTING_CODESEG syscall.Errno = 188 + ERROR_INVALID_STACKSEG syscall.Errno = 189 + ERROR_INVALID_MODULETYPE syscall.Errno = 190 + ERROR_INVALID_EXE_SIGNATURE syscall.Errno = 191 + ERROR_EXE_MARKED_INVALID syscall.Errno = 192 + ERROR_BAD_EXE_FORMAT syscall.Errno = 193 + ERROR_ITERATED_DATA_EXCEEDS_64k syscall.Errno = 194 + ERROR_INVALID_MINALLOCSIZE syscall.Errno = 195 + ERROR_DYNLINK_FROM_INVALID_RING syscall.Errno = 196 + ERROR_IOPL_NOT_ENABLED syscall.Errno = 197 + ERROR_INVALID_SEGDPL syscall.Errno = 198 + ERROR_AUTODATASEG_EXCEEDS_64k syscall.Errno = 199 + ERROR_RING2SEG_MUST_BE_MOVABLE syscall.Errno = 200 + ERROR_RELOC_CHAIN_XEEDS_SEGLIM syscall.Errno = 201 + ERROR_INFLOOP_IN_RELOC_CHAIN syscall.Errno = 202 + ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 + ERROR_NO_SIGNAL_SENT syscall.Errno = 205 + ERROR_FILENAME_EXCED_RANGE syscall.Errno = 206 + ERROR_RING2_STACK_IN_USE syscall.Errno = 207 + ERROR_META_EXPANSION_TOO_LONG syscall.Errno = 208 + ERROR_INVALID_SIGNAL_NUMBER syscall.Errno = 209 + ERROR_THREAD_1_INACTIVE syscall.Errno = 210 + ERROR_LOCKED syscall.Errno = 212 + ERROR_TOO_MANY_MODULES syscall.Errno = 214 + ERROR_NESTING_NOT_ALLOWED syscall.Errno = 215 + ERROR_EXE_MACHINE_TYPE_MISMATCH syscall.Errno = 216 + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY syscall.Errno = 217 + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY syscall.Errno = 218 + ERROR_FILE_CHECKED_OUT syscall.Errno = 220 + ERROR_CHECKOUT_REQUIRED syscall.Errno = 221 + ERROR_BAD_FILE_TYPE syscall.Errno = 222 + ERROR_FILE_TOO_LARGE syscall.Errno = 223 + ERROR_FORMS_AUTH_REQUIRED syscall.Errno = 224 + ERROR_VIRUS_INFECTED syscall.Errno = 225 + ERROR_VIRUS_DELETED syscall.Errno = 226 + ERROR_PIPE_LOCAL syscall.Errno = 229 + ERROR_BAD_PIPE syscall.Errno = 230 + ERROR_PIPE_BUSY syscall.Errno = 231 + ERROR_NO_DATA syscall.Errno = 232 + ERROR_PIPE_NOT_CONNECTED syscall.Errno = 233 + ERROR_MORE_DATA syscall.Errno = 234 + ERROR_NO_WORK_DONE syscall.Errno = 235 + ERROR_VC_DISCONNECTED syscall.Errno = 240 + ERROR_INVALID_EA_NAME syscall.Errno = 254 + ERROR_EA_LIST_INCONSISTENT syscall.Errno = 255 + WAIT_TIMEOUT syscall.Errno = 258 + ERROR_NO_MORE_ITEMS syscall.Errno = 259 + ERROR_CANNOT_COPY syscall.Errno = 266 + ERROR_DIRECTORY syscall.Errno = 267 + ERROR_EAS_DIDNT_FIT syscall.Errno = 275 + ERROR_EA_FILE_CORRUPT syscall.Errno = 276 + ERROR_EA_TABLE_FULL syscall.Errno = 277 + ERROR_INVALID_EA_HANDLE syscall.Errno = 278 + ERROR_EAS_NOT_SUPPORTED syscall.Errno = 282 + ERROR_NOT_OWNER syscall.Errno = 288 + ERROR_TOO_MANY_POSTS syscall.Errno = 298 + ERROR_PARTIAL_COPY syscall.Errno = 299 + ERROR_OPLOCK_NOT_GRANTED syscall.Errno = 300 + ERROR_INVALID_OPLOCK_PROTOCOL syscall.Errno = 301 + ERROR_DISK_TOO_FRAGMENTED syscall.Errno = 302 + ERROR_DELETE_PENDING syscall.Errno = 303 + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING syscall.Errno = 304 + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME syscall.Errno = 305 + ERROR_SECURITY_STREAM_IS_INCONSISTENT syscall.Errno = 306 + ERROR_INVALID_LOCK_RANGE syscall.Errno = 307 + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT syscall.Errno = 308 + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED syscall.Errno = 309 + ERROR_INVALID_EXCEPTION_HANDLER syscall.Errno = 310 + ERROR_DUPLICATE_PRIVILEGES syscall.Errno = 311 + ERROR_NO_RANGES_PROCESSED syscall.Errno = 312 + ERROR_NOT_ALLOWED_ON_SYSTEM_FILE syscall.Errno = 313 + ERROR_DISK_RESOURCES_EXHAUSTED syscall.Errno = 314 + ERROR_INVALID_TOKEN syscall.Errno = 315 + ERROR_DEVICE_FEATURE_NOT_SUPPORTED syscall.Errno = 316 + ERROR_MR_MID_NOT_FOUND syscall.Errno = 317 + ERROR_SCOPE_NOT_FOUND syscall.Errno = 318 + ERROR_UNDEFINED_SCOPE syscall.Errno = 319 + ERROR_INVALID_CAP syscall.Errno = 320 + ERROR_DEVICE_UNREACHABLE syscall.Errno = 321 + ERROR_DEVICE_NO_RESOURCES syscall.Errno = 322 + ERROR_DATA_CHECKSUM_ERROR syscall.Errno = 323 + ERROR_INTERMIXED_KERNEL_EA_OPERATION syscall.Errno = 324 + ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED syscall.Errno = 326 + ERROR_OFFSET_ALIGNMENT_VIOLATION syscall.Errno = 327 + ERROR_INVALID_FIELD_IN_PARAMETER_LIST syscall.Errno = 328 + ERROR_OPERATION_IN_PROGRESS syscall.Errno = 329 + ERROR_BAD_DEVICE_PATH syscall.Errno = 330 + ERROR_TOO_MANY_DESCRIPTORS syscall.Errno = 331 + ERROR_SCRUB_DATA_DISABLED syscall.Errno = 332 + ERROR_NOT_REDUNDANT_STORAGE syscall.Errno = 333 + ERROR_RESIDENT_FILE_NOT_SUPPORTED syscall.Errno = 334 + ERROR_COMPRESSED_FILE_NOT_SUPPORTED syscall.Errno = 335 + ERROR_DIRECTORY_NOT_SUPPORTED syscall.Errno = 336 + ERROR_NOT_READ_FROM_COPY syscall.Errno = 337 + ERROR_FT_WRITE_FAILURE syscall.Errno = 338 + ERROR_FT_DI_SCAN_REQUIRED syscall.Errno = 339 + ERROR_INVALID_KERNEL_INFO_VERSION syscall.Errno = 340 + ERROR_INVALID_PEP_INFO_VERSION syscall.Errno = 341 + ERROR_OBJECT_NOT_EXTERNALLY_BACKED syscall.Errno = 342 + ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN syscall.Errno = 343 + ERROR_COMPRESSION_NOT_BENEFICIAL syscall.Errno = 344 + ERROR_STORAGE_TOPOLOGY_ID_MISMATCH syscall.Errno = 345 + ERROR_BLOCKED_BY_PARENTAL_CONTROLS syscall.Errno = 346 + ERROR_BLOCK_TOO_MANY_REFERENCES syscall.Errno = 347 + ERROR_MARKED_TO_DISALLOW_WRITES syscall.Errno = 348 + ERROR_ENCLAVE_FAILURE syscall.Errno = 349 + ERROR_FAIL_NOACTION_REBOOT syscall.Errno = 350 + ERROR_FAIL_SHUTDOWN syscall.Errno = 351 + ERROR_FAIL_RESTART syscall.Errno = 352 + ERROR_MAX_SESSIONS_REACHED syscall.Errno = 353 + ERROR_NETWORK_ACCESS_DENIED_EDP syscall.Errno = 354 + ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL syscall.Errno = 355 + ERROR_EDP_POLICY_DENIES_OPERATION syscall.Errno = 356 + ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED syscall.Errno = 357 + ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT syscall.Errno = 358 + ERROR_DEVICE_IN_MAINTENANCE syscall.Errno = 359 + ERROR_NOT_SUPPORTED_ON_DAX syscall.Errno = 360 + ERROR_DAX_MAPPING_EXISTS syscall.Errno = 361 + ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING syscall.Errno = 362 + ERROR_CLOUD_FILE_METADATA_CORRUPT syscall.Errno = 363 + ERROR_CLOUD_FILE_METADATA_TOO_LARGE syscall.Errno = 364 + ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE syscall.Errno = 365 + ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH syscall.Errno = 366 + ERROR_CHILD_PROCESS_BLOCKED syscall.Errno = 367 + ERROR_STORAGE_LOST_DATA_PERSISTENCE syscall.Errno = 368 + ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE syscall.Errno = 369 + ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT syscall.Errno = 370 + ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY syscall.Errno = 371 + ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN syscall.Errno = 372 + ERROR_GDI_HANDLE_LEAK syscall.Errno = 373 + ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS syscall.Errno = 374 + ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED syscall.Errno = 375 + ERROR_NOT_A_CLOUD_FILE syscall.Errno = 376 + ERROR_CLOUD_FILE_NOT_IN_SYNC syscall.Errno = 377 + ERROR_CLOUD_FILE_ALREADY_CONNECTED syscall.Errno = 378 + ERROR_CLOUD_FILE_NOT_SUPPORTED syscall.Errno = 379 + ERROR_CLOUD_FILE_INVALID_REQUEST syscall.Errno = 380 + ERROR_CLOUD_FILE_READ_ONLY_VOLUME syscall.Errno = 381 + ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY syscall.Errno = 382 + ERROR_CLOUD_FILE_VALIDATION_FAILED syscall.Errno = 383 + ERROR_SMB1_NOT_AVAILABLE syscall.Errno = 384 + ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION syscall.Errno = 385 + ERROR_CLOUD_FILE_AUTHENTICATION_FAILED syscall.Errno = 386 + ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES syscall.Errno = 387 + ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE syscall.Errno = 388 + ERROR_CLOUD_FILE_UNSUCCESSFUL syscall.Errno = 389 + ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT syscall.Errno = 390 + ERROR_CLOUD_FILE_IN_USE syscall.Errno = 391 + ERROR_CLOUD_FILE_PINNED syscall.Errno = 392 + ERROR_CLOUD_FILE_REQUEST_ABORTED syscall.Errno = 393 + ERROR_CLOUD_FILE_PROPERTY_CORRUPT syscall.Errno = 394 + ERROR_CLOUD_FILE_ACCESS_DENIED syscall.Errno = 395 + ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS syscall.Errno = 396 + ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT syscall.Errno = 397 + ERROR_CLOUD_FILE_REQUEST_CANCELED syscall.Errno = 398 + ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED syscall.Errno = 399 + ERROR_THREAD_MODE_ALREADY_BACKGROUND syscall.Errno = 400 + ERROR_THREAD_MODE_NOT_BACKGROUND syscall.Errno = 401 + ERROR_PROCESS_MODE_ALREADY_BACKGROUND syscall.Errno = 402 + ERROR_PROCESS_MODE_NOT_BACKGROUND syscall.Errno = 403 + ERROR_CLOUD_FILE_PROVIDER_TERMINATED syscall.Errno = 404 + ERROR_NOT_A_CLOUD_SYNC_ROOT syscall.Errno = 405 + ERROR_FILE_PROTECTED_UNDER_DPL syscall.Errno = 406 + ERROR_VOLUME_NOT_CLUSTER_ALIGNED syscall.Errno = 407 + ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND syscall.Errno = 408 + ERROR_APPX_FILE_NOT_ENCRYPTED syscall.Errno = 409 + ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED syscall.Errno = 410 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET syscall.Errno = 411 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE syscall.Errno = 412 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER syscall.Errno = 413 + ERROR_LINUX_SUBSYSTEM_NOT_PRESENT syscall.Errno = 414 + ERROR_FT_READ_FAILURE syscall.Errno = 415 + ERROR_STORAGE_RESERVE_ID_INVALID syscall.Errno = 416 + ERROR_STORAGE_RESERVE_DOES_NOT_EXIST syscall.Errno = 417 + ERROR_STORAGE_RESERVE_ALREADY_EXISTS syscall.Errno = 418 + ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419 + ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420 + ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421 + ERROR_TIME_SENSITIVE_THREAD syscall.Errno = 422 + ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423 + ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424 + ERROR_FILE_NOT_SUPPORTED syscall.Errno = 425 + ERROR_CLOUD_FILE_REQUEST_TIMEOUT syscall.Errno = 426 + ERROR_NO_TASK_QUEUE syscall.Errno = 427 + ERROR_SRC_SRV_DLL_LOAD_FAILED syscall.Errno = 428 + ERROR_NOT_SUPPORTED_WITH_BTT syscall.Errno = 429 + ERROR_ENCRYPTION_DISABLED syscall.Errno = 430 + ERROR_ENCRYPTING_METADATA_DISALLOWED syscall.Errno = 431 + ERROR_CANT_CLEAR_ENCRYPTION_FLAG syscall.Errno = 432 + ERROR_NO_SUCH_DEVICE syscall.Errno = 433 + ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450 + ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451 + ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452 + ERROR_CAPAUTHZ_NOT_AUTHORIZED syscall.Errno = 453 + ERROR_CAPAUTHZ_NO_POLICY syscall.Errno = 454 + ERROR_CAPAUTHZ_DB_CORRUPTED syscall.Errno = 455 + ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG syscall.Errno = 456 + ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY syscall.Errno = 457 + ERROR_CAPAUTHZ_SCCD_PARSE_ERROR syscall.Errno = 458 + ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED syscall.Errno = 459 + ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH syscall.Errno = 460 + ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT syscall.Errno = 480 + ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT syscall.Errno = 481 + ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT syscall.Errno = 482 + ERROR_DEVICE_HARDWARE_ERROR syscall.Errno = 483 + ERROR_INVALID_ADDRESS syscall.Errno = 487 + ERROR_VRF_CFG_ENABLED syscall.Errno = 1183 + ERROR_PARTITION_TERMINATING syscall.Errno = 1184 + ERROR_USER_PROFILE_LOAD syscall.Errno = 500 + ERROR_ARITHMETIC_OVERFLOW syscall.Errno = 534 + ERROR_PIPE_CONNECTED syscall.Errno = 535 + ERROR_PIPE_LISTENING syscall.Errno = 536 + ERROR_VERIFIER_STOP syscall.Errno = 537 + ERROR_ABIOS_ERROR syscall.Errno = 538 + ERROR_WX86_WARNING syscall.Errno = 539 + ERROR_WX86_ERROR syscall.Errno = 540 + ERROR_TIMER_NOT_CANCELED syscall.Errno = 541 + ERROR_UNWIND syscall.Errno = 542 + ERROR_BAD_STACK syscall.Errno = 543 + ERROR_INVALID_UNWIND_TARGET syscall.Errno = 544 + ERROR_INVALID_PORT_ATTRIBUTES syscall.Errno = 545 + ERROR_PORT_MESSAGE_TOO_LONG syscall.Errno = 546 + ERROR_INVALID_QUOTA_LOWER syscall.Errno = 547 + ERROR_DEVICE_ALREADY_ATTACHED syscall.Errno = 548 + ERROR_INSTRUCTION_MISALIGNMENT syscall.Errno = 549 + ERROR_PROFILING_NOT_STARTED syscall.Errno = 550 + ERROR_PROFILING_NOT_STOPPED syscall.Errno = 551 + ERROR_COULD_NOT_INTERPRET syscall.Errno = 552 + ERROR_PROFILING_AT_LIMIT syscall.Errno = 553 + ERROR_CANT_WAIT syscall.Errno = 554 + ERROR_CANT_TERMINATE_SELF syscall.Errno = 555 + ERROR_UNEXPECTED_MM_CREATE_ERR syscall.Errno = 556 + ERROR_UNEXPECTED_MM_MAP_ERROR syscall.Errno = 557 + ERROR_UNEXPECTED_MM_EXTEND_ERR syscall.Errno = 558 + ERROR_BAD_FUNCTION_TABLE syscall.Errno = 559 + ERROR_NO_GUID_TRANSLATION syscall.Errno = 560 + ERROR_INVALID_LDT_SIZE syscall.Errno = 561 + ERROR_INVALID_LDT_OFFSET syscall.Errno = 563 + ERROR_INVALID_LDT_DESCRIPTOR syscall.Errno = 564 + ERROR_TOO_MANY_THREADS syscall.Errno = 565 + ERROR_THREAD_NOT_IN_PROCESS syscall.Errno = 566 + ERROR_PAGEFILE_QUOTA_EXCEEDED syscall.Errno = 567 + ERROR_LOGON_SERVER_CONFLICT syscall.Errno = 568 + ERROR_SYNCHRONIZATION_REQUIRED syscall.Errno = 569 + ERROR_NET_OPEN_FAILED syscall.Errno = 570 + ERROR_IO_PRIVILEGE_FAILED syscall.Errno = 571 + ERROR_CONTROL_C_EXIT syscall.Errno = 572 + ERROR_MISSING_SYSTEMFILE syscall.Errno = 573 + ERROR_UNHANDLED_EXCEPTION syscall.Errno = 574 + ERROR_APP_INIT_FAILURE syscall.Errno = 575 + ERROR_PAGEFILE_CREATE_FAILED syscall.Errno = 576 + ERROR_INVALID_IMAGE_HASH syscall.Errno = 577 + ERROR_NO_PAGEFILE syscall.Errno = 578 + ERROR_ILLEGAL_FLOAT_CONTEXT syscall.Errno = 579 + ERROR_NO_EVENT_PAIR syscall.Errno = 580 + ERROR_DOMAIN_CTRLR_CONFIG_ERROR syscall.Errno = 581 + ERROR_ILLEGAL_CHARACTER syscall.Errno = 582 + ERROR_UNDEFINED_CHARACTER syscall.Errno = 583 + ERROR_FLOPPY_VOLUME syscall.Errno = 584 + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT syscall.Errno = 585 + ERROR_BACKUP_CONTROLLER syscall.Errno = 586 + ERROR_MUTANT_LIMIT_EXCEEDED syscall.Errno = 587 + ERROR_FS_DRIVER_REQUIRED syscall.Errno = 588 + ERROR_CANNOT_LOAD_REGISTRY_FILE syscall.Errno = 589 + ERROR_DEBUG_ATTACH_FAILED syscall.Errno = 590 + ERROR_SYSTEM_PROCESS_TERMINATED syscall.Errno = 591 + ERROR_DATA_NOT_ACCEPTED syscall.Errno = 592 + ERROR_VDM_HARD_ERROR syscall.Errno = 593 + ERROR_DRIVER_CANCEL_TIMEOUT syscall.Errno = 594 + ERROR_REPLY_MESSAGE_MISMATCH syscall.Errno = 595 + ERROR_LOST_WRITEBEHIND_DATA syscall.Errno = 596 + ERROR_CLIENT_SERVER_PARAMETERS_INVALID syscall.Errno = 597 + ERROR_NOT_TINY_STREAM syscall.Errno = 598 + ERROR_STACK_OVERFLOW_READ syscall.Errno = 599 + ERROR_CONVERT_TO_LARGE syscall.Errno = 600 + ERROR_FOUND_OUT_OF_SCOPE syscall.Errno = 601 + ERROR_ALLOCATE_BUCKET syscall.Errno = 602 + ERROR_MARSHALL_OVERFLOW syscall.Errno = 603 + ERROR_INVALID_VARIANT syscall.Errno = 604 + ERROR_BAD_COMPRESSION_BUFFER syscall.Errno = 605 + ERROR_AUDIT_FAILED syscall.Errno = 606 + ERROR_TIMER_RESOLUTION_NOT_SET syscall.Errno = 607 + ERROR_INSUFFICIENT_LOGON_INFO syscall.Errno = 608 + ERROR_BAD_DLL_ENTRYPOINT syscall.Errno = 609 + ERROR_BAD_SERVICE_ENTRYPOINT syscall.Errno = 610 + ERROR_IP_ADDRESS_CONFLICT1 syscall.Errno = 611 + ERROR_IP_ADDRESS_CONFLICT2 syscall.Errno = 612 + ERROR_REGISTRY_QUOTA_LIMIT syscall.Errno = 613 + ERROR_NO_CALLBACK_ACTIVE syscall.Errno = 614 + ERROR_PWD_TOO_SHORT syscall.Errno = 615 + ERROR_PWD_TOO_RECENT syscall.Errno = 616 + ERROR_PWD_HISTORY_CONFLICT syscall.Errno = 617 + ERROR_UNSUPPORTED_COMPRESSION syscall.Errno = 618 + ERROR_INVALID_HW_PROFILE syscall.Errno = 619 + ERROR_INVALID_PLUGPLAY_DEVICE_PATH syscall.Errno = 620 + ERROR_QUOTA_LIST_INCONSISTENT syscall.Errno = 621 + ERROR_EVALUATION_EXPIRATION syscall.Errno = 622 + ERROR_ILLEGAL_DLL_RELOCATION syscall.Errno = 623 + ERROR_DLL_INIT_FAILED_LOGOFF syscall.Errno = 624 + ERROR_VALIDATE_CONTINUE syscall.Errno = 625 + ERROR_NO_MORE_MATCHES syscall.Errno = 626 + ERROR_RANGE_LIST_CONFLICT syscall.Errno = 627 + ERROR_SERVER_SID_MISMATCH syscall.Errno = 628 + ERROR_CANT_ENABLE_DENY_ONLY syscall.Errno = 629 + ERROR_FLOAT_MULTIPLE_FAULTS syscall.Errno = 630 + ERROR_FLOAT_MULTIPLE_TRAPS syscall.Errno = 631 + ERROR_NOINTERFACE syscall.Errno = 632 + ERROR_DRIVER_FAILED_SLEEP syscall.Errno = 633 + ERROR_CORRUPT_SYSTEM_FILE syscall.Errno = 634 + ERROR_COMMITMENT_MINIMUM syscall.Errno = 635 + ERROR_PNP_RESTART_ENUMERATION syscall.Errno = 636 + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE syscall.Errno = 637 + ERROR_PNP_REBOOT_REQUIRED syscall.Errno = 638 + ERROR_INSUFFICIENT_POWER syscall.Errno = 639 + ERROR_MULTIPLE_FAULT_VIOLATION syscall.Errno = 640 + ERROR_SYSTEM_SHUTDOWN syscall.Errno = 641 + ERROR_PORT_NOT_SET syscall.Errno = 642 + ERROR_DS_VERSION_CHECK_FAILURE syscall.Errno = 643 + ERROR_RANGE_NOT_FOUND syscall.Errno = 644 + ERROR_NOT_SAFE_MODE_DRIVER syscall.Errno = 646 + ERROR_FAILED_DRIVER_ENTRY syscall.Errno = 647 + ERROR_DEVICE_ENUMERATION_ERROR syscall.Errno = 648 + ERROR_MOUNT_POINT_NOT_RESOLVED syscall.Errno = 649 + ERROR_INVALID_DEVICE_OBJECT_PARAMETER syscall.Errno = 650 + ERROR_MCA_OCCURED syscall.Errno = 651 + ERROR_DRIVER_DATABASE_ERROR syscall.Errno = 652 + ERROR_SYSTEM_HIVE_TOO_LARGE syscall.Errno = 653 + ERROR_DRIVER_FAILED_PRIOR_UNLOAD syscall.Errno = 654 + ERROR_VOLSNAP_PREPARE_HIBERNATE syscall.Errno = 655 + ERROR_HIBERNATION_FAILURE syscall.Errno = 656 + ERROR_PWD_TOO_LONG syscall.Errno = 657 + ERROR_FILE_SYSTEM_LIMITATION syscall.Errno = 665 + ERROR_ASSERTION_FAILURE syscall.Errno = 668 + ERROR_ACPI_ERROR syscall.Errno = 669 + ERROR_WOW_ASSERTION syscall.Errno = 670 + ERROR_PNP_BAD_MPS_TABLE syscall.Errno = 671 + ERROR_PNP_TRANSLATION_FAILED syscall.Errno = 672 + ERROR_PNP_IRQ_TRANSLATION_FAILED syscall.Errno = 673 + ERROR_PNP_INVALID_ID syscall.Errno = 674 + ERROR_WAKE_SYSTEM_DEBUGGER syscall.Errno = 675 + ERROR_HANDLES_CLOSED syscall.Errno = 676 + ERROR_EXTRANEOUS_INFORMATION syscall.Errno = 677 + ERROR_RXACT_COMMIT_NECESSARY syscall.Errno = 678 + ERROR_MEDIA_CHECK syscall.Errno = 679 + ERROR_GUID_SUBSTITUTION_MADE syscall.Errno = 680 + ERROR_STOPPED_ON_SYMLINK syscall.Errno = 681 + ERROR_LONGJUMP syscall.Errno = 682 + ERROR_PLUGPLAY_QUERY_VETOED syscall.Errno = 683 + ERROR_UNWIND_CONSOLIDATE syscall.Errno = 684 + ERROR_REGISTRY_HIVE_RECOVERED syscall.Errno = 685 + ERROR_DLL_MIGHT_BE_INSECURE syscall.Errno = 686 + ERROR_DLL_MIGHT_BE_INCOMPATIBLE syscall.Errno = 687 + ERROR_DBG_EXCEPTION_NOT_HANDLED syscall.Errno = 688 + ERROR_DBG_REPLY_LATER syscall.Errno = 689 + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE syscall.Errno = 690 + ERROR_DBG_TERMINATE_THREAD syscall.Errno = 691 + ERROR_DBG_TERMINATE_PROCESS syscall.Errno = 692 + ERROR_DBG_CONTROL_C syscall.Errno = 693 + ERROR_DBG_PRINTEXCEPTION_C syscall.Errno = 694 + ERROR_DBG_RIPEXCEPTION syscall.Errno = 695 + ERROR_DBG_CONTROL_BREAK syscall.Errno = 696 + ERROR_DBG_COMMAND_EXCEPTION syscall.Errno = 697 + ERROR_OBJECT_NAME_EXISTS syscall.Errno = 698 + ERROR_THREAD_WAS_SUSPENDED syscall.Errno = 699 + ERROR_IMAGE_NOT_AT_BASE syscall.Errno = 700 + ERROR_RXACT_STATE_CREATED syscall.Errno = 701 + ERROR_SEGMENT_NOTIFICATION syscall.Errno = 702 + ERROR_BAD_CURRENT_DIRECTORY syscall.Errno = 703 + ERROR_FT_READ_RECOVERY_FROM_BACKUP syscall.Errno = 704 + ERROR_FT_WRITE_RECOVERY syscall.Errno = 705 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH syscall.Errno = 706 + ERROR_RECEIVE_PARTIAL syscall.Errno = 707 + ERROR_RECEIVE_EXPEDITED syscall.Errno = 708 + ERROR_RECEIVE_PARTIAL_EXPEDITED syscall.Errno = 709 + ERROR_EVENT_DONE syscall.Errno = 710 + ERROR_EVENT_PENDING syscall.Errno = 711 + ERROR_CHECKING_FILE_SYSTEM syscall.Errno = 712 + ERROR_FATAL_APP_EXIT syscall.Errno = 713 + ERROR_PREDEFINED_HANDLE syscall.Errno = 714 + ERROR_WAS_UNLOCKED syscall.Errno = 715 + ERROR_SERVICE_NOTIFICATION syscall.Errno = 716 + ERROR_WAS_LOCKED syscall.Errno = 717 + ERROR_LOG_HARD_ERROR syscall.Errno = 718 + ERROR_ALREADY_WIN32 syscall.Errno = 719 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE syscall.Errno = 720 + ERROR_NO_YIELD_PERFORMED syscall.Errno = 721 + ERROR_TIMER_RESUME_IGNORED syscall.Errno = 722 + ERROR_ARBITRATION_UNHANDLED syscall.Errno = 723 + ERROR_CARDBUS_NOT_SUPPORTED syscall.Errno = 724 + ERROR_MP_PROCESSOR_MISMATCH syscall.Errno = 725 + ERROR_HIBERNATED syscall.Errno = 726 + ERROR_RESUME_HIBERNATION syscall.Errno = 727 + ERROR_FIRMWARE_UPDATED syscall.Errno = 728 + ERROR_DRIVERS_LEAKING_LOCKED_PAGES syscall.Errno = 729 + ERROR_WAKE_SYSTEM syscall.Errno = 730 + ERROR_WAIT_1 syscall.Errno = 731 + ERROR_WAIT_2 syscall.Errno = 732 + ERROR_WAIT_3 syscall.Errno = 733 + ERROR_WAIT_63 syscall.Errno = 734 + ERROR_ABANDONED_WAIT_0 syscall.Errno = 735 + ERROR_ABANDONED_WAIT_63 syscall.Errno = 736 + ERROR_USER_APC syscall.Errno = 737 + ERROR_KERNEL_APC syscall.Errno = 738 + ERROR_ALERTED syscall.Errno = 739 + ERROR_ELEVATION_REQUIRED syscall.Errno = 740 + ERROR_REPARSE syscall.Errno = 741 + ERROR_OPLOCK_BREAK_IN_PROGRESS syscall.Errno = 742 + ERROR_VOLUME_MOUNTED syscall.Errno = 743 + ERROR_RXACT_COMMITTED syscall.Errno = 744 + ERROR_NOTIFY_CLEANUP syscall.Errno = 745 + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED syscall.Errno = 746 + ERROR_PAGE_FAULT_TRANSITION syscall.Errno = 747 + ERROR_PAGE_FAULT_DEMAND_ZERO syscall.Errno = 748 + ERROR_PAGE_FAULT_COPY_ON_WRITE syscall.Errno = 749 + ERROR_PAGE_FAULT_GUARD_PAGE syscall.Errno = 750 + ERROR_PAGE_FAULT_PAGING_FILE syscall.Errno = 751 + ERROR_CACHE_PAGE_LOCKED syscall.Errno = 752 + ERROR_CRASH_DUMP syscall.Errno = 753 + ERROR_BUFFER_ALL_ZEROS syscall.Errno = 754 + ERROR_REPARSE_OBJECT syscall.Errno = 755 + ERROR_RESOURCE_REQUIREMENTS_CHANGED syscall.Errno = 756 + ERROR_TRANSLATION_COMPLETE syscall.Errno = 757 + ERROR_NOTHING_TO_TERMINATE syscall.Errno = 758 + ERROR_PROCESS_NOT_IN_JOB syscall.Errno = 759 + ERROR_PROCESS_IN_JOB syscall.Errno = 760 + ERROR_VOLSNAP_HIBERNATE_READY syscall.Errno = 761 + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY syscall.Errno = 762 + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED syscall.Errno = 763 + ERROR_INTERRUPT_STILL_CONNECTED syscall.Errno = 764 + ERROR_WAIT_FOR_OPLOCK syscall.Errno = 765 + ERROR_DBG_EXCEPTION_HANDLED syscall.Errno = 766 + ERROR_DBG_CONTINUE syscall.Errno = 767 + ERROR_CALLBACK_POP_STACK syscall.Errno = 768 + ERROR_COMPRESSION_DISABLED syscall.Errno = 769 + ERROR_CANTFETCHBACKWARDS syscall.Errno = 770 + ERROR_CANTSCROLLBACKWARDS syscall.Errno = 771 + ERROR_ROWSNOTRELEASED syscall.Errno = 772 + ERROR_BAD_ACCESSOR_FLAGS syscall.Errno = 773 + ERROR_ERRORS_ENCOUNTERED syscall.Errno = 774 + ERROR_NOT_CAPABLE syscall.Errno = 775 + ERROR_REQUEST_OUT_OF_SEQUENCE syscall.Errno = 776 + ERROR_VERSION_PARSE_ERROR syscall.Errno = 777 + ERROR_BADSTARTPOSITION syscall.Errno = 778 + ERROR_MEMORY_HARDWARE syscall.Errno = 779 + ERROR_DISK_REPAIR_DISABLED syscall.Errno = 780 + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE syscall.Errno = 781 + ERROR_SYSTEM_POWERSTATE_TRANSITION syscall.Errno = 782 + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION syscall.Errno = 783 + ERROR_MCA_EXCEPTION syscall.Errno = 784 + ERROR_ACCESS_AUDIT_BY_POLICY syscall.Errno = 785 + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY syscall.Errno = 786 + ERROR_ABANDON_HIBERFILE syscall.Errno = 787 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED syscall.Errno = 788 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR syscall.Errno = 789 + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR syscall.Errno = 790 + ERROR_BAD_MCFG_TABLE syscall.Errno = 791 + ERROR_DISK_REPAIR_REDIRECTED syscall.Errno = 792 + ERROR_DISK_REPAIR_UNSUCCESSFUL syscall.Errno = 793 + ERROR_CORRUPT_LOG_OVERFULL syscall.Errno = 794 + ERROR_CORRUPT_LOG_CORRUPTED syscall.Errno = 795 + ERROR_CORRUPT_LOG_UNAVAILABLE syscall.Errno = 796 + ERROR_CORRUPT_LOG_DELETED_FULL syscall.Errno = 797 + ERROR_CORRUPT_LOG_CLEARED syscall.Errno = 798 + ERROR_ORPHAN_NAME_EXHAUSTED syscall.Errno = 799 + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE syscall.Errno = 800 + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK syscall.Errno = 801 + ERROR_CANNOT_BREAK_OPLOCK syscall.Errno = 802 + ERROR_OPLOCK_HANDLE_CLOSED syscall.Errno = 803 + ERROR_NO_ACE_CONDITION syscall.Errno = 804 + ERROR_INVALID_ACE_CONDITION syscall.Errno = 805 + ERROR_FILE_HANDLE_REVOKED syscall.Errno = 806 + ERROR_IMAGE_AT_DIFFERENT_BASE syscall.Errno = 807 + ERROR_ENCRYPTED_IO_NOT_POSSIBLE syscall.Errno = 808 + ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS syscall.Errno = 809 + ERROR_QUOTA_ACTIVITY syscall.Errno = 810 + ERROR_HANDLE_REVOKED syscall.Errno = 811 + ERROR_CALLBACK_INVOKE_INLINE syscall.Errno = 812 + ERROR_CPU_SET_INVALID syscall.Errno = 813 + ERROR_ENCLAVE_NOT_TERMINATED syscall.Errno = 814 + ERROR_ENCLAVE_VIOLATION syscall.Errno = 815 + ERROR_EA_ACCESS_DENIED syscall.Errno = 994 + ERROR_OPERATION_ABORTED syscall.Errno = 995 + ERROR_IO_INCOMPLETE syscall.Errno = 996 + ERROR_IO_PENDING syscall.Errno = 997 + ERROR_NOACCESS syscall.Errno = 998 + ERROR_SWAPERROR syscall.Errno = 999 + ERROR_STACK_OVERFLOW syscall.Errno = 1001 + ERROR_INVALID_MESSAGE syscall.Errno = 1002 + ERROR_CAN_NOT_COMPLETE syscall.Errno = 1003 + ERROR_INVALID_FLAGS syscall.Errno = 1004 + ERROR_UNRECOGNIZED_VOLUME syscall.Errno = 1005 + ERROR_FILE_INVALID syscall.Errno = 1006 + ERROR_FULLSCREEN_MODE syscall.Errno = 1007 + ERROR_NO_TOKEN syscall.Errno = 1008 + ERROR_BADDB syscall.Errno = 1009 + ERROR_BADKEY syscall.Errno = 1010 + ERROR_CANTOPEN syscall.Errno = 1011 + ERROR_CANTREAD syscall.Errno = 1012 + ERROR_CANTWRITE syscall.Errno = 1013 + ERROR_REGISTRY_RECOVERED syscall.Errno = 1014 + ERROR_REGISTRY_CORRUPT syscall.Errno = 1015 + ERROR_REGISTRY_IO_FAILED syscall.Errno = 1016 + ERROR_NOT_REGISTRY_FILE syscall.Errno = 1017 + ERROR_KEY_DELETED syscall.Errno = 1018 + ERROR_NO_LOG_SPACE syscall.Errno = 1019 + ERROR_KEY_HAS_CHILDREN syscall.Errno = 1020 + ERROR_CHILD_MUST_BE_VOLATILE syscall.Errno = 1021 + ERROR_NOTIFY_ENUM_DIR syscall.Errno = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING syscall.Errno = 1051 + ERROR_INVALID_SERVICE_CONTROL syscall.Errno = 1052 + ERROR_SERVICE_REQUEST_TIMEOUT syscall.Errno = 1053 + ERROR_SERVICE_NO_THREAD syscall.Errno = 1054 + ERROR_SERVICE_DATABASE_LOCKED syscall.Errno = 1055 + ERROR_SERVICE_ALREADY_RUNNING syscall.Errno = 1056 + ERROR_INVALID_SERVICE_ACCOUNT syscall.Errno = 1057 + ERROR_SERVICE_DISABLED syscall.Errno = 1058 + ERROR_CIRCULAR_DEPENDENCY syscall.Errno = 1059 + ERROR_SERVICE_DOES_NOT_EXIST syscall.Errno = 1060 + ERROR_SERVICE_CANNOT_ACCEPT_CTRL syscall.Errno = 1061 + ERROR_SERVICE_NOT_ACTIVE syscall.Errno = 1062 + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT syscall.Errno = 1063 + ERROR_EXCEPTION_IN_SERVICE syscall.Errno = 1064 + ERROR_DATABASE_DOES_NOT_EXIST syscall.Errno = 1065 + ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 + ERROR_PROCESS_ABORTED syscall.Errno = 1067 + ERROR_SERVICE_DEPENDENCY_FAIL syscall.Errno = 1068 + ERROR_SERVICE_LOGON_FAILED syscall.Errno = 1069 + ERROR_SERVICE_START_HANG syscall.Errno = 1070 + ERROR_INVALID_SERVICE_LOCK syscall.Errno = 1071 + ERROR_SERVICE_MARKED_FOR_DELETE syscall.Errno = 1072 + ERROR_SERVICE_EXISTS syscall.Errno = 1073 + ERROR_ALREADY_RUNNING_LKG syscall.Errno = 1074 + ERROR_SERVICE_DEPENDENCY_DELETED syscall.Errno = 1075 + ERROR_BOOT_ALREADY_ACCEPTED syscall.Errno = 1076 + ERROR_SERVICE_NEVER_STARTED syscall.Errno = 1077 + ERROR_DUPLICATE_SERVICE_NAME syscall.Errno = 1078 + ERROR_DIFFERENT_SERVICE_ACCOUNT syscall.Errno = 1079 + ERROR_CANNOT_DETECT_DRIVER_FAILURE syscall.Errno = 1080 + ERROR_CANNOT_DETECT_PROCESS_ABORT syscall.Errno = 1081 + ERROR_NO_RECOVERY_PROGRAM syscall.Errno = 1082 + ERROR_SERVICE_NOT_IN_EXE syscall.Errno = 1083 + ERROR_NOT_SAFEBOOT_SERVICE syscall.Errno = 1084 + ERROR_END_OF_MEDIA syscall.Errno = 1100 + ERROR_FILEMARK_DETECTED syscall.Errno = 1101 + ERROR_BEGINNING_OF_MEDIA syscall.Errno = 1102 + ERROR_SETMARK_DETECTED syscall.Errno = 1103 + ERROR_NO_DATA_DETECTED syscall.Errno = 1104 + ERROR_PARTITION_FAILURE syscall.Errno = 1105 + ERROR_INVALID_BLOCK_LENGTH syscall.Errno = 1106 + ERROR_DEVICE_NOT_PARTITIONED syscall.Errno = 1107 + ERROR_UNABLE_TO_LOCK_MEDIA syscall.Errno = 1108 + ERROR_UNABLE_TO_UNLOAD_MEDIA syscall.Errno = 1109 + ERROR_MEDIA_CHANGED syscall.Errno = 1110 + ERROR_BUS_RESET syscall.Errno = 1111 + ERROR_NO_MEDIA_IN_DRIVE syscall.Errno = 1112 + ERROR_NO_UNICODE_TRANSLATION syscall.Errno = 1113 + ERROR_DLL_INIT_FAILED syscall.Errno = 1114 + ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 1115 + ERROR_NO_SHUTDOWN_IN_PROGRESS syscall.Errno = 1116 + ERROR_IO_DEVICE syscall.Errno = 1117 + ERROR_SERIAL_NO_DEVICE syscall.Errno = 1118 + ERROR_IRQ_BUSY syscall.Errno = 1119 + ERROR_MORE_WRITES syscall.Errno = 1120 + ERROR_COUNTER_TIMEOUT syscall.Errno = 1121 + ERROR_FLOPPY_ID_MARK_NOT_FOUND syscall.Errno = 1122 + ERROR_FLOPPY_WRONG_CYLINDER syscall.Errno = 1123 + ERROR_FLOPPY_UNKNOWN_ERROR syscall.Errno = 1124 + ERROR_FLOPPY_BAD_REGISTERS syscall.Errno = 1125 + ERROR_DISK_RECALIBRATE_FAILED syscall.Errno = 1126 + ERROR_DISK_OPERATION_FAILED syscall.Errno = 1127 + ERROR_DISK_RESET_FAILED syscall.Errno = 1128 + ERROR_EOM_OVERFLOW syscall.Errno = 1129 + ERROR_NOT_ENOUGH_SERVER_MEMORY syscall.Errno = 1130 + ERROR_POSSIBLE_DEADLOCK syscall.Errno = 1131 + ERROR_MAPPED_ALIGNMENT syscall.Errno = 1132 + ERROR_SET_POWER_STATE_VETOED syscall.Errno = 1140 + ERROR_SET_POWER_STATE_FAILED syscall.Errno = 1141 + ERROR_TOO_MANY_LINKS syscall.Errno = 1142 + ERROR_OLD_WIN_VERSION syscall.Errno = 1150 + ERROR_APP_WRONG_OS syscall.Errno = 1151 + ERROR_SINGLE_INSTANCE_APP syscall.Errno = 1152 + ERROR_RMODE_APP syscall.Errno = 1153 + ERROR_INVALID_DLL syscall.Errno = 1154 + ERROR_NO_ASSOCIATION syscall.Errno = 1155 + ERROR_DDE_FAIL syscall.Errno = 1156 + ERROR_DLL_NOT_FOUND syscall.Errno = 1157 + ERROR_NO_MORE_USER_HANDLES syscall.Errno = 1158 + ERROR_MESSAGE_SYNC_ONLY syscall.Errno = 1159 + ERROR_SOURCE_ELEMENT_EMPTY syscall.Errno = 1160 + ERROR_DESTINATION_ELEMENT_FULL syscall.Errno = 1161 + ERROR_ILLEGAL_ELEMENT_ADDRESS syscall.Errno = 1162 + ERROR_MAGAZINE_NOT_PRESENT syscall.Errno = 1163 + ERROR_DEVICE_REINITIALIZATION_NEEDED syscall.Errno = 1164 + ERROR_DEVICE_REQUIRES_CLEANING syscall.Errno = 1165 + ERROR_DEVICE_DOOR_OPEN syscall.Errno = 1166 + ERROR_DEVICE_NOT_CONNECTED syscall.Errno = 1167 + ERROR_NOT_FOUND syscall.Errno = 1168 + ERROR_NO_MATCH syscall.Errno = 1169 + ERROR_SET_NOT_FOUND syscall.Errno = 1170 + ERROR_POINT_NOT_FOUND syscall.Errno = 1171 + ERROR_NO_TRACKING_SERVICE syscall.Errno = 1172 + ERROR_NO_VOLUME_ID syscall.Errno = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED syscall.Errno = 1175 + ERROR_UNABLE_TO_MOVE_REPLACEMENT syscall.Errno = 1176 + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 syscall.Errno = 1177 + ERROR_JOURNAL_DELETE_IN_PROGRESS syscall.Errno = 1178 + ERROR_JOURNAL_NOT_ACTIVE syscall.Errno = 1179 + ERROR_POTENTIAL_FILE_FOUND syscall.Errno = 1180 + ERROR_JOURNAL_ENTRY_DELETED syscall.Errno = 1181 + ERROR_SHUTDOWN_IS_SCHEDULED syscall.Errno = 1190 + ERROR_SHUTDOWN_USERS_LOGGED_ON syscall.Errno = 1191 + ERROR_BAD_DEVICE syscall.Errno = 1200 + ERROR_CONNECTION_UNAVAIL syscall.Errno = 1201 + ERROR_DEVICE_ALREADY_REMEMBERED syscall.Errno = 1202 + ERROR_NO_NET_OR_BAD_PATH syscall.Errno = 1203 + ERROR_BAD_PROVIDER syscall.Errno = 1204 + ERROR_CANNOT_OPEN_PROFILE syscall.Errno = 1205 + ERROR_BAD_PROFILE syscall.Errno = 1206 + ERROR_NOT_CONTAINER syscall.Errno = 1207 + ERROR_EXTENDED_ERROR syscall.Errno = 1208 + ERROR_INVALID_GROUPNAME syscall.Errno = 1209 + ERROR_INVALID_COMPUTERNAME syscall.Errno = 1210 + ERROR_INVALID_EVENTNAME syscall.Errno = 1211 + ERROR_INVALID_DOMAINNAME syscall.Errno = 1212 + ERROR_INVALID_SERVICENAME syscall.Errno = 1213 + ERROR_INVALID_NETNAME syscall.Errno = 1214 + ERROR_INVALID_SHARENAME syscall.Errno = 1215 + ERROR_INVALID_PASSWORDNAME syscall.Errno = 1216 + ERROR_INVALID_MESSAGENAME syscall.Errno = 1217 + ERROR_INVALID_MESSAGEDEST syscall.Errno = 1218 + ERROR_SESSION_CREDENTIAL_CONFLICT syscall.Errno = 1219 + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED syscall.Errno = 1220 + ERROR_DUP_DOMAINNAME syscall.Errno = 1221 + ERROR_NO_NETWORK syscall.Errno = 1222 + ERROR_CANCELLED syscall.Errno = 1223 + ERROR_USER_MAPPED_FILE syscall.Errno = 1224 + ERROR_CONNECTION_REFUSED syscall.Errno = 1225 + ERROR_GRACEFUL_DISCONNECT syscall.Errno = 1226 + ERROR_ADDRESS_ALREADY_ASSOCIATED syscall.Errno = 1227 + ERROR_ADDRESS_NOT_ASSOCIATED syscall.Errno = 1228 + ERROR_CONNECTION_INVALID syscall.Errno = 1229 + ERROR_CONNECTION_ACTIVE syscall.Errno = 1230 + ERROR_NETWORK_UNREACHABLE syscall.Errno = 1231 + ERROR_HOST_UNREACHABLE syscall.Errno = 1232 + ERROR_PROTOCOL_UNREACHABLE syscall.Errno = 1233 + ERROR_PORT_UNREACHABLE syscall.Errno = 1234 + ERROR_REQUEST_ABORTED syscall.Errno = 1235 + ERROR_CONNECTION_ABORTED syscall.Errno = 1236 + ERROR_RETRY syscall.Errno = 1237 + ERROR_CONNECTION_COUNT_LIMIT syscall.Errno = 1238 + ERROR_LOGIN_TIME_RESTRICTION syscall.Errno = 1239 + ERROR_LOGIN_WKSTA_RESTRICTION syscall.Errno = 1240 + ERROR_INCORRECT_ADDRESS syscall.Errno = 1241 + ERROR_ALREADY_REGISTERED syscall.Errno = 1242 + ERROR_SERVICE_NOT_FOUND syscall.Errno = 1243 + ERROR_NOT_AUTHENTICATED syscall.Errno = 1244 + ERROR_NOT_LOGGED_ON syscall.Errno = 1245 + ERROR_CONTINUE syscall.Errno = 1246 + ERROR_ALREADY_INITIALIZED syscall.Errno = 1247 + ERROR_NO_MORE_DEVICES syscall.Errno = 1248 + ERROR_NO_SUCH_SITE syscall.Errno = 1249 + ERROR_DOMAIN_CONTROLLER_EXISTS syscall.Errno = 1250 + ERROR_ONLY_IF_CONNECTED syscall.Errno = 1251 + ERROR_OVERRIDE_NOCHANGES syscall.Errno = 1252 + ERROR_BAD_USER_PROFILE syscall.Errno = 1253 + ERROR_NOT_SUPPORTED_ON_SBS syscall.Errno = 1254 + ERROR_SERVER_SHUTDOWN_IN_PROGRESS syscall.Errno = 1255 + ERROR_HOST_DOWN syscall.Errno = 1256 + ERROR_NON_ACCOUNT_SID syscall.Errno = 1257 + ERROR_NON_DOMAIN_SID syscall.Errno = 1258 + ERROR_APPHELP_BLOCK syscall.Errno = 1259 + ERROR_ACCESS_DISABLED_BY_POLICY syscall.Errno = 1260 + ERROR_REG_NAT_CONSUMPTION syscall.Errno = 1261 + ERROR_CSCSHARE_OFFLINE syscall.Errno = 1262 + ERROR_PKINIT_FAILURE syscall.Errno = 1263 + ERROR_SMARTCARD_SUBSYSTEM_FAILURE syscall.Errno = 1264 + ERROR_DOWNGRADE_DETECTED syscall.Errno = 1265 + ERROR_MACHINE_LOCKED syscall.Errno = 1271 + ERROR_SMB_GUEST_LOGON_BLOCKED syscall.Errno = 1272 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA syscall.Errno = 1273 + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED syscall.Errno = 1274 + ERROR_DRIVER_BLOCKED syscall.Errno = 1275 + ERROR_INVALID_IMPORT_OF_NON_DLL syscall.Errno = 1276 + ERROR_ACCESS_DISABLED_WEBBLADE syscall.Errno = 1277 + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER syscall.Errno = 1278 + ERROR_RECOVERY_FAILURE syscall.Errno = 1279 + ERROR_ALREADY_FIBER syscall.Errno = 1280 + ERROR_ALREADY_THREAD syscall.Errno = 1281 + ERROR_STACK_BUFFER_OVERRUN syscall.Errno = 1282 + ERROR_PARAMETER_QUOTA_EXCEEDED syscall.Errno = 1283 + ERROR_DEBUGGER_INACTIVE syscall.Errno = 1284 + ERROR_DELAY_LOAD_FAILED syscall.Errno = 1285 + ERROR_VDM_DISALLOWED syscall.Errno = 1286 + ERROR_UNIDENTIFIED_ERROR syscall.Errno = 1287 + ERROR_INVALID_CRUNTIME_PARAMETER syscall.Errno = 1288 + ERROR_BEYOND_VDL syscall.Errno = 1289 + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE syscall.Errno = 1290 + ERROR_DRIVER_PROCESS_TERMINATED syscall.Errno = 1291 + ERROR_IMPLEMENTATION_LIMIT syscall.Errno = 1292 + ERROR_PROCESS_IS_PROTECTED syscall.Errno = 1293 + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING syscall.Errno = 1294 + ERROR_DISK_QUOTA_EXCEEDED syscall.Errno = 1295 + ERROR_CONTENT_BLOCKED syscall.Errno = 1296 + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE syscall.Errno = 1297 + ERROR_APP_HANG syscall.Errno = 1298 + ERROR_INVALID_LABEL syscall.Errno = 1299 + ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 + ERROR_SOME_NOT_MAPPED syscall.Errno = 1301 + ERROR_NO_QUOTAS_FOR_ACCOUNT syscall.Errno = 1302 + ERROR_LOCAL_USER_SESSION_KEY syscall.Errno = 1303 + ERROR_NULL_LM_PASSWORD syscall.Errno = 1304 + ERROR_UNKNOWN_REVISION syscall.Errno = 1305 + ERROR_REVISION_MISMATCH syscall.Errno = 1306 + ERROR_INVALID_OWNER syscall.Errno = 1307 + ERROR_INVALID_PRIMARY_GROUP syscall.Errno = 1308 + ERROR_NO_IMPERSONATION_TOKEN syscall.Errno = 1309 + ERROR_CANT_DISABLE_MANDATORY syscall.Errno = 1310 + ERROR_NO_LOGON_SERVERS syscall.Errno = 1311 + ERROR_NO_SUCH_LOGON_SESSION syscall.Errno = 1312 + ERROR_NO_SUCH_PRIVILEGE syscall.Errno = 1313 + ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + ERROR_INVALID_ACCOUNT_NAME syscall.Errno = 1315 + ERROR_USER_EXISTS syscall.Errno = 1316 + ERROR_NO_SUCH_USER syscall.Errno = 1317 + ERROR_GROUP_EXISTS syscall.Errno = 1318 + ERROR_NO_SUCH_GROUP syscall.Errno = 1319 + ERROR_MEMBER_IN_GROUP syscall.Errno = 1320 + ERROR_MEMBER_NOT_IN_GROUP syscall.Errno = 1321 + ERROR_LAST_ADMIN syscall.Errno = 1322 + ERROR_WRONG_PASSWORD syscall.Errno = 1323 + ERROR_ILL_FORMED_PASSWORD syscall.Errno = 1324 + ERROR_PASSWORD_RESTRICTION syscall.Errno = 1325 + ERROR_LOGON_FAILURE syscall.Errno = 1326 + ERROR_ACCOUNT_RESTRICTION syscall.Errno = 1327 + ERROR_INVALID_LOGON_HOURS syscall.Errno = 1328 + ERROR_INVALID_WORKSTATION syscall.Errno = 1329 + ERROR_PASSWORD_EXPIRED syscall.Errno = 1330 + ERROR_ACCOUNT_DISABLED syscall.Errno = 1331 + ERROR_NONE_MAPPED syscall.Errno = 1332 + ERROR_TOO_MANY_LUIDS_REQUESTED syscall.Errno = 1333 + ERROR_LUIDS_EXHAUSTED syscall.Errno = 1334 + ERROR_INVALID_SUB_AUTHORITY syscall.Errno = 1335 + ERROR_INVALID_ACL syscall.Errno = 1336 + ERROR_INVALID_SID syscall.Errno = 1337 + ERROR_INVALID_SECURITY_DESCR syscall.Errno = 1338 + ERROR_BAD_INHERITANCE_ACL syscall.Errno = 1340 + ERROR_SERVER_DISABLED syscall.Errno = 1341 + ERROR_SERVER_NOT_DISABLED syscall.Errno = 1342 + ERROR_INVALID_ID_AUTHORITY syscall.Errno = 1343 + ERROR_ALLOTTED_SPACE_EXCEEDED syscall.Errno = 1344 + ERROR_INVALID_GROUP_ATTRIBUTES syscall.Errno = 1345 + ERROR_BAD_IMPERSONATION_LEVEL syscall.Errno = 1346 + ERROR_CANT_OPEN_ANONYMOUS syscall.Errno = 1347 + ERROR_BAD_VALIDATION_CLASS syscall.Errno = 1348 + ERROR_BAD_TOKEN_TYPE syscall.Errno = 1349 + ERROR_NO_SECURITY_ON_OBJECT syscall.Errno = 1350 + ERROR_CANT_ACCESS_DOMAIN_INFO syscall.Errno = 1351 + ERROR_INVALID_SERVER_STATE syscall.Errno = 1352 + ERROR_INVALID_DOMAIN_STATE syscall.Errno = 1353 + ERROR_INVALID_DOMAIN_ROLE syscall.Errno = 1354 + ERROR_NO_SUCH_DOMAIN syscall.Errno = 1355 + ERROR_DOMAIN_EXISTS syscall.Errno = 1356 + ERROR_DOMAIN_LIMIT_EXCEEDED syscall.Errno = 1357 + ERROR_INTERNAL_DB_CORRUPTION syscall.Errno = 1358 + ERROR_INTERNAL_ERROR syscall.Errno = 1359 + ERROR_GENERIC_NOT_MAPPED syscall.Errno = 1360 + ERROR_BAD_DESCRIPTOR_FORMAT syscall.Errno = 1361 + ERROR_NOT_LOGON_PROCESS syscall.Errno = 1362 + ERROR_LOGON_SESSION_EXISTS syscall.Errno = 1363 + ERROR_NO_SUCH_PACKAGE syscall.Errno = 1364 + ERROR_BAD_LOGON_SESSION_STATE syscall.Errno = 1365 + ERROR_LOGON_SESSION_COLLISION syscall.Errno = 1366 + ERROR_INVALID_LOGON_TYPE syscall.Errno = 1367 + ERROR_CANNOT_IMPERSONATE syscall.Errno = 1368 + ERROR_RXACT_INVALID_STATE syscall.Errno = 1369 + ERROR_RXACT_COMMIT_FAILURE syscall.Errno = 1370 + ERROR_SPECIAL_ACCOUNT syscall.Errno = 1371 + ERROR_SPECIAL_GROUP syscall.Errno = 1372 + ERROR_SPECIAL_USER syscall.Errno = 1373 + ERROR_MEMBERS_PRIMARY_GROUP syscall.Errno = 1374 + ERROR_TOKEN_ALREADY_IN_USE syscall.Errno = 1375 + ERROR_NO_SUCH_ALIAS syscall.Errno = 1376 + ERROR_MEMBER_NOT_IN_ALIAS syscall.Errno = 1377 + ERROR_MEMBER_IN_ALIAS syscall.Errno = 1378 + ERROR_ALIAS_EXISTS syscall.Errno = 1379 + ERROR_LOGON_NOT_GRANTED syscall.Errno = 1380 + ERROR_TOO_MANY_SECRETS syscall.Errno = 1381 + ERROR_SECRET_TOO_LONG syscall.Errno = 1382 + ERROR_INTERNAL_DB_ERROR syscall.Errno = 1383 + ERROR_TOO_MANY_CONTEXT_IDS syscall.Errno = 1384 + ERROR_LOGON_TYPE_NOT_GRANTED syscall.Errno = 1385 + ERROR_NT_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1386 + ERROR_NO_SUCH_MEMBER syscall.Errno = 1387 + ERROR_INVALID_MEMBER syscall.Errno = 1388 + ERROR_TOO_MANY_SIDS syscall.Errno = 1389 + ERROR_LM_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1390 + ERROR_NO_INHERITANCE syscall.Errno = 1391 + ERROR_FILE_CORRUPT syscall.Errno = 1392 + ERROR_DISK_CORRUPT syscall.Errno = 1393 + ERROR_NO_USER_SESSION_KEY syscall.Errno = 1394 + ERROR_LICENSE_QUOTA_EXCEEDED syscall.Errno = 1395 + ERROR_WRONG_TARGET_NAME syscall.Errno = 1396 + ERROR_MUTUAL_AUTH_FAILED syscall.Errno = 1397 + ERROR_TIME_SKEW syscall.Errno = 1398 + ERROR_CURRENT_DOMAIN_NOT_ALLOWED syscall.Errno = 1399 + ERROR_INVALID_WINDOW_HANDLE syscall.Errno = 1400 + ERROR_INVALID_MENU_HANDLE syscall.Errno = 1401 + ERROR_INVALID_CURSOR_HANDLE syscall.Errno = 1402 + ERROR_INVALID_ACCEL_HANDLE syscall.Errno = 1403 + ERROR_INVALID_HOOK_HANDLE syscall.Errno = 1404 + ERROR_INVALID_DWP_HANDLE syscall.Errno = 1405 + ERROR_TLW_WITH_WSCHILD syscall.Errno = 1406 + ERROR_CANNOT_FIND_WND_CLASS syscall.Errno = 1407 + ERROR_WINDOW_OF_OTHER_THREAD syscall.Errno = 1408 + ERROR_HOTKEY_ALREADY_REGISTERED syscall.Errno = 1409 + ERROR_CLASS_ALREADY_EXISTS syscall.Errno = 1410 + ERROR_CLASS_DOES_NOT_EXIST syscall.Errno = 1411 + ERROR_CLASS_HAS_WINDOWS syscall.Errno = 1412 + ERROR_INVALID_INDEX syscall.Errno = 1413 + ERROR_INVALID_ICON_HANDLE syscall.Errno = 1414 + ERROR_PRIVATE_DIALOG_INDEX syscall.Errno = 1415 + ERROR_LISTBOX_ID_NOT_FOUND syscall.Errno = 1416 + ERROR_NO_WILDCARD_CHARACTERS syscall.Errno = 1417 + ERROR_CLIPBOARD_NOT_OPEN syscall.Errno = 1418 + ERROR_HOTKEY_NOT_REGISTERED syscall.Errno = 1419 + ERROR_WINDOW_NOT_DIALOG syscall.Errno = 1420 + ERROR_CONTROL_ID_NOT_FOUND syscall.Errno = 1421 + ERROR_INVALID_COMBOBOX_MESSAGE syscall.Errno = 1422 + ERROR_WINDOW_NOT_COMBOBOX syscall.Errno = 1423 + ERROR_INVALID_EDIT_HEIGHT syscall.Errno = 1424 + ERROR_DC_NOT_FOUND syscall.Errno = 1425 + ERROR_INVALID_HOOK_FILTER syscall.Errno = 1426 + ERROR_INVALID_FILTER_PROC syscall.Errno = 1427 + ERROR_HOOK_NEEDS_HMOD syscall.Errno = 1428 + ERROR_GLOBAL_ONLY_HOOK syscall.Errno = 1429 + ERROR_JOURNAL_HOOK_SET syscall.Errno = 1430 + ERROR_HOOK_NOT_INSTALLED syscall.Errno = 1431 + ERROR_INVALID_LB_MESSAGE syscall.Errno = 1432 + ERROR_SETCOUNT_ON_BAD_LB syscall.Errno = 1433 + ERROR_LB_WITHOUT_TABSTOPS syscall.Errno = 1434 + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD syscall.Errno = 1435 + ERROR_CHILD_WINDOW_MENU syscall.Errno = 1436 + ERROR_NO_SYSTEM_MENU syscall.Errno = 1437 + ERROR_INVALID_MSGBOX_STYLE syscall.Errno = 1438 + ERROR_INVALID_SPI_VALUE syscall.Errno = 1439 + ERROR_SCREEN_ALREADY_LOCKED syscall.Errno = 1440 + ERROR_HWNDS_HAVE_DIFF_PARENT syscall.Errno = 1441 + ERROR_NOT_CHILD_WINDOW syscall.Errno = 1442 + ERROR_INVALID_GW_COMMAND syscall.Errno = 1443 + ERROR_INVALID_THREAD_ID syscall.Errno = 1444 + ERROR_NON_MDICHILD_WINDOW syscall.Errno = 1445 + ERROR_POPUP_ALREADY_ACTIVE syscall.Errno = 1446 + ERROR_NO_SCROLLBARS syscall.Errno = 1447 + ERROR_INVALID_SCROLLBAR_RANGE syscall.Errno = 1448 + ERROR_INVALID_SHOWWIN_COMMAND syscall.Errno = 1449 + ERROR_NO_SYSTEM_RESOURCES syscall.Errno = 1450 + ERROR_NONPAGED_SYSTEM_RESOURCES syscall.Errno = 1451 + ERROR_PAGED_SYSTEM_RESOURCES syscall.Errno = 1452 + ERROR_WORKING_SET_QUOTA syscall.Errno = 1453 + ERROR_PAGEFILE_QUOTA syscall.Errno = 1454 + ERROR_COMMITMENT_LIMIT syscall.Errno = 1455 + ERROR_MENU_ITEM_NOT_FOUND syscall.Errno = 1456 + ERROR_INVALID_KEYBOARD_HANDLE syscall.Errno = 1457 + ERROR_HOOK_TYPE_NOT_ALLOWED syscall.Errno = 1458 + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION syscall.Errno = 1459 + ERROR_TIMEOUT syscall.Errno = 1460 + ERROR_INVALID_MONITOR_HANDLE syscall.Errno = 1461 + ERROR_INCORRECT_SIZE syscall.Errno = 1462 + ERROR_SYMLINK_CLASS_DISABLED syscall.Errno = 1463 + ERROR_SYMLINK_NOT_SUPPORTED syscall.Errno = 1464 + ERROR_XML_PARSE_ERROR syscall.Errno = 1465 + ERROR_XMLDSIG_ERROR syscall.Errno = 1466 + ERROR_RESTART_APPLICATION syscall.Errno = 1467 + ERROR_WRONG_COMPARTMENT syscall.Errno = 1468 + ERROR_AUTHIP_FAILURE syscall.Errno = 1469 + ERROR_NO_NVRAM_RESOURCES syscall.Errno = 1470 + ERROR_NOT_GUI_PROCESS syscall.Errno = 1471 + ERROR_EVENTLOG_FILE_CORRUPT syscall.Errno = 1500 + ERROR_EVENTLOG_CANT_START syscall.Errno = 1501 + ERROR_LOG_FILE_FULL syscall.Errno = 1502 + ERROR_EVENTLOG_FILE_CHANGED syscall.Errno = 1503 + ERROR_CONTAINER_ASSIGNED syscall.Errno = 1504 + ERROR_JOB_NO_CONTAINER syscall.Errno = 1505 + ERROR_INVALID_TASK_NAME syscall.Errno = 1550 + ERROR_INVALID_TASK_INDEX syscall.Errno = 1551 + ERROR_THREAD_ALREADY_IN_TASK syscall.Errno = 1552 + ERROR_INSTALL_SERVICE_FAILURE syscall.Errno = 1601 + ERROR_INSTALL_USEREXIT syscall.Errno = 1602 + ERROR_INSTALL_FAILURE syscall.Errno = 1603 + ERROR_INSTALL_SUSPEND syscall.Errno = 1604 + ERROR_UNKNOWN_PRODUCT syscall.Errno = 1605 + ERROR_UNKNOWN_FEATURE syscall.Errno = 1606 + ERROR_UNKNOWN_COMPONENT syscall.Errno = 1607 + ERROR_UNKNOWN_PROPERTY syscall.Errno = 1608 + ERROR_INVALID_HANDLE_STATE syscall.Errno = 1609 + ERROR_BAD_CONFIGURATION syscall.Errno = 1610 + ERROR_INDEX_ABSENT syscall.Errno = 1611 + ERROR_INSTALL_SOURCE_ABSENT syscall.Errno = 1612 + ERROR_INSTALL_PACKAGE_VERSION syscall.Errno = 1613 + ERROR_PRODUCT_UNINSTALLED syscall.Errno = 1614 + ERROR_BAD_QUERY_SYNTAX syscall.Errno = 1615 + ERROR_INVALID_FIELD syscall.Errno = 1616 + ERROR_DEVICE_REMOVED syscall.Errno = 1617 + ERROR_INSTALL_ALREADY_RUNNING syscall.Errno = 1618 + ERROR_INSTALL_PACKAGE_OPEN_FAILED syscall.Errno = 1619 + ERROR_INSTALL_PACKAGE_INVALID syscall.Errno = 1620 + ERROR_INSTALL_UI_FAILURE syscall.Errno = 1621 + ERROR_INSTALL_LOG_FAILURE syscall.Errno = 1622 + ERROR_INSTALL_LANGUAGE_UNSUPPORTED syscall.Errno = 1623 + ERROR_INSTALL_TRANSFORM_FAILURE syscall.Errno = 1624 + ERROR_INSTALL_PACKAGE_REJECTED syscall.Errno = 1625 + ERROR_FUNCTION_NOT_CALLED syscall.Errno = 1626 + ERROR_FUNCTION_FAILED syscall.Errno = 1627 + ERROR_INVALID_TABLE syscall.Errno = 1628 + ERROR_DATATYPE_MISMATCH syscall.Errno = 1629 + ERROR_UNSUPPORTED_TYPE syscall.Errno = 1630 + ERROR_CREATE_FAILED syscall.Errno = 1631 + ERROR_INSTALL_TEMP_UNWRITABLE syscall.Errno = 1632 + ERROR_INSTALL_PLATFORM_UNSUPPORTED syscall.Errno = 1633 + ERROR_INSTALL_NOTUSED syscall.Errno = 1634 + ERROR_PATCH_PACKAGE_OPEN_FAILED syscall.Errno = 1635 + ERROR_PATCH_PACKAGE_INVALID syscall.Errno = 1636 + ERROR_PATCH_PACKAGE_UNSUPPORTED syscall.Errno = 1637 + ERROR_PRODUCT_VERSION syscall.Errno = 1638 + ERROR_INVALID_COMMAND_LINE syscall.Errno = 1639 + ERROR_INSTALL_REMOTE_DISALLOWED syscall.Errno = 1640 + ERROR_SUCCESS_REBOOT_INITIATED syscall.Errno = 1641 + ERROR_PATCH_TARGET_NOT_FOUND syscall.Errno = 1642 + ERROR_PATCH_PACKAGE_REJECTED syscall.Errno = 1643 + ERROR_INSTALL_TRANSFORM_REJECTED syscall.Errno = 1644 + ERROR_INSTALL_REMOTE_PROHIBITED syscall.Errno = 1645 + ERROR_PATCH_REMOVAL_UNSUPPORTED syscall.Errno = 1646 + ERROR_UNKNOWN_PATCH syscall.Errno = 1647 + ERROR_PATCH_NO_SEQUENCE syscall.Errno = 1648 + ERROR_PATCH_REMOVAL_DISALLOWED syscall.Errno = 1649 + ERROR_INVALID_PATCH_XML syscall.Errno = 1650 + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT syscall.Errno = 1651 + ERROR_INSTALL_SERVICE_SAFEBOOT syscall.Errno = 1652 + ERROR_FAIL_FAST_EXCEPTION syscall.Errno = 1653 + ERROR_INSTALL_REJECTED syscall.Errno = 1654 + ERROR_DYNAMIC_CODE_BLOCKED syscall.Errno = 1655 + ERROR_NOT_SAME_OBJECT syscall.Errno = 1656 + ERROR_STRICT_CFG_VIOLATION syscall.Errno = 1657 + ERROR_SET_CONTEXT_DENIED syscall.Errno = 1660 + ERROR_CROSS_PARTITION_VIOLATION syscall.Errno = 1661 + RPC_S_INVALID_STRING_BINDING syscall.Errno = 1700 + RPC_S_WRONG_KIND_OF_BINDING syscall.Errno = 1701 + RPC_S_INVALID_BINDING syscall.Errno = 1702 + RPC_S_PROTSEQ_NOT_SUPPORTED syscall.Errno = 1703 + RPC_S_INVALID_RPC_PROTSEQ syscall.Errno = 1704 + RPC_S_INVALID_STRING_UUID syscall.Errno = 1705 + RPC_S_INVALID_ENDPOINT_FORMAT syscall.Errno = 1706 + RPC_S_INVALID_NET_ADDR syscall.Errno = 1707 + RPC_S_NO_ENDPOINT_FOUND syscall.Errno = 1708 + RPC_S_INVALID_TIMEOUT syscall.Errno = 1709 + RPC_S_OBJECT_NOT_FOUND syscall.Errno = 1710 + RPC_S_ALREADY_REGISTERED syscall.Errno = 1711 + RPC_S_TYPE_ALREADY_REGISTERED syscall.Errno = 1712 + RPC_S_ALREADY_LISTENING syscall.Errno = 1713 + RPC_S_NO_PROTSEQS_REGISTERED syscall.Errno = 1714 + RPC_S_NOT_LISTENING syscall.Errno = 1715 + RPC_S_UNKNOWN_MGR_TYPE syscall.Errno = 1716 + RPC_S_UNKNOWN_IF syscall.Errno = 1717 + RPC_S_NO_BINDINGS syscall.Errno = 1718 + RPC_S_NO_PROTSEQS syscall.Errno = 1719 + RPC_S_CANT_CREATE_ENDPOINT syscall.Errno = 1720 + RPC_S_OUT_OF_RESOURCES syscall.Errno = 1721 + RPC_S_SERVER_UNAVAILABLE syscall.Errno = 1722 + RPC_S_SERVER_TOO_BUSY syscall.Errno = 1723 + RPC_S_INVALID_NETWORK_OPTIONS syscall.Errno = 1724 + RPC_S_NO_CALL_ACTIVE syscall.Errno = 1725 + RPC_S_CALL_FAILED syscall.Errno = 1726 + RPC_S_CALL_FAILED_DNE syscall.Errno = 1727 + RPC_S_PROTOCOL_ERROR syscall.Errno = 1728 + RPC_S_PROXY_ACCESS_DENIED syscall.Errno = 1729 + RPC_S_UNSUPPORTED_TRANS_SYN syscall.Errno = 1730 + RPC_S_UNSUPPORTED_TYPE syscall.Errno = 1732 + RPC_S_INVALID_TAG syscall.Errno = 1733 + RPC_S_INVALID_BOUND syscall.Errno = 1734 + RPC_S_NO_ENTRY_NAME syscall.Errno = 1735 + RPC_S_INVALID_NAME_SYNTAX syscall.Errno = 1736 + RPC_S_UNSUPPORTED_NAME_SYNTAX syscall.Errno = 1737 + RPC_S_UUID_NO_ADDRESS syscall.Errno = 1739 + RPC_S_DUPLICATE_ENDPOINT syscall.Errno = 1740 + RPC_S_UNKNOWN_AUTHN_TYPE syscall.Errno = 1741 + RPC_S_MAX_CALLS_TOO_SMALL syscall.Errno = 1742 + RPC_S_STRING_TOO_LONG syscall.Errno = 1743 + RPC_S_PROTSEQ_NOT_FOUND syscall.Errno = 1744 + RPC_S_PROCNUM_OUT_OF_RANGE syscall.Errno = 1745 + RPC_S_BINDING_HAS_NO_AUTH syscall.Errno = 1746 + RPC_S_UNKNOWN_AUTHN_SERVICE syscall.Errno = 1747 + RPC_S_UNKNOWN_AUTHN_LEVEL syscall.Errno = 1748 + RPC_S_INVALID_AUTH_IDENTITY syscall.Errno = 1749 + RPC_S_UNKNOWN_AUTHZ_SERVICE syscall.Errno = 1750 + EPT_S_INVALID_ENTRY syscall.Errno = 1751 + EPT_S_CANT_PERFORM_OP syscall.Errno = 1752 + EPT_S_NOT_REGISTERED syscall.Errno = 1753 + RPC_S_NOTHING_TO_EXPORT syscall.Errno = 1754 + RPC_S_INCOMPLETE_NAME syscall.Errno = 1755 + RPC_S_INVALID_VERS_OPTION syscall.Errno = 1756 + RPC_S_NO_MORE_MEMBERS syscall.Errno = 1757 + RPC_S_NOT_ALL_OBJS_UNEXPORTED syscall.Errno = 1758 + RPC_S_INTERFACE_NOT_FOUND syscall.Errno = 1759 + RPC_S_ENTRY_ALREADY_EXISTS syscall.Errno = 1760 + RPC_S_ENTRY_NOT_FOUND syscall.Errno = 1761 + RPC_S_NAME_SERVICE_UNAVAILABLE syscall.Errno = 1762 + RPC_S_INVALID_NAF_ID syscall.Errno = 1763 + RPC_S_CANNOT_SUPPORT syscall.Errno = 1764 + RPC_S_NO_CONTEXT_AVAILABLE syscall.Errno = 1765 + RPC_S_INTERNAL_ERROR syscall.Errno = 1766 + RPC_S_ZERO_DIVIDE syscall.Errno = 1767 + RPC_S_ADDRESS_ERROR syscall.Errno = 1768 + RPC_S_FP_DIV_ZERO syscall.Errno = 1769 + RPC_S_FP_UNDERFLOW syscall.Errno = 1770 + RPC_S_FP_OVERFLOW syscall.Errno = 1771 + RPC_X_NO_MORE_ENTRIES syscall.Errno = 1772 + RPC_X_SS_CHAR_TRANS_OPEN_FAIL syscall.Errno = 1773 + RPC_X_SS_CHAR_TRANS_SHORT_FILE syscall.Errno = 1774 + RPC_X_SS_IN_NULL_CONTEXT syscall.Errno = 1775 + RPC_X_SS_CONTEXT_DAMAGED syscall.Errno = 1777 + RPC_X_SS_HANDLES_MISMATCH syscall.Errno = 1778 + RPC_X_SS_CANNOT_GET_CALL_HANDLE syscall.Errno = 1779 + RPC_X_NULL_REF_POINTER syscall.Errno = 1780 + RPC_X_ENUM_VALUE_OUT_OF_RANGE syscall.Errno = 1781 + RPC_X_BYTE_COUNT_TOO_SMALL syscall.Errno = 1782 + RPC_X_BAD_STUB_DATA syscall.Errno = 1783 + ERROR_INVALID_USER_BUFFER syscall.Errno = 1784 + ERROR_UNRECOGNIZED_MEDIA syscall.Errno = 1785 + ERROR_NO_TRUST_LSA_SECRET syscall.Errno = 1786 + ERROR_NO_TRUST_SAM_ACCOUNT syscall.Errno = 1787 + ERROR_TRUSTED_DOMAIN_FAILURE syscall.Errno = 1788 + ERROR_TRUSTED_RELATIONSHIP_FAILURE syscall.Errno = 1789 + ERROR_TRUST_FAILURE syscall.Errno = 1790 + RPC_S_CALL_IN_PROGRESS syscall.Errno = 1791 + ERROR_NETLOGON_NOT_STARTED syscall.Errno = 1792 + ERROR_ACCOUNT_EXPIRED syscall.Errno = 1793 + ERROR_REDIRECTOR_HAS_OPEN_HANDLES syscall.Errno = 1794 + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED syscall.Errno = 1795 + ERROR_UNKNOWN_PORT syscall.Errno = 1796 + ERROR_UNKNOWN_PRINTER_DRIVER syscall.Errno = 1797 + ERROR_UNKNOWN_PRINTPROCESSOR syscall.Errno = 1798 + ERROR_INVALID_SEPARATOR_FILE syscall.Errno = 1799 + ERROR_INVALID_PRIORITY syscall.Errno = 1800 + ERROR_INVALID_PRINTER_NAME syscall.Errno = 1801 + ERROR_PRINTER_ALREADY_EXISTS syscall.Errno = 1802 + ERROR_INVALID_PRINTER_COMMAND syscall.Errno = 1803 + ERROR_INVALID_DATATYPE syscall.Errno = 1804 + ERROR_INVALID_ENVIRONMENT syscall.Errno = 1805 + RPC_S_NO_MORE_BINDINGS syscall.Errno = 1806 + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT syscall.Errno = 1807 + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT syscall.Errno = 1808 + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT syscall.Errno = 1809 + ERROR_DOMAIN_TRUST_INCONSISTENT syscall.Errno = 1810 + ERROR_SERVER_HAS_OPEN_HANDLES syscall.Errno = 1811 + ERROR_RESOURCE_DATA_NOT_FOUND syscall.Errno = 1812 + ERROR_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 1813 + ERROR_RESOURCE_NAME_NOT_FOUND syscall.Errno = 1814 + ERROR_RESOURCE_LANG_NOT_FOUND syscall.Errno = 1815 + ERROR_NOT_ENOUGH_QUOTA syscall.Errno = 1816 + RPC_S_NO_INTERFACES syscall.Errno = 1817 + RPC_S_CALL_CANCELLED syscall.Errno = 1818 + RPC_S_BINDING_INCOMPLETE syscall.Errno = 1819 + RPC_S_COMM_FAILURE syscall.Errno = 1820 + RPC_S_UNSUPPORTED_AUTHN_LEVEL syscall.Errno = 1821 + RPC_S_NO_PRINC_NAME syscall.Errno = 1822 + RPC_S_NOT_RPC_ERROR syscall.Errno = 1823 + RPC_S_UUID_LOCAL_ONLY syscall.Errno = 1824 + RPC_S_SEC_PKG_ERROR syscall.Errno = 1825 + RPC_S_NOT_CANCELLED syscall.Errno = 1826 + RPC_X_INVALID_ES_ACTION syscall.Errno = 1827 + RPC_X_WRONG_ES_VERSION syscall.Errno = 1828 + RPC_X_WRONG_STUB_VERSION syscall.Errno = 1829 + RPC_X_INVALID_PIPE_OBJECT syscall.Errno = 1830 + RPC_X_WRONG_PIPE_ORDER syscall.Errno = 1831 + RPC_X_WRONG_PIPE_VERSION syscall.Errno = 1832 + RPC_S_COOKIE_AUTH_FAILED syscall.Errno = 1833 + RPC_S_DO_NOT_DISTURB syscall.Errno = 1834 + RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED syscall.Errno = 1835 + RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH syscall.Errno = 1836 + RPC_S_GROUP_MEMBER_NOT_FOUND syscall.Errno = 1898 + EPT_S_CANT_CREATE syscall.Errno = 1899 + RPC_S_INVALID_OBJECT syscall.Errno = 1900 + ERROR_INVALID_TIME syscall.Errno = 1901 + ERROR_INVALID_FORM_NAME syscall.Errno = 1902 + ERROR_INVALID_FORM_SIZE syscall.Errno = 1903 + ERROR_ALREADY_WAITING syscall.Errno = 1904 + ERROR_PRINTER_DELETED syscall.Errno = 1905 + ERROR_INVALID_PRINTER_STATE syscall.Errno = 1906 + ERROR_PASSWORD_MUST_CHANGE syscall.Errno = 1907 + ERROR_DOMAIN_CONTROLLER_NOT_FOUND syscall.Errno = 1908 + ERROR_ACCOUNT_LOCKED_OUT syscall.Errno = 1909 + OR_INVALID_OXID syscall.Errno = 1910 + OR_INVALID_OID syscall.Errno = 1911 + OR_INVALID_SET syscall.Errno = 1912 + RPC_S_SEND_INCOMPLETE syscall.Errno = 1913 + RPC_S_INVALID_ASYNC_HANDLE syscall.Errno = 1914 + RPC_S_INVALID_ASYNC_CALL syscall.Errno = 1915 + RPC_X_PIPE_CLOSED syscall.Errno = 1916 + RPC_X_PIPE_DISCIPLINE_ERROR syscall.Errno = 1917 + RPC_X_PIPE_EMPTY syscall.Errno = 1918 + ERROR_NO_SITENAME syscall.Errno = 1919 + ERROR_CANT_ACCESS_FILE syscall.Errno = 1920 + ERROR_CANT_RESOLVE_FILENAME syscall.Errno = 1921 + RPC_S_ENTRY_TYPE_MISMATCH syscall.Errno = 1922 + RPC_S_NOT_ALL_OBJS_EXPORTED syscall.Errno = 1923 + RPC_S_INTERFACE_NOT_EXPORTED syscall.Errno = 1924 + RPC_S_PROFILE_NOT_ADDED syscall.Errno = 1925 + RPC_S_PRF_ELT_NOT_ADDED syscall.Errno = 1926 + RPC_S_PRF_ELT_NOT_REMOVED syscall.Errno = 1927 + RPC_S_GRP_ELT_NOT_ADDED syscall.Errno = 1928 + RPC_S_GRP_ELT_NOT_REMOVED syscall.Errno = 1929 + ERROR_KM_DRIVER_BLOCKED syscall.Errno = 1930 + ERROR_CONTEXT_EXPIRED syscall.Errno = 1931 + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1932 + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1933 + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED syscall.Errno = 1934 + ERROR_AUTHENTICATION_FIREWALL_FAILED syscall.Errno = 1935 + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED syscall.Errno = 1936 + ERROR_NTLM_BLOCKED syscall.Errno = 1937 + ERROR_PASSWORD_CHANGE_REQUIRED syscall.Errno = 1938 + ERROR_LOST_MODE_LOGON_RESTRICTION syscall.Errno = 1939 + ERROR_INVALID_PIXEL_FORMAT syscall.Errno = 2000 + ERROR_BAD_DRIVER syscall.Errno = 2001 + ERROR_INVALID_WINDOW_STYLE syscall.Errno = 2002 + ERROR_METAFILE_NOT_SUPPORTED syscall.Errno = 2003 + ERROR_TRANSFORM_NOT_SUPPORTED syscall.Errno = 2004 + ERROR_CLIPPING_NOT_SUPPORTED syscall.Errno = 2005 + ERROR_INVALID_CMM syscall.Errno = 2010 + ERROR_INVALID_PROFILE syscall.Errno = 2011 + ERROR_TAG_NOT_FOUND syscall.Errno = 2012 + ERROR_TAG_NOT_PRESENT syscall.Errno = 2013 + ERROR_DUPLICATE_TAG syscall.Errno = 2014 + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE syscall.Errno = 2015 + ERROR_PROFILE_NOT_FOUND syscall.Errno = 2016 + ERROR_INVALID_COLORSPACE syscall.Errno = 2017 + ERROR_ICM_NOT_ENABLED syscall.Errno = 2018 + ERROR_DELETING_ICM_XFORM syscall.Errno = 2019 + ERROR_INVALID_TRANSFORM syscall.Errno = 2020 + ERROR_COLORSPACE_MISMATCH syscall.Errno = 2021 + ERROR_INVALID_COLORINDEX syscall.Errno = 2022 + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE syscall.Errno = 2023 + ERROR_CONNECTED_OTHER_PASSWORD syscall.Errno = 2108 + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT syscall.Errno = 2109 + ERROR_BAD_USERNAME syscall.Errno = 2202 + ERROR_NOT_CONNECTED syscall.Errno = 2250 + ERROR_OPEN_FILES syscall.Errno = 2401 + ERROR_ACTIVE_CONNECTIONS syscall.Errno = 2402 + ERROR_DEVICE_IN_USE syscall.Errno = 2404 + ERROR_UNKNOWN_PRINT_MONITOR syscall.Errno = 3000 + ERROR_PRINTER_DRIVER_IN_USE syscall.Errno = 3001 + ERROR_SPOOL_FILE_NOT_FOUND syscall.Errno = 3002 + ERROR_SPL_NO_STARTDOC syscall.Errno = 3003 + ERROR_SPL_NO_ADDJOB syscall.Errno = 3004 + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED syscall.Errno = 3005 + ERROR_PRINT_MONITOR_ALREADY_INSTALLED syscall.Errno = 3006 + ERROR_INVALID_PRINT_MONITOR syscall.Errno = 3007 + ERROR_PRINT_MONITOR_IN_USE syscall.Errno = 3008 + ERROR_PRINTER_HAS_JOBS_QUEUED syscall.Errno = 3009 + ERROR_SUCCESS_REBOOT_REQUIRED syscall.Errno = 3010 + ERROR_SUCCESS_RESTART_REQUIRED syscall.Errno = 3011 + ERROR_PRINTER_NOT_FOUND syscall.Errno = 3012 + ERROR_PRINTER_DRIVER_WARNED syscall.Errno = 3013 + ERROR_PRINTER_DRIVER_BLOCKED syscall.Errno = 3014 + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE syscall.Errno = 3015 + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND syscall.Errno = 3016 + ERROR_FAIL_REBOOT_REQUIRED syscall.Errno = 3017 + ERROR_FAIL_REBOOT_INITIATED syscall.Errno = 3018 + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED syscall.Errno = 3019 + ERROR_PRINT_JOB_RESTART_REQUIRED syscall.Errno = 3020 + ERROR_INVALID_PRINTER_DRIVER_MANIFEST syscall.Errno = 3021 + ERROR_PRINTER_NOT_SHAREABLE syscall.Errno = 3022 + ERROR_REQUEST_PAUSED syscall.Errno = 3050 + ERROR_APPEXEC_CONDITION_NOT_SATISFIED syscall.Errno = 3060 + ERROR_APPEXEC_HANDLE_INVALIDATED syscall.Errno = 3061 + ERROR_APPEXEC_INVALID_HOST_GENERATION syscall.Errno = 3062 + ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION syscall.Errno = 3063 + ERROR_APPEXEC_INVALID_HOST_STATE syscall.Errno = 3064 + ERROR_APPEXEC_NO_DONOR syscall.Errno = 3065 + ERROR_APPEXEC_HOST_ID_MISMATCH syscall.Errno = 3066 + ERROR_APPEXEC_UNKNOWN_USER syscall.Errno = 3067 + ERROR_IO_REISSUE_AS_CACHED syscall.Errno = 3950 + ERROR_WINS_INTERNAL syscall.Errno = 4000 + ERROR_CAN_NOT_DEL_LOCAL_WINS syscall.Errno = 4001 + ERROR_STATIC_INIT syscall.Errno = 4002 + ERROR_INC_BACKUP syscall.Errno = 4003 + ERROR_FULL_BACKUP syscall.Errno = 4004 + ERROR_REC_NON_EXISTENT syscall.Errno = 4005 + ERROR_RPL_NOT_ALLOWED syscall.Errno = 4006 + PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED syscall.Errno = 4050 + PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO syscall.Errno = 4051 + PEERDIST_ERROR_MISSING_DATA syscall.Errno = 4052 + PEERDIST_ERROR_NO_MORE syscall.Errno = 4053 + PEERDIST_ERROR_NOT_INITIALIZED syscall.Errno = 4054 + PEERDIST_ERROR_ALREADY_INITIALIZED syscall.Errno = 4055 + PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 4056 + PEERDIST_ERROR_INVALIDATED syscall.Errno = 4057 + PEERDIST_ERROR_ALREADY_EXISTS syscall.Errno = 4058 + PEERDIST_ERROR_OPERATION_NOTFOUND syscall.Errno = 4059 + PEERDIST_ERROR_ALREADY_COMPLETED syscall.Errno = 4060 + PEERDIST_ERROR_OUT_OF_BOUNDS syscall.Errno = 4061 + PEERDIST_ERROR_VERSION_UNSUPPORTED syscall.Errno = 4062 + PEERDIST_ERROR_INVALID_CONFIGURATION syscall.Errno = 4063 + PEERDIST_ERROR_NOT_LICENSED syscall.Errno = 4064 + PEERDIST_ERROR_SERVICE_UNAVAILABLE syscall.Errno = 4065 + PEERDIST_ERROR_TRUST_FAILURE syscall.Errno = 4066 + ERROR_DHCP_ADDRESS_CONFLICT syscall.Errno = 4100 + ERROR_WMI_GUID_NOT_FOUND syscall.Errno = 4200 + ERROR_WMI_INSTANCE_NOT_FOUND syscall.Errno = 4201 + ERROR_WMI_ITEMID_NOT_FOUND syscall.Errno = 4202 + ERROR_WMI_TRY_AGAIN syscall.Errno = 4203 + ERROR_WMI_DP_NOT_FOUND syscall.Errno = 4204 + ERROR_WMI_UNRESOLVED_INSTANCE_REF syscall.Errno = 4205 + ERROR_WMI_ALREADY_ENABLED syscall.Errno = 4206 + ERROR_WMI_GUID_DISCONNECTED syscall.Errno = 4207 + ERROR_WMI_SERVER_UNAVAILABLE syscall.Errno = 4208 + ERROR_WMI_DP_FAILED syscall.Errno = 4209 + ERROR_WMI_INVALID_MOF syscall.Errno = 4210 + ERROR_WMI_INVALID_REGINFO syscall.Errno = 4211 + ERROR_WMI_ALREADY_DISABLED syscall.Errno = 4212 + ERROR_WMI_READ_ONLY syscall.Errno = 4213 + ERROR_WMI_SET_FAILURE syscall.Errno = 4214 + ERROR_NOT_APPCONTAINER syscall.Errno = 4250 + ERROR_APPCONTAINER_REQUIRED syscall.Errno = 4251 + ERROR_NOT_SUPPORTED_IN_APPCONTAINER syscall.Errno = 4252 + ERROR_INVALID_PACKAGE_SID_LENGTH syscall.Errno = 4253 + ERROR_INVALID_MEDIA syscall.Errno = 4300 + ERROR_INVALID_LIBRARY syscall.Errno = 4301 + ERROR_INVALID_MEDIA_POOL syscall.Errno = 4302 + ERROR_DRIVE_MEDIA_MISMATCH syscall.Errno = 4303 + ERROR_MEDIA_OFFLINE syscall.Errno = 4304 + ERROR_LIBRARY_OFFLINE syscall.Errno = 4305 + ERROR_EMPTY syscall.Errno = 4306 + ERROR_NOT_EMPTY syscall.Errno = 4307 + ERROR_MEDIA_UNAVAILABLE syscall.Errno = 4308 + ERROR_RESOURCE_DISABLED syscall.Errno = 4309 + ERROR_INVALID_CLEANER syscall.Errno = 4310 + ERROR_UNABLE_TO_CLEAN syscall.Errno = 4311 + ERROR_OBJECT_NOT_FOUND syscall.Errno = 4312 + ERROR_DATABASE_FAILURE syscall.Errno = 4313 + ERROR_DATABASE_FULL syscall.Errno = 4314 + ERROR_MEDIA_INCOMPATIBLE syscall.Errno = 4315 + ERROR_RESOURCE_NOT_PRESENT syscall.Errno = 4316 + ERROR_INVALID_OPERATION syscall.Errno = 4317 + ERROR_MEDIA_NOT_AVAILABLE syscall.Errno = 4318 + ERROR_DEVICE_NOT_AVAILABLE syscall.Errno = 4319 + ERROR_REQUEST_REFUSED syscall.Errno = 4320 + ERROR_INVALID_DRIVE_OBJECT syscall.Errno = 4321 + ERROR_LIBRARY_FULL syscall.Errno = 4322 + ERROR_MEDIUM_NOT_ACCESSIBLE syscall.Errno = 4323 + ERROR_UNABLE_TO_LOAD_MEDIUM syscall.Errno = 4324 + ERROR_UNABLE_TO_INVENTORY_DRIVE syscall.Errno = 4325 + ERROR_UNABLE_TO_INVENTORY_SLOT syscall.Errno = 4326 + ERROR_UNABLE_TO_INVENTORY_TRANSPORT syscall.Errno = 4327 + ERROR_TRANSPORT_FULL syscall.Errno = 4328 + ERROR_CONTROLLING_IEPORT syscall.Errno = 4329 + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA syscall.Errno = 4330 + ERROR_CLEANER_SLOT_SET syscall.Errno = 4331 + ERROR_CLEANER_SLOT_NOT_SET syscall.Errno = 4332 + ERROR_CLEANER_CARTRIDGE_SPENT syscall.Errno = 4333 + ERROR_UNEXPECTED_OMID syscall.Errno = 4334 + ERROR_CANT_DELETE_LAST_ITEM syscall.Errno = 4335 + ERROR_MESSAGE_EXCEEDS_MAX_SIZE syscall.Errno = 4336 + ERROR_VOLUME_CONTAINS_SYS_FILES syscall.Errno = 4337 + ERROR_INDIGENOUS_TYPE syscall.Errno = 4338 + ERROR_NO_SUPPORTING_DRIVES syscall.Errno = 4339 + ERROR_CLEANER_CARTRIDGE_INSTALLED syscall.Errno = 4340 + ERROR_IEPORT_FULL syscall.Errno = 4341 + ERROR_FILE_OFFLINE syscall.Errno = 4350 + ERROR_REMOTE_STORAGE_NOT_ACTIVE syscall.Errno = 4351 + ERROR_REMOTE_STORAGE_MEDIA_ERROR syscall.Errno = 4352 + ERROR_NOT_A_REPARSE_POINT syscall.Errno = 4390 + ERROR_REPARSE_ATTRIBUTE_CONFLICT syscall.Errno = 4391 + ERROR_INVALID_REPARSE_DATA syscall.Errno = 4392 + ERROR_REPARSE_TAG_INVALID syscall.Errno = 4393 + ERROR_REPARSE_TAG_MISMATCH syscall.Errno = 4394 + ERROR_REPARSE_POINT_ENCOUNTERED syscall.Errno = 4395 + ERROR_APP_DATA_NOT_FOUND syscall.Errno = 4400 + ERROR_APP_DATA_EXPIRED syscall.Errno = 4401 + ERROR_APP_DATA_CORRUPT syscall.Errno = 4402 + ERROR_APP_DATA_LIMIT_EXCEEDED syscall.Errno = 4403 + ERROR_APP_DATA_REBOOT_REQUIRED syscall.Errno = 4404 + ERROR_SECUREBOOT_ROLLBACK_DETECTED syscall.Errno = 4420 + ERROR_SECUREBOOT_POLICY_VIOLATION syscall.Errno = 4421 + ERROR_SECUREBOOT_INVALID_POLICY syscall.Errno = 4422 + ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND syscall.Errno = 4423 + ERROR_SECUREBOOT_POLICY_NOT_SIGNED syscall.Errno = 4424 + ERROR_SECUREBOOT_NOT_ENABLED syscall.Errno = 4425 + ERROR_SECUREBOOT_FILE_REPLACED syscall.Errno = 4426 + ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED syscall.Errno = 4427 + ERROR_SECUREBOOT_POLICY_UNKNOWN syscall.Errno = 4428 + ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION syscall.Errno = 4429 + ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH syscall.Errno = 4430 + ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED syscall.Errno = 4431 + ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH syscall.Errno = 4432 + ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING syscall.Errno = 4433 + ERROR_SECUREBOOT_NOT_BASE_POLICY syscall.Errno = 4434 + ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY syscall.Errno = 4435 + ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED syscall.Errno = 4440 + ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED syscall.Errno = 4441 + ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED syscall.Errno = 4442 + ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED syscall.Errno = 4443 + ERROR_ALREADY_HAS_STREAM_ID syscall.Errno = 4444 + ERROR_SMR_GARBAGE_COLLECTION_REQUIRED syscall.Errno = 4445 + ERROR_WOF_WIM_HEADER_CORRUPT syscall.Errno = 4446 + ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT syscall.Errno = 4447 + ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT syscall.Errno = 4448 + ERROR_VOLUME_NOT_SIS_ENABLED syscall.Errno = 4500 + ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED syscall.Errno = 4550 + ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551 + ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552 + ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553 + ERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES syscall.Errno = 4554 + ERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED syscall.Errno = 4555 + ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560 + ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561 + ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570 + ERROR_PLATFORM_MANIFEST_INVALID syscall.Errno = 4571 + ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED syscall.Errno = 4572 + ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED syscall.Errno = 4573 + ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND syscall.Errno = 4574 + ERROR_PLATFORM_MANIFEST_NOT_ACTIVE syscall.Errno = 4575 + ERROR_PLATFORM_MANIFEST_NOT_SIGNED syscall.Errno = 4576 + ERROR_DEPENDENT_RESOURCE_EXISTS syscall.Errno = 5001 + ERROR_DEPENDENCY_NOT_FOUND syscall.Errno = 5002 + ERROR_DEPENDENCY_ALREADY_EXISTS syscall.Errno = 5003 + ERROR_RESOURCE_NOT_ONLINE syscall.Errno = 5004 + ERROR_HOST_NODE_NOT_AVAILABLE syscall.Errno = 5005 + ERROR_RESOURCE_NOT_AVAILABLE syscall.Errno = 5006 + ERROR_RESOURCE_NOT_FOUND syscall.Errno = 5007 + ERROR_SHUTDOWN_CLUSTER syscall.Errno = 5008 + ERROR_CANT_EVICT_ACTIVE_NODE syscall.Errno = 5009 + ERROR_OBJECT_ALREADY_EXISTS syscall.Errno = 5010 + ERROR_OBJECT_IN_LIST syscall.Errno = 5011 + ERROR_GROUP_NOT_AVAILABLE syscall.Errno = 5012 + ERROR_GROUP_NOT_FOUND syscall.Errno = 5013 + ERROR_GROUP_NOT_ONLINE syscall.Errno = 5014 + ERROR_HOST_NODE_NOT_RESOURCE_OWNER syscall.Errno = 5015 + ERROR_HOST_NODE_NOT_GROUP_OWNER syscall.Errno = 5016 + ERROR_RESMON_CREATE_FAILED syscall.Errno = 5017 + ERROR_RESMON_ONLINE_FAILED syscall.Errno = 5018 + ERROR_RESOURCE_ONLINE syscall.Errno = 5019 + ERROR_QUORUM_RESOURCE syscall.Errno = 5020 + ERROR_NOT_QUORUM_CAPABLE syscall.Errno = 5021 + ERROR_CLUSTER_SHUTTING_DOWN syscall.Errno = 5022 + ERROR_INVALID_STATE syscall.Errno = 5023 + ERROR_RESOURCE_PROPERTIES_STORED syscall.Errno = 5024 + ERROR_NOT_QUORUM_CLASS syscall.Errno = 5025 + ERROR_CORE_RESOURCE syscall.Errno = 5026 + ERROR_QUORUM_RESOURCE_ONLINE_FAILED syscall.Errno = 5027 + ERROR_QUORUMLOG_OPEN_FAILED syscall.Errno = 5028 + ERROR_CLUSTERLOG_CORRUPT syscall.Errno = 5029 + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE syscall.Errno = 5030 + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE syscall.Errno = 5031 + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND syscall.Errno = 5032 + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE syscall.Errno = 5033 + ERROR_QUORUM_OWNER_ALIVE syscall.Errno = 5034 + ERROR_NETWORK_NOT_AVAILABLE syscall.Errno = 5035 + ERROR_NODE_NOT_AVAILABLE syscall.Errno = 5036 + ERROR_ALL_NODES_NOT_AVAILABLE syscall.Errno = 5037 + ERROR_RESOURCE_FAILED syscall.Errno = 5038 + ERROR_CLUSTER_INVALID_NODE syscall.Errno = 5039 + ERROR_CLUSTER_NODE_EXISTS syscall.Errno = 5040 + ERROR_CLUSTER_JOIN_IN_PROGRESS syscall.Errno = 5041 + ERROR_CLUSTER_NODE_NOT_FOUND syscall.Errno = 5042 + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND syscall.Errno = 5043 + ERROR_CLUSTER_NETWORK_EXISTS syscall.Errno = 5044 + ERROR_CLUSTER_NETWORK_NOT_FOUND syscall.Errno = 5045 + ERROR_CLUSTER_NETINTERFACE_EXISTS syscall.Errno = 5046 + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND syscall.Errno = 5047 + ERROR_CLUSTER_INVALID_REQUEST syscall.Errno = 5048 + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER syscall.Errno = 5049 + ERROR_CLUSTER_NODE_DOWN syscall.Errno = 5050 + ERROR_CLUSTER_NODE_UNREACHABLE syscall.Errno = 5051 + ERROR_CLUSTER_NODE_NOT_MEMBER syscall.Errno = 5052 + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS syscall.Errno = 5053 + ERROR_CLUSTER_INVALID_NETWORK syscall.Errno = 5054 + ERROR_CLUSTER_NODE_UP syscall.Errno = 5056 + ERROR_CLUSTER_IPADDR_IN_USE syscall.Errno = 5057 + ERROR_CLUSTER_NODE_NOT_PAUSED syscall.Errno = 5058 + ERROR_CLUSTER_NO_SECURITY_CONTEXT syscall.Errno = 5059 + ERROR_CLUSTER_NETWORK_NOT_INTERNAL syscall.Errno = 5060 + ERROR_CLUSTER_NODE_ALREADY_UP syscall.Errno = 5061 + ERROR_CLUSTER_NODE_ALREADY_DOWN syscall.Errno = 5062 + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE syscall.Errno = 5063 + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE syscall.Errno = 5064 + ERROR_CLUSTER_NODE_ALREADY_MEMBER syscall.Errno = 5065 + ERROR_CLUSTER_LAST_INTERNAL_NETWORK syscall.Errno = 5066 + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS syscall.Errno = 5067 + ERROR_INVALID_OPERATION_ON_QUORUM syscall.Errno = 5068 + ERROR_DEPENDENCY_NOT_ALLOWED syscall.Errno = 5069 + ERROR_CLUSTER_NODE_PAUSED syscall.Errno = 5070 + ERROR_NODE_CANT_HOST_RESOURCE syscall.Errno = 5071 + ERROR_CLUSTER_NODE_NOT_READY syscall.Errno = 5072 + ERROR_CLUSTER_NODE_SHUTTING_DOWN syscall.Errno = 5073 + ERROR_CLUSTER_JOIN_ABORTED syscall.Errno = 5074 + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS syscall.Errno = 5075 + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED syscall.Errno = 5076 + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED syscall.Errno = 5077 + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 5078 + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED syscall.Errno = 5079 + ERROR_CLUSTER_RESNAME_NOT_FOUND syscall.Errno = 5080 + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED syscall.Errno = 5081 + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST syscall.Errno = 5082 + ERROR_CLUSTER_DATABASE_SEQMISMATCH syscall.Errno = 5083 + ERROR_RESMON_INVALID_STATE syscall.Errno = 5084 + ERROR_CLUSTER_GUM_NOT_LOCKER syscall.Errno = 5085 + ERROR_QUORUM_DISK_NOT_FOUND syscall.Errno = 5086 + ERROR_DATABASE_BACKUP_CORRUPT syscall.Errno = 5087 + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT syscall.Errno = 5088 + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE syscall.Errno = 5089 + ERROR_NO_ADMIN_ACCESS_POINT syscall.Errno = 5090 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE syscall.Errno = 5890 + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND syscall.Errno = 5891 + ERROR_CLUSTER_MEMBERSHIP_HALT syscall.Errno = 5892 + ERROR_CLUSTER_INSTANCE_ID_MISMATCH syscall.Errno = 5893 + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP syscall.Errno = 5894 + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH syscall.Errno = 5895 + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP syscall.Errno = 5896 + ERROR_CLUSTER_PARAMETER_MISMATCH syscall.Errno = 5897 + ERROR_NODE_CANNOT_BE_CLUSTERED syscall.Errno = 5898 + ERROR_CLUSTER_WRONG_OS_VERSION syscall.Errno = 5899 + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME syscall.Errno = 5900 + ERROR_CLUSCFG_ALREADY_COMMITTED syscall.Errno = 5901 + ERROR_CLUSCFG_ROLLBACK_FAILED syscall.Errno = 5902 + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT syscall.Errno = 5903 + ERROR_CLUSTER_OLD_VERSION syscall.Errno = 5904 + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME syscall.Errno = 5905 + ERROR_CLUSTER_NO_NET_ADAPTERS syscall.Errno = 5906 + ERROR_CLUSTER_POISONED syscall.Errno = 5907 + ERROR_CLUSTER_GROUP_MOVING syscall.Errno = 5908 + ERROR_CLUSTER_RESOURCE_TYPE_BUSY syscall.Errno = 5909 + ERROR_RESOURCE_CALL_TIMED_OUT syscall.Errno = 5910 + ERROR_INVALID_CLUSTER_IPV6_ADDRESS syscall.Errno = 5911 + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION syscall.Errno = 5912 + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS syscall.Errno = 5913 + ERROR_CLUSTER_PARTIAL_SEND syscall.Errno = 5914 + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION syscall.Errno = 5915 + ERROR_CLUSTER_INVALID_STRING_TERMINATION syscall.Errno = 5916 + ERROR_CLUSTER_INVALID_STRING_FORMAT syscall.Errno = 5917 + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS syscall.Errno = 5918 + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS syscall.Errno = 5919 + ERROR_CLUSTER_NULL_DATA syscall.Errno = 5920 + ERROR_CLUSTER_PARTIAL_READ syscall.Errno = 5921 + ERROR_CLUSTER_PARTIAL_WRITE syscall.Errno = 5922 + ERROR_CLUSTER_CANT_DESERIALIZE_DATA syscall.Errno = 5923 + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT syscall.Errno = 5924 + ERROR_CLUSTER_NO_QUORUM syscall.Errno = 5925 + ERROR_CLUSTER_INVALID_IPV6_NETWORK syscall.Errno = 5926 + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK syscall.Errno = 5927 + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP syscall.Errno = 5928 + ERROR_DEPENDENCY_TREE_TOO_COMPLEX syscall.Errno = 5929 + ERROR_EXCEPTION_IN_RESOURCE_CALL syscall.Errno = 5930 + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION syscall.Errno = 5931 + ERROR_CLUSTER_NOT_INSTALLED syscall.Errno = 5932 + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE syscall.Errno = 5933 + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER syscall.Errno = 5934 + ERROR_CLUSTER_TOO_MANY_NODES syscall.Errno = 5935 + ERROR_CLUSTER_OBJECT_ALREADY_USED syscall.Errno = 5936 + ERROR_NONCORE_GROUPS_FOUND syscall.Errno = 5937 + ERROR_FILE_SHARE_RESOURCE_CONFLICT syscall.Errno = 5938 + ERROR_CLUSTER_EVICT_INVALID_REQUEST syscall.Errno = 5939 + ERROR_CLUSTER_SINGLETON_RESOURCE syscall.Errno = 5940 + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE syscall.Errno = 5941 + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED syscall.Errno = 5942 + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR syscall.Errno = 5943 + ERROR_CLUSTER_GROUP_BUSY syscall.Errno = 5944 + ERROR_CLUSTER_NOT_SHARED_VOLUME syscall.Errno = 5945 + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR syscall.Errno = 5946 + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE syscall.Errno = 5947 + ERROR_CLUSTER_USE_SHARED_VOLUMES_API syscall.Errno = 5948 + ERROR_CLUSTER_BACKUP_IN_PROGRESS syscall.Errno = 5949 + ERROR_NON_CSV_PATH syscall.Errno = 5950 + ERROR_CSV_VOLUME_NOT_LOCAL syscall.Errno = 5951 + ERROR_CLUSTER_WATCHDOG_TERMINATING syscall.Errno = 5952 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES syscall.Errno = 5953 + ERROR_CLUSTER_INVALID_NODE_WEIGHT syscall.Errno = 5954 + ERROR_CLUSTER_RESOURCE_VETOED_CALL syscall.Errno = 5955 + ERROR_RESMON_SYSTEM_RESOURCES_LACKING syscall.Errno = 5956 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION syscall.Errno = 5957 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE syscall.Errno = 5958 + ERROR_CLUSTER_GROUP_QUEUED syscall.Errno = 5959 + ERROR_CLUSTER_RESOURCE_LOCKED_STATUS syscall.Errno = 5960 + ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED syscall.Errno = 5961 + ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS syscall.Errno = 5962 + ERROR_CLUSTER_DISK_NOT_CONNECTED syscall.Errno = 5963 + ERROR_DISK_NOT_CSV_CAPABLE syscall.Errno = 5964 + ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE syscall.Errno = 5965 + ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED syscall.Errno = 5966 + ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED syscall.Errno = 5967 + ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES syscall.Errno = 5968 + ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES syscall.Errno = 5969 + ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE syscall.Errno = 5970 + ERROR_CLUSTER_AFFINITY_CONFLICT syscall.Errno = 5971 + ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE syscall.Errno = 5972 + ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS syscall.Errno = 5973 + ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED syscall.Errno = 5974 + ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED syscall.Errno = 5975 + ERROR_CLUSTER_UPGRADE_IN_PROGRESS syscall.Errno = 5976 + ERROR_CLUSTER_UPGRADE_INCOMPLETE syscall.Errno = 5977 + ERROR_CLUSTER_NODE_IN_GRACE_PERIOD syscall.Errno = 5978 + ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT syscall.Errno = 5979 + ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER syscall.Errno = 5980 + ERROR_CLUSTER_RESOURCE_NOT_MONITORED syscall.Errno = 5981 + ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED syscall.Errno = 5982 + ERROR_CLUSTER_RESOURCE_IS_REPLICATED syscall.Errno = 5983 + ERROR_CLUSTER_NODE_ISOLATED syscall.Errno = 5984 + ERROR_CLUSTER_NODE_QUARANTINED syscall.Errno = 5985 + ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED syscall.Errno = 5986 + ERROR_CLUSTER_SPACE_DEGRADED syscall.Errno = 5987 + ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED syscall.Errno = 5988 + ERROR_CLUSTER_CSV_INVALID_HANDLE syscall.Errno = 5989 + ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR syscall.Errno = 5990 + ERROR_GROUPSET_NOT_AVAILABLE syscall.Errno = 5991 + ERROR_GROUPSET_NOT_FOUND syscall.Errno = 5992 + ERROR_GROUPSET_CANT_PROVIDE syscall.Errno = 5993 + ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND syscall.Errno = 5994 + ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY syscall.Errno = 5995 + ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION syscall.Errno = 5996 + ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS syscall.Errno = 5997 + ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME syscall.Errno = 5998 + ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE syscall.Errno = 5999 + ERROR_ENCRYPTION_FAILED syscall.Errno = 6000 + ERROR_DECRYPTION_FAILED syscall.Errno = 6001 + ERROR_FILE_ENCRYPTED syscall.Errno = 6002 + ERROR_NO_RECOVERY_POLICY syscall.Errno = 6003 + ERROR_NO_EFS syscall.Errno = 6004 + ERROR_WRONG_EFS syscall.Errno = 6005 + ERROR_NO_USER_KEYS syscall.Errno = 6006 + ERROR_FILE_NOT_ENCRYPTED syscall.Errno = 6007 + ERROR_NOT_EXPORT_FORMAT syscall.Errno = 6008 + ERROR_FILE_READ_ONLY syscall.Errno = 6009 + ERROR_DIR_EFS_DISALLOWED syscall.Errno = 6010 + ERROR_EFS_SERVER_NOT_TRUSTED syscall.Errno = 6011 + ERROR_BAD_RECOVERY_POLICY syscall.Errno = 6012 + ERROR_EFS_ALG_BLOB_TOO_BIG syscall.Errno = 6013 + ERROR_VOLUME_NOT_SUPPORT_EFS syscall.Errno = 6014 + ERROR_EFS_DISABLED syscall.Errno = 6015 + ERROR_EFS_VERSION_NOT_SUPPORT syscall.Errno = 6016 + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE syscall.Errno = 6017 + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER syscall.Errno = 6018 + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE syscall.Errno = 6019 + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020 + ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021 + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022 + ERROR_WIP_ENCRYPTION_FAILED syscall.Errno = 6023 + ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118 + SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200 + ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600 + ERROR_LOG_SECTOR_PARITY_INVALID syscall.Errno = 6601 + ERROR_LOG_SECTOR_REMAPPED syscall.Errno = 6602 + ERROR_LOG_BLOCK_INCOMPLETE syscall.Errno = 6603 + ERROR_LOG_INVALID_RANGE syscall.Errno = 6604 + ERROR_LOG_BLOCKS_EXHAUSTED syscall.Errno = 6605 + ERROR_LOG_READ_CONTEXT_INVALID syscall.Errno = 6606 + ERROR_LOG_RESTART_INVALID syscall.Errno = 6607 + ERROR_LOG_BLOCK_VERSION syscall.Errno = 6608 + ERROR_LOG_BLOCK_INVALID syscall.Errno = 6609 + ERROR_LOG_READ_MODE_INVALID syscall.Errno = 6610 + ERROR_LOG_NO_RESTART syscall.Errno = 6611 + ERROR_LOG_METADATA_CORRUPT syscall.Errno = 6612 + ERROR_LOG_METADATA_INVALID syscall.Errno = 6613 + ERROR_LOG_METADATA_INCONSISTENT syscall.Errno = 6614 + ERROR_LOG_RESERVATION_INVALID syscall.Errno = 6615 + ERROR_LOG_CANT_DELETE syscall.Errno = 6616 + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED syscall.Errno = 6617 + ERROR_LOG_START_OF_LOG syscall.Errno = 6618 + ERROR_LOG_POLICY_ALREADY_INSTALLED syscall.Errno = 6619 + ERROR_LOG_POLICY_NOT_INSTALLED syscall.Errno = 6620 + ERROR_LOG_POLICY_INVALID syscall.Errno = 6621 + ERROR_LOG_POLICY_CONFLICT syscall.Errno = 6622 + ERROR_LOG_PINNED_ARCHIVE_TAIL syscall.Errno = 6623 + ERROR_LOG_RECORD_NONEXISTENT syscall.Errno = 6624 + ERROR_LOG_RECORDS_RESERVED_INVALID syscall.Errno = 6625 + ERROR_LOG_SPACE_RESERVED_INVALID syscall.Errno = 6626 + ERROR_LOG_TAIL_INVALID syscall.Errno = 6627 + ERROR_LOG_FULL syscall.Errno = 6628 + ERROR_COULD_NOT_RESIZE_LOG syscall.Errno = 6629 + ERROR_LOG_MULTIPLEXED syscall.Errno = 6630 + ERROR_LOG_DEDICATED syscall.Errno = 6631 + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS syscall.Errno = 6632 + ERROR_LOG_ARCHIVE_IN_PROGRESS syscall.Errno = 6633 + ERROR_LOG_EPHEMERAL syscall.Errno = 6634 + ERROR_LOG_NOT_ENOUGH_CONTAINERS syscall.Errno = 6635 + ERROR_LOG_CLIENT_ALREADY_REGISTERED syscall.Errno = 6636 + ERROR_LOG_CLIENT_NOT_REGISTERED syscall.Errno = 6637 + ERROR_LOG_FULL_HANDLER_IN_PROGRESS syscall.Errno = 6638 + ERROR_LOG_CONTAINER_READ_FAILED syscall.Errno = 6639 + ERROR_LOG_CONTAINER_WRITE_FAILED syscall.Errno = 6640 + ERROR_LOG_CONTAINER_OPEN_FAILED syscall.Errno = 6641 + ERROR_LOG_CONTAINER_STATE_INVALID syscall.Errno = 6642 + ERROR_LOG_STATE_INVALID syscall.Errno = 6643 + ERROR_LOG_PINNED syscall.Errno = 6644 + ERROR_LOG_METADATA_FLUSH_FAILED syscall.Errno = 6645 + ERROR_LOG_INCONSISTENT_SECURITY syscall.Errno = 6646 + ERROR_LOG_APPENDED_FLUSH_FAILED syscall.Errno = 6647 + ERROR_LOG_PINNED_RESERVATION syscall.Errno = 6648 + ERROR_INVALID_TRANSACTION syscall.Errno = 6700 + ERROR_TRANSACTION_NOT_ACTIVE syscall.Errno = 6701 + ERROR_TRANSACTION_REQUEST_NOT_VALID syscall.Errno = 6702 + ERROR_TRANSACTION_NOT_REQUESTED syscall.Errno = 6703 + ERROR_TRANSACTION_ALREADY_ABORTED syscall.Errno = 6704 + ERROR_TRANSACTION_ALREADY_COMMITTED syscall.Errno = 6705 + ERROR_TM_INITIALIZATION_FAILED syscall.Errno = 6706 + ERROR_RESOURCEMANAGER_READ_ONLY syscall.Errno = 6707 + ERROR_TRANSACTION_NOT_JOINED syscall.Errno = 6708 + ERROR_TRANSACTION_SUPERIOR_EXISTS syscall.Errno = 6709 + ERROR_CRM_PROTOCOL_ALREADY_EXISTS syscall.Errno = 6710 + ERROR_TRANSACTION_PROPAGATION_FAILED syscall.Errno = 6711 + ERROR_CRM_PROTOCOL_NOT_FOUND syscall.Errno = 6712 + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER syscall.Errno = 6713 + ERROR_CURRENT_TRANSACTION_NOT_VALID syscall.Errno = 6714 + ERROR_TRANSACTION_NOT_FOUND syscall.Errno = 6715 + ERROR_RESOURCEMANAGER_NOT_FOUND syscall.Errno = 6716 + ERROR_ENLISTMENT_NOT_FOUND syscall.Errno = 6717 + ERROR_TRANSACTIONMANAGER_NOT_FOUND syscall.Errno = 6718 + ERROR_TRANSACTIONMANAGER_NOT_ONLINE syscall.Errno = 6719 + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION syscall.Errno = 6720 + ERROR_TRANSACTION_NOT_ROOT syscall.Errno = 6721 + ERROR_TRANSACTION_OBJECT_EXPIRED syscall.Errno = 6722 + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED syscall.Errno = 6723 + ERROR_TRANSACTION_RECORD_TOO_LONG syscall.Errno = 6724 + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED syscall.Errno = 6725 + ERROR_TRANSACTION_INTEGRITY_VIOLATED syscall.Errno = 6726 + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH syscall.Errno = 6727 + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT syscall.Errno = 6728 + ERROR_TRANSACTION_MUST_WRITETHROUGH syscall.Errno = 6729 + ERROR_TRANSACTION_NO_SUPERIOR syscall.Errno = 6730 + ERROR_HEURISTIC_DAMAGE_POSSIBLE syscall.Errno = 6731 + ERROR_TRANSACTIONAL_CONFLICT syscall.Errno = 6800 + ERROR_RM_NOT_ACTIVE syscall.Errno = 6801 + ERROR_RM_METADATA_CORRUPT syscall.Errno = 6802 + ERROR_DIRECTORY_NOT_RM syscall.Errno = 6803 + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE syscall.Errno = 6805 + ERROR_LOG_RESIZE_INVALID_SIZE syscall.Errno = 6806 + ERROR_OBJECT_NO_LONGER_EXISTS syscall.Errno = 6807 + ERROR_STREAM_MINIVERSION_NOT_FOUND syscall.Errno = 6808 + ERROR_STREAM_MINIVERSION_NOT_VALID syscall.Errno = 6809 + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION syscall.Errno = 6810 + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT syscall.Errno = 6811 + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS syscall.Errno = 6812 + ERROR_REMOTE_FILE_VERSION_MISMATCH syscall.Errno = 6814 + ERROR_HANDLE_NO_LONGER_VALID syscall.Errno = 6815 + ERROR_NO_TXF_METADATA syscall.Errno = 6816 + ERROR_LOG_CORRUPTION_DETECTED syscall.Errno = 6817 + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN syscall.Errno = 6818 + ERROR_RM_DISCONNECTED syscall.Errno = 6819 + ERROR_ENLISTMENT_NOT_SUPERIOR syscall.Errno = 6820 + ERROR_RECOVERY_NOT_NEEDED syscall.Errno = 6821 + ERROR_RM_ALREADY_STARTED syscall.Errno = 6822 + ERROR_FILE_IDENTITY_NOT_PERSISTENT syscall.Errno = 6823 + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY syscall.Errno = 6824 + ERROR_CANT_CROSS_RM_BOUNDARY syscall.Errno = 6825 + ERROR_TXF_DIR_NOT_EMPTY syscall.Errno = 6826 + ERROR_INDOUBT_TRANSACTIONS_EXIST syscall.Errno = 6827 + ERROR_TM_VOLATILE syscall.Errno = 6828 + ERROR_ROLLBACK_TIMER_EXPIRED syscall.Errno = 6829 + ERROR_TXF_ATTRIBUTE_CORRUPT syscall.Errno = 6830 + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6831 + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED syscall.Errno = 6832 + ERROR_LOG_GROWTH_FAILED syscall.Errno = 6833 + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE syscall.Errno = 6834 + ERROR_TXF_METADATA_ALREADY_PRESENT syscall.Errno = 6835 + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET syscall.Errno = 6836 + ERROR_TRANSACTION_REQUIRED_PROMOTION syscall.Errno = 6837 + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION syscall.Errno = 6838 + ERROR_TRANSACTIONS_NOT_FROZEN syscall.Errno = 6839 + ERROR_TRANSACTION_FREEZE_IN_PROGRESS syscall.Errno = 6840 + ERROR_NOT_SNAPSHOT_VOLUME syscall.Errno = 6841 + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES syscall.Errno = 6842 + ERROR_DATA_LOST_REPAIR syscall.Errno = 6843 + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6844 + ERROR_TM_IDENTITY_MISMATCH syscall.Errno = 6845 + ERROR_FLOATED_SECTION syscall.Errno = 6846 + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK syscall.Errno = 6847 + ERROR_CANNOT_ABORT_TRANSACTIONS syscall.Errno = 6848 + ERROR_BAD_CLUSTERS syscall.Errno = 6849 + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6850 + ERROR_VOLUME_DIRTY syscall.Errno = 6851 + ERROR_NO_LINK_TRACKING_IN_TRANSACTION syscall.Errno = 6852 + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION syscall.Errno = 6853 + ERROR_EXPIRED_HANDLE syscall.Errno = 6854 + ERROR_TRANSACTION_NOT_ENLISTED syscall.Errno = 6855 + ERROR_CTX_WINSTATION_NAME_INVALID syscall.Errno = 7001 + ERROR_CTX_INVALID_PD syscall.Errno = 7002 + ERROR_CTX_PD_NOT_FOUND syscall.Errno = 7003 + ERROR_CTX_WD_NOT_FOUND syscall.Errno = 7004 + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY syscall.Errno = 7005 + ERROR_CTX_SERVICE_NAME_COLLISION syscall.Errno = 7006 + ERROR_CTX_CLOSE_PENDING syscall.Errno = 7007 + ERROR_CTX_NO_OUTBUF syscall.Errno = 7008 + ERROR_CTX_MODEM_INF_NOT_FOUND syscall.Errno = 7009 + ERROR_CTX_INVALID_MODEMNAME syscall.Errno = 7010 + ERROR_CTX_MODEM_RESPONSE_ERROR syscall.Errno = 7011 + ERROR_CTX_MODEM_RESPONSE_TIMEOUT syscall.Errno = 7012 + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER syscall.Errno = 7013 + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE syscall.Errno = 7014 + ERROR_CTX_MODEM_RESPONSE_BUSY syscall.Errno = 7015 + ERROR_CTX_MODEM_RESPONSE_VOICE syscall.Errno = 7016 + ERROR_CTX_TD_ERROR syscall.Errno = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND syscall.Errno = 7022 + ERROR_CTX_WINSTATION_ALREADY_EXISTS syscall.Errno = 7023 + ERROR_CTX_WINSTATION_BUSY syscall.Errno = 7024 + ERROR_CTX_BAD_VIDEO_MODE syscall.Errno = 7025 + ERROR_CTX_GRAPHICS_INVALID syscall.Errno = 7035 + ERROR_CTX_LOGON_DISABLED syscall.Errno = 7037 + ERROR_CTX_NOT_CONSOLE syscall.Errno = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT syscall.Errno = 7040 + ERROR_CTX_CONSOLE_DISCONNECT syscall.Errno = 7041 + ERROR_CTX_CONSOLE_CONNECT syscall.Errno = 7042 + ERROR_CTX_SHADOW_DENIED syscall.Errno = 7044 + ERROR_CTX_WINSTATION_ACCESS_DENIED syscall.Errno = 7045 + ERROR_CTX_INVALID_WD syscall.Errno = 7049 + ERROR_CTX_SHADOW_INVALID syscall.Errno = 7050 + ERROR_CTX_SHADOW_DISABLED syscall.Errno = 7051 + ERROR_CTX_CLIENT_LICENSE_IN_USE syscall.Errno = 7052 + ERROR_CTX_CLIENT_LICENSE_NOT_SET syscall.Errno = 7053 + ERROR_CTX_LICENSE_NOT_AVAILABLE syscall.Errno = 7054 + ERROR_CTX_LICENSE_CLIENT_INVALID syscall.Errno = 7055 + ERROR_CTX_LICENSE_EXPIRED syscall.Errno = 7056 + ERROR_CTX_SHADOW_NOT_RUNNING syscall.Errno = 7057 + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE syscall.Errno = 7058 + ERROR_ACTIVATION_COUNT_EXCEEDED syscall.Errno = 7059 + ERROR_CTX_WINSTATIONS_DISABLED syscall.Errno = 7060 + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED syscall.Errno = 7061 + ERROR_CTX_SESSION_IN_USE syscall.Errno = 7062 + ERROR_CTX_NO_FORCE_LOGOFF syscall.Errno = 7063 + ERROR_CTX_ACCOUNT_RESTRICTION syscall.Errno = 7064 + ERROR_RDP_PROTOCOL_ERROR syscall.Errno = 7065 + ERROR_CTX_CDM_CONNECT syscall.Errno = 7066 + ERROR_CTX_CDM_DISCONNECT syscall.Errno = 7067 + ERROR_CTX_SECURITY_LAYER_ERROR syscall.Errno = 7068 + ERROR_TS_INCOMPATIBLE_SESSIONS syscall.Errno = 7069 + ERROR_TS_VIDEO_SUBSYSTEM_ERROR syscall.Errno = 7070 + FRS_ERR_INVALID_API_SEQUENCE syscall.Errno = 8001 + FRS_ERR_STARTING_SERVICE syscall.Errno = 8002 + FRS_ERR_STOPPING_SERVICE syscall.Errno = 8003 + FRS_ERR_INTERNAL_API syscall.Errno = 8004 + FRS_ERR_INTERNAL syscall.Errno = 8005 + FRS_ERR_SERVICE_COMM syscall.Errno = 8006 + FRS_ERR_INSUFFICIENT_PRIV syscall.Errno = 8007 + FRS_ERR_AUTHENTICATION syscall.Errno = 8008 + FRS_ERR_PARENT_INSUFFICIENT_PRIV syscall.Errno = 8009 + FRS_ERR_PARENT_AUTHENTICATION syscall.Errno = 8010 + FRS_ERR_CHILD_TO_PARENT_COMM syscall.Errno = 8011 + FRS_ERR_PARENT_TO_CHILD_COMM syscall.Errno = 8012 + FRS_ERR_SYSVOL_POPULATE syscall.Errno = 8013 + FRS_ERR_SYSVOL_POPULATE_TIMEOUT syscall.Errno = 8014 + FRS_ERR_SYSVOL_IS_BUSY syscall.Errno = 8015 + FRS_ERR_SYSVOL_DEMOTE syscall.Errno = 8016 + FRS_ERR_INVALID_SERVICE_PARAMETER syscall.Errno = 8017 + DS_S_SUCCESS = ERROR_SUCCESS + ERROR_DS_NOT_INSTALLED syscall.Errno = 8200 + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY syscall.Errno = 8201 + ERROR_DS_NO_ATTRIBUTE_OR_VALUE syscall.Errno = 8202 + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX syscall.Errno = 8203 + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED syscall.Errno = 8204 + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS syscall.Errno = 8205 + ERROR_DS_BUSY syscall.Errno = 8206 + ERROR_DS_UNAVAILABLE syscall.Errno = 8207 + ERROR_DS_NO_RIDS_ALLOCATED syscall.Errno = 8208 + ERROR_DS_NO_MORE_RIDS syscall.Errno = 8209 + ERROR_DS_INCORRECT_ROLE_OWNER syscall.Errno = 8210 + ERROR_DS_RIDMGR_INIT_ERROR syscall.Errno = 8211 + ERROR_DS_OBJ_CLASS_VIOLATION syscall.Errno = 8212 + ERROR_DS_CANT_ON_NON_LEAF syscall.Errno = 8213 + ERROR_DS_CANT_ON_RDN syscall.Errno = 8214 + ERROR_DS_CANT_MOD_OBJ_CLASS syscall.Errno = 8215 + ERROR_DS_CROSS_DOM_MOVE_ERROR syscall.Errno = 8216 + ERROR_DS_GC_NOT_AVAILABLE syscall.Errno = 8217 + ERROR_SHARED_POLICY syscall.Errno = 8218 + ERROR_POLICY_OBJECT_NOT_FOUND syscall.Errno = 8219 + ERROR_POLICY_ONLY_IN_DS syscall.Errno = 8220 + ERROR_PROMOTION_ACTIVE syscall.Errno = 8221 + ERROR_NO_PROMOTION_ACTIVE syscall.Errno = 8222 + ERROR_DS_OPERATIONS_ERROR syscall.Errno = 8224 + ERROR_DS_PROTOCOL_ERROR syscall.Errno = 8225 + ERROR_DS_TIMELIMIT_EXCEEDED syscall.Errno = 8226 + ERROR_DS_SIZELIMIT_EXCEEDED syscall.Errno = 8227 + ERROR_DS_ADMIN_LIMIT_EXCEEDED syscall.Errno = 8228 + ERROR_DS_COMPARE_FALSE syscall.Errno = 8229 + ERROR_DS_COMPARE_TRUE syscall.Errno = 8230 + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED syscall.Errno = 8231 + ERROR_DS_STRONG_AUTH_REQUIRED syscall.Errno = 8232 + ERROR_DS_INAPPROPRIATE_AUTH syscall.Errno = 8233 + ERROR_DS_AUTH_UNKNOWN syscall.Errno = 8234 + ERROR_DS_REFERRAL syscall.Errno = 8235 + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION syscall.Errno = 8236 + ERROR_DS_CONFIDENTIALITY_REQUIRED syscall.Errno = 8237 + ERROR_DS_INAPPROPRIATE_MATCHING syscall.Errno = 8238 + ERROR_DS_CONSTRAINT_VIOLATION syscall.Errno = 8239 + ERROR_DS_NO_SUCH_OBJECT syscall.Errno = 8240 + ERROR_DS_ALIAS_PROBLEM syscall.Errno = 8241 + ERROR_DS_INVALID_DN_SYNTAX syscall.Errno = 8242 + ERROR_DS_IS_LEAF syscall.Errno = 8243 + ERROR_DS_ALIAS_DEREF_PROBLEM syscall.Errno = 8244 + ERROR_DS_UNWILLING_TO_PERFORM syscall.Errno = 8245 + ERROR_DS_LOOP_DETECT syscall.Errno = 8246 + ERROR_DS_NAMING_VIOLATION syscall.Errno = 8247 + ERROR_DS_OBJECT_RESULTS_TOO_LARGE syscall.Errno = 8248 + ERROR_DS_AFFECTS_MULTIPLE_DSAS syscall.Errno = 8249 + ERROR_DS_SERVER_DOWN syscall.Errno = 8250 + ERROR_DS_LOCAL_ERROR syscall.Errno = 8251 + ERROR_DS_ENCODING_ERROR syscall.Errno = 8252 + ERROR_DS_DECODING_ERROR syscall.Errno = 8253 + ERROR_DS_FILTER_UNKNOWN syscall.Errno = 8254 + ERROR_DS_PARAM_ERROR syscall.Errno = 8255 + ERROR_DS_NOT_SUPPORTED syscall.Errno = 8256 + ERROR_DS_NO_RESULTS_RETURNED syscall.Errno = 8257 + ERROR_DS_CONTROL_NOT_FOUND syscall.Errno = 8258 + ERROR_DS_CLIENT_LOOP syscall.Errno = 8259 + ERROR_DS_REFERRAL_LIMIT_EXCEEDED syscall.Errno = 8260 + ERROR_DS_SORT_CONTROL_MISSING syscall.Errno = 8261 + ERROR_DS_OFFSET_RANGE_ERROR syscall.Errno = 8262 + ERROR_DS_RIDMGR_DISABLED syscall.Errno = 8263 + ERROR_DS_ROOT_MUST_BE_NC syscall.Errno = 8301 + ERROR_DS_ADD_REPLICA_INHIBITED syscall.Errno = 8302 + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA syscall.Errno = 8303 + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED syscall.Errno = 8304 + ERROR_DS_OBJ_STRING_NAME_EXISTS syscall.Errno = 8305 + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA syscall.Errno = 8306 + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA syscall.Errno = 8307 + ERROR_DS_NO_REQUESTED_ATTS_FOUND syscall.Errno = 8308 + ERROR_DS_USER_BUFFER_TO_SMALL syscall.Errno = 8309 + ERROR_DS_ATT_IS_NOT_ON_OBJ syscall.Errno = 8310 + ERROR_DS_ILLEGAL_MOD_OPERATION syscall.Errno = 8311 + ERROR_DS_OBJ_TOO_LARGE syscall.Errno = 8312 + ERROR_DS_BAD_INSTANCE_TYPE syscall.Errno = 8313 + ERROR_DS_MASTERDSA_REQUIRED syscall.Errno = 8314 + ERROR_DS_OBJECT_CLASS_REQUIRED syscall.Errno = 8315 + ERROR_DS_MISSING_REQUIRED_ATT syscall.Errno = 8316 + ERROR_DS_ATT_NOT_DEF_FOR_CLASS syscall.Errno = 8317 + ERROR_DS_ATT_ALREADY_EXISTS syscall.Errno = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES syscall.Errno = 8320 + ERROR_DS_SINGLE_VALUE_CONSTRAINT syscall.Errno = 8321 + ERROR_DS_RANGE_CONSTRAINT syscall.Errno = 8322 + ERROR_DS_ATT_VAL_ALREADY_EXISTS syscall.Errno = 8323 + ERROR_DS_CANT_REM_MISSING_ATT syscall.Errno = 8324 + ERROR_DS_CANT_REM_MISSING_ATT_VAL syscall.Errno = 8325 + ERROR_DS_ROOT_CANT_BE_SUBREF syscall.Errno = 8326 + ERROR_DS_NO_CHAINING syscall.Errno = 8327 + ERROR_DS_NO_CHAINED_EVAL syscall.Errno = 8328 + ERROR_DS_NO_PARENT_OBJECT syscall.Errno = 8329 + ERROR_DS_PARENT_IS_AN_ALIAS syscall.Errno = 8330 + ERROR_DS_CANT_MIX_MASTER_AND_REPS syscall.Errno = 8331 + ERROR_DS_CHILDREN_EXIST syscall.Errno = 8332 + ERROR_DS_OBJ_NOT_FOUND syscall.Errno = 8333 + ERROR_DS_ALIASED_OBJ_MISSING syscall.Errno = 8334 + ERROR_DS_BAD_NAME_SYNTAX syscall.Errno = 8335 + ERROR_DS_ALIAS_POINTS_TO_ALIAS syscall.Errno = 8336 + ERROR_DS_CANT_DEREF_ALIAS syscall.Errno = 8337 + ERROR_DS_OUT_OF_SCOPE syscall.Errno = 8338 + ERROR_DS_OBJECT_BEING_REMOVED syscall.Errno = 8339 + ERROR_DS_CANT_DELETE_DSA_OBJ syscall.Errno = 8340 + ERROR_DS_GENERIC_ERROR syscall.Errno = 8341 + ERROR_DS_DSA_MUST_BE_INT_MASTER syscall.Errno = 8342 + ERROR_DS_CLASS_NOT_DSA syscall.Errno = 8343 + ERROR_DS_INSUFF_ACCESS_RIGHTS syscall.Errno = 8344 + ERROR_DS_ILLEGAL_SUPERIOR syscall.Errno = 8345 + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM syscall.Errno = 8346 + ERROR_DS_NAME_TOO_MANY_PARTS syscall.Errno = 8347 + ERROR_DS_NAME_TOO_LONG syscall.Errno = 8348 + ERROR_DS_NAME_VALUE_TOO_LONG syscall.Errno = 8349 + ERROR_DS_NAME_UNPARSEABLE syscall.Errno = 8350 + ERROR_DS_NAME_TYPE_UNKNOWN syscall.Errno = 8351 + ERROR_DS_NOT_AN_OBJECT syscall.Errno = 8352 + ERROR_DS_SEC_DESC_TOO_SHORT syscall.Errno = 8353 + ERROR_DS_SEC_DESC_INVALID syscall.Errno = 8354 + ERROR_DS_NO_DELETED_NAME syscall.Errno = 8355 + ERROR_DS_SUBREF_MUST_HAVE_PARENT syscall.Errno = 8356 + ERROR_DS_NCNAME_MUST_BE_NC syscall.Errno = 8357 + ERROR_DS_CANT_ADD_SYSTEM_ONLY syscall.Errno = 8358 + ERROR_DS_CLASS_MUST_BE_CONCRETE syscall.Errno = 8359 + ERROR_DS_INVALID_DMD syscall.Errno = 8360 + ERROR_DS_OBJ_GUID_EXISTS syscall.Errno = 8361 + ERROR_DS_NOT_ON_BACKLINK syscall.Errno = 8362 + ERROR_DS_NO_CROSSREF_FOR_NC syscall.Errno = 8363 + ERROR_DS_SHUTTING_DOWN syscall.Errno = 8364 + ERROR_DS_UNKNOWN_OPERATION syscall.Errno = 8365 + ERROR_DS_INVALID_ROLE_OWNER syscall.Errno = 8366 + ERROR_DS_COULDNT_CONTACT_FSMO syscall.Errno = 8367 + ERROR_DS_CROSS_NC_DN_RENAME syscall.Errno = 8368 + ERROR_DS_CANT_MOD_SYSTEM_ONLY syscall.Errno = 8369 + ERROR_DS_REPLICATOR_ONLY syscall.Errno = 8370 + ERROR_DS_OBJ_CLASS_NOT_DEFINED syscall.Errno = 8371 + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS syscall.Errno = 8372 + ERROR_DS_NAME_REFERENCE_INVALID syscall.Errno = 8373 + ERROR_DS_CROSS_REF_EXISTS syscall.Errno = 8374 + ERROR_DS_CANT_DEL_MASTER_CROSSREF syscall.Errno = 8375 + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD syscall.Errno = 8376 + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX syscall.Errno = 8377 + ERROR_DS_DUP_RDN syscall.Errno = 8378 + ERROR_DS_DUP_OID syscall.Errno = 8379 + ERROR_DS_DUP_MAPI_ID syscall.Errno = 8380 + ERROR_DS_DUP_SCHEMA_ID_GUID syscall.Errno = 8381 + ERROR_DS_DUP_LDAP_DISPLAY_NAME syscall.Errno = 8382 + ERROR_DS_SEMANTIC_ATT_TEST syscall.Errno = 8383 + ERROR_DS_SYNTAX_MISMATCH syscall.Errno = 8384 + ERROR_DS_EXISTS_IN_MUST_HAVE syscall.Errno = 8385 + ERROR_DS_EXISTS_IN_MAY_HAVE syscall.Errno = 8386 + ERROR_DS_NONEXISTENT_MAY_HAVE syscall.Errno = 8387 + ERROR_DS_NONEXISTENT_MUST_HAVE syscall.Errno = 8388 + ERROR_DS_AUX_CLS_TEST_FAIL syscall.Errno = 8389 + ERROR_DS_NONEXISTENT_POSS_SUP syscall.Errno = 8390 + ERROR_DS_SUB_CLS_TEST_FAIL syscall.Errno = 8391 + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX syscall.Errno = 8392 + ERROR_DS_EXISTS_IN_AUX_CLS syscall.Errno = 8393 + ERROR_DS_EXISTS_IN_SUB_CLS syscall.Errno = 8394 + ERROR_DS_EXISTS_IN_POSS_SUP syscall.Errno = 8395 + ERROR_DS_RECALCSCHEMA_FAILED syscall.Errno = 8396 + ERROR_DS_TREE_DELETE_NOT_FINISHED syscall.Errno = 8397 + ERROR_DS_CANT_DELETE syscall.Errno = 8398 + ERROR_DS_ATT_SCHEMA_REQ_ID syscall.Errno = 8399 + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX syscall.Errno = 8400 + ERROR_DS_CANT_CACHE_ATT syscall.Errno = 8401 + ERROR_DS_CANT_CACHE_CLASS syscall.Errno = 8402 + ERROR_DS_CANT_REMOVE_ATT_CACHE syscall.Errno = 8403 + ERROR_DS_CANT_REMOVE_CLASS_CACHE syscall.Errno = 8404 + ERROR_DS_CANT_RETRIEVE_DN syscall.Errno = 8405 + ERROR_DS_MISSING_SUPREF syscall.Errno = 8406 + ERROR_DS_CANT_RETRIEVE_INSTANCE syscall.Errno = 8407 + ERROR_DS_CODE_INCONSISTENCY syscall.Errno = 8408 + ERROR_DS_DATABASE_ERROR syscall.Errno = 8409 + ERROR_DS_GOVERNSID_MISSING syscall.Errno = 8410 + ERROR_DS_MISSING_EXPECTED_ATT syscall.Errno = 8411 + ERROR_DS_NCNAME_MISSING_CR_REF syscall.Errno = 8412 + ERROR_DS_SECURITY_CHECKING_ERROR syscall.Errno = 8413 + ERROR_DS_SCHEMA_NOT_LOADED syscall.Errno = 8414 + ERROR_DS_SCHEMA_ALLOC_FAILED syscall.Errno = 8415 + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX syscall.Errno = 8416 + ERROR_DS_GCVERIFY_ERROR syscall.Errno = 8417 + ERROR_DS_DRA_SCHEMA_MISMATCH syscall.Errno = 8418 + ERROR_DS_CANT_FIND_DSA_OBJ syscall.Errno = 8419 + ERROR_DS_CANT_FIND_EXPECTED_NC syscall.Errno = 8420 + ERROR_DS_CANT_FIND_NC_IN_CACHE syscall.Errno = 8421 + ERROR_DS_CANT_RETRIEVE_CHILD syscall.Errno = 8422 + ERROR_DS_SECURITY_ILLEGAL_MODIFY syscall.Errno = 8423 + ERROR_DS_CANT_REPLACE_HIDDEN_REC syscall.Errno = 8424 + ERROR_DS_BAD_HIERARCHY_FILE syscall.Errno = 8425 + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED syscall.Errno = 8426 + ERROR_DS_CONFIG_PARAM_MISSING syscall.Errno = 8427 + ERROR_DS_COUNTING_AB_INDICES_FAILED syscall.Errno = 8428 + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED syscall.Errno = 8429 + ERROR_DS_INTERNAL_FAILURE syscall.Errno = 8430 + ERROR_DS_UNKNOWN_ERROR syscall.Errno = 8431 + ERROR_DS_ROOT_REQUIRES_CLASS_TOP syscall.Errno = 8432 + ERROR_DS_REFUSING_FSMO_ROLES syscall.Errno = 8433 + ERROR_DS_MISSING_FSMO_SETTINGS syscall.Errno = 8434 + ERROR_DS_UNABLE_TO_SURRENDER_ROLES syscall.Errno = 8435 + ERROR_DS_DRA_GENERIC syscall.Errno = 8436 + ERROR_DS_DRA_INVALID_PARAMETER syscall.Errno = 8437 + ERROR_DS_DRA_BUSY syscall.Errno = 8438 + ERROR_DS_DRA_BAD_DN syscall.Errno = 8439 + ERROR_DS_DRA_BAD_NC syscall.Errno = 8440 + ERROR_DS_DRA_DN_EXISTS syscall.Errno = 8441 + ERROR_DS_DRA_INTERNAL_ERROR syscall.Errno = 8442 + ERROR_DS_DRA_INCONSISTENT_DIT syscall.Errno = 8443 + ERROR_DS_DRA_CONNECTION_FAILED syscall.Errno = 8444 + ERROR_DS_DRA_BAD_INSTANCE_TYPE syscall.Errno = 8445 + ERROR_DS_DRA_OUT_OF_MEM syscall.Errno = 8446 + ERROR_DS_DRA_MAIL_PROBLEM syscall.Errno = 8447 + ERROR_DS_DRA_REF_ALREADY_EXISTS syscall.Errno = 8448 + ERROR_DS_DRA_REF_NOT_FOUND syscall.Errno = 8449 + ERROR_DS_DRA_OBJ_IS_REP_SOURCE syscall.Errno = 8450 + ERROR_DS_DRA_DB_ERROR syscall.Errno = 8451 + ERROR_DS_DRA_NO_REPLICA syscall.Errno = 8452 + ERROR_DS_DRA_ACCESS_DENIED syscall.Errno = 8453 + ERROR_DS_DRA_NOT_SUPPORTED syscall.Errno = 8454 + ERROR_DS_DRA_RPC_CANCELLED syscall.Errno = 8455 + ERROR_DS_DRA_SOURCE_DISABLED syscall.Errno = 8456 + ERROR_DS_DRA_SINK_DISABLED syscall.Errno = 8457 + ERROR_DS_DRA_NAME_COLLISION syscall.Errno = 8458 + ERROR_DS_DRA_SOURCE_REINSTALLED syscall.Errno = 8459 + ERROR_DS_DRA_MISSING_PARENT syscall.Errno = 8460 + ERROR_DS_DRA_PREEMPTED syscall.Errno = 8461 + ERROR_DS_DRA_ABANDON_SYNC syscall.Errno = 8462 + ERROR_DS_DRA_SHUTDOWN syscall.Errno = 8463 + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET syscall.Errno = 8464 + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA syscall.Errno = 8465 + ERROR_DS_DRA_EXTN_CONNECTION_FAILED syscall.Errno = 8466 + ERROR_DS_INSTALL_SCHEMA_MISMATCH syscall.Errno = 8467 + ERROR_DS_DUP_LINK_ID syscall.Errno = 8468 + ERROR_DS_NAME_ERROR_RESOLVING syscall.Errno = 8469 + ERROR_DS_NAME_ERROR_NOT_FOUND syscall.Errno = 8470 + ERROR_DS_NAME_ERROR_NOT_UNIQUE syscall.Errno = 8471 + ERROR_DS_NAME_ERROR_NO_MAPPING syscall.Errno = 8472 + ERROR_DS_NAME_ERROR_DOMAIN_ONLY syscall.Errno = 8473 + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING syscall.Errno = 8474 + ERROR_DS_CONSTRUCTED_ATT_MOD syscall.Errno = 8475 + ERROR_DS_WRONG_OM_OBJ_CLASS syscall.Errno = 8476 + ERROR_DS_DRA_REPL_PENDING syscall.Errno = 8477 + ERROR_DS_DS_REQUIRED syscall.Errno = 8478 + ERROR_DS_INVALID_LDAP_DISPLAY_NAME syscall.Errno = 8479 + ERROR_DS_NON_BASE_SEARCH syscall.Errno = 8480 + ERROR_DS_CANT_RETRIEVE_ATTS syscall.Errno = 8481 + ERROR_DS_BACKLINK_WITHOUT_LINK syscall.Errno = 8482 + ERROR_DS_EPOCH_MISMATCH syscall.Errno = 8483 + ERROR_DS_SRC_NAME_MISMATCH syscall.Errno = 8484 + ERROR_DS_SRC_AND_DST_NC_IDENTICAL syscall.Errno = 8485 + ERROR_DS_DST_NC_MISMATCH syscall.Errno = 8486 + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC syscall.Errno = 8487 + ERROR_DS_SRC_GUID_MISMATCH syscall.Errno = 8488 + ERROR_DS_CANT_MOVE_DELETED_OBJECT syscall.Errno = 8489 + ERROR_DS_PDC_OPERATION_IN_PROGRESS syscall.Errno = 8490 + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD syscall.Errno = 8491 + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION syscall.Errno = 8492 + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS syscall.Errno = 8493 + ERROR_DS_NC_MUST_HAVE_NC_PARENT syscall.Errno = 8494 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE syscall.Errno = 8495 + ERROR_DS_DST_DOMAIN_NOT_NATIVE syscall.Errno = 8496 + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER syscall.Errno = 8497 + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP syscall.Errno = 8498 + ERROR_DS_CANT_MOVE_RESOURCE_GROUP syscall.Errno = 8499 + ERROR_DS_INVALID_SEARCH_FLAG syscall.Errno = 8500 + ERROR_DS_NO_TREE_DELETE_ABOVE_NC syscall.Errno = 8501 + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE syscall.Errno = 8502 + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE syscall.Errno = 8503 + ERROR_DS_SAM_INIT_FAILURE syscall.Errno = 8504 + ERROR_DS_SENSITIVE_GROUP_VIOLATION syscall.Errno = 8505 + ERROR_DS_CANT_MOD_PRIMARYGROUPID syscall.Errno = 8506 + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD syscall.Errno = 8507 + ERROR_DS_NONSAFE_SCHEMA_CHANGE syscall.Errno = 8508 + ERROR_DS_SCHEMA_UPDATE_DISALLOWED syscall.Errno = 8509 + ERROR_DS_CANT_CREATE_UNDER_SCHEMA syscall.Errno = 8510 + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION syscall.Errno = 8511 + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE syscall.Errno = 8512 + ERROR_DS_INVALID_GROUP_TYPE syscall.Errno = 8513 + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8514 + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8515 + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8516 + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8517 + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8518 + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER syscall.Errno = 8519 + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER syscall.Errno = 8520 + ERROR_DS_HAVE_PRIMARY_MEMBERS syscall.Errno = 8521 + ERROR_DS_STRING_SD_CONVERSION_FAILED syscall.Errno = 8522 + ERROR_DS_NAMING_MASTER_GC syscall.Errno = 8523 + ERROR_DS_DNS_LOOKUP_FAILURE syscall.Errno = 8524 + ERROR_DS_COULDNT_UPDATE_SPNS syscall.Errno = 8525 + ERROR_DS_CANT_RETRIEVE_SD syscall.Errno = 8526 + ERROR_DS_KEY_NOT_UNIQUE syscall.Errno = 8527 + ERROR_DS_WRONG_LINKED_ATT_SYNTAX syscall.Errno = 8528 + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD syscall.Errno = 8529 + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY syscall.Errno = 8530 + ERROR_DS_CANT_START syscall.Errno = 8531 + ERROR_DS_INIT_FAILURE syscall.Errno = 8532 + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION syscall.Errno = 8533 + ERROR_DS_SOURCE_DOMAIN_IN_FOREST syscall.Errno = 8534 + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST syscall.Errno = 8535 + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED syscall.Errno = 8536 + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN syscall.Errno = 8537 + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER syscall.Errno = 8538 + ERROR_DS_SRC_SID_EXISTS_IN_FOREST syscall.Errno = 8539 + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH syscall.Errno = 8540 + ERROR_SAM_INIT_FAILURE syscall.Errno = 8541 + ERROR_DS_DRA_SCHEMA_INFO_SHIP syscall.Errno = 8542 + ERROR_DS_DRA_SCHEMA_CONFLICT syscall.Errno = 8543 + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT syscall.Errno = 8544 + ERROR_DS_DRA_OBJ_NC_MISMATCH syscall.Errno = 8545 + ERROR_DS_NC_STILL_HAS_DSAS syscall.Errno = 8546 + ERROR_DS_GC_REQUIRED syscall.Errno = 8547 + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY syscall.Errno = 8548 + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS syscall.Errno = 8549 + ERROR_DS_CANT_ADD_TO_GC syscall.Errno = 8550 + ERROR_DS_NO_CHECKPOINT_WITH_PDC syscall.Errno = 8551 + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED syscall.Errno = 8552 + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC syscall.Errno = 8553 + ERROR_DS_INVALID_NAME_FOR_SPN syscall.Errno = 8554 + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS syscall.Errno = 8555 + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES syscall.Errno = 8556 + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED syscall.Errno = 8557 + ERROR_DS_MUST_BE_RUN_ON_DST_DC syscall.Errno = 8558 + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER syscall.Errno = 8559 + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ syscall.Errno = 8560 + ERROR_DS_INIT_FAILURE_CONSOLE syscall.Errno = 8561 + ERROR_DS_SAM_INIT_FAILURE_CONSOLE syscall.Errno = 8562 + ERROR_DS_FOREST_VERSION_TOO_HIGH syscall.Errno = 8563 + ERROR_DS_DOMAIN_VERSION_TOO_HIGH syscall.Errno = 8564 + ERROR_DS_FOREST_VERSION_TOO_LOW syscall.Errno = 8565 + ERROR_DS_DOMAIN_VERSION_TOO_LOW syscall.Errno = 8566 + ERROR_DS_INCOMPATIBLE_VERSION syscall.Errno = 8567 + ERROR_DS_LOW_DSA_VERSION syscall.Errno = 8568 + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN syscall.Errno = 8569 + ERROR_DS_NOT_SUPPORTED_SORT_ORDER syscall.Errno = 8570 + ERROR_DS_NAME_NOT_UNIQUE syscall.Errno = 8571 + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 syscall.Errno = 8572 + ERROR_DS_OUT_OF_VERSION_STORE syscall.Errno = 8573 + ERROR_DS_INCOMPATIBLE_CONTROLS_USED syscall.Errno = 8574 + ERROR_DS_NO_REF_DOMAIN syscall.Errno = 8575 + ERROR_DS_RESERVED_LINK_ID syscall.Errno = 8576 + ERROR_DS_LINK_ID_NOT_AVAILABLE syscall.Errno = 8577 + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8578 + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE syscall.Errno = 8579 + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC syscall.Errno = 8580 + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG syscall.Errno = 8581 + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT syscall.Errno = 8582 + ERROR_DS_NAME_ERROR_TRUST_REFERRAL syscall.Errno = 8583 + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER syscall.Errno = 8584 + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD syscall.Errno = 8585 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 syscall.Errno = 8586 + ERROR_DS_THREAD_LIMIT_EXCEEDED syscall.Errno = 8587 + ERROR_DS_NOT_CLOSEST syscall.Errno = 8588 + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF syscall.Errno = 8589 + ERROR_DS_SINGLE_USER_MODE_FAILED syscall.Errno = 8590 + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR syscall.Errno = 8591 + ERROR_DS_NTDSCRIPT_PROCESS_ERROR syscall.Errno = 8592 + ERROR_DS_DIFFERENT_REPL_EPOCHS syscall.Errno = 8593 + ERROR_DS_DRS_EXTENSIONS_CHANGED syscall.Errno = 8594 + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR syscall.Errno = 8595 + ERROR_DS_NO_MSDS_INTID syscall.Errno = 8596 + ERROR_DS_DUP_MSDS_INTID syscall.Errno = 8597 + ERROR_DS_EXISTS_IN_RDNATTID syscall.Errno = 8598 + ERROR_DS_AUTHORIZATION_FAILED syscall.Errno = 8599 + ERROR_DS_INVALID_SCRIPT syscall.Errno = 8600 + ERROR_DS_REMOTE_CROSSREF_OP_FAILED syscall.Errno = 8601 + ERROR_DS_CROSS_REF_BUSY syscall.Errno = 8602 + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN syscall.Errno = 8603 + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC syscall.Errno = 8604 + ERROR_DS_DUPLICATE_ID_FOUND syscall.Errno = 8605 + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT syscall.Errno = 8606 + ERROR_DS_GROUP_CONVERSION_ERROR syscall.Errno = 8607 + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP syscall.Errno = 8608 + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP syscall.Errno = 8609 + ERROR_DS_ROLE_NOT_VERIFIED syscall.Errno = 8610 + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL syscall.Errno = 8611 + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS syscall.Errno = 8612 + ERROR_DS_EXISTING_AD_CHILD_NC syscall.Errno = 8613 + ERROR_DS_REPL_LIFETIME_EXCEEDED syscall.Errno = 8614 + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER syscall.Errno = 8615 + ERROR_DS_LDAP_SEND_QUEUE_FULL syscall.Errno = 8616 + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW syscall.Errno = 8617 + ERROR_DS_POLICY_NOT_KNOWN syscall.Errno = 8618 + ERROR_NO_SITE_SETTINGS_OBJECT syscall.Errno = 8619 + ERROR_NO_SECRETS syscall.Errno = 8620 + ERROR_NO_WRITABLE_DC_FOUND syscall.Errno = 8621 + ERROR_DS_NO_SERVER_OBJECT syscall.Errno = 8622 + ERROR_DS_NO_NTDSA_OBJECT syscall.Errno = 8623 + ERROR_DS_NON_ASQ_SEARCH syscall.Errno = 8624 + ERROR_DS_AUDIT_FAILURE syscall.Errno = 8625 + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE syscall.Errno = 8626 + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE syscall.Errno = 8627 + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP syscall.Errno = 8628 + ERROR_DS_DRA_CORRUPT_UTD_VECTOR syscall.Errno = 8629 + ERROR_DS_DRA_SECRETS_DENIED syscall.Errno = 8630 + ERROR_DS_RESERVED_MAPI_ID syscall.Errno = 8631 + ERROR_DS_MAPI_ID_NOT_AVAILABLE syscall.Errno = 8632 + ERROR_DS_DRA_MISSING_KRBTGT_SECRET syscall.Errno = 8633 + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST syscall.Errno = 8634 + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST syscall.Errno = 8635 + ERROR_INVALID_USER_PRINCIPAL_NAME syscall.Errno = 8636 + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS syscall.Errno = 8637 + ERROR_DS_OID_NOT_FOUND syscall.Errno = 8638 + ERROR_DS_DRA_RECYCLED_TARGET syscall.Errno = 8639 + ERROR_DS_DISALLOWED_NC_REDIRECT syscall.Errno = 8640 + ERROR_DS_HIGH_ADLDS_FFL syscall.Errno = 8641 + ERROR_DS_HIGH_DSA_VERSION syscall.Errno = 8642 + ERROR_DS_LOW_ADLDS_FFL syscall.Errno = 8643 + ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION syscall.Errno = 8644 + ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED syscall.Errno = 8645 + ERROR_INCORRECT_ACCOUNT_TYPE syscall.Errno = 8646 + ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8647 + ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8648 + ERROR_DS_MISSING_FOREST_TRUST syscall.Errno = 8649 + ERROR_DS_VALUE_KEY_NOT_UNIQUE syscall.Errno = 8650 + DNS_ERROR_RESPONSE_CODES_BASE syscall.Errno = 9000 + DNS_ERROR_RCODE_NO_ERROR = ERROR_SUCCESS + DNS_ERROR_MASK syscall.Errno = 0x00002328 + DNS_ERROR_RCODE_FORMAT_ERROR syscall.Errno = 9001 + DNS_ERROR_RCODE_SERVER_FAILURE syscall.Errno = 9002 + DNS_ERROR_RCODE_NAME_ERROR syscall.Errno = 9003 + DNS_ERROR_RCODE_NOT_IMPLEMENTED syscall.Errno = 9004 + DNS_ERROR_RCODE_REFUSED syscall.Errno = 9005 + DNS_ERROR_RCODE_YXDOMAIN syscall.Errno = 9006 + DNS_ERROR_RCODE_YXRRSET syscall.Errno = 9007 + DNS_ERROR_RCODE_NXRRSET syscall.Errno = 9008 + DNS_ERROR_RCODE_NOTAUTH syscall.Errno = 9009 + DNS_ERROR_RCODE_NOTZONE syscall.Errno = 9010 + DNS_ERROR_RCODE_BADSIG syscall.Errno = 9016 + DNS_ERROR_RCODE_BADKEY syscall.Errno = 9017 + DNS_ERROR_RCODE_BADTIME syscall.Errno = 9018 + DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME + DNS_ERROR_DNSSEC_BASE syscall.Errno = 9100 + DNS_ERROR_KEYMASTER_REQUIRED syscall.Errno = 9101 + DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE syscall.Errno = 9102 + DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 syscall.Errno = 9103 + DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS syscall.Errno = 9104 + DNS_ERROR_UNSUPPORTED_ALGORITHM syscall.Errno = 9105 + DNS_ERROR_INVALID_KEY_SIZE syscall.Errno = 9106 + DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE syscall.Errno = 9107 + DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION syscall.Errno = 9108 + DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR syscall.Errno = 9109 + DNS_ERROR_UNEXPECTED_CNG_ERROR syscall.Errno = 9110 + DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION syscall.Errno = 9111 + DNS_ERROR_KSP_NOT_ACCESSIBLE syscall.Errno = 9112 + DNS_ERROR_TOO_MANY_SKDS syscall.Errno = 9113 + DNS_ERROR_INVALID_ROLLOVER_PERIOD syscall.Errno = 9114 + DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET syscall.Errno = 9115 + DNS_ERROR_ROLLOVER_IN_PROGRESS syscall.Errno = 9116 + DNS_ERROR_STANDBY_KEY_NOT_PRESENT syscall.Errno = 9117 + DNS_ERROR_NOT_ALLOWED_ON_ZSK syscall.Errno = 9118 + DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD syscall.Errno = 9119 + DNS_ERROR_ROLLOVER_ALREADY_QUEUED syscall.Errno = 9120 + DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE syscall.Errno = 9121 + DNS_ERROR_BAD_KEYMASTER syscall.Errno = 9122 + DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD syscall.Errno = 9123 + DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT syscall.Errno = 9124 + DNS_ERROR_DNSSEC_IS_DISABLED syscall.Errno = 9125 + DNS_ERROR_INVALID_XML syscall.Errno = 9126 + DNS_ERROR_NO_VALID_TRUST_ANCHORS syscall.Errno = 9127 + DNS_ERROR_ROLLOVER_NOT_POKEABLE syscall.Errno = 9128 + DNS_ERROR_NSEC3_NAME_COLLISION syscall.Errno = 9129 + DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 syscall.Errno = 9130 + DNS_ERROR_PACKET_FMT_BASE syscall.Errno = 9500 + DNS_INFO_NO_RECORDS syscall.Errno = 9501 + DNS_ERROR_BAD_PACKET syscall.Errno = 9502 + DNS_ERROR_NO_PACKET syscall.Errno = 9503 + DNS_ERROR_RCODE syscall.Errno = 9504 + DNS_ERROR_UNSECURE_PACKET syscall.Errno = 9505 + DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET + DNS_REQUEST_PENDING syscall.Errno = 9506 + DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY + DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME + DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA + DNS_ERROR_GENERAL_API_BASE syscall.Errno = 9550 + DNS_ERROR_INVALID_TYPE syscall.Errno = 9551 + DNS_ERROR_INVALID_IP_ADDRESS syscall.Errno = 9552 + DNS_ERROR_INVALID_PROPERTY syscall.Errno = 9553 + DNS_ERROR_TRY_AGAIN_LATER syscall.Errno = 9554 + DNS_ERROR_NOT_UNIQUE syscall.Errno = 9555 + DNS_ERROR_NON_RFC_NAME syscall.Errno = 9556 + DNS_STATUS_FQDN syscall.Errno = 9557 + DNS_STATUS_DOTTED_NAME syscall.Errno = 9558 + DNS_STATUS_SINGLE_PART_NAME syscall.Errno = 9559 + DNS_ERROR_INVALID_NAME_CHAR syscall.Errno = 9560 + DNS_ERROR_NUMERIC_NAME syscall.Errno = 9561 + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER syscall.Errno = 9562 + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION syscall.Errno = 9563 + DNS_ERROR_CANNOT_FIND_ROOT_HINTS syscall.Errno = 9564 + DNS_ERROR_INCONSISTENT_ROOT_HINTS syscall.Errno = 9565 + DNS_ERROR_DWORD_VALUE_TOO_SMALL syscall.Errno = 9566 + DNS_ERROR_DWORD_VALUE_TOO_LARGE syscall.Errno = 9567 + DNS_ERROR_BACKGROUND_LOADING syscall.Errno = 9568 + DNS_ERROR_NOT_ALLOWED_ON_RODC syscall.Errno = 9569 + DNS_ERROR_NOT_ALLOWED_UNDER_DNAME syscall.Errno = 9570 + DNS_ERROR_DELEGATION_REQUIRED syscall.Errno = 9571 + DNS_ERROR_INVALID_POLICY_TABLE syscall.Errno = 9572 + DNS_ERROR_ADDRESS_REQUIRED syscall.Errno = 9573 + DNS_ERROR_ZONE_BASE syscall.Errno = 9600 + DNS_ERROR_ZONE_DOES_NOT_EXIST syscall.Errno = 9601 + DNS_ERROR_NO_ZONE_INFO syscall.Errno = 9602 + DNS_ERROR_INVALID_ZONE_OPERATION syscall.Errno = 9603 + DNS_ERROR_ZONE_CONFIGURATION_ERROR syscall.Errno = 9604 + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD syscall.Errno = 9605 + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS syscall.Errno = 9606 + DNS_ERROR_ZONE_LOCKED syscall.Errno = 9607 + DNS_ERROR_ZONE_CREATION_FAILED syscall.Errno = 9608 + DNS_ERROR_ZONE_ALREADY_EXISTS syscall.Errno = 9609 + DNS_ERROR_AUTOZONE_ALREADY_EXISTS syscall.Errno = 9610 + DNS_ERROR_INVALID_ZONE_TYPE syscall.Errno = 9611 + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP syscall.Errno = 9612 + DNS_ERROR_ZONE_NOT_SECONDARY syscall.Errno = 9613 + DNS_ERROR_NEED_SECONDARY_ADDRESSES syscall.Errno = 9614 + DNS_ERROR_WINS_INIT_FAILED syscall.Errno = 9615 + DNS_ERROR_NEED_WINS_SERVERS syscall.Errno = 9616 + DNS_ERROR_NBSTAT_INIT_FAILED syscall.Errno = 9617 + DNS_ERROR_SOA_DELETE_INVALID syscall.Errno = 9618 + DNS_ERROR_FORWARDER_ALREADY_EXISTS syscall.Errno = 9619 + DNS_ERROR_ZONE_REQUIRES_MASTER_IP syscall.Errno = 9620 + DNS_ERROR_ZONE_IS_SHUTDOWN syscall.Errno = 9621 + DNS_ERROR_ZONE_LOCKED_FOR_SIGNING syscall.Errno = 9622 + DNS_ERROR_DATAFILE_BASE syscall.Errno = 9650 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE syscall.Errno = 9651 + DNS_ERROR_INVALID_DATAFILE_NAME syscall.Errno = 9652 + DNS_ERROR_DATAFILE_OPEN_FAILURE syscall.Errno = 9653 + DNS_ERROR_FILE_WRITEBACK_FAILED syscall.Errno = 9654 + DNS_ERROR_DATAFILE_PARSING syscall.Errno = 9655 + DNS_ERROR_DATABASE_BASE syscall.Errno = 9700 + DNS_ERROR_RECORD_DOES_NOT_EXIST syscall.Errno = 9701 + DNS_ERROR_RECORD_FORMAT syscall.Errno = 9702 + DNS_ERROR_NODE_CREATION_FAILED syscall.Errno = 9703 + DNS_ERROR_UNKNOWN_RECORD_TYPE syscall.Errno = 9704 + DNS_ERROR_RECORD_TIMED_OUT syscall.Errno = 9705 + DNS_ERROR_NAME_NOT_IN_ZONE syscall.Errno = 9706 + DNS_ERROR_CNAME_LOOP syscall.Errno = 9707 + DNS_ERROR_NODE_IS_CNAME syscall.Errno = 9708 + DNS_ERROR_CNAME_COLLISION syscall.Errno = 9709 + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT syscall.Errno = 9710 + DNS_ERROR_RECORD_ALREADY_EXISTS syscall.Errno = 9711 + DNS_ERROR_SECONDARY_DATA syscall.Errno = 9712 + DNS_ERROR_NO_CREATE_CACHE_DATA syscall.Errno = 9713 + DNS_ERROR_NAME_DOES_NOT_EXIST syscall.Errno = 9714 + DNS_WARNING_PTR_CREATE_FAILED syscall.Errno = 9715 + DNS_WARNING_DOMAIN_UNDELETED syscall.Errno = 9716 + DNS_ERROR_DS_UNAVAILABLE syscall.Errno = 9717 + DNS_ERROR_DS_ZONE_ALREADY_EXISTS syscall.Errno = 9718 + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE syscall.Errno = 9719 + DNS_ERROR_NODE_IS_DNAME syscall.Errno = 9720 + DNS_ERROR_DNAME_COLLISION syscall.Errno = 9721 + DNS_ERROR_ALIAS_LOOP syscall.Errno = 9722 + DNS_ERROR_OPERATION_BASE syscall.Errno = 9750 + DNS_INFO_AXFR_COMPLETE syscall.Errno = 9751 + DNS_ERROR_AXFR syscall.Errno = 9752 + DNS_INFO_ADDED_LOCAL_WINS syscall.Errno = 9753 + DNS_ERROR_SECURE_BASE syscall.Errno = 9800 + DNS_STATUS_CONTINUE_NEEDED syscall.Errno = 9801 + DNS_ERROR_SETUP_BASE syscall.Errno = 9850 + DNS_ERROR_NO_TCPIP syscall.Errno = 9851 + DNS_ERROR_NO_DNS_SERVERS syscall.Errno = 9852 + DNS_ERROR_DP_BASE syscall.Errno = 9900 + DNS_ERROR_DP_DOES_NOT_EXIST syscall.Errno = 9901 + DNS_ERROR_DP_ALREADY_EXISTS syscall.Errno = 9902 + DNS_ERROR_DP_NOT_ENLISTED syscall.Errno = 9903 + DNS_ERROR_DP_ALREADY_ENLISTED syscall.Errno = 9904 + DNS_ERROR_DP_NOT_AVAILABLE syscall.Errno = 9905 + DNS_ERROR_DP_FSMO_ERROR syscall.Errno = 9906 + DNS_ERROR_RRL_NOT_ENABLED syscall.Errno = 9911 + DNS_ERROR_RRL_INVALID_WINDOW_SIZE syscall.Errno = 9912 + DNS_ERROR_RRL_INVALID_IPV4_PREFIX syscall.Errno = 9913 + DNS_ERROR_RRL_INVALID_IPV6_PREFIX syscall.Errno = 9914 + DNS_ERROR_RRL_INVALID_TC_RATE syscall.Errno = 9915 + DNS_ERROR_RRL_INVALID_LEAK_RATE syscall.Errno = 9916 + DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE syscall.Errno = 9917 + DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS syscall.Errno = 9921 + DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST syscall.Errno = 9922 + DNS_ERROR_VIRTUALIZATION_TREE_LOCKED syscall.Errno = 9923 + DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME syscall.Errno = 9924 + DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE syscall.Errno = 9925 + DNS_ERROR_ZONESCOPE_ALREADY_EXISTS syscall.Errno = 9951 + DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST syscall.Errno = 9952 + DNS_ERROR_DEFAULT_ZONESCOPE syscall.Errno = 9953 + DNS_ERROR_INVALID_ZONESCOPE_NAME syscall.Errno = 9954 + DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES syscall.Errno = 9955 + DNS_ERROR_LOAD_ZONESCOPE_FAILED syscall.Errno = 9956 + DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED syscall.Errno = 9957 + DNS_ERROR_INVALID_SCOPE_NAME syscall.Errno = 9958 + DNS_ERROR_SCOPE_DOES_NOT_EXIST syscall.Errno = 9959 + DNS_ERROR_DEFAULT_SCOPE syscall.Errno = 9960 + DNS_ERROR_INVALID_SCOPE_OPERATION syscall.Errno = 9961 + DNS_ERROR_SCOPE_LOCKED syscall.Errno = 9962 + DNS_ERROR_SCOPE_ALREADY_EXISTS syscall.Errno = 9963 + DNS_ERROR_POLICY_ALREADY_EXISTS syscall.Errno = 9971 + DNS_ERROR_POLICY_DOES_NOT_EXIST syscall.Errno = 9972 + DNS_ERROR_POLICY_INVALID_CRITERIA syscall.Errno = 9973 + DNS_ERROR_POLICY_INVALID_SETTINGS syscall.Errno = 9974 + DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED syscall.Errno = 9975 + DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST syscall.Errno = 9976 + DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS syscall.Errno = 9977 + DNS_ERROR_SUBNET_DOES_NOT_EXIST syscall.Errno = 9978 + DNS_ERROR_SUBNET_ALREADY_EXISTS syscall.Errno = 9979 + DNS_ERROR_POLICY_LOCKED syscall.Errno = 9980 + DNS_ERROR_POLICY_INVALID_WEIGHT syscall.Errno = 9981 + DNS_ERROR_POLICY_INVALID_NAME syscall.Errno = 9982 + DNS_ERROR_POLICY_MISSING_CRITERIA syscall.Errno = 9983 + DNS_ERROR_INVALID_CLIENT_SUBNET_NAME syscall.Errno = 9984 + DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID syscall.Errno = 9985 + DNS_ERROR_POLICY_SCOPE_MISSING syscall.Errno = 9986 + DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED syscall.Errno = 9987 + DNS_ERROR_SERVERSCOPE_IS_REFERENCED syscall.Errno = 9988 + DNS_ERROR_ZONESCOPE_IS_REFERENCED syscall.Errno = 9989 + DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET syscall.Errno = 9990 + DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL syscall.Errno = 9991 + DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL syscall.Errno = 9992 + DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE syscall.Errno = 9993 + DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN syscall.Errno = 9994 + DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE syscall.Errno = 9995 + DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY syscall.Errno = 9996 + WSABASEERR syscall.Errno = 10000 + WSAEINTR syscall.Errno = 10004 + WSAEBADF syscall.Errno = 10009 + WSAEACCES syscall.Errno = 10013 + WSAEFAULT syscall.Errno = 10014 + WSAEINVAL syscall.Errno = 10022 + WSAEMFILE syscall.Errno = 10024 + WSAEWOULDBLOCK syscall.Errno = 10035 + WSAEINPROGRESS syscall.Errno = 10036 + WSAEALREADY syscall.Errno = 10037 + WSAENOTSOCK syscall.Errno = 10038 + WSAEDESTADDRREQ syscall.Errno = 10039 + WSAEMSGSIZE syscall.Errno = 10040 + WSAEPROTOTYPE syscall.Errno = 10041 + WSAENOPROTOOPT syscall.Errno = 10042 + WSAEPROTONOSUPPORT syscall.Errno = 10043 + WSAESOCKTNOSUPPORT syscall.Errno = 10044 + WSAEOPNOTSUPP syscall.Errno = 10045 + WSAEPFNOSUPPORT syscall.Errno = 10046 + WSAEAFNOSUPPORT syscall.Errno = 10047 + WSAEADDRINUSE syscall.Errno = 10048 + WSAEADDRNOTAVAIL syscall.Errno = 10049 + WSAENETDOWN syscall.Errno = 10050 + WSAENETUNREACH syscall.Errno = 10051 + WSAENETRESET syscall.Errno = 10052 + WSAECONNABORTED syscall.Errno = 10053 + WSAECONNRESET syscall.Errno = 10054 + WSAENOBUFS syscall.Errno = 10055 + WSAEISCONN syscall.Errno = 10056 + WSAENOTCONN syscall.Errno = 10057 + WSAESHUTDOWN syscall.Errno = 10058 + WSAETOOMANYREFS syscall.Errno = 10059 + WSAETIMEDOUT syscall.Errno = 10060 + WSAECONNREFUSED syscall.Errno = 10061 + WSAELOOP syscall.Errno = 10062 + WSAENAMETOOLONG syscall.Errno = 10063 + WSAEHOSTDOWN syscall.Errno = 10064 + WSAEHOSTUNREACH syscall.Errno = 10065 + WSAENOTEMPTY syscall.Errno = 10066 + WSAEPROCLIM syscall.Errno = 10067 + WSAEUSERS syscall.Errno = 10068 + WSAEDQUOT syscall.Errno = 10069 + WSAESTALE syscall.Errno = 10070 + WSAEREMOTE syscall.Errno = 10071 + WSASYSNOTREADY syscall.Errno = 10091 + WSAVERNOTSUPPORTED syscall.Errno = 10092 + WSANOTINITIALISED syscall.Errno = 10093 + WSAEDISCON syscall.Errno = 10101 + WSAENOMORE syscall.Errno = 10102 + WSAECANCELLED syscall.Errno = 10103 + WSAEINVALIDPROCTABLE syscall.Errno = 10104 + WSAEINVALIDPROVIDER syscall.Errno = 10105 + WSAEPROVIDERFAILEDINIT syscall.Errno = 10106 + WSASYSCALLFAILURE syscall.Errno = 10107 + WSASERVICE_NOT_FOUND syscall.Errno = 10108 + WSATYPE_NOT_FOUND syscall.Errno = 10109 + WSA_E_NO_MORE syscall.Errno = 10110 + WSA_E_CANCELLED syscall.Errno = 10111 + WSAEREFUSED syscall.Errno = 10112 + WSAHOST_NOT_FOUND syscall.Errno = 11001 + WSATRY_AGAIN syscall.Errno = 11002 + WSANO_RECOVERY syscall.Errno = 11003 + WSANO_DATA syscall.Errno = 11004 + WSA_QOS_RECEIVERS syscall.Errno = 11005 + WSA_QOS_SENDERS syscall.Errno = 11006 + WSA_QOS_NO_SENDERS syscall.Errno = 11007 + WSA_QOS_NO_RECEIVERS syscall.Errno = 11008 + WSA_QOS_REQUEST_CONFIRMED syscall.Errno = 11009 + WSA_QOS_ADMISSION_FAILURE syscall.Errno = 11010 + WSA_QOS_POLICY_FAILURE syscall.Errno = 11011 + WSA_QOS_BAD_STYLE syscall.Errno = 11012 + WSA_QOS_BAD_OBJECT syscall.Errno = 11013 + WSA_QOS_TRAFFIC_CTRL_ERROR syscall.Errno = 11014 + WSA_QOS_GENERIC_ERROR syscall.Errno = 11015 + WSA_QOS_ESERVICETYPE syscall.Errno = 11016 + WSA_QOS_EFLOWSPEC syscall.Errno = 11017 + WSA_QOS_EPROVSPECBUF syscall.Errno = 11018 + WSA_QOS_EFILTERSTYLE syscall.Errno = 11019 + WSA_QOS_EFILTERTYPE syscall.Errno = 11020 + WSA_QOS_EFILTERCOUNT syscall.Errno = 11021 + WSA_QOS_EOBJLENGTH syscall.Errno = 11022 + WSA_QOS_EFLOWCOUNT syscall.Errno = 11023 + WSA_QOS_EUNKOWNPSOBJ syscall.Errno = 11024 + WSA_QOS_EPOLICYOBJ syscall.Errno = 11025 + WSA_QOS_EFLOWDESC syscall.Errno = 11026 + WSA_QOS_EPSFLOWSPEC syscall.Errno = 11027 + WSA_QOS_EPSFILTERSPEC syscall.Errno = 11028 + WSA_QOS_ESDMODEOBJ syscall.Errno = 11029 + WSA_QOS_ESHAPERATEOBJ syscall.Errno = 11030 + WSA_QOS_RESERVED_PETYPE syscall.Errno = 11031 + WSA_SECURE_HOST_NOT_FOUND syscall.Errno = 11032 + WSA_IPSEC_NAME_POLICY_ERROR syscall.Errno = 11033 + ERROR_IPSEC_QM_POLICY_EXISTS syscall.Errno = 13000 + ERROR_IPSEC_QM_POLICY_NOT_FOUND syscall.Errno = 13001 + ERROR_IPSEC_QM_POLICY_IN_USE syscall.Errno = 13002 + ERROR_IPSEC_MM_POLICY_EXISTS syscall.Errno = 13003 + ERROR_IPSEC_MM_POLICY_NOT_FOUND syscall.Errno = 13004 + ERROR_IPSEC_MM_POLICY_IN_USE syscall.Errno = 13005 + ERROR_IPSEC_MM_FILTER_EXISTS syscall.Errno = 13006 + ERROR_IPSEC_MM_FILTER_NOT_FOUND syscall.Errno = 13007 + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS syscall.Errno = 13008 + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND syscall.Errno = 13009 + ERROR_IPSEC_MM_AUTH_EXISTS syscall.Errno = 13010 + ERROR_IPSEC_MM_AUTH_NOT_FOUND syscall.Errno = 13011 + ERROR_IPSEC_MM_AUTH_IN_USE syscall.Errno = 13012 + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND syscall.Errno = 13013 + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND syscall.Errno = 13014 + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND syscall.Errno = 13015 + ERROR_IPSEC_TUNNEL_FILTER_EXISTS syscall.Errno = 13016 + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND syscall.Errno = 13017 + ERROR_IPSEC_MM_FILTER_PENDING_DELETION syscall.Errno = 13018 + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION syscall.Errno = 13019 + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION syscall.Errno = 13020 + ERROR_IPSEC_MM_POLICY_PENDING_DELETION syscall.Errno = 13021 + ERROR_IPSEC_MM_AUTH_PENDING_DELETION syscall.Errno = 13022 + ERROR_IPSEC_QM_POLICY_PENDING_DELETION syscall.Errno = 13023 + WARNING_IPSEC_MM_POLICY_PRUNED syscall.Errno = 13024 + WARNING_IPSEC_QM_POLICY_PRUNED syscall.Errno = 13025 + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN syscall.Errno = 13800 + ERROR_IPSEC_IKE_AUTH_FAIL syscall.Errno = 13801 + ERROR_IPSEC_IKE_ATTRIB_FAIL syscall.Errno = 13802 + ERROR_IPSEC_IKE_NEGOTIATION_PENDING syscall.Errno = 13803 + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR syscall.Errno = 13804 + ERROR_IPSEC_IKE_TIMED_OUT syscall.Errno = 13805 + ERROR_IPSEC_IKE_NO_CERT syscall.Errno = 13806 + ERROR_IPSEC_IKE_SA_DELETED syscall.Errno = 13807 + ERROR_IPSEC_IKE_SA_REAPED syscall.Errno = 13808 + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP syscall.Errno = 13809 + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP syscall.Errno = 13810 + ERROR_IPSEC_IKE_QUEUE_DROP_MM syscall.Errno = 13811 + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM syscall.Errno = 13812 + ERROR_IPSEC_IKE_DROP_NO_RESPONSE syscall.Errno = 13813 + ERROR_IPSEC_IKE_MM_DELAY_DROP syscall.Errno = 13814 + ERROR_IPSEC_IKE_QM_DELAY_DROP syscall.Errno = 13815 + ERROR_IPSEC_IKE_ERROR syscall.Errno = 13816 + ERROR_IPSEC_IKE_CRL_FAILED syscall.Errno = 13817 + ERROR_IPSEC_IKE_INVALID_KEY_USAGE syscall.Errno = 13818 + ERROR_IPSEC_IKE_INVALID_CERT_TYPE syscall.Errno = 13819 + ERROR_IPSEC_IKE_NO_PRIVATE_KEY syscall.Errno = 13820 + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY syscall.Errno = 13821 + ERROR_IPSEC_IKE_DH_FAIL syscall.Errno = 13822 + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED syscall.Errno = 13823 + ERROR_IPSEC_IKE_INVALID_HEADER syscall.Errno = 13824 + ERROR_IPSEC_IKE_NO_POLICY syscall.Errno = 13825 + ERROR_IPSEC_IKE_INVALID_SIGNATURE syscall.Errno = 13826 + ERROR_IPSEC_IKE_KERBEROS_ERROR syscall.Errno = 13827 + ERROR_IPSEC_IKE_NO_PUBLIC_KEY syscall.Errno = 13828 + ERROR_IPSEC_IKE_PROCESS_ERR syscall.Errno = 13829 + ERROR_IPSEC_IKE_PROCESS_ERR_SA syscall.Errno = 13830 + ERROR_IPSEC_IKE_PROCESS_ERR_PROP syscall.Errno = 13831 + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS syscall.Errno = 13832 + ERROR_IPSEC_IKE_PROCESS_ERR_KE syscall.Errno = 13833 + ERROR_IPSEC_IKE_PROCESS_ERR_ID syscall.Errno = 13834 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT syscall.Errno = 13835 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ syscall.Errno = 13836 + ERROR_IPSEC_IKE_PROCESS_ERR_HASH syscall.Errno = 13837 + ERROR_IPSEC_IKE_PROCESS_ERR_SIG syscall.Errno = 13838 + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE syscall.Errno = 13839 + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY syscall.Errno = 13840 + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE syscall.Errno = 13841 + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR syscall.Errno = 13842 + ERROR_IPSEC_IKE_INVALID_PAYLOAD syscall.Errno = 13843 + ERROR_IPSEC_IKE_LOAD_SOFT_SA syscall.Errno = 13844 + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN syscall.Errno = 13845 + ERROR_IPSEC_IKE_INVALID_COOKIE syscall.Errno = 13846 + ERROR_IPSEC_IKE_NO_PEER_CERT syscall.Errno = 13847 + ERROR_IPSEC_IKE_PEER_CRL_FAILED syscall.Errno = 13848 + ERROR_IPSEC_IKE_POLICY_CHANGE syscall.Errno = 13849 + ERROR_IPSEC_IKE_NO_MM_POLICY syscall.Errno = 13850 + ERROR_IPSEC_IKE_NOTCBPRIV syscall.Errno = 13851 + ERROR_IPSEC_IKE_SECLOADFAIL syscall.Errno = 13852 + ERROR_IPSEC_IKE_FAILSSPINIT syscall.Errno = 13853 + ERROR_IPSEC_IKE_FAILQUERYSSP syscall.Errno = 13854 + ERROR_IPSEC_IKE_SRVACQFAIL syscall.Errno = 13855 + ERROR_IPSEC_IKE_SRVQUERYCRED syscall.Errno = 13856 + ERROR_IPSEC_IKE_GETSPIFAIL syscall.Errno = 13857 + ERROR_IPSEC_IKE_INVALID_FILTER syscall.Errno = 13858 + ERROR_IPSEC_IKE_OUT_OF_MEMORY syscall.Errno = 13859 + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED syscall.Errno = 13860 + ERROR_IPSEC_IKE_INVALID_POLICY syscall.Errno = 13861 + ERROR_IPSEC_IKE_UNKNOWN_DOI syscall.Errno = 13862 + ERROR_IPSEC_IKE_INVALID_SITUATION syscall.Errno = 13863 + ERROR_IPSEC_IKE_DH_FAILURE syscall.Errno = 13864 + ERROR_IPSEC_IKE_INVALID_GROUP syscall.Errno = 13865 + ERROR_IPSEC_IKE_ENCRYPT syscall.Errno = 13866 + ERROR_IPSEC_IKE_DECRYPT syscall.Errno = 13867 + ERROR_IPSEC_IKE_POLICY_MATCH syscall.Errno = 13868 + ERROR_IPSEC_IKE_UNSUPPORTED_ID syscall.Errno = 13869 + ERROR_IPSEC_IKE_INVALID_HASH syscall.Errno = 13870 + ERROR_IPSEC_IKE_INVALID_HASH_ALG syscall.Errno = 13871 + ERROR_IPSEC_IKE_INVALID_HASH_SIZE syscall.Errno = 13872 + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG syscall.Errno = 13873 + ERROR_IPSEC_IKE_INVALID_AUTH_ALG syscall.Errno = 13874 + ERROR_IPSEC_IKE_INVALID_SIG syscall.Errno = 13875 + ERROR_IPSEC_IKE_LOAD_FAILED syscall.Errno = 13876 + ERROR_IPSEC_IKE_RPC_DELETE syscall.Errno = 13877 + ERROR_IPSEC_IKE_BENIGN_REINIT syscall.Errno = 13878 + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY syscall.Errno = 13879 + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION syscall.Errno = 13880 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN syscall.Errno = 13881 + ERROR_IPSEC_IKE_MM_LIMIT syscall.Errno = 13882 + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED syscall.Errno = 13883 + ERROR_IPSEC_IKE_QM_LIMIT syscall.Errno = 13884 + ERROR_IPSEC_IKE_MM_EXPIRED syscall.Errno = 13885 + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID syscall.Errno = 13886 + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH syscall.Errno = 13887 + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID syscall.Errno = 13888 + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD syscall.Errno = 13889 + ERROR_IPSEC_IKE_DOS_COOKIE_SENT syscall.Errno = 13890 + ERROR_IPSEC_IKE_SHUTTING_DOWN syscall.Errno = 13891 + ERROR_IPSEC_IKE_CGA_AUTH_FAILED syscall.Errno = 13892 + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA syscall.Errno = 13893 + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM syscall.Errno = 13894 + ERROR_IPSEC_IKE_QM_EXPIRED syscall.Errno = 13895 + ERROR_IPSEC_IKE_TOO_MANY_FILTERS syscall.Errno = 13896 + ERROR_IPSEC_IKE_NEG_STATUS_END syscall.Errno = 13897 + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL syscall.Errno = 13898 + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE syscall.Errno = 13899 + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING syscall.Errno = 13900 + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING syscall.Errno = 13901 + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS syscall.Errno = 13902 + ERROR_IPSEC_IKE_RATELIMIT_DROP syscall.Errno = 13903 + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE syscall.Errno = 13904 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE syscall.Errno = 13905 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE syscall.Errno = 13906 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY syscall.Errno = 13907 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE syscall.Errno = 13908 + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END syscall.Errno = 13909 + ERROR_IPSEC_BAD_SPI syscall.Errno = 13910 + ERROR_IPSEC_SA_LIFETIME_EXPIRED syscall.Errno = 13911 + ERROR_IPSEC_WRONG_SA syscall.Errno = 13912 + ERROR_IPSEC_REPLAY_CHECK_FAILED syscall.Errno = 13913 + ERROR_IPSEC_INVALID_PACKET syscall.Errno = 13914 + ERROR_IPSEC_INTEGRITY_CHECK_FAILED syscall.Errno = 13915 + ERROR_IPSEC_CLEAR_TEXT_DROP syscall.Errno = 13916 + ERROR_IPSEC_AUTH_FIREWALL_DROP syscall.Errno = 13917 + ERROR_IPSEC_THROTTLE_DROP syscall.Errno = 13918 + ERROR_IPSEC_DOSP_BLOCK syscall.Errno = 13925 + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST syscall.Errno = 13926 + ERROR_IPSEC_DOSP_INVALID_PACKET syscall.Errno = 13927 + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED syscall.Errno = 13928 + ERROR_IPSEC_DOSP_MAX_ENTRIES syscall.Errno = 13929 + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED syscall.Errno = 13930 + ERROR_IPSEC_DOSP_NOT_INSTALLED syscall.Errno = 13931 + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES syscall.Errno = 13932 + ERROR_SXS_SECTION_NOT_FOUND syscall.Errno = 14000 + ERROR_SXS_CANT_GEN_ACTCTX syscall.Errno = 14001 + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT syscall.Errno = 14002 + ERROR_SXS_ASSEMBLY_NOT_FOUND syscall.Errno = 14003 + ERROR_SXS_MANIFEST_FORMAT_ERROR syscall.Errno = 14004 + ERROR_SXS_MANIFEST_PARSE_ERROR syscall.Errno = 14005 + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED syscall.Errno = 14006 + ERROR_SXS_KEY_NOT_FOUND syscall.Errno = 14007 + ERROR_SXS_VERSION_CONFLICT syscall.Errno = 14008 + ERROR_SXS_WRONG_SECTION_TYPE syscall.Errno = 14009 + ERROR_SXS_THREAD_QUERIES_DISABLED syscall.Errno = 14010 + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET syscall.Errno = 14011 + ERROR_SXS_UNKNOWN_ENCODING_GROUP syscall.Errno = 14012 + ERROR_SXS_UNKNOWN_ENCODING syscall.Errno = 14013 + ERROR_SXS_INVALID_XML_NAMESPACE_URI syscall.Errno = 14014 + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14015 + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14016 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14017 + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14018 + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14019 + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT syscall.Errno = 14020 + ERROR_SXS_DUPLICATE_DLL_NAME syscall.Errno = 14021 + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME syscall.Errno = 14022 + ERROR_SXS_DUPLICATE_CLSID syscall.Errno = 14023 + ERROR_SXS_DUPLICATE_IID syscall.Errno = 14024 + ERROR_SXS_DUPLICATE_TLBID syscall.Errno = 14025 + ERROR_SXS_DUPLICATE_PROGID syscall.Errno = 14026 + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME syscall.Errno = 14027 + ERROR_SXS_FILE_HASH_MISMATCH syscall.Errno = 14028 + ERROR_SXS_POLICY_PARSE_ERROR syscall.Errno = 14029 + ERROR_SXS_XML_E_MISSINGQUOTE syscall.Errno = 14030 + ERROR_SXS_XML_E_COMMENTSYNTAX syscall.Errno = 14031 + ERROR_SXS_XML_E_BADSTARTNAMECHAR syscall.Errno = 14032 + ERROR_SXS_XML_E_BADNAMECHAR syscall.Errno = 14033 + ERROR_SXS_XML_E_BADCHARINSTRING syscall.Errno = 14034 + ERROR_SXS_XML_E_XMLDECLSYNTAX syscall.Errno = 14035 + ERROR_SXS_XML_E_BADCHARDATA syscall.Errno = 14036 + ERROR_SXS_XML_E_MISSINGWHITESPACE syscall.Errno = 14037 + ERROR_SXS_XML_E_EXPECTINGTAGEND syscall.Errno = 14038 + ERROR_SXS_XML_E_MISSINGSEMICOLON syscall.Errno = 14039 + ERROR_SXS_XML_E_UNBALANCEDPAREN syscall.Errno = 14040 + ERROR_SXS_XML_E_INTERNALERROR syscall.Errno = 14041 + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE syscall.Errno = 14042 + ERROR_SXS_XML_E_INCOMPLETE_ENCODING syscall.Errno = 14043 + ERROR_SXS_XML_E_MISSING_PAREN syscall.Errno = 14044 + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE syscall.Errno = 14045 + ERROR_SXS_XML_E_MULTIPLE_COLONS syscall.Errno = 14046 + ERROR_SXS_XML_E_INVALID_DECIMAL syscall.Errno = 14047 + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL syscall.Errno = 14048 + ERROR_SXS_XML_E_INVALID_UNICODE syscall.Errno = 14049 + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK syscall.Errno = 14050 + ERROR_SXS_XML_E_UNEXPECTEDENDTAG syscall.Errno = 14051 + ERROR_SXS_XML_E_UNCLOSEDTAG syscall.Errno = 14052 + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE syscall.Errno = 14053 + ERROR_SXS_XML_E_MULTIPLEROOTS syscall.Errno = 14054 + ERROR_SXS_XML_E_INVALIDATROOTLEVEL syscall.Errno = 14055 + ERROR_SXS_XML_E_BADXMLDECL syscall.Errno = 14056 + ERROR_SXS_XML_E_MISSINGROOT syscall.Errno = 14057 + ERROR_SXS_XML_E_UNEXPECTEDEOF syscall.Errno = 14058 + ERROR_SXS_XML_E_BADPEREFINSUBSET syscall.Errno = 14059 + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG syscall.Errno = 14060 + ERROR_SXS_XML_E_UNCLOSEDENDTAG syscall.Errno = 14061 + ERROR_SXS_XML_E_UNCLOSEDSTRING syscall.Errno = 14062 + ERROR_SXS_XML_E_UNCLOSEDCOMMENT syscall.Errno = 14063 + ERROR_SXS_XML_E_UNCLOSEDDECL syscall.Errno = 14064 + ERROR_SXS_XML_E_UNCLOSEDCDATA syscall.Errno = 14065 + ERROR_SXS_XML_E_RESERVEDNAMESPACE syscall.Errno = 14066 + ERROR_SXS_XML_E_INVALIDENCODING syscall.Errno = 14067 + ERROR_SXS_XML_E_INVALIDSWITCH syscall.Errno = 14068 + ERROR_SXS_XML_E_BADXMLCASE syscall.Errno = 14069 + ERROR_SXS_XML_E_INVALID_STANDALONE syscall.Errno = 14070 + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE syscall.Errno = 14071 + ERROR_SXS_XML_E_INVALID_VERSION syscall.Errno = 14072 + ERROR_SXS_XML_E_MISSINGEQUALS syscall.Errno = 14073 + ERROR_SXS_PROTECTION_RECOVERY_FAILED syscall.Errno = 14074 + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT syscall.Errno = 14075 + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID syscall.Errno = 14076 + ERROR_SXS_UNTRANSLATABLE_HRESULT syscall.Errno = 14077 + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING syscall.Errno = 14078 + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14079 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14080 + ERROR_SXS_ASSEMBLY_MISSING syscall.Errno = 14081 + ERROR_SXS_CORRUPT_ACTIVATION_STACK syscall.Errno = 14082 + ERROR_SXS_CORRUPTION syscall.Errno = 14083 + ERROR_SXS_EARLY_DEACTIVATION syscall.Errno = 14084 + ERROR_SXS_INVALID_DEACTIVATION syscall.Errno = 14085 + ERROR_SXS_MULTIPLE_DEACTIVATION syscall.Errno = 14086 + ERROR_SXS_PROCESS_TERMINATION_REQUESTED syscall.Errno = 14087 + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT syscall.Errno = 14088 + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY syscall.Errno = 14089 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE syscall.Errno = 14090 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14091 + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE syscall.Errno = 14092 + ERROR_SXS_IDENTITY_PARSE_ERROR syscall.Errno = 14093 + ERROR_MALFORMED_SUBSTITUTION_STRING syscall.Errno = 14094 + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN syscall.Errno = 14095 + ERROR_UNMAPPED_SUBSTITUTION_STRING syscall.Errno = 14096 + ERROR_SXS_ASSEMBLY_NOT_LOCKED syscall.Errno = 14097 + ERROR_SXS_COMPONENT_STORE_CORRUPT syscall.Errno = 14098 + ERROR_ADVANCED_INSTALLER_FAILED syscall.Errno = 14099 + ERROR_XML_ENCODING_MISMATCH syscall.Errno = 14100 + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT syscall.Errno = 14101 + ERROR_SXS_IDENTITIES_DIFFERENT syscall.Errno = 14102 + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT syscall.Errno = 14103 + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY syscall.Errno = 14104 + ERROR_SXS_MANIFEST_TOO_BIG syscall.Errno = 14105 + ERROR_SXS_SETTING_NOT_REGISTERED syscall.Errno = 14106 + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE syscall.Errno = 14107 + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108 + ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109 + ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110 + ERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS syscall.Errno = 14111 + ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000 + ERROR_EVT_INVALID_QUERY syscall.Errno = 15001 + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002 + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND syscall.Errno = 15003 + ERROR_EVT_INVALID_PUBLISHER_NAME syscall.Errno = 15004 + ERROR_EVT_INVALID_EVENT_DATA syscall.Errno = 15005 + ERROR_EVT_CHANNEL_NOT_FOUND syscall.Errno = 15007 + ERROR_EVT_MALFORMED_XML_TEXT syscall.Errno = 15008 + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL syscall.Errno = 15009 + ERROR_EVT_CONFIGURATION_ERROR syscall.Errno = 15010 + ERROR_EVT_QUERY_RESULT_STALE syscall.Errno = 15011 + ERROR_EVT_QUERY_RESULT_INVALID_POSITION syscall.Errno = 15012 + ERROR_EVT_NON_VALIDATING_MSXML syscall.Errno = 15013 + ERROR_EVT_FILTER_ALREADYSCOPED syscall.Errno = 15014 + ERROR_EVT_FILTER_NOTELTSET syscall.Errno = 15015 + ERROR_EVT_FILTER_INVARG syscall.Errno = 15016 + ERROR_EVT_FILTER_INVTEST syscall.Errno = 15017 + ERROR_EVT_FILTER_INVTYPE syscall.Errno = 15018 + ERROR_EVT_FILTER_PARSEERR syscall.Errno = 15019 + ERROR_EVT_FILTER_UNSUPPORTEDOP syscall.Errno = 15020 + ERROR_EVT_FILTER_UNEXPECTEDTOKEN syscall.Errno = 15021 + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL syscall.Errno = 15022 + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE syscall.Errno = 15023 + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE syscall.Errno = 15024 + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE syscall.Errno = 15025 + ERROR_EVT_FILTER_TOO_COMPLEX syscall.Errno = 15026 + ERROR_EVT_MESSAGE_NOT_FOUND syscall.Errno = 15027 + ERROR_EVT_MESSAGE_ID_NOT_FOUND syscall.Errno = 15028 + ERROR_EVT_UNRESOLVED_VALUE_INSERT syscall.Errno = 15029 + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT syscall.Errno = 15030 + ERROR_EVT_MAX_INSERTS_REACHED syscall.Errno = 15031 + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND syscall.Errno = 15032 + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND syscall.Errno = 15033 + ERROR_EVT_VERSION_TOO_OLD syscall.Errno = 15034 + ERROR_EVT_VERSION_TOO_NEW syscall.Errno = 15035 + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY syscall.Errno = 15036 + ERROR_EVT_PUBLISHER_DISABLED syscall.Errno = 15037 + ERROR_EVT_FILTER_OUT_OF_RANGE syscall.Errno = 15038 + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE syscall.Errno = 15080 + ERROR_EC_LOG_DISABLED syscall.Errno = 15081 + ERROR_EC_CIRCULAR_FORWARDING syscall.Errno = 15082 + ERROR_EC_CREDSTORE_FULL syscall.Errno = 15083 + ERROR_EC_CRED_NOT_FOUND syscall.Errno = 15084 + ERROR_EC_NO_ACTIVE_CHANNEL syscall.Errno = 15085 + ERROR_MUI_FILE_NOT_FOUND syscall.Errno = 15100 + ERROR_MUI_INVALID_FILE syscall.Errno = 15101 + ERROR_MUI_INVALID_RC_CONFIG syscall.Errno = 15102 + ERROR_MUI_INVALID_LOCALE_NAME syscall.Errno = 15103 + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME syscall.Errno = 15104 + ERROR_MUI_FILE_NOT_LOADED syscall.Errno = 15105 + ERROR_RESOURCE_ENUM_USER_STOP syscall.Errno = 15106 + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED syscall.Errno = 15107 + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME syscall.Errno = 15108 + ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE syscall.Errno = 15110 + ERROR_MRM_INVALID_PRICONFIG syscall.Errno = 15111 + ERROR_MRM_INVALID_FILE_TYPE syscall.Errno = 15112 + ERROR_MRM_UNKNOWN_QUALIFIER syscall.Errno = 15113 + ERROR_MRM_INVALID_QUALIFIER_VALUE syscall.Errno = 15114 + ERROR_MRM_NO_CANDIDATE syscall.Errno = 15115 + ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE syscall.Errno = 15116 + ERROR_MRM_RESOURCE_TYPE_MISMATCH syscall.Errno = 15117 + ERROR_MRM_DUPLICATE_MAP_NAME syscall.Errno = 15118 + ERROR_MRM_DUPLICATE_ENTRY syscall.Errno = 15119 + ERROR_MRM_INVALID_RESOURCE_IDENTIFIER syscall.Errno = 15120 + ERROR_MRM_FILEPATH_TOO_LONG syscall.Errno = 15121 + ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE syscall.Errno = 15122 + ERROR_MRM_INVALID_PRI_FILE syscall.Errno = 15126 + ERROR_MRM_NAMED_RESOURCE_NOT_FOUND syscall.Errno = 15127 + ERROR_MRM_MAP_NOT_FOUND syscall.Errno = 15135 + ERROR_MRM_UNSUPPORTED_PROFILE_TYPE syscall.Errno = 15136 + ERROR_MRM_INVALID_QUALIFIER_OPERATOR syscall.Errno = 15137 + ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE syscall.Errno = 15138 + ERROR_MRM_AUTOMERGE_ENABLED syscall.Errno = 15139 + ERROR_MRM_TOO_MANY_RESOURCES syscall.Errno = 15140 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE syscall.Errno = 15141 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE syscall.Errno = 15142 + ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD syscall.Errno = 15143 + ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST syscall.Errno = 15144 + ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT syscall.Errno = 15145 + ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE syscall.Errno = 15146 + ERROR_MRM_GENERATION_COUNT_MISMATCH syscall.Errno = 15147 + ERROR_PRI_MERGE_VERSION_MISMATCH syscall.Errno = 15148 + ERROR_PRI_MERGE_MISSING_SCHEMA syscall.Errno = 15149 + ERROR_PRI_MERGE_LOAD_FILE_FAILED syscall.Errno = 15150 + ERROR_PRI_MERGE_ADD_FILE_FAILED syscall.Errno = 15151 + ERROR_PRI_MERGE_WRITE_FILE_FAILED syscall.Errno = 15152 + ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED syscall.Errno = 15153 + ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED syscall.Errno = 15154 + ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED syscall.Errno = 15155 + ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED syscall.Errno = 15156 + ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157 + ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158 + ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159 + ERROR_MRM_MISSING_DEFAULT_LANGUAGE syscall.Errno = 15160 + ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200 + ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201 + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202 + ERROR_MCA_MCCS_VERSION_MISMATCH syscall.Errno = 15203 + ERROR_MCA_UNSUPPORTED_MCCS_VERSION syscall.Errno = 15204 + ERROR_MCA_INTERNAL_ERROR syscall.Errno = 15205 + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED syscall.Errno = 15206 + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE syscall.Errno = 15207 + ERROR_AMBIGUOUS_SYSTEM_DEVICE syscall.Errno = 15250 + ERROR_SYSTEM_DEVICE_NOT_FOUND syscall.Errno = 15299 + ERROR_HASH_NOT_SUPPORTED syscall.Errno = 15300 + ERROR_HASH_NOT_PRESENT syscall.Errno = 15301 + ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED syscall.Errno = 15321 + ERROR_GPIO_CLIENT_INFORMATION_INVALID syscall.Errno = 15322 + ERROR_GPIO_VERSION_NOT_SUPPORTED syscall.Errno = 15323 + ERROR_GPIO_INVALID_REGISTRATION_PACKET syscall.Errno = 15324 + ERROR_GPIO_OPERATION_DENIED syscall.Errno = 15325 + ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE syscall.Errno = 15326 + ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED syscall.Errno = 15327 + ERROR_CANNOT_SWITCH_RUNLEVEL syscall.Errno = 15400 + ERROR_INVALID_RUNLEVEL_SETTING syscall.Errno = 15401 + ERROR_RUNLEVEL_SWITCH_TIMEOUT syscall.Errno = 15402 + ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT syscall.Errno = 15403 + ERROR_RUNLEVEL_SWITCH_IN_PROGRESS syscall.Errno = 15404 + ERROR_SERVICES_FAILED_AUTOSTART syscall.Errno = 15405 + ERROR_COM_TASK_STOP_PENDING syscall.Errno = 15501 + ERROR_INSTALL_OPEN_PACKAGE_FAILED syscall.Errno = 15600 + ERROR_INSTALL_PACKAGE_NOT_FOUND syscall.Errno = 15601 + ERROR_INSTALL_INVALID_PACKAGE syscall.Errno = 15602 + ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED syscall.Errno = 15603 + ERROR_INSTALL_OUT_OF_DISK_SPACE syscall.Errno = 15604 + ERROR_INSTALL_NETWORK_FAILURE syscall.Errno = 15605 + ERROR_INSTALL_REGISTRATION_FAILURE syscall.Errno = 15606 + ERROR_INSTALL_DEREGISTRATION_FAILURE syscall.Errno = 15607 + ERROR_INSTALL_CANCEL syscall.Errno = 15608 + ERROR_INSTALL_FAILED syscall.Errno = 15609 + ERROR_REMOVE_FAILED syscall.Errno = 15610 + ERROR_PACKAGE_ALREADY_EXISTS syscall.Errno = 15611 + ERROR_NEEDS_REMEDIATION syscall.Errno = 15612 + ERROR_INSTALL_PREREQUISITE_FAILED syscall.Errno = 15613 + ERROR_PACKAGE_REPOSITORY_CORRUPTED syscall.Errno = 15614 + ERROR_INSTALL_POLICY_FAILURE syscall.Errno = 15615 + ERROR_PACKAGE_UPDATING syscall.Errno = 15616 + ERROR_DEPLOYMENT_BLOCKED_BY_POLICY syscall.Errno = 15617 + ERROR_PACKAGES_IN_USE syscall.Errno = 15618 + ERROR_RECOVERY_FILE_CORRUPT syscall.Errno = 15619 + ERROR_INVALID_STAGED_SIGNATURE syscall.Errno = 15620 + ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED syscall.Errno = 15621 + ERROR_INSTALL_PACKAGE_DOWNGRADE syscall.Errno = 15622 + ERROR_SYSTEM_NEEDS_REMEDIATION syscall.Errno = 15623 + ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN syscall.Errno = 15624 + ERROR_RESILIENCY_FILE_CORRUPT syscall.Errno = 15625 + ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING syscall.Errno = 15626 + ERROR_PACKAGE_MOVE_FAILED syscall.Errno = 15627 + ERROR_INSTALL_VOLUME_NOT_EMPTY syscall.Errno = 15628 + ERROR_INSTALL_VOLUME_OFFLINE syscall.Errno = 15629 + ERROR_INSTALL_VOLUME_CORRUPT syscall.Errno = 15630 + ERROR_NEEDS_REGISTRATION syscall.Errno = 15631 + ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE syscall.Errno = 15632 + ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED syscall.Errno = 15633 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE syscall.Errno = 15634 + ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM syscall.Errno = 15635 + ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING syscall.Errno = 15636 + ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE syscall.Errno = 15637 + ERROR_PACKAGE_STAGING_ONHOLD syscall.Errno = 15638 + ERROR_INSTALL_INVALID_RELATED_SET_UPDATE syscall.Errno = 15639 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640 + ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF syscall.Errno = 15641 + ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED syscall.Errno = 15642 + ERROR_PACKAGES_REPUTATION_CHECK_FAILED syscall.Errno = 15643 + ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT syscall.Errno = 15644 + ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645 + ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646 + ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647 + ERROR_APPX_RAW_DATA_WRITE_FAILED syscall.Errno = 15648 + ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE syscall.Errno = 15649 + ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE syscall.Errno = 15650 + ERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY syscall.Errno = 15651 + ERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY syscall.Errno = 15652 + ERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER syscall.Errno = 15653 + ERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED syscall.Errno = 15654 + ERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE syscall.Errno = 15655 + ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES syscall.Errno = 15656 + APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700 + APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701 + APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702 + APPMODEL_ERROR_NO_APPLICATION syscall.Errno = 15703 + APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704 + APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705 + APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706 + APPMODEL_ERROR_NO_MUTABLE_DIRECTORY syscall.Errno = 15707 + ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800 + ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801 + ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802 + ERROR_STATE_STRUCTURED_RESET_FAILED syscall.Errno = 15803 + ERROR_STATE_OPEN_CONTAINER_FAILED syscall.Errno = 15804 + ERROR_STATE_CREATE_CONTAINER_FAILED syscall.Errno = 15805 + ERROR_STATE_DELETE_CONTAINER_FAILED syscall.Errno = 15806 + ERROR_STATE_READ_SETTING_FAILED syscall.Errno = 15807 + ERROR_STATE_WRITE_SETTING_FAILED syscall.Errno = 15808 + ERROR_STATE_DELETE_SETTING_FAILED syscall.Errno = 15809 + ERROR_STATE_QUERY_SETTING_FAILED syscall.Errno = 15810 + ERROR_STATE_READ_COMPOSITE_SETTING_FAILED syscall.Errno = 15811 + ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED syscall.Errno = 15812 + ERROR_STATE_ENUMERATE_CONTAINER_FAILED syscall.Errno = 15813 + ERROR_STATE_ENUMERATE_SETTINGS_FAILED syscall.Errno = 15814 + ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15815 + ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15816 + ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15817 + ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15818 + ERROR_API_UNAVAILABLE syscall.Errno = 15841 + STORE_ERROR_UNLICENSED syscall.Errno = 15861 + STORE_ERROR_UNLICENSED_USER syscall.Errno = 15862 + STORE_ERROR_PENDING_COM_TRANSACTION syscall.Errno = 15863 + STORE_ERROR_LICENSE_REVOKED syscall.Errno = 15864 + SEVERITY_SUCCESS syscall.Errno = 0 + SEVERITY_ERROR syscall.Errno = 1 + FACILITY_NT_BIT = 0x10000000 + E_NOT_SET = ERROR_NOT_FOUND + E_NOT_VALID_STATE = ERROR_INVALID_STATE + E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER + E_TIME_SENSITIVE_THREAD = ERROR_TIME_SENSITIVE_THREAD + E_NO_TASK_QUEUE = ERROR_NO_TASK_QUEUE + NOERROR syscall.Errno = 0 + E_UNEXPECTED Handle = 0x8000FFFF + E_NOTIMPL Handle = 0x80004001 + E_OUTOFMEMORY Handle = 0x8007000E + E_INVALIDARG Handle = 0x80070057 + E_NOINTERFACE Handle = 0x80004002 + E_POINTER Handle = 0x80004003 + E_HANDLE Handle = 0x80070006 + E_ABORT Handle = 0x80004004 + E_FAIL Handle = 0x80004005 + E_ACCESSDENIED Handle = 0x80070005 + E_PENDING Handle = 0x8000000A + E_BOUNDS Handle = 0x8000000B + E_CHANGED_STATE Handle = 0x8000000C + E_ILLEGAL_STATE_CHANGE Handle = 0x8000000D + E_ILLEGAL_METHOD_CALL Handle = 0x8000000E + RO_E_METADATA_NAME_NOT_FOUND Handle = 0x8000000F + RO_E_METADATA_NAME_IS_NAMESPACE Handle = 0x80000010 + RO_E_METADATA_INVALID_TYPE_FORMAT Handle = 0x80000011 + RO_E_INVALID_METADATA_FILE Handle = 0x80000012 + RO_E_CLOSED Handle = 0x80000013 + RO_E_EXCLUSIVE_WRITE Handle = 0x80000014 + RO_E_CHANGE_NOTIFICATION_IN_PROGRESS Handle = 0x80000015 + RO_E_ERROR_STRING_NOT_FOUND Handle = 0x80000016 + E_STRING_NOT_NULL_TERMINATED Handle = 0x80000017 + E_ILLEGAL_DELEGATE_ASSIGNMENT Handle = 0x80000018 + E_ASYNC_OPERATION_NOT_STARTED Handle = 0x80000019 + E_APPLICATION_EXITING Handle = 0x8000001A + E_APPLICATION_VIEW_EXITING Handle = 0x8000001B + RO_E_MUST_BE_AGILE Handle = 0x8000001C + RO_E_UNSUPPORTED_FROM_MTA Handle = 0x8000001D + RO_E_COMMITTED Handle = 0x8000001E + RO_E_BLOCKED_CROSS_ASTA_CALL Handle = 0x8000001F + RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER Handle = 0x80000020 + RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER Handle = 0x80000021 + CO_E_INIT_TLS Handle = 0x80004006 + CO_E_INIT_SHARED_ALLOCATOR Handle = 0x80004007 + CO_E_INIT_MEMORY_ALLOCATOR Handle = 0x80004008 + CO_E_INIT_CLASS_CACHE Handle = 0x80004009 + CO_E_INIT_RPC_CHANNEL Handle = 0x8000400A + CO_E_INIT_TLS_SET_CHANNEL_CONTROL Handle = 0x8000400B + CO_E_INIT_TLS_CHANNEL_CONTROL Handle = 0x8000400C + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR Handle = 0x8000400D + CO_E_INIT_SCM_MUTEX_EXISTS Handle = 0x8000400E + CO_E_INIT_SCM_FILE_MAPPING_EXISTS Handle = 0x8000400F + CO_E_INIT_SCM_MAP_VIEW_OF_FILE Handle = 0x80004010 + CO_E_INIT_SCM_EXEC_FAILURE Handle = 0x80004011 + CO_E_INIT_ONLY_SINGLE_THREADED Handle = 0x80004012 + CO_E_CANT_REMOTE Handle = 0x80004013 + CO_E_BAD_SERVER_NAME Handle = 0x80004014 + CO_E_WRONG_SERVER_IDENTITY Handle = 0x80004015 + CO_E_OLE1DDE_DISABLED Handle = 0x80004016 + CO_E_RUNAS_SYNTAX Handle = 0x80004017 + CO_E_CREATEPROCESS_FAILURE Handle = 0x80004018 + CO_E_RUNAS_CREATEPROCESS_FAILURE Handle = 0x80004019 + CO_E_RUNAS_LOGON_FAILURE Handle = 0x8000401A + CO_E_LAUNCH_PERMSSION_DENIED Handle = 0x8000401B + CO_E_START_SERVICE_FAILURE Handle = 0x8000401C + CO_E_REMOTE_COMMUNICATION_FAILURE Handle = 0x8000401D + CO_E_SERVER_START_TIMEOUT Handle = 0x8000401E + CO_E_CLSREG_INCONSISTENT Handle = 0x8000401F + CO_E_IIDREG_INCONSISTENT Handle = 0x80004020 + CO_E_NOT_SUPPORTED Handle = 0x80004021 + CO_E_RELOAD_DLL Handle = 0x80004022 + CO_E_MSI_ERROR Handle = 0x80004023 + CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT Handle = 0x80004024 + CO_E_SERVER_PAUSED Handle = 0x80004025 + CO_E_SERVER_NOT_PAUSED Handle = 0x80004026 + CO_E_CLASS_DISABLED Handle = 0x80004027 + CO_E_CLRNOTAVAILABLE Handle = 0x80004028 + CO_E_ASYNC_WORK_REJECTED Handle = 0x80004029 + CO_E_SERVER_INIT_TIMEOUT Handle = 0x8000402A + CO_E_NO_SECCTX_IN_ACTIVATE Handle = 0x8000402B + CO_E_TRACKER_CONFIG Handle = 0x80004030 + CO_E_THREADPOOL_CONFIG Handle = 0x80004031 + CO_E_SXS_CONFIG Handle = 0x80004032 + CO_E_MALFORMED_SPN Handle = 0x80004033 + CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN Handle = 0x80004034 + CO_E_PREMATURE_STUB_RUNDOWN Handle = 0x80004035 + S_OK Handle = 0 + S_FALSE Handle = 1 + OLE_E_FIRST Handle = 0x80040000 + OLE_E_LAST Handle = 0x800400FF + OLE_S_FIRST Handle = 0x00040000 + OLE_S_LAST Handle = 0x000400FF + OLE_E_OLEVERB Handle = 0x80040000 + OLE_E_ADVF Handle = 0x80040001 + OLE_E_ENUM_NOMORE Handle = 0x80040002 + OLE_E_ADVISENOTSUPPORTED Handle = 0x80040003 + OLE_E_NOCONNECTION Handle = 0x80040004 + OLE_E_NOTRUNNING Handle = 0x80040005 + OLE_E_NOCACHE Handle = 0x80040006 + OLE_E_BLANK Handle = 0x80040007 + OLE_E_CLASSDIFF Handle = 0x80040008 + OLE_E_CANT_GETMONIKER Handle = 0x80040009 + OLE_E_CANT_BINDTOSOURCE Handle = 0x8004000A + OLE_E_STATIC Handle = 0x8004000B + OLE_E_PROMPTSAVECANCELLED Handle = 0x8004000C + OLE_E_INVALIDRECT Handle = 0x8004000D + OLE_E_WRONGCOMPOBJ Handle = 0x8004000E + OLE_E_INVALIDHWND Handle = 0x8004000F + OLE_E_NOT_INPLACEACTIVE Handle = 0x80040010 + OLE_E_CANTCONVERT Handle = 0x80040011 + OLE_E_NOSTORAGE Handle = 0x80040012 + DV_E_FORMATETC Handle = 0x80040064 + DV_E_DVTARGETDEVICE Handle = 0x80040065 + DV_E_STGMEDIUM Handle = 0x80040066 + DV_E_STATDATA Handle = 0x80040067 + DV_E_LINDEX Handle = 0x80040068 + DV_E_TYMED Handle = 0x80040069 + DV_E_CLIPFORMAT Handle = 0x8004006A + DV_E_DVASPECT Handle = 0x8004006B + DV_E_DVTARGETDEVICE_SIZE Handle = 0x8004006C + DV_E_NOIVIEWOBJECT Handle = 0x8004006D + DRAGDROP_E_FIRST syscall.Errno = 0x80040100 + DRAGDROP_E_LAST syscall.Errno = 0x8004010F + DRAGDROP_S_FIRST syscall.Errno = 0x00040100 + DRAGDROP_S_LAST syscall.Errno = 0x0004010F + DRAGDROP_E_NOTREGISTERED Handle = 0x80040100 + DRAGDROP_E_ALREADYREGISTERED Handle = 0x80040101 + DRAGDROP_E_INVALIDHWND Handle = 0x80040102 + DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED Handle = 0x80040103 + CLASSFACTORY_E_FIRST syscall.Errno = 0x80040110 + CLASSFACTORY_E_LAST syscall.Errno = 0x8004011F + CLASSFACTORY_S_FIRST syscall.Errno = 0x00040110 + CLASSFACTORY_S_LAST syscall.Errno = 0x0004011F + CLASS_E_NOAGGREGATION Handle = 0x80040110 + CLASS_E_CLASSNOTAVAILABLE Handle = 0x80040111 + CLASS_E_NOTLICENSED Handle = 0x80040112 + MARSHAL_E_FIRST syscall.Errno = 0x80040120 + MARSHAL_E_LAST syscall.Errno = 0x8004012F + MARSHAL_S_FIRST syscall.Errno = 0x00040120 + MARSHAL_S_LAST syscall.Errno = 0x0004012F + DATA_E_FIRST syscall.Errno = 0x80040130 + DATA_E_LAST syscall.Errno = 0x8004013F + DATA_S_FIRST syscall.Errno = 0x00040130 + DATA_S_LAST syscall.Errno = 0x0004013F + VIEW_E_FIRST syscall.Errno = 0x80040140 + VIEW_E_LAST syscall.Errno = 0x8004014F + VIEW_S_FIRST syscall.Errno = 0x00040140 + VIEW_S_LAST syscall.Errno = 0x0004014F + VIEW_E_DRAW Handle = 0x80040140 + REGDB_E_FIRST syscall.Errno = 0x80040150 + REGDB_E_LAST syscall.Errno = 0x8004015F + REGDB_S_FIRST syscall.Errno = 0x00040150 + REGDB_S_LAST syscall.Errno = 0x0004015F + REGDB_E_READREGDB Handle = 0x80040150 + REGDB_E_WRITEREGDB Handle = 0x80040151 + REGDB_E_KEYMISSING Handle = 0x80040152 + REGDB_E_INVALIDVALUE Handle = 0x80040153 + REGDB_E_CLASSNOTREG Handle = 0x80040154 + REGDB_E_IIDNOTREG Handle = 0x80040155 + REGDB_E_BADTHREADINGMODEL Handle = 0x80040156 + REGDB_E_PACKAGEPOLICYVIOLATION Handle = 0x80040157 + CAT_E_FIRST syscall.Errno = 0x80040160 + CAT_E_LAST syscall.Errno = 0x80040161 + CAT_E_CATIDNOEXIST Handle = 0x80040160 + CAT_E_NODESCRIPTION Handle = 0x80040161 + CS_E_FIRST syscall.Errno = 0x80040164 + CS_E_LAST syscall.Errno = 0x8004016F + CS_E_PACKAGE_NOTFOUND Handle = 0x80040164 + CS_E_NOT_DELETABLE Handle = 0x80040165 + CS_E_CLASS_NOTFOUND Handle = 0x80040166 + CS_E_INVALID_VERSION Handle = 0x80040167 + CS_E_NO_CLASSSTORE Handle = 0x80040168 + CS_E_OBJECT_NOTFOUND Handle = 0x80040169 + CS_E_OBJECT_ALREADY_EXISTS Handle = 0x8004016A + CS_E_INVALID_PATH Handle = 0x8004016B + CS_E_NETWORK_ERROR Handle = 0x8004016C + CS_E_ADMIN_LIMIT_EXCEEDED Handle = 0x8004016D + CS_E_SCHEMA_MISMATCH Handle = 0x8004016E + CS_E_INTERNAL_ERROR Handle = 0x8004016F + CACHE_E_FIRST syscall.Errno = 0x80040170 + CACHE_E_LAST syscall.Errno = 0x8004017F + CACHE_S_FIRST syscall.Errno = 0x00040170 + CACHE_S_LAST syscall.Errno = 0x0004017F + CACHE_E_NOCACHE_UPDATED Handle = 0x80040170 + OLEOBJ_E_FIRST syscall.Errno = 0x80040180 + OLEOBJ_E_LAST syscall.Errno = 0x8004018F + OLEOBJ_S_FIRST syscall.Errno = 0x00040180 + OLEOBJ_S_LAST syscall.Errno = 0x0004018F + OLEOBJ_E_NOVERBS Handle = 0x80040180 + OLEOBJ_E_INVALIDVERB Handle = 0x80040181 + CLIENTSITE_E_FIRST syscall.Errno = 0x80040190 + CLIENTSITE_E_LAST syscall.Errno = 0x8004019F + CLIENTSITE_S_FIRST syscall.Errno = 0x00040190 + CLIENTSITE_S_LAST syscall.Errno = 0x0004019F + INPLACE_E_NOTUNDOABLE Handle = 0x800401A0 + INPLACE_E_NOTOOLSPACE Handle = 0x800401A1 + INPLACE_E_FIRST syscall.Errno = 0x800401A0 + INPLACE_E_LAST syscall.Errno = 0x800401AF + INPLACE_S_FIRST syscall.Errno = 0x000401A0 + INPLACE_S_LAST syscall.Errno = 0x000401AF + ENUM_E_FIRST syscall.Errno = 0x800401B0 + ENUM_E_LAST syscall.Errno = 0x800401BF + ENUM_S_FIRST syscall.Errno = 0x000401B0 + ENUM_S_LAST syscall.Errno = 0x000401BF + CONVERT10_E_FIRST syscall.Errno = 0x800401C0 + CONVERT10_E_LAST syscall.Errno = 0x800401CF + CONVERT10_S_FIRST syscall.Errno = 0x000401C0 + CONVERT10_S_LAST syscall.Errno = 0x000401CF + CONVERT10_E_OLESTREAM_GET Handle = 0x800401C0 + CONVERT10_E_OLESTREAM_PUT Handle = 0x800401C1 + CONVERT10_E_OLESTREAM_FMT Handle = 0x800401C2 + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB Handle = 0x800401C3 + CONVERT10_E_STG_FMT Handle = 0x800401C4 + CONVERT10_E_STG_NO_STD_STREAM Handle = 0x800401C5 + CONVERT10_E_STG_DIB_TO_BITMAP Handle = 0x800401C6 + CLIPBRD_E_FIRST syscall.Errno = 0x800401D0 + CLIPBRD_E_LAST syscall.Errno = 0x800401DF + CLIPBRD_S_FIRST syscall.Errno = 0x000401D0 + CLIPBRD_S_LAST syscall.Errno = 0x000401DF + CLIPBRD_E_CANT_OPEN Handle = 0x800401D0 + CLIPBRD_E_CANT_EMPTY Handle = 0x800401D1 + CLIPBRD_E_CANT_SET Handle = 0x800401D2 + CLIPBRD_E_BAD_DATA Handle = 0x800401D3 + CLIPBRD_E_CANT_CLOSE Handle = 0x800401D4 + MK_E_FIRST syscall.Errno = 0x800401E0 + MK_E_LAST syscall.Errno = 0x800401EF + MK_S_FIRST syscall.Errno = 0x000401E0 + MK_S_LAST syscall.Errno = 0x000401EF + MK_E_CONNECTMANUALLY Handle = 0x800401E0 + MK_E_EXCEEDEDDEADLINE Handle = 0x800401E1 + MK_E_NEEDGENERIC Handle = 0x800401E2 + MK_E_UNAVAILABLE Handle = 0x800401E3 + MK_E_SYNTAX Handle = 0x800401E4 + MK_E_NOOBJECT Handle = 0x800401E5 + MK_E_INVALIDEXTENSION Handle = 0x800401E6 + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED Handle = 0x800401E7 + MK_E_NOTBINDABLE Handle = 0x800401E8 + MK_E_NOTBOUND Handle = 0x800401E9 + MK_E_CANTOPENFILE Handle = 0x800401EA + MK_E_MUSTBOTHERUSER Handle = 0x800401EB + MK_E_NOINVERSE Handle = 0x800401EC + MK_E_NOSTORAGE Handle = 0x800401ED + MK_E_NOPREFIX Handle = 0x800401EE + MK_E_ENUMERATION_FAILED Handle = 0x800401EF + CO_E_FIRST syscall.Errno = 0x800401F0 + CO_E_LAST syscall.Errno = 0x800401FF + CO_S_FIRST syscall.Errno = 0x000401F0 + CO_S_LAST syscall.Errno = 0x000401FF + CO_E_NOTINITIALIZED Handle = 0x800401F0 + CO_E_ALREADYINITIALIZED Handle = 0x800401F1 + CO_E_CANTDETERMINECLASS Handle = 0x800401F2 + CO_E_CLASSSTRING Handle = 0x800401F3 + CO_E_IIDSTRING Handle = 0x800401F4 + CO_E_APPNOTFOUND Handle = 0x800401F5 + CO_E_APPSINGLEUSE Handle = 0x800401F6 + CO_E_ERRORINAPP Handle = 0x800401F7 + CO_E_DLLNOTFOUND Handle = 0x800401F8 + CO_E_ERRORINDLL Handle = 0x800401F9 + CO_E_WRONGOSFORAPP Handle = 0x800401FA + CO_E_OBJNOTREG Handle = 0x800401FB + CO_E_OBJISREG Handle = 0x800401FC + CO_E_OBJNOTCONNECTED Handle = 0x800401FD + CO_E_APPDIDNTREG Handle = 0x800401FE + CO_E_RELEASED Handle = 0x800401FF + EVENT_E_FIRST syscall.Errno = 0x80040200 + EVENT_E_LAST syscall.Errno = 0x8004021F + EVENT_S_FIRST syscall.Errno = 0x00040200 + EVENT_S_LAST syscall.Errno = 0x0004021F + EVENT_S_SOME_SUBSCRIBERS_FAILED Handle = 0x00040200 + EVENT_E_ALL_SUBSCRIBERS_FAILED Handle = 0x80040201 + EVENT_S_NOSUBSCRIBERS Handle = 0x00040202 + EVENT_E_QUERYSYNTAX Handle = 0x80040203 + EVENT_E_QUERYFIELD Handle = 0x80040204 + EVENT_E_INTERNALEXCEPTION Handle = 0x80040205 + EVENT_E_INTERNALERROR Handle = 0x80040206 + EVENT_E_INVALID_PER_USER_SID Handle = 0x80040207 + EVENT_E_USER_EXCEPTION Handle = 0x80040208 + EVENT_E_TOO_MANY_METHODS Handle = 0x80040209 + EVENT_E_MISSING_EVENTCLASS Handle = 0x8004020A + EVENT_E_NOT_ALL_REMOVED Handle = 0x8004020B + EVENT_E_COMPLUS_NOT_INSTALLED Handle = 0x8004020C + EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT Handle = 0x8004020D + EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT Handle = 0x8004020E + EVENT_E_INVALID_EVENT_CLASS_PARTITION Handle = 0x8004020F + EVENT_E_PER_USER_SID_NOT_LOGGED_ON Handle = 0x80040210 + TPC_E_INVALID_PROPERTY Handle = 0x80040241 + TPC_E_NO_DEFAULT_TABLET Handle = 0x80040212 + TPC_E_UNKNOWN_PROPERTY Handle = 0x8004021B + TPC_E_INVALID_INPUT_RECT Handle = 0x80040219 + TPC_E_INVALID_STROKE Handle = 0x80040222 + TPC_E_INITIALIZE_FAIL Handle = 0x80040223 + TPC_E_NOT_RELEVANT Handle = 0x80040232 + TPC_E_INVALID_PACKET_DESCRIPTION Handle = 0x80040233 + TPC_E_RECOGNIZER_NOT_REGISTERED Handle = 0x80040235 + TPC_E_INVALID_RIGHTS Handle = 0x80040236 + TPC_E_OUT_OF_ORDER_CALL Handle = 0x80040237 + TPC_E_QUEUE_FULL Handle = 0x80040238 + TPC_E_INVALID_CONFIGURATION Handle = 0x80040239 + TPC_E_INVALID_DATA_FROM_RECOGNIZER Handle = 0x8004023A + TPC_S_TRUNCATED Handle = 0x00040252 + TPC_S_INTERRUPTED Handle = 0x00040253 + TPC_S_NO_DATA_TO_PROCESS Handle = 0x00040254 + XACT_E_FIRST syscall.Errno = 0x8004D000 + XACT_E_LAST syscall.Errno = 0x8004D02B + XACT_S_FIRST syscall.Errno = 0x0004D000 + XACT_S_LAST syscall.Errno = 0x0004D010 + XACT_E_ALREADYOTHERSINGLEPHASE Handle = 0x8004D000 + XACT_E_CANTRETAIN Handle = 0x8004D001 + XACT_E_COMMITFAILED Handle = 0x8004D002 + XACT_E_COMMITPREVENTED Handle = 0x8004D003 + XACT_E_HEURISTICABORT Handle = 0x8004D004 + XACT_E_HEURISTICCOMMIT Handle = 0x8004D005 + XACT_E_HEURISTICDAMAGE Handle = 0x8004D006 + XACT_E_HEURISTICDANGER Handle = 0x8004D007 + XACT_E_ISOLATIONLEVEL Handle = 0x8004D008 + XACT_E_NOASYNC Handle = 0x8004D009 + XACT_E_NOENLIST Handle = 0x8004D00A + XACT_E_NOISORETAIN Handle = 0x8004D00B + XACT_E_NORESOURCE Handle = 0x8004D00C + XACT_E_NOTCURRENT Handle = 0x8004D00D + XACT_E_NOTRANSACTION Handle = 0x8004D00E + XACT_E_NOTSUPPORTED Handle = 0x8004D00F + XACT_E_UNKNOWNRMGRID Handle = 0x8004D010 + XACT_E_WRONGSTATE Handle = 0x8004D011 + XACT_E_WRONGUOW Handle = 0x8004D012 + XACT_E_XTIONEXISTS Handle = 0x8004D013 + XACT_E_NOIMPORTOBJECT Handle = 0x8004D014 + XACT_E_INVALIDCOOKIE Handle = 0x8004D015 + XACT_E_INDOUBT Handle = 0x8004D016 + XACT_E_NOTIMEOUT Handle = 0x8004D017 + XACT_E_ALREADYINPROGRESS Handle = 0x8004D018 + XACT_E_ABORTED Handle = 0x8004D019 + XACT_E_LOGFULL Handle = 0x8004D01A + XACT_E_TMNOTAVAILABLE Handle = 0x8004D01B + XACT_E_CONNECTION_DOWN Handle = 0x8004D01C + XACT_E_CONNECTION_DENIED Handle = 0x8004D01D + XACT_E_REENLISTTIMEOUT Handle = 0x8004D01E + XACT_E_TIP_CONNECT_FAILED Handle = 0x8004D01F + XACT_E_TIP_PROTOCOL_ERROR Handle = 0x8004D020 + XACT_E_TIP_PULL_FAILED Handle = 0x8004D021 + XACT_E_DEST_TMNOTAVAILABLE Handle = 0x8004D022 + XACT_E_TIP_DISABLED Handle = 0x8004D023 + XACT_E_NETWORK_TX_DISABLED Handle = 0x8004D024 + XACT_E_PARTNER_NETWORK_TX_DISABLED Handle = 0x8004D025 + XACT_E_XA_TX_DISABLED Handle = 0x8004D026 + XACT_E_UNABLE_TO_READ_DTC_CONFIG Handle = 0x8004D027 + XACT_E_UNABLE_TO_LOAD_DTC_PROXY Handle = 0x8004D028 + XACT_E_ABORTING Handle = 0x8004D029 + XACT_E_PUSH_COMM_FAILURE Handle = 0x8004D02A + XACT_E_PULL_COMM_FAILURE Handle = 0x8004D02B + XACT_E_LU_TX_DISABLED Handle = 0x8004D02C + XACT_E_CLERKNOTFOUND Handle = 0x8004D080 + XACT_E_CLERKEXISTS Handle = 0x8004D081 + XACT_E_RECOVERYINPROGRESS Handle = 0x8004D082 + XACT_E_TRANSACTIONCLOSED Handle = 0x8004D083 + XACT_E_INVALIDLSN Handle = 0x8004D084 + XACT_E_REPLAYREQUEST Handle = 0x8004D085 + XACT_S_ASYNC Handle = 0x0004D000 + XACT_S_DEFECT Handle = 0x0004D001 + XACT_S_READONLY Handle = 0x0004D002 + XACT_S_SOMENORETAIN Handle = 0x0004D003 + XACT_S_OKINFORM Handle = 0x0004D004 + XACT_S_MADECHANGESCONTENT Handle = 0x0004D005 + XACT_S_MADECHANGESINFORM Handle = 0x0004D006 + XACT_S_ALLNORETAIN Handle = 0x0004D007 + XACT_S_ABORTING Handle = 0x0004D008 + XACT_S_SINGLEPHASE Handle = 0x0004D009 + XACT_S_LOCALLY_OK Handle = 0x0004D00A + XACT_S_LASTRESOURCEMANAGER Handle = 0x0004D010 + CONTEXT_E_FIRST syscall.Errno = 0x8004E000 + CONTEXT_E_LAST syscall.Errno = 0x8004E02F + CONTEXT_S_FIRST syscall.Errno = 0x0004E000 + CONTEXT_S_LAST syscall.Errno = 0x0004E02F + CONTEXT_E_ABORTED Handle = 0x8004E002 + CONTEXT_E_ABORTING Handle = 0x8004E003 + CONTEXT_E_NOCONTEXT Handle = 0x8004E004 + CONTEXT_E_WOULD_DEADLOCK Handle = 0x8004E005 + CONTEXT_E_SYNCH_TIMEOUT Handle = 0x8004E006 + CONTEXT_E_OLDREF Handle = 0x8004E007 + CONTEXT_E_ROLENOTFOUND Handle = 0x8004E00C + CONTEXT_E_TMNOTAVAILABLE Handle = 0x8004E00F + CO_E_ACTIVATIONFAILED Handle = 0x8004E021 + CO_E_ACTIVATIONFAILED_EVENTLOGGED Handle = 0x8004E022 + CO_E_ACTIVATIONFAILED_CATALOGERROR Handle = 0x8004E023 + CO_E_ACTIVATIONFAILED_TIMEOUT Handle = 0x8004E024 + CO_E_INITIALIZATIONFAILED Handle = 0x8004E025 + CONTEXT_E_NOJIT Handle = 0x8004E026 + CONTEXT_E_NOTRANSACTION Handle = 0x8004E027 + CO_E_THREADINGMODEL_CHANGED Handle = 0x8004E028 + CO_E_NOIISINTRINSICS Handle = 0x8004E029 + CO_E_NOCOOKIES Handle = 0x8004E02A + CO_E_DBERROR Handle = 0x8004E02B + CO_E_NOTPOOLED Handle = 0x8004E02C + CO_E_NOTCONSTRUCTED Handle = 0x8004E02D + CO_E_NOSYNCHRONIZATION Handle = 0x8004E02E + CO_E_ISOLEVELMISMATCH Handle = 0x8004E02F + CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED Handle = 0x8004E030 + CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED Handle = 0x8004E031 + OLE_S_USEREG Handle = 0x00040000 + OLE_S_STATIC Handle = 0x00040001 + OLE_S_MAC_CLIPFORMAT Handle = 0x00040002 + DRAGDROP_S_DROP Handle = 0x00040100 + DRAGDROP_S_CANCEL Handle = 0x00040101 + DRAGDROP_S_USEDEFAULTCURSORS Handle = 0x00040102 + DATA_S_SAMEFORMATETC Handle = 0x00040130 + VIEW_S_ALREADY_FROZEN Handle = 0x00040140 + CACHE_S_FORMATETC_NOTSUPPORTED Handle = 0x00040170 + CACHE_S_SAMECACHE Handle = 0x00040171 + CACHE_S_SOMECACHES_NOTUPDATED Handle = 0x00040172 + OLEOBJ_S_INVALIDVERB Handle = 0x00040180 + OLEOBJ_S_CANNOT_DOVERB_NOW Handle = 0x00040181 + OLEOBJ_S_INVALIDHWND Handle = 0x00040182 + INPLACE_S_TRUNCATED Handle = 0x000401A0 + CONVERT10_S_NO_PRESENTATION Handle = 0x000401C0 + MK_S_REDUCED_TO_SELF Handle = 0x000401E2 + MK_S_ME Handle = 0x000401E4 + MK_S_HIM Handle = 0x000401E5 + MK_S_US Handle = 0x000401E6 + MK_S_MONIKERALREADYREGISTERED Handle = 0x000401E7 + SCHED_S_TASK_READY Handle = 0x00041300 + SCHED_S_TASK_RUNNING Handle = 0x00041301 + SCHED_S_TASK_DISABLED Handle = 0x00041302 + SCHED_S_TASK_HAS_NOT_RUN Handle = 0x00041303 + SCHED_S_TASK_NO_MORE_RUNS Handle = 0x00041304 + SCHED_S_TASK_NOT_SCHEDULED Handle = 0x00041305 + SCHED_S_TASK_TERMINATED Handle = 0x00041306 + SCHED_S_TASK_NO_VALID_TRIGGERS Handle = 0x00041307 + SCHED_S_EVENT_TRIGGER Handle = 0x00041308 + SCHED_E_TRIGGER_NOT_FOUND Handle = 0x80041309 + SCHED_E_TASK_NOT_READY Handle = 0x8004130A + SCHED_E_TASK_NOT_RUNNING Handle = 0x8004130B + SCHED_E_SERVICE_NOT_INSTALLED Handle = 0x8004130C + SCHED_E_CANNOT_OPEN_TASK Handle = 0x8004130D + SCHED_E_INVALID_TASK Handle = 0x8004130E + SCHED_E_ACCOUNT_INFORMATION_NOT_SET Handle = 0x8004130F + SCHED_E_ACCOUNT_NAME_NOT_FOUND Handle = 0x80041310 + SCHED_E_ACCOUNT_DBASE_CORRUPT Handle = 0x80041311 + SCHED_E_NO_SECURITY_SERVICES Handle = 0x80041312 + SCHED_E_UNKNOWN_OBJECT_VERSION Handle = 0x80041313 + SCHED_E_UNSUPPORTED_ACCOUNT_OPTION Handle = 0x80041314 + SCHED_E_SERVICE_NOT_RUNNING Handle = 0x80041315 + SCHED_E_UNEXPECTEDNODE Handle = 0x80041316 + SCHED_E_NAMESPACE Handle = 0x80041317 + SCHED_E_INVALIDVALUE Handle = 0x80041318 + SCHED_E_MISSINGNODE Handle = 0x80041319 + SCHED_E_MALFORMEDXML Handle = 0x8004131A + SCHED_S_SOME_TRIGGERS_FAILED Handle = 0x0004131B + SCHED_S_BATCH_LOGON_PROBLEM Handle = 0x0004131C + SCHED_E_TOO_MANY_NODES Handle = 0x8004131D + SCHED_E_PAST_END_BOUNDARY Handle = 0x8004131E + SCHED_E_ALREADY_RUNNING Handle = 0x8004131F + SCHED_E_USER_NOT_LOGGED_ON Handle = 0x80041320 + SCHED_E_INVALID_TASK_HASH Handle = 0x80041321 + SCHED_E_SERVICE_NOT_AVAILABLE Handle = 0x80041322 + SCHED_E_SERVICE_TOO_BUSY Handle = 0x80041323 + SCHED_E_TASK_ATTEMPTED Handle = 0x80041324 + SCHED_S_TASK_QUEUED Handle = 0x00041325 + SCHED_E_TASK_DISABLED Handle = 0x80041326 + SCHED_E_TASK_NOT_V1_COMPAT Handle = 0x80041327 + SCHED_E_START_ON_DEMAND Handle = 0x80041328 + SCHED_E_TASK_NOT_UBPM_COMPAT Handle = 0x80041329 + SCHED_E_DEPRECATED_FEATURE_USED Handle = 0x80041330 + CO_E_CLASS_CREATE_FAILED Handle = 0x80080001 + CO_E_SCM_ERROR Handle = 0x80080002 + CO_E_SCM_RPC_FAILURE Handle = 0x80080003 + CO_E_BAD_PATH Handle = 0x80080004 + CO_E_SERVER_EXEC_FAILURE Handle = 0x80080005 + CO_E_OBJSRV_RPC_FAILURE Handle = 0x80080006 + MK_E_NO_NORMALIZED Handle = 0x80080007 + CO_E_SERVER_STOPPING Handle = 0x80080008 + MEM_E_INVALID_ROOT Handle = 0x80080009 + MEM_E_INVALID_LINK Handle = 0x80080010 + MEM_E_INVALID_SIZE Handle = 0x80080011 + CO_S_NOTALLINTERFACES Handle = 0x00080012 + CO_S_MACHINENAMENOTFOUND Handle = 0x00080013 + CO_E_MISSING_DISPLAYNAME Handle = 0x80080015 + CO_E_RUNAS_VALUE_MUST_BE_AAA Handle = 0x80080016 + CO_E_ELEVATION_DISABLED Handle = 0x80080017 + APPX_E_PACKAGING_INTERNAL Handle = 0x80080200 + APPX_E_INTERLEAVING_NOT_ALLOWED Handle = 0x80080201 + APPX_E_RELATIONSHIPS_NOT_ALLOWED Handle = 0x80080202 + APPX_E_MISSING_REQUIRED_FILE Handle = 0x80080203 + APPX_E_INVALID_MANIFEST Handle = 0x80080204 + APPX_E_INVALID_BLOCKMAP Handle = 0x80080205 + APPX_E_CORRUPT_CONTENT Handle = 0x80080206 + APPX_E_BLOCK_HASH_INVALID Handle = 0x80080207 + APPX_E_REQUESTED_RANGE_TOO_LARGE Handle = 0x80080208 + APPX_E_INVALID_SIP_CLIENT_DATA Handle = 0x80080209 + APPX_E_INVALID_KEY_INFO Handle = 0x8008020A + APPX_E_INVALID_CONTENTGROUPMAP Handle = 0x8008020B + APPX_E_INVALID_APPINSTALLER Handle = 0x8008020C + APPX_E_DELTA_BASELINE_VERSION_MISMATCH Handle = 0x8008020D + APPX_E_DELTA_PACKAGE_MISSING_FILE Handle = 0x8008020E + APPX_E_INVALID_DELTA_PACKAGE Handle = 0x8008020F + APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED Handle = 0x80080210 + APPX_E_INVALID_PACKAGING_LAYOUT Handle = 0x80080211 + APPX_E_INVALID_PACKAGESIGNCONFIG Handle = 0x80080212 + APPX_E_RESOURCESPRI_NOT_ALLOWED Handle = 0x80080213 + APPX_E_FILE_COMPRESSION_MISMATCH Handle = 0x80080214 + APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION Handle = 0x80080215 + APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST Handle = 0x80080216 + BT_E_SPURIOUS_ACTIVATION Handle = 0x80080300 + DISP_E_UNKNOWNINTERFACE Handle = 0x80020001 + DISP_E_MEMBERNOTFOUND Handle = 0x80020003 + DISP_E_PARAMNOTFOUND Handle = 0x80020004 + DISP_E_TYPEMISMATCH Handle = 0x80020005 + DISP_E_UNKNOWNNAME Handle = 0x80020006 + DISP_E_NONAMEDARGS Handle = 0x80020007 + DISP_E_BADVARTYPE Handle = 0x80020008 + DISP_E_EXCEPTION Handle = 0x80020009 + DISP_E_OVERFLOW Handle = 0x8002000A + DISP_E_BADINDEX Handle = 0x8002000B + DISP_E_UNKNOWNLCID Handle = 0x8002000C + DISP_E_ARRAYISLOCKED Handle = 0x8002000D + DISP_E_BADPARAMCOUNT Handle = 0x8002000E + DISP_E_PARAMNOTOPTIONAL Handle = 0x8002000F + DISP_E_BADCALLEE Handle = 0x80020010 + DISP_E_NOTACOLLECTION Handle = 0x80020011 + DISP_E_DIVBYZERO Handle = 0x80020012 + DISP_E_BUFFERTOOSMALL Handle = 0x80020013 + TYPE_E_BUFFERTOOSMALL Handle = 0x80028016 + TYPE_E_FIELDNOTFOUND Handle = 0x80028017 + TYPE_E_INVDATAREAD Handle = 0x80028018 + TYPE_E_UNSUPFORMAT Handle = 0x80028019 + TYPE_E_REGISTRYACCESS Handle = 0x8002801C + TYPE_E_LIBNOTREGISTERED Handle = 0x8002801D + TYPE_E_UNDEFINEDTYPE Handle = 0x80028027 + TYPE_E_QUALIFIEDNAMEDISALLOWED Handle = 0x80028028 + TYPE_E_INVALIDSTATE Handle = 0x80028029 + TYPE_E_WRONGTYPEKIND Handle = 0x8002802A + TYPE_E_ELEMENTNOTFOUND Handle = 0x8002802B + TYPE_E_AMBIGUOUSNAME Handle = 0x8002802C + TYPE_E_NAMECONFLICT Handle = 0x8002802D + TYPE_E_UNKNOWNLCID Handle = 0x8002802E + TYPE_E_DLLFUNCTIONNOTFOUND Handle = 0x8002802F + TYPE_E_BADMODULEKIND Handle = 0x800288BD + TYPE_E_SIZETOOBIG Handle = 0x800288C5 + TYPE_E_DUPLICATEID Handle = 0x800288C6 + TYPE_E_INVALIDID Handle = 0x800288CF + TYPE_E_TYPEMISMATCH Handle = 0x80028CA0 + TYPE_E_OUTOFBOUNDS Handle = 0x80028CA1 + TYPE_E_IOERROR Handle = 0x80028CA2 + TYPE_E_CANTCREATETMPFILE Handle = 0x80028CA3 + TYPE_E_CANTLOADLIBRARY Handle = 0x80029C4A + TYPE_E_INCONSISTENTPROPFUNCS Handle = 0x80029C83 + TYPE_E_CIRCULARTYPE Handle = 0x80029C84 + STG_E_INVALIDFUNCTION Handle = 0x80030001 + STG_E_FILENOTFOUND Handle = 0x80030002 + STG_E_PATHNOTFOUND Handle = 0x80030003 + STG_E_TOOMANYOPENFILES Handle = 0x80030004 + STG_E_ACCESSDENIED Handle = 0x80030005 + STG_E_INVALIDHANDLE Handle = 0x80030006 + STG_E_INSUFFICIENTMEMORY Handle = 0x80030008 + STG_E_INVALIDPOINTER Handle = 0x80030009 + STG_E_NOMOREFILES Handle = 0x80030012 + STG_E_DISKISWRITEPROTECTED Handle = 0x80030013 + STG_E_SEEKERROR Handle = 0x80030019 + STG_E_WRITEFAULT Handle = 0x8003001D + STG_E_READFAULT Handle = 0x8003001E + STG_E_SHAREVIOLATION Handle = 0x80030020 + STG_E_LOCKVIOLATION Handle = 0x80030021 + STG_E_FILEALREADYEXISTS Handle = 0x80030050 + STG_E_INVALIDPARAMETER Handle = 0x80030057 + STG_E_MEDIUMFULL Handle = 0x80030070 + STG_E_PROPSETMISMATCHED Handle = 0x800300F0 + STG_E_ABNORMALAPIEXIT Handle = 0x800300FA + STG_E_INVALIDHEADER Handle = 0x800300FB + STG_E_INVALIDNAME Handle = 0x800300FC + STG_E_UNKNOWN Handle = 0x800300FD + STG_E_UNIMPLEMENTEDFUNCTION Handle = 0x800300FE + STG_E_INVALIDFLAG Handle = 0x800300FF + STG_E_INUSE Handle = 0x80030100 + STG_E_NOTCURRENT Handle = 0x80030101 + STG_E_REVERTED Handle = 0x80030102 + STG_E_CANTSAVE Handle = 0x80030103 + STG_E_OLDFORMAT Handle = 0x80030104 + STG_E_OLDDLL Handle = 0x80030105 + STG_E_SHAREREQUIRED Handle = 0x80030106 + STG_E_NOTFILEBASEDSTORAGE Handle = 0x80030107 + STG_E_EXTANTMARSHALLINGS Handle = 0x80030108 + STG_E_DOCFILECORRUPT Handle = 0x80030109 + STG_E_BADBASEADDRESS Handle = 0x80030110 + STG_E_DOCFILETOOLARGE Handle = 0x80030111 + STG_E_NOTSIMPLEFORMAT Handle = 0x80030112 + STG_E_INCOMPLETE Handle = 0x80030201 + STG_E_TERMINATED Handle = 0x80030202 + STG_S_CONVERTED Handle = 0x00030200 + STG_S_BLOCK Handle = 0x00030201 + STG_S_RETRYNOW Handle = 0x00030202 + STG_S_MONITORING Handle = 0x00030203 + STG_S_MULTIPLEOPENS Handle = 0x00030204 + STG_S_CONSOLIDATIONFAILED Handle = 0x00030205 + STG_S_CANNOTCONSOLIDATE Handle = 0x00030206 + STG_S_POWER_CYCLE_REQUIRED Handle = 0x00030207 + STG_E_FIRMWARE_SLOT_INVALID Handle = 0x80030208 + STG_E_FIRMWARE_IMAGE_INVALID Handle = 0x80030209 + STG_E_DEVICE_UNRESPONSIVE Handle = 0x8003020A + STG_E_STATUS_COPY_PROTECTION_FAILURE Handle = 0x80030305 + STG_E_CSS_AUTHENTICATION_FAILURE Handle = 0x80030306 + STG_E_CSS_KEY_NOT_PRESENT Handle = 0x80030307 + STG_E_CSS_KEY_NOT_ESTABLISHED Handle = 0x80030308 + STG_E_CSS_SCRAMBLED_SECTOR Handle = 0x80030309 + STG_E_CSS_REGION_MISMATCH Handle = 0x8003030A + STG_E_RESETS_EXHAUSTED Handle = 0x8003030B + RPC_E_CALL_REJECTED Handle = 0x80010001 + RPC_E_CALL_CANCELED Handle = 0x80010002 + RPC_E_CANTPOST_INSENDCALL Handle = 0x80010003 + RPC_E_CANTCALLOUT_INASYNCCALL Handle = 0x80010004 + RPC_E_CANTCALLOUT_INEXTERNALCALL Handle = 0x80010005 + RPC_E_CONNECTION_TERMINATED Handle = 0x80010006 + RPC_E_SERVER_DIED Handle = 0x80010007 + RPC_E_CLIENT_DIED Handle = 0x80010008 + RPC_E_INVALID_DATAPACKET Handle = 0x80010009 + RPC_E_CANTTRANSMIT_CALL Handle = 0x8001000A + RPC_E_CLIENT_CANTMARSHAL_DATA Handle = 0x8001000B + RPC_E_CLIENT_CANTUNMARSHAL_DATA Handle = 0x8001000C + RPC_E_SERVER_CANTMARSHAL_DATA Handle = 0x8001000D + RPC_E_SERVER_CANTUNMARSHAL_DATA Handle = 0x8001000E + RPC_E_INVALID_DATA Handle = 0x8001000F + RPC_E_INVALID_PARAMETER Handle = 0x80010010 + RPC_E_CANTCALLOUT_AGAIN Handle = 0x80010011 + RPC_E_SERVER_DIED_DNE Handle = 0x80010012 + RPC_E_SYS_CALL_FAILED Handle = 0x80010100 + RPC_E_OUT_OF_RESOURCES Handle = 0x80010101 + RPC_E_ATTEMPTED_MULTITHREAD Handle = 0x80010102 + RPC_E_NOT_REGISTERED Handle = 0x80010103 + RPC_E_FAULT Handle = 0x80010104 + RPC_E_SERVERFAULT Handle = 0x80010105 + RPC_E_CHANGED_MODE Handle = 0x80010106 + RPC_E_INVALIDMETHOD Handle = 0x80010107 + RPC_E_DISCONNECTED Handle = 0x80010108 + RPC_E_RETRY Handle = 0x80010109 + RPC_E_SERVERCALL_RETRYLATER Handle = 0x8001010A + RPC_E_SERVERCALL_REJECTED Handle = 0x8001010B + RPC_E_INVALID_CALLDATA Handle = 0x8001010C + RPC_E_CANTCALLOUT_ININPUTSYNCCALL Handle = 0x8001010D + RPC_E_WRONG_THREAD Handle = 0x8001010E + RPC_E_THREAD_NOT_INIT Handle = 0x8001010F + RPC_E_VERSION_MISMATCH Handle = 0x80010110 + RPC_E_INVALID_HEADER Handle = 0x80010111 + RPC_E_INVALID_EXTENSION Handle = 0x80010112 + RPC_E_INVALID_IPID Handle = 0x80010113 + RPC_E_INVALID_OBJECT Handle = 0x80010114 + RPC_S_CALLPENDING Handle = 0x80010115 + RPC_S_WAITONTIMER Handle = 0x80010116 + RPC_E_CALL_COMPLETE Handle = 0x80010117 + RPC_E_UNSECURE_CALL Handle = 0x80010118 + RPC_E_TOO_LATE Handle = 0x80010119 + RPC_E_NO_GOOD_SECURITY_PACKAGES Handle = 0x8001011A + RPC_E_ACCESS_DENIED Handle = 0x8001011B + RPC_E_REMOTE_DISABLED Handle = 0x8001011C + RPC_E_INVALID_OBJREF Handle = 0x8001011D + RPC_E_NO_CONTEXT Handle = 0x8001011E + RPC_E_TIMEOUT Handle = 0x8001011F + RPC_E_NO_SYNC Handle = 0x80010120 + RPC_E_FULLSIC_REQUIRED Handle = 0x80010121 + RPC_E_INVALID_STD_NAME Handle = 0x80010122 + CO_E_FAILEDTOIMPERSONATE Handle = 0x80010123 + CO_E_FAILEDTOGETSECCTX Handle = 0x80010124 + CO_E_FAILEDTOOPENTHREADTOKEN Handle = 0x80010125 + CO_E_FAILEDTOGETTOKENINFO Handle = 0x80010126 + CO_E_TRUSTEEDOESNTMATCHCLIENT Handle = 0x80010127 + CO_E_FAILEDTOQUERYCLIENTBLANKET Handle = 0x80010128 + CO_E_FAILEDTOSETDACL Handle = 0x80010129 + CO_E_ACCESSCHECKFAILED Handle = 0x8001012A + CO_E_NETACCESSAPIFAILED Handle = 0x8001012B + CO_E_WRONGTRUSTEENAMESYNTAX Handle = 0x8001012C + CO_E_INVALIDSID Handle = 0x8001012D + CO_E_CONVERSIONFAILED Handle = 0x8001012E + CO_E_NOMATCHINGSIDFOUND Handle = 0x8001012F + CO_E_LOOKUPACCSIDFAILED Handle = 0x80010130 + CO_E_NOMATCHINGNAMEFOUND Handle = 0x80010131 + CO_E_LOOKUPACCNAMEFAILED Handle = 0x80010132 + CO_E_SETSERLHNDLFAILED Handle = 0x80010133 + CO_E_FAILEDTOGETWINDIR Handle = 0x80010134 + CO_E_PATHTOOLONG Handle = 0x80010135 + CO_E_FAILEDTOGENUUID Handle = 0x80010136 + CO_E_FAILEDTOCREATEFILE Handle = 0x80010137 + CO_E_FAILEDTOCLOSEHANDLE Handle = 0x80010138 + CO_E_EXCEEDSYSACLLIMIT Handle = 0x80010139 + CO_E_ACESINWRONGORDER Handle = 0x8001013A + CO_E_INCOMPATIBLESTREAMVERSION Handle = 0x8001013B + CO_E_FAILEDTOOPENPROCESSTOKEN Handle = 0x8001013C + CO_E_DECODEFAILED Handle = 0x8001013D + CO_E_ACNOTINITIALIZED Handle = 0x8001013F + CO_E_CANCEL_DISABLED Handle = 0x80010140 + RPC_E_UNEXPECTED Handle = 0x8001FFFF + ERROR_AUDITING_DISABLED Handle = 0xC0090001 + ERROR_ALL_SIDS_FILTERED Handle = 0xC0090002 + ERROR_BIZRULES_NOT_ENABLED Handle = 0xC0090003 + NTE_BAD_UID Handle = 0x80090001 + NTE_BAD_HASH Handle = 0x80090002 + NTE_BAD_KEY Handle = 0x80090003 + NTE_BAD_LEN Handle = 0x80090004 + NTE_BAD_DATA Handle = 0x80090005 + NTE_BAD_SIGNATURE Handle = 0x80090006 + NTE_BAD_VER Handle = 0x80090007 + NTE_BAD_ALGID Handle = 0x80090008 + NTE_BAD_FLAGS Handle = 0x80090009 + NTE_BAD_TYPE Handle = 0x8009000A + NTE_BAD_KEY_STATE Handle = 0x8009000B + NTE_BAD_HASH_STATE Handle = 0x8009000C + NTE_NO_KEY Handle = 0x8009000D + NTE_NO_MEMORY Handle = 0x8009000E + NTE_EXISTS Handle = 0x8009000F + NTE_PERM Handle = 0x80090010 + NTE_NOT_FOUND Handle = 0x80090011 + NTE_DOUBLE_ENCRYPT Handle = 0x80090012 + NTE_BAD_PROVIDER Handle = 0x80090013 + NTE_BAD_PROV_TYPE Handle = 0x80090014 + NTE_BAD_PUBLIC_KEY Handle = 0x80090015 + NTE_BAD_KEYSET Handle = 0x80090016 + NTE_PROV_TYPE_NOT_DEF Handle = 0x80090017 + NTE_PROV_TYPE_ENTRY_BAD Handle = 0x80090018 + NTE_KEYSET_NOT_DEF Handle = 0x80090019 + NTE_KEYSET_ENTRY_BAD Handle = 0x8009001A + NTE_PROV_TYPE_NO_MATCH Handle = 0x8009001B + NTE_SIGNATURE_FILE_BAD Handle = 0x8009001C + NTE_PROVIDER_DLL_FAIL Handle = 0x8009001D + NTE_PROV_DLL_NOT_FOUND Handle = 0x8009001E + NTE_BAD_KEYSET_PARAM Handle = 0x8009001F + NTE_FAIL Handle = 0x80090020 + NTE_SYS_ERR Handle = 0x80090021 + NTE_SILENT_CONTEXT Handle = 0x80090022 + NTE_TOKEN_KEYSET_STORAGE_FULL Handle = 0x80090023 + NTE_TEMPORARY_PROFILE Handle = 0x80090024 + NTE_FIXEDPARAMETER Handle = 0x80090025 + NTE_INVALID_HANDLE Handle = 0x80090026 + NTE_INVALID_PARAMETER Handle = 0x80090027 + NTE_BUFFER_TOO_SMALL Handle = 0x80090028 + NTE_NOT_SUPPORTED Handle = 0x80090029 + NTE_NO_MORE_ITEMS Handle = 0x8009002A + NTE_BUFFERS_OVERLAP Handle = 0x8009002B + NTE_DECRYPTION_FAILURE Handle = 0x8009002C + NTE_INTERNAL_ERROR Handle = 0x8009002D + NTE_UI_REQUIRED Handle = 0x8009002E + NTE_HMAC_NOT_SUPPORTED Handle = 0x8009002F + NTE_DEVICE_NOT_READY Handle = 0x80090030 + NTE_AUTHENTICATION_IGNORED Handle = 0x80090031 + NTE_VALIDATION_FAILED Handle = 0x80090032 + NTE_INCORRECT_PASSWORD Handle = 0x80090033 + NTE_ENCRYPTION_FAILURE Handle = 0x80090034 + NTE_DEVICE_NOT_FOUND Handle = 0x80090035 + NTE_USER_CANCELLED Handle = 0x80090036 + NTE_PASSWORD_CHANGE_REQUIRED Handle = 0x80090037 + NTE_NOT_ACTIVE_CONSOLE Handle = 0x80090038 + SEC_E_INSUFFICIENT_MEMORY Handle = 0x80090300 + SEC_E_INVALID_HANDLE Handle = 0x80090301 + SEC_E_UNSUPPORTED_FUNCTION Handle = 0x80090302 + SEC_E_TARGET_UNKNOWN Handle = 0x80090303 + SEC_E_INTERNAL_ERROR Handle = 0x80090304 + SEC_E_SECPKG_NOT_FOUND Handle = 0x80090305 + SEC_E_NOT_OWNER Handle = 0x80090306 + SEC_E_CANNOT_INSTALL Handle = 0x80090307 + SEC_E_INVALID_TOKEN Handle = 0x80090308 + SEC_E_CANNOT_PACK Handle = 0x80090309 + SEC_E_QOP_NOT_SUPPORTED Handle = 0x8009030A + SEC_E_NO_IMPERSONATION Handle = 0x8009030B + SEC_E_LOGON_DENIED Handle = 0x8009030C + SEC_E_UNKNOWN_CREDENTIALS Handle = 0x8009030D + SEC_E_NO_CREDENTIALS Handle = 0x8009030E + SEC_E_MESSAGE_ALTERED Handle = 0x8009030F + SEC_E_OUT_OF_SEQUENCE Handle = 0x80090310 + SEC_E_NO_AUTHENTICATING_AUTHORITY Handle = 0x80090311 + SEC_I_CONTINUE_NEEDED Handle = 0x00090312 + SEC_I_COMPLETE_NEEDED Handle = 0x00090313 + SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314 + SEC_I_LOCAL_LOGON Handle = 0x00090315 + SEC_I_GENERIC_EXTENSION_RECEIVED Handle = 0x00090316 + SEC_E_BAD_PKGID Handle = 0x80090316 + SEC_E_CONTEXT_EXPIRED Handle = 0x80090317 + SEC_I_CONTEXT_EXPIRED Handle = 0x00090317 + SEC_E_INCOMPLETE_MESSAGE Handle = 0x80090318 + SEC_E_INCOMPLETE_CREDENTIALS Handle = 0x80090320 + SEC_E_BUFFER_TOO_SMALL Handle = 0x80090321 + SEC_I_INCOMPLETE_CREDENTIALS Handle = 0x00090320 + SEC_I_RENEGOTIATE Handle = 0x00090321 + SEC_E_WRONG_PRINCIPAL Handle = 0x80090322 + SEC_I_NO_LSA_CONTEXT Handle = 0x00090323 + SEC_E_TIME_SKEW Handle = 0x80090324 + SEC_E_UNTRUSTED_ROOT Handle = 0x80090325 + SEC_E_ILLEGAL_MESSAGE Handle = 0x80090326 + SEC_E_CERT_UNKNOWN Handle = 0x80090327 + SEC_E_CERT_EXPIRED Handle = 0x80090328 + SEC_E_ENCRYPT_FAILURE Handle = 0x80090329 + SEC_E_DECRYPT_FAILURE Handle = 0x80090330 + SEC_E_ALGORITHM_MISMATCH Handle = 0x80090331 + SEC_E_SECURITY_QOS_FAILED Handle = 0x80090332 + SEC_E_UNFINISHED_CONTEXT_DELETED Handle = 0x80090333 + SEC_E_NO_TGT_REPLY Handle = 0x80090334 + SEC_E_NO_IP_ADDRESSES Handle = 0x80090335 + SEC_E_WRONG_CREDENTIAL_HANDLE Handle = 0x80090336 + SEC_E_CRYPTO_SYSTEM_INVALID Handle = 0x80090337 + SEC_E_MAX_REFERRALS_EXCEEDED Handle = 0x80090338 + SEC_E_MUST_BE_KDC Handle = 0x80090339 + SEC_E_STRONG_CRYPTO_NOT_SUPPORTED Handle = 0x8009033A + SEC_E_TOO_MANY_PRINCIPALS Handle = 0x8009033B + SEC_E_NO_PA_DATA Handle = 0x8009033C + SEC_E_PKINIT_NAME_MISMATCH Handle = 0x8009033D + SEC_E_SMARTCARD_LOGON_REQUIRED Handle = 0x8009033E + SEC_E_SHUTDOWN_IN_PROGRESS Handle = 0x8009033F + SEC_E_KDC_INVALID_REQUEST Handle = 0x80090340 + SEC_E_KDC_UNABLE_TO_REFER Handle = 0x80090341 + SEC_E_KDC_UNKNOWN_ETYPE Handle = 0x80090342 + SEC_E_UNSUPPORTED_PREAUTH Handle = 0x80090343 + SEC_E_DELEGATION_REQUIRED Handle = 0x80090345 + SEC_E_BAD_BINDINGS Handle = 0x80090346 + SEC_E_MULTIPLE_ACCOUNTS Handle = 0x80090347 + SEC_E_NO_KERB_KEY Handle = 0x80090348 + SEC_E_CERT_WRONG_USAGE Handle = 0x80090349 + SEC_E_DOWNGRADE_DETECTED Handle = 0x80090350 + SEC_E_SMARTCARD_CERT_REVOKED Handle = 0x80090351 + SEC_E_ISSUING_CA_UNTRUSTED Handle = 0x80090352 + SEC_E_REVOCATION_OFFLINE_C Handle = 0x80090353 + SEC_E_PKINIT_CLIENT_FAILURE Handle = 0x80090354 + SEC_E_SMARTCARD_CERT_EXPIRED Handle = 0x80090355 + SEC_E_NO_S4U_PROT_SUPPORT Handle = 0x80090356 + SEC_E_CROSSREALM_DELEGATION_FAILURE Handle = 0x80090357 + SEC_E_REVOCATION_OFFLINE_KDC Handle = 0x80090358 + SEC_E_ISSUING_CA_UNTRUSTED_KDC Handle = 0x80090359 + SEC_E_KDC_CERT_EXPIRED Handle = 0x8009035A + SEC_E_KDC_CERT_REVOKED Handle = 0x8009035B + SEC_I_SIGNATURE_NEEDED Handle = 0x0009035C + SEC_E_INVALID_PARAMETER Handle = 0x8009035D + SEC_E_DELEGATION_POLICY Handle = 0x8009035E + SEC_E_POLICY_NLTM_ONLY Handle = 0x8009035F + SEC_I_NO_RENEGOTIATION Handle = 0x00090360 + SEC_E_NO_CONTEXT Handle = 0x80090361 + SEC_E_PKU2U_CERT_FAILURE Handle = 0x80090362 + SEC_E_MUTUAL_AUTH_FAILED Handle = 0x80090363 + SEC_I_MESSAGE_FRAGMENT Handle = 0x00090364 + SEC_E_ONLY_HTTPS_ALLOWED Handle = 0x80090365 + SEC_I_CONTINUE_NEEDED_MESSAGE_OK Handle = 0x00090366 + SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367 + SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368 + SEC_E_INVALID_UPN_NAME Handle = 0x80090369 + SEC_E_EXT_BUFFER_TOO_SMALL Handle = 0x8009036A + SEC_E_INSUFFICIENT_BUFFERS Handle = 0x8009036B + SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR + SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION + CRYPT_E_MSG_ERROR Handle = 0x80091001 + CRYPT_E_UNKNOWN_ALGO Handle = 0x80091002 + CRYPT_E_OID_FORMAT Handle = 0x80091003 + CRYPT_E_INVALID_MSG_TYPE Handle = 0x80091004 + CRYPT_E_UNEXPECTED_ENCODING Handle = 0x80091005 + CRYPT_E_AUTH_ATTR_MISSING Handle = 0x80091006 + CRYPT_E_HASH_VALUE Handle = 0x80091007 + CRYPT_E_INVALID_INDEX Handle = 0x80091008 + CRYPT_E_ALREADY_DECRYPTED Handle = 0x80091009 + CRYPT_E_NOT_DECRYPTED Handle = 0x8009100A + CRYPT_E_RECIPIENT_NOT_FOUND Handle = 0x8009100B + CRYPT_E_CONTROL_TYPE Handle = 0x8009100C + CRYPT_E_ISSUER_SERIALNUMBER Handle = 0x8009100D + CRYPT_E_SIGNER_NOT_FOUND Handle = 0x8009100E + CRYPT_E_ATTRIBUTES_MISSING Handle = 0x8009100F + CRYPT_E_STREAM_MSG_NOT_READY Handle = 0x80091010 + CRYPT_E_STREAM_INSUFFICIENT_DATA Handle = 0x80091011 + CRYPT_I_NEW_PROTECTION_REQUIRED Handle = 0x00091012 + CRYPT_E_BAD_LEN Handle = 0x80092001 + CRYPT_E_BAD_ENCODE Handle = 0x80092002 + CRYPT_E_FILE_ERROR Handle = 0x80092003 + CRYPT_E_NOT_FOUND Handle = 0x80092004 + CRYPT_E_EXISTS Handle = 0x80092005 + CRYPT_E_NO_PROVIDER Handle = 0x80092006 + CRYPT_E_SELF_SIGNED Handle = 0x80092007 + CRYPT_E_DELETED_PREV Handle = 0x80092008 + CRYPT_E_NO_MATCH Handle = 0x80092009 + CRYPT_E_UNEXPECTED_MSG_TYPE Handle = 0x8009200A + CRYPT_E_NO_KEY_PROPERTY Handle = 0x8009200B + CRYPT_E_NO_DECRYPT_CERT Handle = 0x8009200C + CRYPT_E_BAD_MSG Handle = 0x8009200D + CRYPT_E_NO_SIGNER Handle = 0x8009200E + CRYPT_E_PENDING_CLOSE Handle = 0x8009200F + CRYPT_E_REVOKED Handle = 0x80092010 + CRYPT_E_NO_REVOCATION_DLL Handle = 0x80092011 + CRYPT_E_NO_REVOCATION_CHECK Handle = 0x80092012 + CRYPT_E_REVOCATION_OFFLINE Handle = 0x80092013 + CRYPT_E_NOT_IN_REVOCATION_DATABASE Handle = 0x80092014 + CRYPT_E_INVALID_NUMERIC_STRING Handle = 0x80092020 + CRYPT_E_INVALID_PRINTABLE_STRING Handle = 0x80092021 + CRYPT_E_INVALID_IA5_STRING Handle = 0x80092022 + CRYPT_E_INVALID_X500_STRING Handle = 0x80092023 + CRYPT_E_NOT_CHAR_STRING Handle = 0x80092024 + CRYPT_E_FILERESIZED Handle = 0x80092025 + CRYPT_E_SECURITY_SETTINGS Handle = 0x80092026 + CRYPT_E_NO_VERIFY_USAGE_DLL Handle = 0x80092027 + CRYPT_E_NO_VERIFY_USAGE_CHECK Handle = 0x80092028 + CRYPT_E_VERIFY_USAGE_OFFLINE Handle = 0x80092029 + CRYPT_E_NOT_IN_CTL Handle = 0x8009202A + CRYPT_E_NO_TRUSTED_SIGNER Handle = 0x8009202B + CRYPT_E_MISSING_PUBKEY_PARA Handle = 0x8009202C + CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND Handle = 0x8009202D + CRYPT_E_OSS_ERROR Handle = 0x80093000 + OSS_MORE_BUF Handle = 0x80093001 + OSS_NEGATIVE_UINTEGER Handle = 0x80093002 + OSS_PDU_RANGE Handle = 0x80093003 + OSS_MORE_INPUT Handle = 0x80093004 + OSS_DATA_ERROR Handle = 0x80093005 + OSS_BAD_ARG Handle = 0x80093006 + OSS_BAD_VERSION Handle = 0x80093007 + OSS_OUT_MEMORY Handle = 0x80093008 + OSS_PDU_MISMATCH Handle = 0x80093009 + OSS_LIMITED Handle = 0x8009300A + OSS_BAD_PTR Handle = 0x8009300B + OSS_BAD_TIME Handle = 0x8009300C + OSS_INDEFINITE_NOT_SUPPORTED Handle = 0x8009300D + OSS_MEM_ERROR Handle = 0x8009300E + OSS_BAD_TABLE Handle = 0x8009300F + OSS_TOO_LONG Handle = 0x80093010 + OSS_CONSTRAINT_VIOLATED Handle = 0x80093011 + OSS_FATAL_ERROR Handle = 0x80093012 + OSS_ACCESS_SERIALIZATION_ERROR Handle = 0x80093013 + OSS_NULL_TBL Handle = 0x80093014 + OSS_NULL_FCN Handle = 0x80093015 + OSS_BAD_ENCRULES Handle = 0x80093016 + OSS_UNAVAIL_ENCRULES Handle = 0x80093017 + OSS_CANT_OPEN_TRACE_WINDOW Handle = 0x80093018 + OSS_UNIMPLEMENTED Handle = 0x80093019 + OSS_OID_DLL_NOT_LINKED Handle = 0x8009301A + OSS_CANT_OPEN_TRACE_FILE Handle = 0x8009301B + OSS_TRACE_FILE_ALREADY_OPEN Handle = 0x8009301C + OSS_TABLE_MISMATCH Handle = 0x8009301D + OSS_TYPE_NOT_SUPPORTED Handle = 0x8009301E + OSS_REAL_DLL_NOT_LINKED Handle = 0x8009301F + OSS_REAL_CODE_NOT_LINKED Handle = 0x80093020 + OSS_OUT_OF_RANGE Handle = 0x80093021 + OSS_COPIER_DLL_NOT_LINKED Handle = 0x80093022 + OSS_CONSTRAINT_DLL_NOT_LINKED Handle = 0x80093023 + OSS_COMPARATOR_DLL_NOT_LINKED Handle = 0x80093024 + OSS_COMPARATOR_CODE_NOT_LINKED Handle = 0x80093025 + OSS_MEM_MGR_DLL_NOT_LINKED Handle = 0x80093026 + OSS_PDV_DLL_NOT_LINKED Handle = 0x80093027 + OSS_PDV_CODE_NOT_LINKED Handle = 0x80093028 + OSS_API_DLL_NOT_LINKED Handle = 0x80093029 + OSS_BERDER_DLL_NOT_LINKED Handle = 0x8009302A + OSS_PER_DLL_NOT_LINKED Handle = 0x8009302B + OSS_OPEN_TYPE_ERROR Handle = 0x8009302C + OSS_MUTEX_NOT_CREATED Handle = 0x8009302D + OSS_CANT_CLOSE_TRACE_FILE Handle = 0x8009302E + CRYPT_E_ASN1_ERROR Handle = 0x80093100 + CRYPT_E_ASN1_INTERNAL Handle = 0x80093101 + CRYPT_E_ASN1_EOD Handle = 0x80093102 + CRYPT_E_ASN1_CORRUPT Handle = 0x80093103 + CRYPT_E_ASN1_LARGE Handle = 0x80093104 + CRYPT_E_ASN1_CONSTRAINT Handle = 0x80093105 + CRYPT_E_ASN1_MEMORY Handle = 0x80093106 + CRYPT_E_ASN1_OVERFLOW Handle = 0x80093107 + CRYPT_E_ASN1_BADPDU Handle = 0x80093108 + CRYPT_E_ASN1_BADARGS Handle = 0x80093109 + CRYPT_E_ASN1_BADREAL Handle = 0x8009310A + CRYPT_E_ASN1_BADTAG Handle = 0x8009310B + CRYPT_E_ASN1_CHOICE Handle = 0x8009310C + CRYPT_E_ASN1_RULE Handle = 0x8009310D + CRYPT_E_ASN1_UTF8 Handle = 0x8009310E + CRYPT_E_ASN1_PDU_TYPE Handle = 0x80093133 + CRYPT_E_ASN1_NYI Handle = 0x80093134 + CRYPT_E_ASN1_EXTENDED Handle = 0x80093201 + CRYPT_E_ASN1_NOEOD Handle = 0x80093202 + CERTSRV_E_BAD_REQUESTSUBJECT Handle = 0x80094001 + CERTSRV_E_NO_REQUEST Handle = 0x80094002 + CERTSRV_E_BAD_REQUESTSTATUS Handle = 0x80094003 + CERTSRV_E_PROPERTY_EMPTY Handle = 0x80094004 + CERTSRV_E_INVALID_CA_CERTIFICATE Handle = 0x80094005 + CERTSRV_E_SERVER_SUSPENDED Handle = 0x80094006 + CERTSRV_E_ENCODING_LENGTH Handle = 0x80094007 + CERTSRV_E_ROLECONFLICT Handle = 0x80094008 + CERTSRV_E_RESTRICTEDOFFICER Handle = 0x80094009 + CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED Handle = 0x8009400A + CERTSRV_E_NO_VALID_KRA Handle = 0x8009400B + CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL Handle = 0x8009400C + CERTSRV_E_NO_CAADMIN_DEFINED Handle = 0x8009400D + CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE Handle = 0x8009400E + CERTSRV_E_NO_DB_SESSIONS Handle = 0x8009400F + CERTSRV_E_ALIGNMENT_FAULT Handle = 0x80094010 + CERTSRV_E_ENROLL_DENIED Handle = 0x80094011 + CERTSRV_E_TEMPLATE_DENIED Handle = 0x80094012 + CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE Handle = 0x80094013 + CERTSRV_E_ADMIN_DENIED_REQUEST Handle = 0x80094014 + CERTSRV_E_NO_POLICY_SERVER Handle = 0x80094015 + CERTSRV_E_WEAK_SIGNATURE_OR_KEY Handle = 0x80094016 + CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED Handle = 0x80094017 + CERTSRV_E_ENCRYPTION_CERT_REQUIRED Handle = 0x80094018 + CERTSRV_E_UNSUPPORTED_CERT_TYPE Handle = 0x80094800 + CERTSRV_E_NO_CERT_TYPE Handle = 0x80094801 + CERTSRV_E_TEMPLATE_CONFLICT Handle = 0x80094802 + CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED Handle = 0x80094803 + CERTSRV_E_ARCHIVED_KEY_REQUIRED Handle = 0x80094804 + CERTSRV_E_SMIME_REQUIRED Handle = 0x80094805 + CERTSRV_E_BAD_RENEWAL_SUBJECT Handle = 0x80094806 + CERTSRV_E_BAD_TEMPLATE_VERSION Handle = 0x80094807 + CERTSRV_E_TEMPLATE_POLICY_REQUIRED Handle = 0x80094808 + CERTSRV_E_SIGNATURE_POLICY_REQUIRED Handle = 0x80094809 + CERTSRV_E_SIGNATURE_COUNT Handle = 0x8009480A + CERTSRV_E_SIGNATURE_REJECTED Handle = 0x8009480B + CERTSRV_E_ISSUANCE_POLICY_REQUIRED Handle = 0x8009480C + CERTSRV_E_SUBJECT_UPN_REQUIRED Handle = 0x8009480D + CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED Handle = 0x8009480E + CERTSRV_E_SUBJECT_DNS_REQUIRED Handle = 0x8009480F + CERTSRV_E_ARCHIVED_KEY_UNEXPECTED Handle = 0x80094810 + CERTSRV_E_KEY_LENGTH Handle = 0x80094811 + CERTSRV_E_SUBJECT_EMAIL_REQUIRED Handle = 0x80094812 + CERTSRV_E_UNKNOWN_CERT_TYPE Handle = 0x80094813 + CERTSRV_E_CERT_TYPE_OVERLAP Handle = 0x80094814 + CERTSRV_E_TOO_MANY_SIGNATURES Handle = 0x80094815 + CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY Handle = 0x80094816 + CERTSRV_E_INVALID_EK Handle = 0x80094817 + CERTSRV_E_INVALID_IDBINDING Handle = 0x80094818 + CERTSRV_E_INVALID_ATTESTATION Handle = 0x80094819 + CERTSRV_E_KEY_ATTESTATION Handle = 0x8009481A + CERTSRV_E_CORRUPT_KEY_ATTESTATION Handle = 0x8009481B + CERTSRV_E_EXPIRED_CHALLENGE Handle = 0x8009481C + CERTSRV_E_INVALID_RESPONSE Handle = 0x8009481D + CERTSRV_E_INVALID_REQUESTID Handle = 0x8009481E + CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH Handle = 0x8009481F + CERTSRV_E_PENDING_CLIENT_RESPONSE Handle = 0x80094820 + XENROLL_E_KEY_NOT_EXPORTABLE Handle = 0x80095000 + XENROLL_E_CANNOT_ADD_ROOT_CERT Handle = 0x80095001 + XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND Handle = 0x80095002 + XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH Handle = 0x80095003 + XENROLL_E_RESPONSE_KA_HASH_MISMATCH Handle = 0x80095004 + XENROLL_E_KEYSPEC_SMIME_MISMATCH Handle = 0x80095005 + TRUST_E_SYSTEM_ERROR Handle = 0x80096001 + TRUST_E_NO_SIGNER_CERT Handle = 0x80096002 + TRUST_E_COUNTER_SIGNER Handle = 0x80096003 + TRUST_E_CERT_SIGNATURE Handle = 0x80096004 + TRUST_E_TIME_STAMP Handle = 0x80096005 + TRUST_E_BAD_DIGEST Handle = 0x80096010 + TRUST_E_MALFORMED_SIGNATURE Handle = 0x80096011 + TRUST_E_BASIC_CONSTRAINTS Handle = 0x80096019 + TRUST_E_FINANCIAL_CRITERIA Handle = 0x8009601E + MSSIPOTF_E_OUTOFMEMRANGE Handle = 0x80097001 + MSSIPOTF_E_CANTGETOBJECT Handle = 0x80097002 + MSSIPOTF_E_NOHEADTABLE Handle = 0x80097003 + MSSIPOTF_E_BAD_MAGICNUMBER Handle = 0x80097004 + MSSIPOTF_E_BAD_OFFSET_TABLE Handle = 0x80097005 + MSSIPOTF_E_TABLE_TAGORDER Handle = 0x80097006 + MSSIPOTF_E_TABLE_LONGWORD Handle = 0x80097007 + MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT Handle = 0x80097008 + MSSIPOTF_E_TABLES_OVERLAP Handle = 0x80097009 + MSSIPOTF_E_TABLE_PADBYTES Handle = 0x8009700A + MSSIPOTF_E_FILETOOSMALL Handle = 0x8009700B + MSSIPOTF_E_TABLE_CHECKSUM Handle = 0x8009700C + MSSIPOTF_E_FILE_CHECKSUM Handle = 0x8009700D + MSSIPOTF_E_FAILED_POLICY Handle = 0x80097010 + MSSIPOTF_E_FAILED_HINTS_CHECK Handle = 0x80097011 + MSSIPOTF_E_NOT_OPENTYPE Handle = 0x80097012 + MSSIPOTF_E_FILE Handle = 0x80097013 + MSSIPOTF_E_CRYPT Handle = 0x80097014 + MSSIPOTF_E_BADVERSION Handle = 0x80097015 + MSSIPOTF_E_DSIG_STRUCTURE Handle = 0x80097016 + MSSIPOTF_E_PCONST_CHECK Handle = 0x80097017 + MSSIPOTF_E_STRUCTURE Handle = 0x80097018 + ERROR_CRED_REQUIRES_CONFIRMATION Handle = 0x80097019 + NTE_OP_OK syscall.Errno = 0 + TRUST_E_PROVIDER_UNKNOWN Handle = 0x800B0001 + TRUST_E_ACTION_UNKNOWN Handle = 0x800B0002 + TRUST_E_SUBJECT_FORM_UNKNOWN Handle = 0x800B0003 + TRUST_E_SUBJECT_NOT_TRUSTED Handle = 0x800B0004 + DIGSIG_E_ENCODE Handle = 0x800B0005 + DIGSIG_E_DECODE Handle = 0x800B0006 + DIGSIG_E_EXTENSIBILITY Handle = 0x800B0007 + DIGSIG_E_CRYPTO Handle = 0x800B0008 + PERSIST_E_SIZEDEFINITE Handle = 0x800B0009 + PERSIST_E_SIZEINDEFINITE Handle = 0x800B000A + PERSIST_E_NOTSELFSIZING Handle = 0x800B000B + TRUST_E_NOSIGNATURE Handle = 0x800B0100 + CERT_E_EXPIRED Handle = 0x800B0101 + CERT_E_VALIDITYPERIODNESTING Handle = 0x800B0102 + CERT_E_ROLE Handle = 0x800B0103 + CERT_E_PATHLENCONST Handle = 0x800B0104 + CERT_E_CRITICAL Handle = 0x800B0105 + CERT_E_PURPOSE Handle = 0x800B0106 + CERT_E_ISSUERCHAINING Handle = 0x800B0107 + CERT_E_MALFORMED Handle = 0x800B0108 + CERT_E_UNTRUSTEDROOT Handle = 0x800B0109 + CERT_E_CHAINING Handle = 0x800B010A + TRUST_E_FAIL Handle = 0x800B010B + CERT_E_REVOKED Handle = 0x800B010C + CERT_E_UNTRUSTEDTESTROOT Handle = 0x800B010D + CERT_E_REVOCATION_FAILURE Handle = 0x800B010E + CERT_E_CN_NO_MATCH Handle = 0x800B010F + CERT_E_WRONG_USAGE Handle = 0x800B0110 + TRUST_E_EXPLICIT_DISTRUST Handle = 0x800B0111 + CERT_E_UNTRUSTEDCA Handle = 0x800B0112 + CERT_E_INVALID_POLICY Handle = 0x800B0113 + CERT_E_INVALID_NAME Handle = 0x800B0114 + SPAPI_E_EXPECTED_SECTION_NAME Handle = 0x800F0000 + SPAPI_E_BAD_SECTION_NAME_LINE Handle = 0x800F0001 + SPAPI_E_SECTION_NAME_TOO_LONG Handle = 0x800F0002 + SPAPI_E_GENERAL_SYNTAX Handle = 0x800F0003 + SPAPI_E_WRONG_INF_STYLE Handle = 0x800F0100 + SPAPI_E_SECTION_NOT_FOUND Handle = 0x800F0101 + SPAPI_E_LINE_NOT_FOUND Handle = 0x800F0102 + SPAPI_E_NO_BACKUP Handle = 0x800F0103 + SPAPI_E_NO_ASSOCIATED_CLASS Handle = 0x800F0200 + SPAPI_E_CLASS_MISMATCH Handle = 0x800F0201 + SPAPI_E_DUPLICATE_FOUND Handle = 0x800F0202 + SPAPI_E_NO_DRIVER_SELECTED Handle = 0x800F0203 + SPAPI_E_KEY_DOES_NOT_EXIST Handle = 0x800F0204 + SPAPI_E_INVALID_DEVINST_NAME Handle = 0x800F0205 + SPAPI_E_INVALID_CLASS Handle = 0x800F0206 + SPAPI_E_DEVINST_ALREADY_EXISTS Handle = 0x800F0207 + SPAPI_E_DEVINFO_NOT_REGISTERED Handle = 0x800F0208 + SPAPI_E_INVALID_REG_PROPERTY Handle = 0x800F0209 + SPAPI_E_NO_INF Handle = 0x800F020A + SPAPI_E_NO_SUCH_DEVINST Handle = 0x800F020B + SPAPI_E_CANT_LOAD_CLASS_ICON Handle = 0x800F020C + SPAPI_E_INVALID_CLASS_INSTALLER Handle = 0x800F020D + SPAPI_E_DI_DO_DEFAULT Handle = 0x800F020E + SPAPI_E_DI_NOFILECOPY Handle = 0x800F020F + SPAPI_E_INVALID_HWPROFILE Handle = 0x800F0210 + SPAPI_E_NO_DEVICE_SELECTED Handle = 0x800F0211 + SPAPI_E_DEVINFO_LIST_LOCKED Handle = 0x800F0212 + SPAPI_E_DEVINFO_DATA_LOCKED Handle = 0x800F0213 + SPAPI_E_DI_BAD_PATH Handle = 0x800F0214 + SPAPI_E_NO_CLASSINSTALL_PARAMS Handle = 0x800F0215 + SPAPI_E_FILEQUEUE_LOCKED Handle = 0x800F0216 + SPAPI_E_BAD_SERVICE_INSTALLSECT Handle = 0x800F0217 + SPAPI_E_NO_CLASS_DRIVER_LIST Handle = 0x800F0218 + SPAPI_E_NO_ASSOCIATED_SERVICE Handle = 0x800F0219 + SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE Handle = 0x800F021A + SPAPI_E_DEVICE_INTERFACE_ACTIVE Handle = 0x800F021B + SPAPI_E_DEVICE_INTERFACE_REMOVED Handle = 0x800F021C + SPAPI_E_BAD_INTERFACE_INSTALLSECT Handle = 0x800F021D + SPAPI_E_NO_SUCH_INTERFACE_CLASS Handle = 0x800F021E + SPAPI_E_INVALID_REFERENCE_STRING Handle = 0x800F021F + SPAPI_E_INVALID_MACHINENAME Handle = 0x800F0220 + SPAPI_E_REMOTE_COMM_FAILURE Handle = 0x800F0221 + SPAPI_E_MACHINE_UNAVAILABLE Handle = 0x800F0222 + SPAPI_E_NO_CONFIGMGR_SERVICES Handle = 0x800F0223 + SPAPI_E_INVALID_PROPPAGE_PROVIDER Handle = 0x800F0224 + SPAPI_E_NO_SUCH_DEVICE_INTERFACE Handle = 0x800F0225 + SPAPI_E_DI_POSTPROCESSING_REQUIRED Handle = 0x800F0226 + SPAPI_E_INVALID_COINSTALLER Handle = 0x800F0227 + SPAPI_E_NO_COMPAT_DRIVERS Handle = 0x800F0228 + SPAPI_E_NO_DEVICE_ICON Handle = 0x800F0229 + SPAPI_E_INVALID_INF_LOGCONFIG Handle = 0x800F022A + SPAPI_E_DI_DONT_INSTALL Handle = 0x800F022B + SPAPI_E_INVALID_FILTER_DRIVER Handle = 0x800F022C + SPAPI_E_NON_WINDOWS_NT_DRIVER Handle = 0x800F022D + SPAPI_E_NON_WINDOWS_DRIVER Handle = 0x800F022E + SPAPI_E_NO_CATALOG_FOR_OEM_INF Handle = 0x800F022F + SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE Handle = 0x800F0230 + SPAPI_E_NOT_DISABLEABLE Handle = 0x800F0231 + SPAPI_E_CANT_REMOVE_DEVINST Handle = 0x800F0232 + SPAPI_E_INVALID_TARGET Handle = 0x800F0233 + SPAPI_E_DRIVER_NONNATIVE Handle = 0x800F0234 + SPAPI_E_IN_WOW64 Handle = 0x800F0235 + SPAPI_E_SET_SYSTEM_RESTORE_POINT Handle = 0x800F0236 + SPAPI_E_INCORRECTLY_COPIED_INF Handle = 0x800F0237 + SPAPI_E_SCE_DISABLED Handle = 0x800F0238 + SPAPI_E_UNKNOWN_EXCEPTION Handle = 0x800F0239 + SPAPI_E_PNP_REGISTRY_ERROR Handle = 0x800F023A + SPAPI_E_REMOTE_REQUEST_UNSUPPORTED Handle = 0x800F023B + SPAPI_E_NOT_AN_INSTALLED_OEM_INF Handle = 0x800F023C + SPAPI_E_INF_IN_USE_BY_DEVICES Handle = 0x800F023D + SPAPI_E_DI_FUNCTION_OBSOLETE Handle = 0x800F023E + SPAPI_E_NO_AUTHENTICODE_CATALOG Handle = 0x800F023F + SPAPI_E_AUTHENTICODE_DISALLOWED Handle = 0x800F0240 + SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER Handle = 0x800F0241 + SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED Handle = 0x800F0242 + SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Handle = 0x800F0243 + SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH Handle = 0x800F0244 + SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE Handle = 0x800F0245 + SPAPI_E_DEVICE_INSTALLER_NOT_READY Handle = 0x800F0246 + SPAPI_E_DRIVER_STORE_ADD_FAILED Handle = 0x800F0247 + SPAPI_E_DEVICE_INSTALL_BLOCKED Handle = 0x800F0248 + SPAPI_E_DRIVER_INSTALL_BLOCKED Handle = 0x800F0249 + SPAPI_E_WRONG_INF_TYPE Handle = 0x800F024A + SPAPI_E_FILE_HASH_NOT_IN_CATALOG Handle = 0x800F024B + SPAPI_E_DRIVER_STORE_DELETE_FAILED Handle = 0x800F024C + SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW Handle = 0x800F0300 + SPAPI_E_ERROR_NOT_INSTALLED Handle = 0x800F1000 + SCARD_S_SUCCESS = S_OK + SCARD_F_INTERNAL_ERROR Handle = 0x80100001 + SCARD_E_CANCELLED Handle = 0x80100002 + SCARD_E_INVALID_HANDLE Handle = 0x80100003 + SCARD_E_INVALID_PARAMETER Handle = 0x80100004 + SCARD_E_INVALID_TARGET Handle = 0x80100005 + SCARD_E_NO_MEMORY Handle = 0x80100006 + SCARD_F_WAITED_TOO_LONG Handle = 0x80100007 + SCARD_E_INSUFFICIENT_BUFFER Handle = 0x80100008 + SCARD_E_UNKNOWN_READER Handle = 0x80100009 + SCARD_E_TIMEOUT Handle = 0x8010000A + SCARD_E_SHARING_VIOLATION Handle = 0x8010000B + SCARD_E_NO_SMARTCARD Handle = 0x8010000C + SCARD_E_UNKNOWN_CARD Handle = 0x8010000D + SCARD_E_CANT_DISPOSE Handle = 0x8010000E + SCARD_E_PROTO_MISMATCH Handle = 0x8010000F + SCARD_E_NOT_READY Handle = 0x80100010 + SCARD_E_INVALID_VALUE Handle = 0x80100011 + SCARD_E_SYSTEM_CANCELLED Handle = 0x80100012 + SCARD_F_COMM_ERROR Handle = 0x80100013 + SCARD_F_UNKNOWN_ERROR Handle = 0x80100014 + SCARD_E_INVALID_ATR Handle = 0x80100015 + SCARD_E_NOT_TRANSACTED Handle = 0x80100016 + SCARD_E_READER_UNAVAILABLE Handle = 0x80100017 + SCARD_P_SHUTDOWN Handle = 0x80100018 + SCARD_E_PCI_TOO_SMALL Handle = 0x80100019 + SCARD_E_READER_UNSUPPORTED Handle = 0x8010001A + SCARD_E_DUPLICATE_READER Handle = 0x8010001B + SCARD_E_CARD_UNSUPPORTED Handle = 0x8010001C + SCARD_E_NO_SERVICE Handle = 0x8010001D + SCARD_E_SERVICE_STOPPED Handle = 0x8010001E + SCARD_E_UNEXPECTED Handle = 0x8010001F + SCARD_E_ICC_INSTALLATION Handle = 0x80100020 + SCARD_E_ICC_CREATEORDER Handle = 0x80100021 + SCARD_E_UNSUPPORTED_FEATURE Handle = 0x80100022 + SCARD_E_DIR_NOT_FOUND Handle = 0x80100023 + SCARD_E_FILE_NOT_FOUND Handle = 0x80100024 + SCARD_E_NO_DIR Handle = 0x80100025 + SCARD_E_NO_FILE Handle = 0x80100026 + SCARD_E_NO_ACCESS Handle = 0x80100027 + SCARD_E_WRITE_TOO_MANY Handle = 0x80100028 + SCARD_E_BAD_SEEK Handle = 0x80100029 + SCARD_E_INVALID_CHV Handle = 0x8010002A + SCARD_E_UNKNOWN_RES_MNG Handle = 0x8010002B + SCARD_E_NO_SUCH_CERTIFICATE Handle = 0x8010002C + SCARD_E_CERTIFICATE_UNAVAILABLE Handle = 0x8010002D + SCARD_E_NO_READERS_AVAILABLE Handle = 0x8010002E + SCARD_E_COMM_DATA_LOST Handle = 0x8010002F + SCARD_E_NO_KEY_CONTAINER Handle = 0x80100030 + SCARD_E_SERVER_TOO_BUSY Handle = 0x80100031 + SCARD_E_PIN_CACHE_EXPIRED Handle = 0x80100032 + SCARD_E_NO_PIN_CACHE Handle = 0x80100033 + SCARD_E_READ_ONLY_CARD Handle = 0x80100034 + SCARD_W_UNSUPPORTED_CARD Handle = 0x80100065 + SCARD_W_UNRESPONSIVE_CARD Handle = 0x80100066 + SCARD_W_UNPOWERED_CARD Handle = 0x80100067 + SCARD_W_RESET_CARD Handle = 0x80100068 + SCARD_W_REMOVED_CARD Handle = 0x80100069 + SCARD_W_SECURITY_VIOLATION Handle = 0x8010006A + SCARD_W_WRONG_CHV Handle = 0x8010006B + SCARD_W_CHV_BLOCKED Handle = 0x8010006C + SCARD_W_EOF Handle = 0x8010006D + SCARD_W_CANCELLED_BY_USER Handle = 0x8010006E + SCARD_W_CARD_NOT_AUTHENTICATED Handle = 0x8010006F + SCARD_W_CACHE_ITEM_NOT_FOUND Handle = 0x80100070 + SCARD_W_CACHE_ITEM_STALE Handle = 0x80100071 + SCARD_W_CACHE_ITEM_TOO_BIG Handle = 0x80100072 + COMADMIN_E_OBJECTERRORS Handle = 0x80110401 + COMADMIN_E_OBJECTINVALID Handle = 0x80110402 + COMADMIN_E_KEYMISSING Handle = 0x80110403 + COMADMIN_E_ALREADYINSTALLED Handle = 0x80110404 + COMADMIN_E_APP_FILE_WRITEFAIL Handle = 0x80110407 + COMADMIN_E_APP_FILE_READFAIL Handle = 0x80110408 + COMADMIN_E_APP_FILE_VERSION Handle = 0x80110409 + COMADMIN_E_BADPATH Handle = 0x8011040A + COMADMIN_E_APPLICATIONEXISTS Handle = 0x8011040B + COMADMIN_E_ROLEEXISTS Handle = 0x8011040C + COMADMIN_E_CANTCOPYFILE Handle = 0x8011040D + COMADMIN_E_NOUSER Handle = 0x8011040F + COMADMIN_E_INVALIDUSERIDS Handle = 0x80110410 + COMADMIN_E_NOREGISTRYCLSID Handle = 0x80110411 + COMADMIN_E_BADREGISTRYPROGID Handle = 0x80110412 + COMADMIN_E_AUTHENTICATIONLEVEL Handle = 0x80110413 + COMADMIN_E_USERPASSWDNOTVALID Handle = 0x80110414 + COMADMIN_E_CLSIDORIIDMISMATCH Handle = 0x80110418 + COMADMIN_E_REMOTEINTERFACE Handle = 0x80110419 + COMADMIN_E_DLLREGISTERSERVER Handle = 0x8011041A + COMADMIN_E_NOSERVERSHARE Handle = 0x8011041B + COMADMIN_E_DLLLOADFAILED Handle = 0x8011041D + COMADMIN_E_BADREGISTRYLIBID Handle = 0x8011041E + COMADMIN_E_APPDIRNOTFOUND Handle = 0x8011041F + COMADMIN_E_REGISTRARFAILED Handle = 0x80110423 + COMADMIN_E_COMPFILE_DOESNOTEXIST Handle = 0x80110424 + COMADMIN_E_COMPFILE_LOADDLLFAIL Handle = 0x80110425 + COMADMIN_E_COMPFILE_GETCLASSOBJ Handle = 0x80110426 + COMADMIN_E_COMPFILE_CLASSNOTAVAIL Handle = 0x80110427 + COMADMIN_E_COMPFILE_BADTLB Handle = 0x80110428 + COMADMIN_E_COMPFILE_NOTINSTALLABLE Handle = 0x80110429 + COMADMIN_E_NOTCHANGEABLE Handle = 0x8011042A + COMADMIN_E_NOTDELETEABLE Handle = 0x8011042B + COMADMIN_E_SESSION Handle = 0x8011042C + COMADMIN_E_COMP_MOVE_LOCKED Handle = 0x8011042D + COMADMIN_E_COMP_MOVE_BAD_DEST Handle = 0x8011042E + COMADMIN_E_REGISTERTLB Handle = 0x80110430 + COMADMIN_E_SYSTEMAPP Handle = 0x80110433 + COMADMIN_E_COMPFILE_NOREGISTRAR Handle = 0x80110434 + COMADMIN_E_COREQCOMPINSTALLED Handle = 0x80110435 + COMADMIN_E_SERVICENOTINSTALLED Handle = 0x80110436 + COMADMIN_E_PROPERTYSAVEFAILED Handle = 0x80110437 + COMADMIN_E_OBJECTEXISTS Handle = 0x80110438 + COMADMIN_E_COMPONENTEXISTS Handle = 0x80110439 + COMADMIN_E_REGFILE_CORRUPT Handle = 0x8011043B + COMADMIN_E_PROPERTY_OVERFLOW Handle = 0x8011043C + COMADMIN_E_NOTINREGISTRY Handle = 0x8011043E + COMADMIN_E_OBJECTNOTPOOLABLE Handle = 0x8011043F + COMADMIN_E_APPLID_MATCHES_CLSID Handle = 0x80110446 + COMADMIN_E_ROLE_DOES_NOT_EXIST Handle = 0x80110447 + COMADMIN_E_START_APP_NEEDS_COMPONENTS Handle = 0x80110448 + COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM Handle = 0x80110449 + COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY Handle = 0x8011044A + COMADMIN_E_CAN_NOT_START_APP Handle = 0x8011044B + COMADMIN_E_CAN_NOT_EXPORT_SYS_APP Handle = 0x8011044C + COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT Handle = 0x8011044D + COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER Handle = 0x8011044E + COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE Handle = 0x8011044F + COMADMIN_E_BASE_PARTITION_ONLY Handle = 0x80110450 + COMADMIN_E_START_APP_DISABLED Handle = 0x80110451 + COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME Handle = 0x80110457 + COMADMIN_E_CAT_INVALID_PARTITION_NAME Handle = 0x80110458 + COMADMIN_E_CAT_PARTITION_IN_USE Handle = 0x80110459 + COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES Handle = 0x8011045A + COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED Handle = 0x8011045B + COMADMIN_E_AMBIGUOUS_APPLICATION_NAME Handle = 0x8011045C + COMADMIN_E_AMBIGUOUS_PARTITION_NAME Handle = 0x8011045D + COMADMIN_E_REGDB_NOTINITIALIZED Handle = 0x80110472 + COMADMIN_E_REGDB_NOTOPEN Handle = 0x80110473 + COMADMIN_E_REGDB_SYSTEMERR Handle = 0x80110474 + COMADMIN_E_REGDB_ALREADYRUNNING Handle = 0x80110475 + COMADMIN_E_MIG_VERSIONNOTSUPPORTED Handle = 0x80110480 + COMADMIN_E_MIG_SCHEMANOTFOUND Handle = 0x80110481 + COMADMIN_E_CAT_BITNESSMISMATCH Handle = 0x80110482 + COMADMIN_E_CAT_UNACCEPTABLEBITNESS Handle = 0x80110483 + COMADMIN_E_CAT_WRONGAPPBITNESS Handle = 0x80110484 + COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED Handle = 0x80110485 + COMADMIN_E_CAT_SERVERFAULT Handle = 0x80110486 + COMQC_E_APPLICATION_NOT_QUEUED Handle = 0x80110600 + COMQC_E_NO_QUEUEABLE_INTERFACES Handle = 0x80110601 + COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE Handle = 0x80110602 + COMQC_E_NO_IPERSISTSTREAM Handle = 0x80110603 + COMQC_E_BAD_MESSAGE Handle = 0x80110604 + COMQC_E_UNAUTHENTICATED Handle = 0x80110605 + COMQC_E_UNTRUSTED_ENQUEUER Handle = 0x80110606 + MSDTC_E_DUPLICATE_RESOURCE Handle = 0x80110701 + COMADMIN_E_OBJECT_PARENT_MISSING Handle = 0x80110808 + COMADMIN_E_OBJECT_DOES_NOT_EXIST Handle = 0x80110809 + COMADMIN_E_APP_NOT_RUNNING Handle = 0x8011080A + COMADMIN_E_INVALID_PARTITION Handle = 0x8011080B + COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE Handle = 0x8011080D + COMADMIN_E_USER_IN_SET Handle = 0x8011080E + COMADMIN_E_CANTRECYCLELIBRARYAPPS Handle = 0x8011080F + COMADMIN_E_CANTRECYCLESERVICEAPPS Handle = 0x80110811 + COMADMIN_E_PROCESSALREADYRECYCLED Handle = 0x80110812 + COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED Handle = 0x80110813 + COMADMIN_E_CANTMAKEINPROCSERVICE Handle = 0x80110814 + COMADMIN_E_PROGIDINUSEBYCLSID Handle = 0x80110815 + COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET Handle = 0x80110816 + COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED Handle = 0x80110817 + COMADMIN_E_PARTITION_ACCESSDENIED Handle = 0x80110818 + COMADMIN_E_PARTITION_MSI_ONLY Handle = 0x80110819 + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT Handle = 0x8011081A + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS Handle = 0x8011081B + COMADMIN_E_COMP_MOVE_SOURCE Handle = 0x8011081C + COMADMIN_E_COMP_MOVE_DEST Handle = 0x8011081D + COMADMIN_E_COMP_MOVE_PRIVATE Handle = 0x8011081E + COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET Handle = 0x8011081F + COMADMIN_E_CANNOT_ALIAS_EVENTCLASS Handle = 0x80110820 + COMADMIN_E_PRIVATE_ACCESSDENIED Handle = 0x80110821 + COMADMIN_E_SAFERINVALID Handle = 0x80110822 + COMADMIN_E_REGISTRY_ACCESSDENIED Handle = 0x80110823 + COMADMIN_E_PARTITIONS_DISABLED Handle = 0x80110824 + WER_S_REPORT_DEBUG Handle = 0x001B0000 + WER_S_REPORT_UPLOADED Handle = 0x001B0001 + WER_S_REPORT_QUEUED Handle = 0x001B0002 + WER_S_DISABLED Handle = 0x001B0003 + WER_S_SUSPENDED_UPLOAD Handle = 0x001B0004 + WER_S_DISABLED_QUEUE Handle = 0x001B0005 + WER_S_DISABLED_ARCHIVE Handle = 0x001B0006 + WER_S_REPORT_ASYNC Handle = 0x001B0007 + WER_S_IGNORE_ASSERT_INSTANCE Handle = 0x001B0008 + WER_S_IGNORE_ALL_ASSERTS Handle = 0x001B0009 + WER_S_ASSERT_CONTINUE Handle = 0x001B000A + WER_S_THROTTLED Handle = 0x001B000B + WER_S_REPORT_UPLOADED_CAB Handle = 0x001B000C + WER_E_CRASH_FAILURE Handle = 0x801B8000 + WER_E_CANCELED Handle = 0x801B8001 + WER_E_NETWORK_FAILURE Handle = 0x801B8002 + WER_E_NOT_INITIALIZED Handle = 0x801B8003 + WER_E_ALREADY_REPORTING Handle = 0x801B8004 + WER_E_DUMP_THROTTLED Handle = 0x801B8005 + WER_E_INSUFFICIENT_CONSENT Handle = 0x801B8006 + WER_E_TOO_HEAVY Handle = 0x801B8007 + ERROR_FLT_IO_COMPLETE Handle = 0x001F0001 + ERROR_FLT_NO_HANDLER_DEFINED Handle = 0x801F0001 + ERROR_FLT_CONTEXT_ALREADY_DEFINED Handle = 0x801F0002 + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST Handle = 0x801F0003 + ERROR_FLT_DISALLOW_FAST_IO Handle = 0x801F0004 + ERROR_FLT_INVALID_NAME_REQUEST Handle = 0x801F0005 + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION Handle = 0x801F0006 + ERROR_FLT_NOT_INITIALIZED Handle = 0x801F0007 + ERROR_FLT_FILTER_NOT_READY Handle = 0x801F0008 + ERROR_FLT_POST_OPERATION_CLEANUP Handle = 0x801F0009 + ERROR_FLT_INTERNAL_ERROR Handle = 0x801F000A + ERROR_FLT_DELETING_OBJECT Handle = 0x801F000B + ERROR_FLT_MUST_BE_NONPAGED_POOL Handle = 0x801F000C + ERROR_FLT_DUPLICATE_ENTRY Handle = 0x801F000D + ERROR_FLT_CBDQ_DISABLED Handle = 0x801F000E + ERROR_FLT_DO_NOT_ATTACH Handle = 0x801F000F + ERROR_FLT_DO_NOT_DETACH Handle = 0x801F0010 + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION Handle = 0x801F0011 + ERROR_FLT_INSTANCE_NAME_COLLISION Handle = 0x801F0012 + ERROR_FLT_FILTER_NOT_FOUND Handle = 0x801F0013 + ERROR_FLT_VOLUME_NOT_FOUND Handle = 0x801F0014 + ERROR_FLT_INSTANCE_NOT_FOUND Handle = 0x801F0015 + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND Handle = 0x801F0016 + ERROR_FLT_INVALID_CONTEXT_REGISTRATION Handle = 0x801F0017 + ERROR_FLT_NAME_CACHE_MISS Handle = 0x801F0018 + ERROR_FLT_NO_DEVICE_OBJECT Handle = 0x801F0019 + ERROR_FLT_VOLUME_ALREADY_MOUNTED Handle = 0x801F001A + ERROR_FLT_ALREADY_ENLISTED Handle = 0x801F001B + ERROR_FLT_CONTEXT_ALREADY_LINKED Handle = 0x801F001C + ERROR_FLT_NO_WAITER_FOR_REPLY Handle = 0x801F0020 + ERROR_FLT_REGISTRATION_BUSY Handle = 0x801F0023 + ERROR_HUNG_DISPLAY_DRIVER_THREAD Handle = 0x80260001 + DWM_E_COMPOSITIONDISABLED Handle = 0x80263001 + DWM_E_REMOTING_NOT_SUPPORTED Handle = 0x80263002 + DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x80263003 + DWM_E_NOT_QUEUING_PRESENTS Handle = 0x80263004 + DWM_E_ADAPTER_NOT_FOUND Handle = 0x80263005 + DWM_S_GDI_REDIRECTION_SURFACE Handle = 0x00263005 + DWM_E_TEXTURE_TOO_LARGE Handle = 0x80263007 + DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI Handle = 0x00263008 + ERROR_MONITOR_NO_DESCRIPTOR Handle = 0x00261001 + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT Handle = 0x00261002 + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM Handle = 0xC0261003 + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK Handle = 0xC0261004 + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED Handle = 0xC0261005 + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK Handle = 0xC0261006 + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK Handle = 0xC0261007 + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA Handle = 0xC0261008 + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK Handle = 0xC0261009 + ERROR_MONITOR_INVALID_MANUFACTURE_DATE Handle = 0xC026100A + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER Handle = 0xC0262000 + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER Handle = 0xC0262001 + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER Handle = 0xC0262002 + ERROR_GRAPHICS_ADAPTER_WAS_RESET Handle = 0xC0262003 + ERROR_GRAPHICS_INVALID_DRIVER_MODEL Handle = 0xC0262004 + ERROR_GRAPHICS_PRESENT_MODE_CHANGED Handle = 0xC0262005 + ERROR_GRAPHICS_PRESENT_OCCLUDED Handle = 0xC0262006 + ERROR_GRAPHICS_PRESENT_DENIED Handle = 0xC0262007 + ERROR_GRAPHICS_CANNOTCOLORCONVERT Handle = 0xC0262008 + ERROR_GRAPHICS_DRIVER_MISMATCH Handle = 0xC0262009 + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED Handle = 0x4026200A + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED Handle = 0xC026200B + ERROR_GRAPHICS_PRESENT_UNOCCLUDED Handle = 0xC026200C + ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE Handle = 0xC026200D + ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED Handle = 0xC026200E + ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F + ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010 + ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011 + ERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN Handle = 0xC0262012 + ERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED Handle = 0xC0262013 + ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100 + ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101 + ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102 + ERROR_GRAPHICS_TOO_MANY_REFERENCES Handle = 0xC0262103 + ERROR_GRAPHICS_TRY_AGAIN_LATER Handle = 0xC0262104 + ERROR_GRAPHICS_TRY_AGAIN_NOW Handle = 0xC0262105 + ERROR_GRAPHICS_ALLOCATION_INVALID Handle = 0xC0262106 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE Handle = 0xC0262107 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED Handle = 0xC0262108 + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Handle = 0xC0262109 + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE Handle = 0xC0262110 + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION Handle = 0xC0262111 + ERROR_GRAPHICS_ALLOCATION_CLOSED Handle = 0xC0262112 + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE Handle = 0xC0262113 + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE Handle = 0xC0262114 + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE Handle = 0xC0262115 + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST Handle = 0xC0262116 + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE Handle = 0xC0262200 + ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION Handle = 0x40262201 + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY Handle = 0xC0262300 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED Handle = 0xC0262301 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED Handle = 0xC0262302 + ERROR_GRAPHICS_INVALID_VIDPN Handle = 0xC0262303 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Handle = 0xC0262304 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Handle = 0xC0262305 + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED Handle = 0xC0262306 + ERROR_GRAPHICS_MODE_NOT_PINNED Handle = 0x00262307 + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Handle = 0xC0262308 + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET Handle = 0xC0262309 + ERROR_GRAPHICS_INVALID_FREQUENCY Handle = 0xC026230A + ERROR_GRAPHICS_INVALID_ACTIVE_REGION Handle = 0xC026230B + ERROR_GRAPHICS_INVALID_TOTAL_REGION Handle = 0xC026230C + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE Handle = 0xC0262310 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE Handle = 0xC0262311 + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Handle = 0xC0262312 + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY Handle = 0xC0262313 + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET Handle = 0xC0262314 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET Handle = 0xC0262315 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET Handle = 0xC0262316 + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET Handle = 0xC0262317 + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET Handle = 0xC0262318 + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH Handle = 0xC0262319 + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY Handle = 0xC026231A + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET Handle = 0xC026231B + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE Handle = 0xC026231C + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET Handle = 0xC026231D + ERROR_GRAPHICS_NO_PREFERRED_MODE Handle = 0x0026231E + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET Handle = 0xC026231F + ERROR_GRAPHICS_STALE_MODESET Handle = 0xC0262320 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET Handle = 0xC0262321 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE Handle = 0xC0262322 + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN Handle = 0xC0262323 + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE Handle = 0xC0262324 + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION Handle = 0xC0262325 + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES Handle = 0xC0262326 + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY Handle = 0xC0262327 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE Handle = 0xC0262328 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET Handle = 0xC0262329 + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET Handle = 0xC026232A + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR Handle = 0xC026232B + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET Handle = 0xC026232C + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET Handle = 0xC026232D + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE Handle = 0xC026232E + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE Handle = 0xC026232F + ERROR_GRAPHICS_RESOURCES_NOT_RELATED Handle = 0xC0262330 + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE Handle = 0xC0262331 + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE Handle = 0xC0262332 + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET Handle = 0xC0262333 + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER Handle = 0xC0262334 + ERROR_GRAPHICS_NO_VIDPNMGR Handle = 0xC0262335 + ERROR_GRAPHICS_NO_ACTIVE_VIDPN Handle = 0xC0262336 + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY Handle = 0xC0262337 + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED Handle = 0xC0262338 + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY Handle = 0xC0262339 + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE Handle = 0xC026233A + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE Handle = 0xC026233B + ERROR_GRAPHICS_INVALID_STRIDE Handle = 0xC026233C + ERROR_GRAPHICS_INVALID_PIXELFORMAT Handle = 0xC026233D + ERROR_GRAPHICS_INVALID_COLORBASIS Handle = 0xC026233E + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE Handle = 0xC026233F + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY Handle = 0xC0262340 + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT Handle = 0xC0262341 + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0xC0262342 + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN Handle = 0xC0262343 + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL Handle = 0xC0262344 + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION Handle = 0xC0262345 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED Handle = 0xC0262346 + ERROR_GRAPHICS_INVALID_GAMMA_RAMP Handle = 0xC0262347 + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED Handle = 0xC0262348 + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED Handle = 0xC0262349 + ERROR_GRAPHICS_MODE_NOT_IN_MODESET Handle = 0xC026234A + ERROR_GRAPHICS_DATASET_IS_EMPTY Handle = 0x0026234B + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET Handle = 0x0026234C + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON Handle = 0xC026234D + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE Handle = 0xC026234E + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE Handle = 0xC026234F + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS Handle = 0xC0262350 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED Handle = 0x00262351 + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING Handle = 0xC0262352 + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED Handle = 0xC0262353 + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS Handle = 0xC0262354 + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT Handle = 0xC0262355 + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM Handle = 0xC0262356 + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN Handle = 0xC0262357 + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT Handle = 0xC0262358 + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED Handle = 0xC0262359 + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION Handle = 0xC026235A + ERROR_GRAPHICS_INVALID_CLIENT_TYPE Handle = 0xC026235B + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET Handle = 0xC026235C + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED Handle = 0xC0262400 + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED Handle = 0xC0262401 + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS Handle = 0x4026242F + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER Handle = 0xC0262430 + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED Handle = 0xC0262431 + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED Handle = 0xC0262432 + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY Handle = 0xC0262433 + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED Handle = 0xC0262434 + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON Handle = 0xC0262435 + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE Handle = 0xC0262436 + ERROR_GRAPHICS_LEADLINK_START_DEFERRED Handle = 0x40262437 + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER Handle = 0xC0262438 + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY Handle = 0x40262439 + ERROR_GRAPHICS_START_DEFERRED Handle = 0x4026243A + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED Handle = 0xC026243B + ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS Handle = 0x4026243C + ERROR_GRAPHICS_OPM_NOT_SUPPORTED Handle = 0xC0262500 + ERROR_GRAPHICS_COPP_NOT_SUPPORTED Handle = 0xC0262501 + ERROR_GRAPHICS_UAB_NOT_SUPPORTED Handle = 0xC0262502 + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS Handle = 0xC0262503 + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST Handle = 0xC0262505 + ERROR_GRAPHICS_OPM_INTERNAL_ERROR Handle = 0xC026250B + ERROR_GRAPHICS_OPM_INVALID_HANDLE Handle = 0xC026250C + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH Handle = 0xC026250E + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED Handle = 0xC026250F + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED Handle = 0xC0262510 + ERROR_GRAPHICS_PVP_HFS_FAILED Handle = 0xC0262511 + ERROR_GRAPHICS_OPM_INVALID_SRM Handle = 0xC0262512 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP Handle = 0xC0262513 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP Handle = 0xC0262514 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA Handle = 0xC0262515 + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET Handle = 0xC0262516 + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH Handle = 0xC0262517 + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE Handle = 0xC0262518 + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS Handle = 0xC026251A + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC026251B + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS Handle = 0xC026251C + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST Handle = 0xC026251D + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR Handle = 0xC026251E + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS Handle = 0xC026251F + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED Handle = 0xC0262520 + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST Handle = 0xC0262521 + ERROR_GRAPHICS_I2C_NOT_SUPPORTED Handle = 0xC0262580 + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST Handle = 0xC0262581 + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA Handle = 0xC0262582 + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA Handle = 0xC0262583 + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED Handle = 0xC0262584 + ERROR_GRAPHICS_DDCCI_INVALID_DATA Handle = 0xC0262585 + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE Handle = 0xC0262586 + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING Handle = 0xC0262587 + ERROR_GRAPHICS_MCA_INTERNAL_ERROR Handle = 0xC0262588 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND Handle = 0xC0262589 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH Handle = 0xC026258A + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM Handle = 0xC026258B + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE Handle = 0xC026258C + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS Handle = 0xC026258D + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE Handle = 0xC02625D8 + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION Handle = 0xC02625D9 + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION Handle = 0xC02625DA + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH Handle = 0xC02625DB + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION Handle = 0xC02625DC + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED Handle = 0xC02625DE + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE Handle = 0xC02625DF + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED Handle = 0xC02625E0 + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME Handle = 0xC02625E1 + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP Handle = 0xC02625E2 + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED Handle = 0xC02625E3 + ERROR_GRAPHICS_INVALID_POINTER Handle = 0xC02625E4 + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE Handle = 0xC02625E5 + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL Handle = 0xC02625E6 + ERROR_GRAPHICS_INTERNAL_ERROR Handle = 0xC02625E7 + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC02605E8 + NAP_E_INVALID_PACKET Handle = 0x80270001 + NAP_E_MISSING_SOH Handle = 0x80270002 + NAP_E_CONFLICTING_ID Handle = 0x80270003 + NAP_E_NO_CACHED_SOH Handle = 0x80270004 + NAP_E_STILL_BOUND Handle = 0x80270005 + NAP_E_NOT_REGISTERED Handle = 0x80270006 + NAP_E_NOT_INITIALIZED Handle = 0x80270007 + NAP_E_MISMATCHED_ID Handle = 0x80270008 + NAP_E_NOT_PENDING Handle = 0x80270009 + NAP_E_ID_NOT_FOUND Handle = 0x8027000A + NAP_E_MAXSIZE_TOO_SMALL Handle = 0x8027000B + NAP_E_SERVICE_NOT_RUNNING Handle = 0x8027000C + NAP_S_CERT_ALREADY_PRESENT Handle = 0x0027000D + NAP_E_ENTITY_DISABLED Handle = 0x8027000E + NAP_E_NETSH_GROUPPOLICY_ERROR Handle = 0x8027000F + NAP_E_TOO_MANY_CALLS Handle = 0x80270010 + NAP_E_SHV_CONFIG_EXISTED Handle = 0x80270011 + NAP_E_SHV_CONFIG_NOT_FOUND Handle = 0x80270012 + NAP_E_SHV_TIMEOUT Handle = 0x80270013 + TPM_E_ERROR_MASK Handle = 0x80280000 + TPM_E_AUTHFAIL Handle = 0x80280001 + TPM_E_BADINDEX Handle = 0x80280002 + TPM_E_BAD_PARAMETER Handle = 0x80280003 + TPM_E_AUDITFAILURE Handle = 0x80280004 + TPM_E_CLEAR_DISABLED Handle = 0x80280005 + TPM_E_DEACTIVATED Handle = 0x80280006 + TPM_E_DISABLED Handle = 0x80280007 + TPM_E_DISABLED_CMD Handle = 0x80280008 + TPM_E_FAIL Handle = 0x80280009 + TPM_E_BAD_ORDINAL Handle = 0x8028000A + TPM_E_INSTALL_DISABLED Handle = 0x8028000B + TPM_E_INVALID_KEYHANDLE Handle = 0x8028000C + TPM_E_KEYNOTFOUND Handle = 0x8028000D + TPM_E_INAPPROPRIATE_ENC Handle = 0x8028000E + TPM_E_MIGRATEFAIL Handle = 0x8028000F + TPM_E_INVALID_PCR_INFO Handle = 0x80280010 + TPM_E_NOSPACE Handle = 0x80280011 + TPM_E_NOSRK Handle = 0x80280012 + TPM_E_NOTSEALED_BLOB Handle = 0x80280013 + TPM_E_OWNER_SET Handle = 0x80280014 + TPM_E_RESOURCES Handle = 0x80280015 + TPM_E_SHORTRANDOM Handle = 0x80280016 + TPM_E_SIZE Handle = 0x80280017 + TPM_E_WRONGPCRVAL Handle = 0x80280018 + TPM_E_BAD_PARAM_SIZE Handle = 0x80280019 + TPM_E_SHA_THREAD Handle = 0x8028001A + TPM_E_SHA_ERROR Handle = 0x8028001B + TPM_E_FAILEDSELFTEST Handle = 0x8028001C + TPM_E_AUTH2FAIL Handle = 0x8028001D + TPM_E_BADTAG Handle = 0x8028001E + TPM_E_IOERROR Handle = 0x8028001F + TPM_E_ENCRYPT_ERROR Handle = 0x80280020 + TPM_E_DECRYPT_ERROR Handle = 0x80280021 + TPM_E_INVALID_AUTHHANDLE Handle = 0x80280022 + TPM_E_NO_ENDORSEMENT Handle = 0x80280023 + TPM_E_INVALID_KEYUSAGE Handle = 0x80280024 + TPM_E_WRONG_ENTITYTYPE Handle = 0x80280025 + TPM_E_INVALID_POSTINIT Handle = 0x80280026 + TPM_E_INAPPROPRIATE_SIG Handle = 0x80280027 + TPM_E_BAD_KEY_PROPERTY Handle = 0x80280028 + TPM_E_BAD_MIGRATION Handle = 0x80280029 + TPM_E_BAD_SCHEME Handle = 0x8028002A + TPM_E_BAD_DATASIZE Handle = 0x8028002B + TPM_E_BAD_MODE Handle = 0x8028002C + TPM_E_BAD_PRESENCE Handle = 0x8028002D + TPM_E_BAD_VERSION Handle = 0x8028002E + TPM_E_NO_WRAP_TRANSPORT Handle = 0x8028002F + TPM_E_AUDITFAIL_UNSUCCESSFUL Handle = 0x80280030 + TPM_E_AUDITFAIL_SUCCESSFUL Handle = 0x80280031 + TPM_E_NOTRESETABLE Handle = 0x80280032 + TPM_E_NOTLOCAL Handle = 0x80280033 + TPM_E_BAD_TYPE Handle = 0x80280034 + TPM_E_INVALID_RESOURCE Handle = 0x80280035 + TPM_E_NOTFIPS Handle = 0x80280036 + TPM_E_INVALID_FAMILY Handle = 0x80280037 + TPM_E_NO_NV_PERMISSION Handle = 0x80280038 + TPM_E_REQUIRES_SIGN Handle = 0x80280039 + TPM_E_KEY_NOTSUPPORTED Handle = 0x8028003A + TPM_E_AUTH_CONFLICT Handle = 0x8028003B + TPM_E_AREA_LOCKED Handle = 0x8028003C + TPM_E_BAD_LOCALITY Handle = 0x8028003D + TPM_E_READ_ONLY Handle = 0x8028003E + TPM_E_PER_NOWRITE Handle = 0x8028003F + TPM_E_FAMILYCOUNT Handle = 0x80280040 + TPM_E_WRITE_LOCKED Handle = 0x80280041 + TPM_E_BAD_ATTRIBUTES Handle = 0x80280042 + TPM_E_INVALID_STRUCTURE Handle = 0x80280043 + TPM_E_KEY_OWNER_CONTROL Handle = 0x80280044 + TPM_E_BAD_COUNTER Handle = 0x80280045 + TPM_E_NOT_FULLWRITE Handle = 0x80280046 + TPM_E_CONTEXT_GAP Handle = 0x80280047 + TPM_E_MAXNVWRITES Handle = 0x80280048 + TPM_E_NOOPERATOR Handle = 0x80280049 + TPM_E_RESOURCEMISSING Handle = 0x8028004A + TPM_E_DELEGATE_LOCK Handle = 0x8028004B + TPM_E_DELEGATE_FAMILY Handle = 0x8028004C + TPM_E_DELEGATE_ADMIN Handle = 0x8028004D + TPM_E_TRANSPORT_NOTEXCLUSIVE Handle = 0x8028004E + TPM_E_OWNER_CONTROL Handle = 0x8028004F + TPM_E_DAA_RESOURCES Handle = 0x80280050 + TPM_E_DAA_INPUT_DATA0 Handle = 0x80280051 + TPM_E_DAA_INPUT_DATA1 Handle = 0x80280052 + TPM_E_DAA_ISSUER_SETTINGS Handle = 0x80280053 + TPM_E_DAA_TPM_SETTINGS Handle = 0x80280054 + TPM_E_DAA_STAGE Handle = 0x80280055 + TPM_E_DAA_ISSUER_VALIDITY Handle = 0x80280056 + TPM_E_DAA_WRONG_W Handle = 0x80280057 + TPM_E_BAD_HANDLE Handle = 0x80280058 + TPM_E_BAD_DELEGATE Handle = 0x80280059 + TPM_E_BADCONTEXT Handle = 0x8028005A + TPM_E_TOOMANYCONTEXTS Handle = 0x8028005B + TPM_E_MA_TICKET_SIGNATURE Handle = 0x8028005C + TPM_E_MA_DESTINATION Handle = 0x8028005D + TPM_E_MA_SOURCE Handle = 0x8028005E + TPM_E_MA_AUTHORITY Handle = 0x8028005F + TPM_E_PERMANENTEK Handle = 0x80280061 + TPM_E_BAD_SIGNATURE Handle = 0x80280062 + TPM_E_NOCONTEXTSPACE Handle = 0x80280063 + TPM_20_E_ASYMMETRIC Handle = 0x80280081 + TPM_20_E_ATTRIBUTES Handle = 0x80280082 + TPM_20_E_HASH Handle = 0x80280083 + TPM_20_E_VALUE Handle = 0x80280084 + TPM_20_E_HIERARCHY Handle = 0x80280085 + TPM_20_E_KEY_SIZE Handle = 0x80280087 + TPM_20_E_MGF Handle = 0x80280088 + TPM_20_E_MODE Handle = 0x80280089 + TPM_20_E_TYPE Handle = 0x8028008A + TPM_20_E_HANDLE Handle = 0x8028008B + TPM_20_E_KDF Handle = 0x8028008C + TPM_20_E_RANGE Handle = 0x8028008D + TPM_20_E_AUTH_FAIL Handle = 0x8028008E + TPM_20_E_NONCE Handle = 0x8028008F + TPM_20_E_PP Handle = 0x80280090 + TPM_20_E_SCHEME Handle = 0x80280092 + TPM_20_E_SIZE Handle = 0x80280095 + TPM_20_E_SYMMETRIC Handle = 0x80280096 + TPM_20_E_TAG Handle = 0x80280097 + TPM_20_E_SELECTOR Handle = 0x80280098 + TPM_20_E_INSUFFICIENT Handle = 0x8028009A + TPM_20_E_SIGNATURE Handle = 0x8028009B + TPM_20_E_KEY Handle = 0x8028009C + TPM_20_E_POLICY_FAIL Handle = 0x8028009D + TPM_20_E_INTEGRITY Handle = 0x8028009F + TPM_20_E_TICKET Handle = 0x802800A0 + TPM_20_E_RESERVED_BITS Handle = 0x802800A1 + TPM_20_E_BAD_AUTH Handle = 0x802800A2 + TPM_20_E_EXPIRED Handle = 0x802800A3 + TPM_20_E_POLICY_CC Handle = 0x802800A4 + TPM_20_E_BINDING Handle = 0x802800A5 + TPM_20_E_CURVE Handle = 0x802800A6 + TPM_20_E_ECC_POINT Handle = 0x802800A7 + TPM_20_E_INITIALIZE Handle = 0x80280100 + TPM_20_E_FAILURE Handle = 0x80280101 + TPM_20_E_SEQUENCE Handle = 0x80280103 + TPM_20_E_PRIVATE Handle = 0x8028010B + TPM_20_E_HMAC Handle = 0x80280119 + TPM_20_E_DISABLED Handle = 0x80280120 + TPM_20_E_EXCLUSIVE Handle = 0x80280121 + TPM_20_E_ECC_CURVE Handle = 0x80280123 + TPM_20_E_AUTH_TYPE Handle = 0x80280124 + TPM_20_E_AUTH_MISSING Handle = 0x80280125 + TPM_20_E_POLICY Handle = 0x80280126 + TPM_20_E_PCR Handle = 0x80280127 + TPM_20_E_PCR_CHANGED Handle = 0x80280128 + TPM_20_E_UPGRADE Handle = 0x8028012D + TPM_20_E_TOO_MANY_CONTEXTS Handle = 0x8028012E + TPM_20_E_AUTH_UNAVAILABLE Handle = 0x8028012F + TPM_20_E_REBOOT Handle = 0x80280130 + TPM_20_E_UNBALANCED Handle = 0x80280131 + TPM_20_E_COMMAND_SIZE Handle = 0x80280142 + TPM_20_E_COMMAND_CODE Handle = 0x80280143 + TPM_20_E_AUTHSIZE Handle = 0x80280144 + TPM_20_E_AUTH_CONTEXT Handle = 0x80280145 + TPM_20_E_NV_RANGE Handle = 0x80280146 + TPM_20_E_NV_SIZE Handle = 0x80280147 + TPM_20_E_NV_LOCKED Handle = 0x80280148 + TPM_20_E_NV_AUTHORIZATION Handle = 0x80280149 + TPM_20_E_NV_UNINITIALIZED Handle = 0x8028014A + TPM_20_E_NV_SPACE Handle = 0x8028014B + TPM_20_E_NV_DEFINED Handle = 0x8028014C + TPM_20_E_BAD_CONTEXT Handle = 0x80280150 + TPM_20_E_CPHASH Handle = 0x80280151 + TPM_20_E_PARENT Handle = 0x80280152 + TPM_20_E_NEEDS_TEST Handle = 0x80280153 + TPM_20_E_NO_RESULT Handle = 0x80280154 + TPM_20_E_SENSITIVE Handle = 0x80280155 + TPM_E_COMMAND_BLOCKED Handle = 0x80280400 + TPM_E_INVALID_HANDLE Handle = 0x80280401 + TPM_E_DUPLICATE_VHANDLE Handle = 0x80280402 + TPM_E_EMBEDDED_COMMAND_BLOCKED Handle = 0x80280403 + TPM_E_EMBEDDED_COMMAND_UNSUPPORTED Handle = 0x80280404 + TPM_E_RETRY Handle = 0x80280800 + TPM_E_NEEDS_SELFTEST Handle = 0x80280801 + TPM_E_DOING_SELFTEST Handle = 0x80280802 + TPM_E_DEFEND_LOCK_RUNNING Handle = 0x80280803 + TPM_20_E_CONTEXT_GAP Handle = 0x80280901 + TPM_20_E_OBJECT_MEMORY Handle = 0x80280902 + TPM_20_E_SESSION_MEMORY Handle = 0x80280903 + TPM_20_E_MEMORY Handle = 0x80280904 + TPM_20_E_SESSION_HANDLES Handle = 0x80280905 + TPM_20_E_OBJECT_HANDLES Handle = 0x80280906 + TPM_20_E_LOCALITY Handle = 0x80280907 + TPM_20_E_YIELDED Handle = 0x80280908 + TPM_20_E_CANCELED Handle = 0x80280909 + TPM_20_E_TESTING Handle = 0x8028090A + TPM_20_E_NV_RATE Handle = 0x80280920 + TPM_20_E_LOCKOUT Handle = 0x80280921 + TPM_20_E_RETRY Handle = 0x80280922 + TPM_20_E_NV_UNAVAILABLE Handle = 0x80280923 + TBS_E_INTERNAL_ERROR Handle = 0x80284001 + TBS_E_BAD_PARAMETER Handle = 0x80284002 + TBS_E_INVALID_OUTPUT_POINTER Handle = 0x80284003 + TBS_E_INVALID_CONTEXT Handle = 0x80284004 + TBS_E_INSUFFICIENT_BUFFER Handle = 0x80284005 + TBS_E_IOERROR Handle = 0x80284006 + TBS_E_INVALID_CONTEXT_PARAM Handle = 0x80284007 + TBS_E_SERVICE_NOT_RUNNING Handle = 0x80284008 + TBS_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80284009 + TBS_E_TOO_MANY_RESOURCES Handle = 0x8028400A + TBS_E_SERVICE_START_PENDING Handle = 0x8028400B + TBS_E_PPI_NOT_SUPPORTED Handle = 0x8028400C + TBS_E_COMMAND_CANCELED Handle = 0x8028400D + TBS_E_BUFFER_TOO_LARGE Handle = 0x8028400E + TBS_E_TPM_NOT_FOUND Handle = 0x8028400F + TBS_E_SERVICE_DISABLED Handle = 0x80284010 + TBS_E_NO_EVENT_LOG Handle = 0x80284011 + TBS_E_ACCESS_DENIED Handle = 0x80284012 + TBS_E_PROVISIONING_NOT_ALLOWED Handle = 0x80284013 + TBS_E_PPI_FUNCTION_UNSUPPORTED Handle = 0x80284014 + TBS_E_OWNERAUTH_NOT_FOUND Handle = 0x80284015 + TBS_E_PROVISIONING_INCOMPLETE Handle = 0x80284016 + TPMAPI_E_INVALID_STATE Handle = 0x80290100 + TPMAPI_E_NOT_ENOUGH_DATA Handle = 0x80290101 + TPMAPI_E_TOO_MUCH_DATA Handle = 0x80290102 + TPMAPI_E_INVALID_OUTPUT_POINTER Handle = 0x80290103 + TPMAPI_E_INVALID_PARAMETER Handle = 0x80290104 + TPMAPI_E_OUT_OF_MEMORY Handle = 0x80290105 + TPMAPI_E_BUFFER_TOO_SMALL Handle = 0x80290106 + TPMAPI_E_INTERNAL_ERROR Handle = 0x80290107 + TPMAPI_E_ACCESS_DENIED Handle = 0x80290108 + TPMAPI_E_AUTHORIZATION_FAILED Handle = 0x80290109 + TPMAPI_E_INVALID_CONTEXT_HANDLE Handle = 0x8029010A + TPMAPI_E_TBS_COMMUNICATION_ERROR Handle = 0x8029010B + TPMAPI_E_TPM_COMMAND_ERROR Handle = 0x8029010C + TPMAPI_E_MESSAGE_TOO_LARGE Handle = 0x8029010D + TPMAPI_E_INVALID_ENCODING Handle = 0x8029010E + TPMAPI_E_INVALID_KEY_SIZE Handle = 0x8029010F + TPMAPI_E_ENCRYPTION_FAILED Handle = 0x80290110 + TPMAPI_E_INVALID_KEY_PARAMS Handle = 0x80290111 + TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB Handle = 0x80290112 + TPMAPI_E_INVALID_PCR_INDEX Handle = 0x80290113 + TPMAPI_E_INVALID_DELEGATE_BLOB Handle = 0x80290114 + TPMAPI_E_INVALID_CONTEXT_PARAMS Handle = 0x80290115 + TPMAPI_E_INVALID_KEY_BLOB Handle = 0x80290116 + TPMAPI_E_INVALID_PCR_DATA Handle = 0x80290117 + TPMAPI_E_INVALID_OWNER_AUTH Handle = 0x80290118 + TPMAPI_E_FIPS_RNG_CHECK_FAILED Handle = 0x80290119 + TPMAPI_E_EMPTY_TCG_LOG Handle = 0x8029011A + TPMAPI_E_INVALID_TCG_LOG_ENTRY Handle = 0x8029011B + TPMAPI_E_TCG_SEPARATOR_ABSENT Handle = 0x8029011C + TPMAPI_E_TCG_INVALID_DIGEST_ENTRY Handle = 0x8029011D + TPMAPI_E_POLICY_DENIES_OPERATION Handle = 0x8029011E + TPMAPI_E_NV_BITS_NOT_DEFINED Handle = 0x8029011F + TPMAPI_E_NV_BITS_NOT_READY Handle = 0x80290120 + TPMAPI_E_SEALING_KEY_NOT_AVAILABLE Handle = 0x80290121 + TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND Handle = 0x80290122 + TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE Handle = 0x80290123 + TPMAPI_E_OWNER_AUTH_NOT_NULL Handle = 0x80290124 + TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL Handle = 0x80290125 + TPMAPI_E_AUTHORIZATION_REVOKED Handle = 0x80290126 + TPMAPI_E_MALFORMED_AUTHORIZATION_KEY Handle = 0x80290127 + TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED Handle = 0x80290128 + TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE Handle = 0x80290129 + TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY Handle = 0x8029012A + TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER Handle = 0x8029012B + TPMAPI_E_SEALING_KEY_CHANGED Handle = 0x8029012C + TBSIMP_E_BUFFER_TOO_SMALL Handle = 0x80290200 + TBSIMP_E_CLEANUP_FAILED Handle = 0x80290201 + TBSIMP_E_INVALID_CONTEXT_HANDLE Handle = 0x80290202 + TBSIMP_E_INVALID_CONTEXT_PARAM Handle = 0x80290203 + TBSIMP_E_TPM_ERROR Handle = 0x80290204 + TBSIMP_E_HASH_BAD_KEY Handle = 0x80290205 + TBSIMP_E_DUPLICATE_VHANDLE Handle = 0x80290206 + TBSIMP_E_INVALID_OUTPUT_POINTER Handle = 0x80290207 + TBSIMP_E_INVALID_PARAMETER Handle = 0x80290208 + TBSIMP_E_RPC_INIT_FAILED Handle = 0x80290209 + TBSIMP_E_SCHEDULER_NOT_RUNNING Handle = 0x8029020A + TBSIMP_E_COMMAND_CANCELED Handle = 0x8029020B + TBSIMP_E_OUT_OF_MEMORY Handle = 0x8029020C + TBSIMP_E_LIST_NO_MORE_ITEMS Handle = 0x8029020D + TBSIMP_E_LIST_NOT_FOUND Handle = 0x8029020E + TBSIMP_E_NOT_ENOUGH_SPACE Handle = 0x8029020F + TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS Handle = 0x80290210 + TBSIMP_E_COMMAND_FAILED Handle = 0x80290211 + TBSIMP_E_UNKNOWN_ORDINAL Handle = 0x80290212 + TBSIMP_E_RESOURCE_EXPIRED Handle = 0x80290213 + TBSIMP_E_INVALID_RESOURCE Handle = 0x80290214 + TBSIMP_E_NOTHING_TO_UNLOAD Handle = 0x80290215 + TBSIMP_E_HASH_TABLE_FULL Handle = 0x80290216 + TBSIMP_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80290217 + TBSIMP_E_TOO_MANY_RESOURCES Handle = 0x80290218 + TBSIMP_E_PPI_NOT_SUPPORTED Handle = 0x80290219 + TBSIMP_E_TPM_INCOMPATIBLE Handle = 0x8029021A + TBSIMP_E_NO_EVENT_LOG Handle = 0x8029021B + TPM_E_PPI_ACPI_FAILURE Handle = 0x80290300 + TPM_E_PPI_USER_ABORT Handle = 0x80290301 + TPM_E_PPI_BIOS_FAILURE Handle = 0x80290302 + TPM_E_PPI_NOT_SUPPORTED Handle = 0x80290303 + TPM_E_PPI_BLOCKED_IN_BIOS Handle = 0x80290304 + TPM_E_PCP_ERROR_MASK Handle = 0x80290400 + TPM_E_PCP_DEVICE_NOT_READY Handle = 0x80290401 + TPM_E_PCP_INVALID_HANDLE Handle = 0x80290402 + TPM_E_PCP_INVALID_PARAMETER Handle = 0x80290403 + TPM_E_PCP_FLAG_NOT_SUPPORTED Handle = 0x80290404 + TPM_E_PCP_NOT_SUPPORTED Handle = 0x80290405 + TPM_E_PCP_BUFFER_TOO_SMALL Handle = 0x80290406 + TPM_E_PCP_INTERNAL_ERROR Handle = 0x80290407 + TPM_E_PCP_AUTHENTICATION_FAILED Handle = 0x80290408 + TPM_E_PCP_AUTHENTICATION_IGNORED Handle = 0x80290409 + TPM_E_PCP_POLICY_NOT_FOUND Handle = 0x8029040A + TPM_E_PCP_PROFILE_NOT_FOUND Handle = 0x8029040B + TPM_E_PCP_VALIDATION_FAILED Handle = 0x8029040C + TPM_E_PCP_WRONG_PARENT Handle = 0x8029040E + TPM_E_KEY_NOT_LOADED Handle = 0x8029040F + TPM_E_NO_KEY_CERTIFICATION Handle = 0x80290410 + TPM_E_KEY_NOT_FINALIZED Handle = 0x80290411 + TPM_E_ATTESTATION_CHALLENGE_NOT_SET Handle = 0x80290412 + TPM_E_NOT_PCR_BOUND Handle = 0x80290413 + TPM_E_KEY_ALREADY_FINALIZED Handle = 0x80290414 + TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED Handle = 0x80290415 + TPM_E_KEY_USAGE_POLICY_INVALID Handle = 0x80290416 + TPM_E_SOFT_KEY_ERROR Handle = 0x80290417 + TPM_E_KEY_NOT_AUTHENTICATED Handle = 0x80290418 + TPM_E_PCP_KEY_NOT_AIK Handle = 0x80290419 + TPM_E_KEY_NOT_SIGNING_KEY Handle = 0x8029041A + TPM_E_LOCKED_OUT Handle = 0x8029041B + TPM_E_CLAIM_TYPE_NOT_SUPPORTED Handle = 0x8029041C + TPM_E_VERSION_NOT_SUPPORTED Handle = 0x8029041D + TPM_E_BUFFER_LENGTH_MISMATCH Handle = 0x8029041E + TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED Handle = 0x8029041F + TPM_E_PCP_TICKET_MISSING Handle = 0x80290420 + TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED Handle = 0x80290421 + TPM_E_PCP_KEY_HANDLE_INVALIDATED Handle = 0x80290422 + TPM_E_PCP_UNSUPPORTED_PSS_SALT Handle = 0x40290423 + TPM_E_ZERO_EXHAUST_ENABLED Handle = 0x80290500 + PLA_E_DCS_NOT_FOUND Handle = 0x80300002 + PLA_E_DCS_IN_USE Handle = 0x803000AA + PLA_E_TOO_MANY_FOLDERS Handle = 0x80300045 + PLA_E_NO_MIN_DISK Handle = 0x80300070 + PLA_E_DCS_ALREADY_EXISTS Handle = 0x803000B7 + PLA_S_PROPERTY_IGNORED Handle = 0x00300100 + PLA_E_PROPERTY_CONFLICT Handle = 0x80300101 + PLA_E_DCS_SINGLETON_REQUIRED Handle = 0x80300102 + PLA_E_CREDENTIALS_REQUIRED Handle = 0x80300103 + PLA_E_DCS_NOT_RUNNING Handle = 0x80300104 + PLA_E_CONFLICT_INCL_EXCL_API Handle = 0x80300105 + PLA_E_NETWORK_EXE_NOT_VALID Handle = 0x80300106 + PLA_E_EXE_ALREADY_CONFIGURED Handle = 0x80300107 + PLA_E_EXE_PATH_NOT_VALID Handle = 0x80300108 + PLA_E_DC_ALREADY_EXISTS Handle = 0x80300109 + PLA_E_DCS_START_WAIT_TIMEOUT Handle = 0x8030010A + PLA_E_DC_START_WAIT_TIMEOUT Handle = 0x8030010B + PLA_E_REPORT_WAIT_TIMEOUT Handle = 0x8030010C + PLA_E_NO_DUPLICATES Handle = 0x8030010D + PLA_E_EXE_FULL_PATH_REQUIRED Handle = 0x8030010E + PLA_E_INVALID_SESSION_NAME Handle = 0x8030010F + PLA_E_PLA_CHANNEL_NOT_ENABLED Handle = 0x80300110 + PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED Handle = 0x80300111 + PLA_E_RULES_MANAGER_FAILED Handle = 0x80300112 + PLA_E_CABAPI_FAILURE Handle = 0x80300113 + FVE_E_LOCKED_VOLUME Handle = 0x80310000 + FVE_E_NOT_ENCRYPTED Handle = 0x80310001 + FVE_E_NO_TPM_BIOS Handle = 0x80310002 + FVE_E_NO_MBR_METRIC Handle = 0x80310003 + FVE_E_NO_BOOTSECTOR_METRIC Handle = 0x80310004 + FVE_E_NO_BOOTMGR_METRIC Handle = 0x80310005 + FVE_E_WRONG_BOOTMGR Handle = 0x80310006 + FVE_E_SECURE_KEY_REQUIRED Handle = 0x80310007 + FVE_E_NOT_ACTIVATED Handle = 0x80310008 + FVE_E_ACTION_NOT_ALLOWED Handle = 0x80310009 + FVE_E_AD_SCHEMA_NOT_INSTALLED Handle = 0x8031000A + FVE_E_AD_INVALID_DATATYPE Handle = 0x8031000B + FVE_E_AD_INVALID_DATASIZE Handle = 0x8031000C + FVE_E_AD_NO_VALUES Handle = 0x8031000D + FVE_E_AD_ATTR_NOT_SET Handle = 0x8031000E + FVE_E_AD_GUID_NOT_FOUND Handle = 0x8031000F + FVE_E_BAD_INFORMATION Handle = 0x80310010 + FVE_E_TOO_SMALL Handle = 0x80310011 + FVE_E_SYSTEM_VOLUME Handle = 0x80310012 + FVE_E_FAILED_WRONG_FS Handle = 0x80310013 + FVE_E_BAD_PARTITION_SIZE Handle = 0x80310014 + FVE_E_NOT_SUPPORTED Handle = 0x80310015 + FVE_E_BAD_DATA Handle = 0x80310016 + FVE_E_VOLUME_NOT_BOUND Handle = 0x80310017 + FVE_E_TPM_NOT_OWNED Handle = 0x80310018 + FVE_E_NOT_DATA_VOLUME Handle = 0x80310019 + FVE_E_AD_INSUFFICIENT_BUFFER Handle = 0x8031001A + FVE_E_CONV_READ Handle = 0x8031001B + FVE_E_CONV_WRITE Handle = 0x8031001C + FVE_E_KEY_REQUIRED Handle = 0x8031001D + FVE_E_CLUSTERING_NOT_SUPPORTED Handle = 0x8031001E + FVE_E_VOLUME_BOUND_ALREADY Handle = 0x8031001F + FVE_E_OS_NOT_PROTECTED Handle = 0x80310020 + FVE_E_PROTECTION_DISABLED Handle = 0x80310021 + FVE_E_RECOVERY_KEY_REQUIRED Handle = 0x80310022 + FVE_E_FOREIGN_VOLUME Handle = 0x80310023 + FVE_E_OVERLAPPED_UPDATE Handle = 0x80310024 + FVE_E_TPM_SRK_AUTH_NOT_ZERO Handle = 0x80310025 + FVE_E_FAILED_SECTOR_SIZE Handle = 0x80310026 + FVE_E_FAILED_AUTHENTICATION Handle = 0x80310027 + FVE_E_NOT_OS_VOLUME Handle = 0x80310028 + FVE_E_AUTOUNLOCK_ENABLED Handle = 0x80310029 + FVE_E_WRONG_BOOTSECTOR Handle = 0x8031002A + FVE_E_WRONG_SYSTEM_FS Handle = 0x8031002B + FVE_E_POLICY_PASSWORD_REQUIRED Handle = 0x8031002C + FVE_E_CANNOT_SET_FVEK_ENCRYPTED Handle = 0x8031002D + FVE_E_CANNOT_ENCRYPT_NO_KEY Handle = 0x8031002E + FVE_E_BOOTABLE_CDDVD Handle = 0x80310030 + FVE_E_PROTECTOR_EXISTS Handle = 0x80310031 + FVE_E_RELATIVE_PATH Handle = 0x80310032 + FVE_E_PROTECTOR_NOT_FOUND Handle = 0x80310033 + FVE_E_INVALID_KEY_FORMAT Handle = 0x80310034 + FVE_E_INVALID_PASSWORD_FORMAT Handle = 0x80310035 + FVE_E_FIPS_RNG_CHECK_FAILED Handle = 0x80310036 + FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD Handle = 0x80310037 + FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT Handle = 0x80310038 + FVE_E_NOT_DECRYPTED Handle = 0x80310039 + FVE_E_INVALID_PROTECTOR_TYPE Handle = 0x8031003A + FVE_E_NO_PROTECTORS_TO_TEST Handle = 0x8031003B + FVE_E_KEYFILE_NOT_FOUND Handle = 0x8031003C + FVE_E_KEYFILE_INVALID Handle = 0x8031003D + FVE_E_KEYFILE_NO_VMK Handle = 0x8031003E + FVE_E_TPM_DISABLED Handle = 0x8031003F + FVE_E_NOT_ALLOWED_IN_SAFE_MODE Handle = 0x80310040 + FVE_E_TPM_INVALID_PCR Handle = 0x80310041 + FVE_E_TPM_NO_VMK Handle = 0x80310042 + FVE_E_PIN_INVALID Handle = 0x80310043 + FVE_E_AUTH_INVALID_APPLICATION Handle = 0x80310044 + FVE_E_AUTH_INVALID_CONFIG Handle = 0x80310045 + FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED Handle = 0x80310046 + FVE_E_FS_NOT_EXTENDED Handle = 0x80310047 + FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED Handle = 0x80310048 + FVE_E_NO_LICENSE Handle = 0x80310049 + FVE_E_NOT_ON_STACK Handle = 0x8031004A + FVE_E_FS_MOUNTED Handle = 0x8031004B + FVE_E_TOKEN_NOT_IMPERSONATED Handle = 0x8031004C + FVE_E_DRY_RUN_FAILED Handle = 0x8031004D + FVE_E_REBOOT_REQUIRED Handle = 0x8031004E + FVE_E_DEBUGGER_ENABLED Handle = 0x8031004F + FVE_E_RAW_ACCESS Handle = 0x80310050 + FVE_E_RAW_BLOCKED Handle = 0x80310051 + FVE_E_BCD_APPLICATIONS_PATH_INCORRECT Handle = 0x80310052 + FVE_E_NOT_ALLOWED_IN_VERSION Handle = 0x80310053 + FVE_E_NO_AUTOUNLOCK_MASTER_KEY Handle = 0x80310054 + FVE_E_MOR_FAILED Handle = 0x80310055 + FVE_E_HIDDEN_VOLUME Handle = 0x80310056 + FVE_E_TRANSIENT_STATE Handle = 0x80310057 + FVE_E_PUBKEY_NOT_ALLOWED Handle = 0x80310058 + FVE_E_VOLUME_HANDLE_OPEN Handle = 0x80310059 + FVE_E_NO_FEATURE_LICENSE Handle = 0x8031005A + FVE_E_INVALID_STARTUP_OPTIONS Handle = 0x8031005B + FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED Handle = 0x8031005C + FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED Handle = 0x8031005D + FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED Handle = 0x8031005E + FVE_E_POLICY_RECOVERY_KEY_REQUIRED Handle = 0x8031005F + FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED Handle = 0x80310060 + FVE_E_POLICY_STARTUP_PIN_REQUIRED Handle = 0x80310061 + FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED Handle = 0x80310062 + FVE_E_POLICY_STARTUP_KEY_REQUIRED Handle = 0x80310063 + FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED Handle = 0x80310064 + FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED Handle = 0x80310065 + FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED Handle = 0x80310066 + FVE_E_POLICY_STARTUP_TPM_REQUIRED Handle = 0x80310067 + FVE_E_POLICY_INVALID_PIN_LENGTH Handle = 0x80310068 + FVE_E_KEY_PROTECTOR_NOT_SUPPORTED Handle = 0x80310069 + FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006A + FVE_E_POLICY_PASSPHRASE_REQUIRED Handle = 0x8031006B + FVE_E_FIPS_PREVENTS_PASSPHRASE Handle = 0x8031006C + FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006D + FVE_E_INVALID_BITLOCKER_OID Handle = 0x8031006E + FVE_E_VOLUME_TOO_SMALL Handle = 0x8031006F + FVE_E_DV_NOT_SUPPORTED_ON_FS Handle = 0x80310070 + FVE_E_DV_NOT_ALLOWED_BY_GP Handle = 0x80310071 + FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED Handle = 0x80310072 + FVE_E_POLICY_USER_CERTIFICATE_REQUIRED Handle = 0x80310073 + FVE_E_POLICY_USER_CERT_MUST_BE_HW Handle = 0x80310074 + FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310075 + FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310076 + FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED Handle = 0x80310077 + FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED Handle = 0x80310078 + FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED Handle = 0x80310079 + FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH Handle = 0x80310080 + FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE Handle = 0x80310081 + FVE_E_RECOVERY_PARTITION Handle = 0x80310082 + FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON Handle = 0x80310083 + FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON Handle = 0x80310084 + FVE_E_NON_BITLOCKER_OID Handle = 0x80310085 + FVE_E_POLICY_PROHIBITS_SELFSIGNED Handle = 0x80310086 + FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED Handle = 0x80310087 + FVE_E_CONV_RECOVERY_FAILED Handle = 0x80310088 + FVE_E_VIRTUALIZED_SPACE_TOO_BIG Handle = 0x80310089 + FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON Handle = 0x80310090 + FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON Handle = 0x80310091 + FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON Handle = 0x80310092 + FVE_E_NON_BITLOCKER_KU Handle = 0x80310093 + FVE_E_PRIVATEKEY_AUTH_FAILED Handle = 0x80310094 + FVE_E_REMOVAL_OF_DRA_FAILED Handle = 0x80310095 + FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME Handle = 0x80310096 + FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME Handle = 0x80310097 + FVE_E_FIPS_HASH_KDF_NOT_ALLOWED Handle = 0x80310098 + FVE_E_ENH_PIN_INVALID Handle = 0x80310099 + FVE_E_INVALID_PIN_CHARS Handle = 0x8031009A + FVE_E_INVALID_DATUM_TYPE Handle = 0x8031009B + FVE_E_EFI_ONLY Handle = 0x8031009C + FVE_E_MULTIPLE_NKP_CERTS Handle = 0x8031009D + FVE_E_REMOVAL_OF_NKP_FAILED Handle = 0x8031009E + FVE_E_INVALID_NKP_CERT Handle = 0x8031009F + FVE_E_NO_EXISTING_PIN Handle = 0x803100A0 + FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH Handle = 0x803100A1 + FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100A2 + FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED Handle = 0x803100A3 + FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII Handle = 0x803100A4 + FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A5 + FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A6 + FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE Handle = 0x803100A7 + FVE_E_NO_EXISTING_PASSPHRASE Handle = 0x803100A8 + FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH Handle = 0x803100A9 + FVE_E_PASSPHRASE_TOO_LONG Handle = 0x803100AA + FVE_E_NO_PASSPHRASE_WITH_TPM Handle = 0x803100AB + FVE_E_NO_TPM_WITH_PASSPHRASE Handle = 0x803100AC + FVE_E_NOT_ALLOWED_ON_CSV_STACK Handle = 0x803100AD + FVE_E_NOT_ALLOWED_ON_CLUSTER Handle = 0x803100AE + FVE_E_EDRIVE_NO_FAILOVER_TO_SW Handle = 0x803100AF + FVE_E_EDRIVE_BAND_IN_USE Handle = 0x803100B0 + FVE_E_EDRIVE_DISALLOWED_BY_GP Handle = 0x803100B1 + FVE_E_EDRIVE_INCOMPATIBLE_VOLUME Handle = 0x803100B2 + FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING Handle = 0x803100B3 + FVE_E_EDRIVE_DV_NOT_SUPPORTED Handle = 0x803100B4 + FVE_E_NO_PREBOOT_KEYBOARD_DETECTED Handle = 0x803100B5 + FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED Handle = 0x803100B6 + FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE Handle = 0x803100B7 + FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE Handle = 0x803100B8 + FVE_E_WIPE_CANCEL_NOT_APPLICABLE Handle = 0x803100B9 + FVE_E_SECUREBOOT_DISABLED Handle = 0x803100BA + FVE_E_SECUREBOOT_CONFIGURATION_INVALID Handle = 0x803100BB + FVE_E_EDRIVE_DRY_RUN_FAILED Handle = 0x803100BC + FVE_E_SHADOW_COPY_PRESENT Handle = 0x803100BD + FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS Handle = 0x803100BE + FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE Handle = 0x803100BF + FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED Handle = 0x803100C0 + FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100C1 + FVE_E_LIVEID_ACCOUNT_SUSPENDED Handle = 0x803100C2 + FVE_E_LIVEID_ACCOUNT_BLOCKED Handle = 0x803100C3 + FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x803100C4 + FVE_E_DE_FIXED_DATA_NOT_SUPPORTED Handle = 0x803100C5 + FVE_E_DE_HARDWARE_NOT_COMPLIANT Handle = 0x803100C6 + FVE_E_DE_WINRE_NOT_CONFIGURED Handle = 0x803100C7 + FVE_E_DE_PROTECTION_SUSPENDED Handle = 0x803100C8 + FVE_E_DE_OS_VOLUME_NOT_PROTECTED Handle = 0x803100C9 + FVE_E_DE_DEVICE_LOCKEDOUT Handle = 0x803100CA + FVE_E_DE_PROTECTION_NOT_YET_ENABLED Handle = 0x803100CB + FVE_E_INVALID_PIN_CHARS_DETAILED Handle = 0x803100CC + FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE Handle = 0x803100CD + FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH Handle = 0x803100CE + FVE_E_BUFFER_TOO_LARGE Handle = 0x803100CF + FVE_E_NO_SUCH_CAPABILITY_ON_TARGET Handle = 0x803100D0 + FVE_E_DE_PREVENTED_FOR_OS Handle = 0x803100D1 + FVE_E_DE_VOLUME_OPTED_OUT Handle = 0x803100D2 + FVE_E_DE_VOLUME_NOT_SUPPORTED Handle = 0x803100D3 + FVE_E_EOW_NOT_SUPPORTED_IN_VERSION Handle = 0x803100D4 + FVE_E_ADBACKUP_NOT_ENABLED Handle = 0x803100D5 + FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT Handle = 0x803100D6 + FVE_E_NOT_DE_VOLUME Handle = 0x803100D7 + FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8 + FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9 + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE Handle = 0x803100DA + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE Handle = 0x803100DB + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE Handle = 0x803100DC + FVE_E_KEY_ROTATION_NOT_SUPPORTED Handle = 0x803100DD + FVE_E_EXECUTE_REQUEST_SENT_TOO_SOON Handle = 0x803100DE + FVE_E_KEY_ROTATION_NOT_ENABLED Handle = 0x803100DF + FVE_E_DEVICE_NOT_JOINED Handle = 0x803100E0 + FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001 + FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002 + FWP_E_FILTER_NOT_FOUND Handle = 0x80320003 + FWP_E_LAYER_NOT_FOUND Handle = 0x80320004 + FWP_E_PROVIDER_NOT_FOUND Handle = 0x80320005 + FWP_E_PROVIDER_CONTEXT_NOT_FOUND Handle = 0x80320006 + FWP_E_SUBLAYER_NOT_FOUND Handle = 0x80320007 + FWP_E_NOT_FOUND Handle = 0x80320008 + FWP_E_ALREADY_EXISTS Handle = 0x80320009 + FWP_E_IN_USE Handle = 0x8032000A + FWP_E_DYNAMIC_SESSION_IN_PROGRESS Handle = 0x8032000B + FWP_E_WRONG_SESSION Handle = 0x8032000C + FWP_E_NO_TXN_IN_PROGRESS Handle = 0x8032000D + FWP_E_TXN_IN_PROGRESS Handle = 0x8032000E + FWP_E_TXN_ABORTED Handle = 0x8032000F + FWP_E_SESSION_ABORTED Handle = 0x80320010 + FWP_E_INCOMPATIBLE_TXN Handle = 0x80320011 + FWP_E_TIMEOUT Handle = 0x80320012 + FWP_E_NET_EVENTS_DISABLED Handle = 0x80320013 + FWP_E_INCOMPATIBLE_LAYER Handle = 0x80320014 + FWP_E_KM_CLIENTS_ONLY Handle = 0x80320015 + FWP_E_LIFETIME_MISMATCH Handle = 0x80320016 + FWP_E_BUILTIN_OBJECT Handle = 0x80320017 + FWP_E_TOO_MANY_CALLOUTS Handle = 0x80320018 + FWP_E_NOTIFICATION_DROPPED Handle = 0x80320019 + FWP_E_TRAFFIC_MISMATCH Handle = 0x8032001A + FWP_E_INCOMPATIBLE_SA_STATE Handle = 0x8032001B + FWP_E_NULL_POINTER Handle = 0x8032001C + FWP_E_INVALID_ENUMERATOR Handle = 0x8032001D + FWP_E_INVALID_FLAGS Handle = 0x8032001E + FWP_E_INVALID_NET_MASK Handle = 0x8032001F + FWP_E_INVALID_RANGE Handle = 0x80320020 + FWP_E_INVALID_INTERVAL Handle = 0x80320021 + FWP_E_ZERO_LENGTH_ARRAY Handle = 0x80320022 + FWP_E_NULL_DISPLAY_NAME Handle = 0x80320023 + FWP_E_INVALID_ACTION_TYPE Handle = 0x80320024 + FWP_E_INVALID_WEIGHT Handle = 0x80320025 + FWP_E_MATCH_TYPE_MISMATCH Handle = 0x80320026 + FWP_E_TYPE_MISMATCH Handle = 0x80320027 + FWP_E_OUT_OF_BOUNDS Handle = 0x80320028 + FWP_E_RESERVED Handle = 0x80320029 + FWP_E_DUPLICATE_CONDITION Handle = 0x8032002A + FWP_E_DUPLICATE_KEYMOD Handle = 0x8032002B + FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002C + FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER Handle = 0x8032002D + FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002E + FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT Handle = 0x8032002F + FWP_E_INCOMPATIBLE_AUTH_METHOD Handle = 0x80320030 + FWP_E_INCOMPATIBLE_DH_GROUP Handle = 0x80320031 + FWP_E_EM_NOT_SUPPORTED Handle = 0x80320032 + FWP_E_NEVER_MATCH Handle = 0x80320033 + FWP_E_PROVIDER_CONTEXT_MISMATCH Handle = 0x80320034 + FWP_E_INVALID_PARAMETER Handle = 0x80320035 + FWP_E_TOO_MANY_SUBLAYERS Handle = 0x80320036 + FWP_E_CALLOUT_NOTIFICATION_FAILED Handle = 0x80320037 + FWP_E_INVALID_AUTH_TRANSFORM Handle = 0x80320038 + FWP_E_INVALID_CIPHER_TRANSFORM Handle = 0x80320039 + FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM Handle = 0x8032003A + FWP_E_INVALID_TRANSFORM_COMBINATION Handle = 0x8032003B + FWP_E_DUPLICATE_AUTH_METHOD Handle = 0x8032003C + FWP_E_INVALID_TUNNEL_ENDPOINT Handle = 0x8032003D + FWP_E_L2_DRIVER_NOT_READY Handle = 0x8032003E + FWP_E_KEY_DICTATOR_ALREADY_REGISTERED Handle = 0x8032003F + FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL Handle = 0x80320040 + FWP_E_CONNECTIONS_DISABLED Handle = 0x80320041 + FWP_E_INVALID_DNS_NAME Handle = 0x80320042 + FWP_E_STILL_ON Handle = 0x80320043 + FWP_E_IKEEXT_NOT_RUNNING Handle = 0x80320044 + FWP_E_DROP_NOICMP Handle = 0x80320104 + WS_S_ASYNC Handle = 0x003D0000 + WS_S_END Handle = 0x003D0001 + WS_E_INVALID_FORMAT Handle = 0x803D0000 + WS_E_OBJECT_FAULTED Handle = 0x803D0001 + WS_E_NUMERIC_OVERFLOW Handle = 0x803D0002 + WS_E_INVALID_OPERATION Handle = 0x803D0003 + WS_E_OPERATION_ABORTED Handle = 0x803D0004 + WS_E_ENDPOINT_ACCESS_DENIED Handle = 0x803D0005 + WS_E_OPERATION_TIMED_OUT Handle = 0x803D0006 + WS_E_OPERATION_ABANDONED Handle = 0x803D0007 + WS_E_QUOTA_EXCEEDED Handle = 0x803D0008 + WS_E_NO_TRANSLATION_AVAILABLE Handle = 0x803D0009 + WS_E_SECURITY_VERIFICATION_FAILURE Handle = 0x803D000A + WS_E_ADDRESS_IN_USE Handle = 0x803D000B + WS_E_ADDRESS_NOT_AVAILABLE Handle = 0x803D000C + WS_E_ENDPOINT_NOT_FOUND Handle = 0x803D000D + WS_E_ENDPOINT_NOT_AVAILABLE Handle = 0x803D000E + WS_E_ENDPOINT_FAILURE Handle = 0x803D000F + WS_E_ENDPOINT_UNREACHABLE Handle = 0x803D0010 + WS_E_ENDPOINT_ACTION_NOT_SUPPORTED Handle = 0x803D0011 + WS_E_ENDPOINT_TOO_BUSY Handle = 0x803D0012 + WS_E_ENDPOINT_FAULT_RECEIVED Handle = 0x803D0013 + WS_E_ENDPOINT_DISCONNECTED Handle = 0x803D0014 + WS_E_PROXY_FAILURE Handle = 0x803D0015 + WS_E_PROXY_ACCESS_DENIED Handle = 0x803D0016 + WS_E_NOT_SUPPORTED Handle = 0x803D0017 + WS_E_PROXY_REQUIRES_BASIC_AUTH Handle = 0x803D0018 + WS_E_PROXY_REQUIRES_DIGEST_AUTH Handle = 0x803D0019 + WS_E_PROXY_REQUIRES_NTLM_AUTH Handle = 0x803D001A + WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001B + WS_E_SERVER_REQUIRES_BASIC_AUTH Handle = 0x803D001C + WS_E_SERVER_REQUIRES_DIGEST_AUTH Handle = 0x803D001D + WS_E_SERVER_REQUIRES_NTLM_AUTH Handle = 0x803D001E + WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001F + WS_E_INVALID_ENDPOINT_URL Handle = 0x803D0020 + WS_E_OTHER Handle = 0x803D0021 + WS_E_SECURITY_TOKEN_EXPIRED Handle = 0x803D0022 + WS_E_SECURITY_SYSTEM_FAILURE Handle = 0x803D0023 + ERROR_NDIS_INTERFACE_CLOSING syscall.Errno = 0x80340002 + ERROR_NDIS_BAD_VERSION syscall.Errno = 0x80340004 + ERROR_NDIS_BAD_CHARACTERISTICS syscall.Errno = 0x80340005 + ERROR_NDIS_ADAPTER_NOT_FOUND syscall.Errno = 0x80340006 + ERROR_NDIS_OPEN_FAILED syscall.Errno = 0x80340007 + ERROR_NDIS_DEVICE_FAILED syscall.Errno = 0x80340008 + ERROR_NDIS_MULTICAST_FULL syscall.Errno = 0x80340009 + ERROR_NDIS_MULTICAST_EXISTS syscall.Errno = 0x8034000A + ERROR_NDIS_MULTICAST_NOT_FOUND syscall.Errno = 0x8034000B + ERROR_NDIS_REQUEST_ABORTED syscall.Errno = 0x8034000C + ERROR_NDIS_RESET_IN_PROGRESS syscall.Errno = 0x8034000D + ERROR_NDIS_NOT_SUPPORTED syscall.Errno = 0x803400BB + ERROR_NDIS_INVALID_PACKET syscall.Errno = 0x8034000F + ERROR_NDIS_ADAPTER_NOT_READY syscall.Errno = 0x80340011 + ERROR_NDIS_INVALID_LENGTH syscall.Errno = 0x80340014 + ERROR_NDIS_INVALID_DATA syscall.Errno = 0x80340015 + ERROR_NDIS_BUFFER_TOO_SHORT syscall.Errno = 0x80340016 + ERROR_NDIS_INVALID_OID syscall.Errno = 0x80340017 + ERROR_NDIS_ADAPTER_REMOVED syscall.Errno = 0x80340018 + ERROR_NDIS_UNSUPPORTED_MEDIA syscall.Errno = 0x80340019 + ERROR_NDIS_GROUP_ADDRESS_IN_USE syscall.Errno = 0x8034001A + ERROR_NDIS_FILE_NOT_FOUND syscall.Errno = 0x8034001B + ERROR_NDIS_ERROR_READING_FILE syscall.Errno = 0x8034001C + ERROR_NDIS_ALREADY_MAPPED syscall.Errno = 0x8034001D + ERROR_NDIS_RESOURCE_CONFLICT syscall.Errno = 0x8034001E + ERROR_NDIS_MEDIA_DISCONNECTED syscall.Errno = 0x8034001F + ERROR_NDIS_INVALID_ADDRESS syscall.Errno = 0x80340022 + ERROR_NDIS_INVALID_DEVICE_REQUEST syscall.Errno = 0x80340010 + ERROR_NDIS_PAUSED syscall.Errno = 0x8034002A + ERROR_NDIS_INTERFACE_NOT_FOUND syscall.Errno = 0x8034002B + ERROR_NDIS_UNSUPPORTED_REVISION syscall.Errno = 0x8034002C + ERROR_NDIS_INVALID_PORT syscall.Errno = 0x8034002D + ERROR_NDIS_INVALID_PORT_STATE syscall.Errno = 0x8034002E + ERROR_NDIS_LOW_POWER_STATE syscall.Errno = 0x8034002F + ERROR_NDIS_REINIT_REQUIRED syscall.Errno = 0x80340030 + ERROR_NDIS_NO_QUEUES syscall.Errno = 0x80340031 + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED syscall.Errno = 0x80342000 + ERROR_NDIS_DOT11_MEDIA_IN_USE syscall.Errno = 0x80342001 + ERROR_NDIS_DOT11_POWER_STATE_INVALID syscall.Errno = 0x80342002 + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL syscall.Errno = 0x80342003 + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL syscall.Errno = 0x80342004 + ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342005 + ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342006 + ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED syscall.Errno = 0x80342007 + ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED syscall.Errno = 0x80342008 + ERROR_NDIS_INDICATION_REQUIRED syscall.Errno = 0x00340001 + ERROR_NDIS_OFFLOAD_POLICY syscall.Errno = 0xC034100F + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED syscall.Errno = 0xC0341012 + ERROR_NDIS_OFFLOAD_PATH_REJECTED syscall.Errno = 0xC0341013 + ERROR_HV_INVALID_HYPERCALL_CODE syscall.Errno = 0xC0350002 + ERROR_HV_INVALID_HYPERCALL_INPUT syscall.Errno = 0xC0350003 + ERROR_HV_INVALID_ALIGNMENT syscall.Errno = 0xC0350004 + ERROR_HV_INVALID_PARAMETER syscall.Errno = 0xC0350005 + ERROR_HV_ACCESS_DENIED syscall.Errno = 0xC0350006 + ERROR_HV_INVALID_PARTITION_STATE syscall.Errno = 0xC0350007 + ERROR_HV_OPERATION_DENIED syscall.Errno = 0xC0350008 + ERROR_HV_UNKNOWN_PROPERTY syscall.Errno = 0xC0350009 + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE syscall.Errno = 0xC035000A + ERROR_HV_INSUFFICIENT_MEMORY syscall.Errno = 0xC035000B + ERROR_HV_PARTITION_TOO_DEEP syscall.Errno = 0xC035000C + ERROR_HV_INVALID_PARTITION_ID syscall.Errno = 0xC035000D + ERROR_HV_INVALID_VP_INDEX syscall.Errno = 0xC035000E + ERROR_HV_INVALID_PORT_ID syscall.Errno = 0xC0350011 + ERROR_HV_INVALID_CONNECTION_ID syscall.Errno = 0xC0350012 + ERROR_HV_INSUFFICIENT_BUFFERS syscall.Errno = 0xC0350013 + ERROR_HV_NOT_ACKNOWLEDGED syscall.Errno = 0xC0350014 + ERROR_HV_INVALID_VP_STATE syscall.Errno = 0xC0350015 + ERROR_HV_ACKNOWLEDGED syscall.Errno = 0xC0350016 + ERROR_HV_INVALID_SAVE_RESTORE_STATE syscall.Errno = 0xC0350017 + ERROR_HV_INVALID_SYNIC_STATE syscall.Errno = 0xC0350018 + ERROR_HV_OBJECT_IN_USE syscall.Errno = 0xC0350019 + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO syscall.Errno = 0xC035001A + ERROR_HV_NO_DATA syscall.Errno = 0xC035001B + ERROR_HV_INACTIVE syscall.Errno = 0xC035001C + ERROR_HV_NO_RESOURCES syscall.Errno = 0xC035001D + ERROR_HV_FEATURE_UNAVAILABLE syscall.Errno = 0xC035001E + ERROR_HV_INSUFFICIENT_BUFFER syscall.Errno = 0xC0350033 + ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS syscall.Errno = 0xC0350038 + ERROR_HV_CPUID_FEATURE_VALIDATION syscall.Errno = 0xC035003C + ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION syscall.Errno = 0xC035003D + ERROR_HV_PROCESSOR_STARTUP_TIMEOUT syscall.Errno = 0xC035003E + ERROR_HV_SMX_ENABLED syscall.Errno = 0xC035003F + ERROR_HV_INVALID_LP_INDEX syscall.Errno = 0xC0350041 + ERROR_HV_INVALID_REGISTER_VALUE syscall.Errno = 0xC0350050 + ERROR_HV_INVALID_VTL_STATE syscall.Errno = 0xC0350051 + ERROR_HV_NX_NOT_DETECTED syscall.Errno = 0xC0350055 + ERROR_HV_INVALID_DEVICE_ID syscall.Errno = 0xC0350057 + ERROR_HV_INVALID_DEVICE_STATE syscall.Errno = 0xC0350058 + ERROR_HV_PENDING_PAGE_REQUESTS syscall.Errno = 0x00350059 + ERROR_HV_PAGE_REQUEST_INVALID syscall.Errno = 0xC0350060 + ERROR_HV_INVALID_CPU_GROUP_ID syscall.Errno = 0xC035006F + ERROR_HV_INVALID_CPU_GROUP_STATE syscall.Errno = 0xC0350070 + ERROR_HV_OPERATION_FAILED syscall.Errno = 0xC0350071 + ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE syscall.Errno = 0xC0350072 + ERROR_HV_INSUFFICIENT_ROOT_MEMORY syscall.Errno = 0xC0350073 + ERROR_HV_NOT_PRESENT syscall.Errno = 0xC0351000 + ERROR_VID_DUPLICATE_HANDLER syscall.Errno = 0xC0370001 + ERROR_VID_TOO_MANY_HANDLERS syscall.Errno = 0xC0370002 + ERROR_VID_QUEUE_FULL syscall.Errno = 0xC0370003 + ERROR_VID_HANDLER_NOT_PRESENT syscall.Errno = 0xC0370004 + ERROR_VID_INVALID_OBJECT_NAME syscall.Errno = 0xC0370005 + ERROR_VID_PARTITION_NAME_TOO_LONG syscall.Errno = 0xC0370006 + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG syscall.Errno = 0xC0370007 + ERROR_VID_PARTITION_ALREADY_EXISTS syscall.Errno = 0xC0370008 + ERROR_VID_PARTITION_DOES_NOT_EXIST syscall.Errno = 0xC0370009 + ERROR_VID_PARTITION_NAME_NOT_FOUND syscall.Errno = 0xC037000A + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS syscall.Errno = 0xC037000B + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT syscall.Errno = 0xC037000C + ERROR_VID_MB_STILL_REFERENCED syscall.Errno = 0xC037000D + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED syscall.Errno = 0xC037000E + ERROR_VID_INVALID_NUMA_SETTINGS syscall.Errno = 0xC037000F + ERROR_VID_INVALID_NUMA_NODE_INDEX syscall.Errno = 0xC0370010 + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED syscall.Errno = 0xC0370011 + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE syscall.Errno = 0xC0370012 + ERROR_VID_PAGE_RANGE_OVERFLOW syscall.Errno = 0xC0370013 + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE syscall.Errno = 0xC0370014 + ERROR_VID_INVALID_GPA_RANGE_HANDLE syscall.Errno = 0xC0370015 + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE syscall.Errno = 0xC0370016 + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED syscall.Errno = 0xC0370017 + ERROR_VID_INVALID_PPM_HANDLE syscall.Errno = 0xC0370018 + ERROR_VID_MBPS_ARE_LOCKED syscall.Errno = 0xC0370019 + ERROR_VID_MESSAGE_QUEUE_CLOSED syscall.Errno = 0xC037001A + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED syscall.Errno = 0xC037001B + ERROR_VID_STOP_PENDING syscall.Errno = 0xC037001C + ERROR_VID_INVALID_PROCESSOR_STATE syscall.Errno = 0xC037001D + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT syscall.Errno = 0xC037001E + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED syscall.Errno = 0xC037001F + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET syscall.Errno = 0xC0370020 + ERROR_VID_MMIO_RANGE_DESTROYED syscall.Errno = 0xC0370021 + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET syscall.Errno = 0xC0370022 + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED syscall.Errno = 0xC0370023 + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL syscall.Errno = 0xC0370024 + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE syscall.Errno = 0xC0370025 + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT syscall.Errno = 0xC0370026 + ERROR_VID_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370027 + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM syscall.Errno = 0xC0370028 + ERROR_VID_SAVED_STATE_INCOMPATIBLE syscall.Errno = 0xC0370029 + ERROR_VID_VTL_ACCESS_DENIED syscall.Errno = 0xC037002A + ERROR_VMCOMPUTE_TERMINATED_DURING_START syscall.Errno = 0xC0370100 + ERROR_VMCOMPUTE_IMAGE_MISMATCH syscall.Errno = 0xC0370101 + ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED syscall.Errno = 0xC0370102 + ERROR_VMCOMPUTE_OPERATION_PENDING syscall.Errno = 0xC0370103 + ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS syscall.Errno = 0xC0370104 + ERROR_VMCOMPUTE_INVALID_STATE syscall.Errno = 0xC0370105 + ERROR_VMCOMPUTE_UNEXPECTED_EXIT syscall.Errno = 0xC0370106 + ERROR_VMCOMPUTE_TERMINATED syscall.Errno = 0xC0370107 + ERROR_VMCOMPUTE_CONNECT_FAILED syscall.Errno = 0xC0370108 + ERROR_VMCOMPUTE_TIMEOUT syscall.Errno = 0xC0370109 + ERROR_VMCOMPUTE_CONNECTION_CLOSED syscall.Errno = 0xC037010A + ERROR_VMCOMPUTE_UNKNOWN_MESSAGE syscall.Errno = 0xC037010B + ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION syscall.Errno = 0xC037010C + ERROR_VMCOMPUTE_INVALID_JSON syscall.Errno = 0xC037010D + ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND syscall.Errno = 0xC037010E + ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS syscall.Errno = 0xC037010F + ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED syscall.Errno = 0xC0370110 + ERROR_VMCOMPUTE_PROTOCOL_ERROR syscall.Errno = 0xC0370111 + ERROR_VMCOMPUTE_INVALID_LAYER syscall.Errno = 0xC0370112 + ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED syscall.Errno = 0xC0370113 + HCS_E_TERMINATED_DURING_START Handle = 0x80370100 + HCS_E_IMAGE_MISMATCH Handle = 0x80370101 + HCS_E_HYPERV_NOT_INSTALLED Handle = 0x80370102 + HCS_E_INVALID_STATE Handle = 0x80370105 + HCS_E_UNEXPECTED_EXIT Handle = 0x80370106 + HCS_E_TERMINATED Handle = 0x80370107 + HCS_E_CONNECT_FAILED Handle = 0x80370108 + HCS_E_CONNECTION_TIMEOUT Handle = 0x80370109 + HCS_E_CONNECTION_CLOSED Handle = 0x8037010A + HCS_E_UNKNOWN_MESSAGE Handle = 0x8037010B + HCS_E_UNSUPPORTED_PROTOCOL_VERSION Handle = 0x8037010C + HCS_E_INVALID_JSON Handle = 0x8037010D + HCS_E_SYSTEM_NOT_FOUND Handle = 0x8037010E + HCS_E_SYSTEM_ALREADY_EXISTS Handle = 0x8037010F + HCS_E_SYSTEM_ALREADY_STOPPED Handle = 0x80370110 + HCS_E_PROTOCOL_ERROR Handle = 0x80370111 + HCS_E_INVALID_LAYER Handle = 0x80370112 + HCS_E_WINDOWS_INSIDER_REQUIRED Handle = 0x80370113 + HCS_E_SERVICE_NOT_AVAILABLE Handle = 0x80370114 + HCS_E_OPERATION_NOT_STARTED Handle = 0x80370115 + HCS_E_OPERATION_ALREADY_STARTED Handle = 0x80370116 + HCS_E_OPERATION_PENDING Handle = 0x80370117 + HCS_E_OPERATION_TIMEOUT Handle = 0x80370118 + HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET Handle = 0x80370119 + HCS_E_OPERATION_RESULT_ALLOCATION_FAILED Handle = 0x8037011A + HCS_E_ACCESS_DENIED Handle = 0x8037011B + HCS_E_GUEST_CRITICAL_ERROR Handle = 0x8037011C + ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND syscall.Errno = 0xC0370200 + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED syscall.Errno = 0x80370001 + WHV_E_UNKNOWN_CAPABILITY Handle = 0x80370300 + WHV_E_INSUFFICIENT_BUFFER Handle = 0x80370301 + WHV_E_UNKNOWN_PROPERTY Handle = 0x80370302 + WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG Handle = 0x80370303 + WHV_E_INVALID_PARTITION_CONFIG Handle = 0x80370304 + WHV_E_GPA_RANGE_NOT_FOUND Handle = 0x80370305 + WHV_E_VP_ALREADY_EXISTS Handle = 0x80370306 + WHV_E_VP_DOES_NOT_EXIST Handle = 0x80370307 + WHV_E_INVALID_VP_STATE Handle = 0x80370308 + WHV_E_INVALID_VP_REGISTER_NAME Handle = 0x80370309 + ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND syscall.Errno = 0xC0370400 + ERROR_VSMB_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370401 + ERROR_VOLMGR_INCOMPLETE_REGENERATION syscall.Errno = 0x80380001 + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION syscall.Errno = 0x80380002 + ERROR_VOLMGR_DATABASE_FULL syscall.Errno = 0xC0380001 + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED syscall.Errno = 0xC0380002 + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC syscall.Errno = 0xC0380003 + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED syscall.Errno = 0xC0380004 + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME syscall.Errno = 0xC0380005 + ERROR_VOLMGR_DISK_DUPLICATE syscall.Errno = 0xC0380006 + ERROR_VOLMGR_DISK_DYNAMIC syscall.Errno = 0xC0380007 + ERROR_VOLMGR_DISK_ID_INVALID syscall.Errno = 0xC0380008 + ERROR_VOLMGR_DISK_INVALID syscall.Errno = 0xC0380009 + ERROR_VOLMGR_DISK_LAST_VOTER syscall.Errno = 0xC038000A + ERROR_VOLMGR_DISK_LAYOUT_INVALID syscall.Errno = 0xC038000B + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS syscall.Errno = 0xC038000C + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED syscall.Errno = 0xC038000D + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL syscall.Errno = 0xC038000E + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS syscall.Errno = 0xC038000F + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS syscall.Errno = 0xC0380010 + ERROR_VOLMGR_DISK_MISSING syscall.Errno = 0xC0380011 + ERROR_VOLMGR_DISK_NOT_EMPTY syscall.Errno = 0xC0380012 + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE syscall.Errno = 0xC0380013 + ERROR_VOLMGR_DISK_REVECTORING_FAILED syscall.Errno = 0xC0380014 + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID syscall.Errno = 0xC0380015 + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED syscall.Errno = 0xC0380016 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS syscall.Errno = 0xC0380017 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES syscall.Errno = 0xC0380018 + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED syscall.Errno = 0xC0380019 + ERROR_VOLMGR_EXTENT_ALREADY_USED syscall.Errno = 0xC038001A + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS syscall.Errno = 0xC038001B + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION syscall.Errno = 0xC038001C + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED syscall.Errno = 0xC038001D + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION syscall.Errno = 0xC038001E + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH syscall.Errno = 0xC038001F + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED syscall.Errno = 0xC0380020 + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID syscall.Errno = 0xC0380021 + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS syscall.Errno = 0xC0380022 + ERROR_VOLMGR_MEMBER_IN_SYNC syscall.Errno = 0xC0380023 + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE syscall.Errno = 0xC0380024 + ERROR_VOLMGR_MEMBER_INDEX_INVALID syscall.Errno = 0xC0380025 + ERROR_VOLMGR_MEMBER_MISSING syscall.Errno = 0xC0380026 + ERROR_VOLMGR_MEMBER_NOT_DETACHED syscall.Errno = 0xC0380027 + ERROR_VOLMGR_MEMBER_REGENERATING syscall.Errno = 0xC0380028 + ERROR_VOLMGR_ALL_DISKS_FAILED syscall.Errno = 0xC0380029 + ERROR_VOLMGR_NO_REGISTERED_USERS syscall.Errno = 0xC038002A + ERROR_VOLMGR_NO_SUCH_USER syscall.Errno = 0xC038002B + ERROR_VOLMGR_NOTIFICATION_RESET syscall.Errno = 0xC038002C + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID syscall.Errno = 0xC038002D + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID syscall.Errno = 0xC038002E + ERROR_VOLMGR_PACK_DUPLICATE syscall.Errno = 0xC038002F + ERROR_VOLMGR_PACK_ID_INVALID syscall.Errno = 0xC0380030 + ERROR_VOLMGR_PACK_INVALID syscall.Errno = 0xC0380031 + ERROR_VOLMGR_PACK_NAME_INVALID syscall.Errno = 0xC0380032 + ERROR_VOLMGR_PACK_OFFLINE syscall.Errno = 0xC0380033 + ERROR_VOLMGR_PACK_HAS_QUORUM syscall.Errno = 0xC0380034 + ERROR_VOLMGR_PACK_WITHOUT_QUORUM syscall.Errno = 0xC0380035 + ERROR_VOLMGR_PARTITION_STYLE_INVALID syscall.Errno = 0xC0380036 + ERROR_VOLMGR_PARTITION_UPDATE_FAILED syscall.Errno = 0xC0380037 + ERROR_VOLMGR_PLEX_IN_SYNC syscall.Errno = 0xC0380038 + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE syscall.Errno = 0xC0380039 + ERROR_VOLMGR_PLEX_INDEX_INVALID syscall.Errno = 0xC038003A + ERROR_VOLMGR_PLEX_LAST_ACTIVE syscall.Errno = 0xC038003B + ERROR_VOLMGR_PLEX_MISSING syscall.Errno = 0xC038003C + ERROR_VOLMGR_PLEX_REGENERATING syscall.Errno = 0xC038003D + ERROR_VOLMGR_PLEX_TYPE_INVALID syscall.Errno = 0xC038003E + ERROR_VOLMGR_PLEX_NOT_RAID5 syscall.Errno = 0xC038003F + ERROR_VOLMGR_PLEX_NOT_SIMPLE syscall.Errno = 0xC0380040 + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID syscall.Errno = 0xC0380041 + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS syscall.Errno = 0xC0380042 + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS syscall.Errno = 0xC0380043 + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE syscall.Errno = 0xC0380044 + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK syscall.Errno = 0xC0380045 + ERROR_VOLMGR_VOLUME_ID_INVALID syscall.Errno = 0xC0380046 + ERROR_VOLMGR_VOLUME_LENGTH_INVALID syscall.Errno = 0xC0380047 + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE syscall.Errno = 0xC0380048 + ERROR_VOLMGR_VOLUME_NOT_MIRRORED syscall.Errno = 0xC0380049 + ERROR_VOLMGR_VOLUME_NOT_RETAINED syscall.Errno = 0xC038004A + ERROR_VOLMGR_VOLUME_OFFLINE syscall.Errno = 0xC038004B + ERROR_VOLMGR_VOLUME_RETAINED syscall.Errno = 0xC038004C + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID syscall.Errno = 0xC038004D + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE syscall.Errno = 0xC038004E + ERROR_VOLMGR_BAD_BOOT_DISK syscall.Errno = 0xC038004F + ERROR_VOLMGR_PACK_CONFIG_OFFLINE syscall.Errno = 0xC0380050 + ERROR_VOLMGR_PACK_CONFIG_ONLINE syscall.Errno = 0xC0380051 + ERROR_VOLMGR_NOT_PRIMARY_PACK syscall.Errno = 0xC0380052 + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED syscall.Errno = 0xC0380053 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID syscall.Errno = 0xC0380054 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID syscall.Errno = 0xC0380055 + ERROR_VOLMGR_VOLUME_MIRRORED syscall.Errno = 0xC0380056 + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED syscall.Errno = 0xC0380057 + ERROR_VOLMGR_NO_VALID_LOG_COPIES syscall.Errno = 0xC0380058 + ERROR_VOLMGR_PRIMARY_PACK_PRESENT syscall.Errno = 0xC0380059 + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID syscall.Errno = 0xC038005A + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED syscall.Errno = 0xC038005B + ERROR_VOLMGR_RAID5_NOT_SUPPORTED syscall.Errno = 0xC038005C + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED syscall.Errno = 0x80390001 + ERROR_BCD_TOO_MANY_ELEMENTS syscall.Errno = 0xC0390002 + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED syscall.Errno = 0x80390003 + ERROR_VHD_DRIVE_FOOTER_MISSING syscall.Errno = 0xC03A0001 + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0002 + ERROR_VHD_DRIVE_FOOTER_CORRUPT syscall.Errno = 0xC03A0003 + ERROR_VHD_FORMAT_UNKNOWN syscall.Errno = 0xC03A0004 + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0005 + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0006 + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0007 + ERROR_VHD_SPARSE_HEADER_CORRUPT syscall.Errno = 0xC03A0008 + ERROR_VHD_BLOCK_ALLOCATION_FAILURE syscall.Errno = 0xC03A0009 + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT syscall.Errno = 0xC03A000A + ERROR_VHD_INVALID_BLOCK_SIZE syscall.Errno = 0xC03A000B + ERROR_VHD_BITMAP_MISMATCH syscall.Errno = 0xC03A000C + ERROR_VHD_PARENT_VHD_NOT_FOUND syscall.Errno = 0xC03A000D + ERROR_VHD_CHILD_PARENT_ID_MISMATCH syscall.Errno = 0xC03A000E + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH syscall.Errno = 0xC03A000F + ERROR_VHD_METADATA_READ_FAILURE syscall.Errno = 0xC03A0010 + ERROR_VHD_METADATA_WRITE_FAILURE syscall.Errno = 0xC03A0011 + ERROR_VHD_INVALID_SIZE syscall.Errno = 0xC03A0012 + ERROR_VHD_INVALID_FILE_SIZE syscall.Errno = 0xC03A0013 + ERROR_VIRTDISK_PROVIDER_NOT_FOUND syscall.Errno = 0xC03A0014 + ERROR_VIRTDISK_NOT_VIRTUAL_DISK syscall.Errno = 0xC03A0015 + ERROR_VHD_PARENT_VHD_ACCESS_DENIED syscall.Errno = 0xC03A0016 + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH syscall.Errno = 0xC03A0017 + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED syscall.Errno = 0xC03A0018 + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT syscall.Errno = 0xC03A0019 + ERROR_VIRTUAL_DISK_LIMITATION syscall.Errno = 0xC03A001A + ERROR_VHD_INVALID_TYPE syscall.Errno = 0xC03A001B + ERROR_VHD_INVALID_STATE syscall.Errno = 0xC03A001C + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE syscall.Errno = 0xC03A001D + ERROR_VIRTDISK_DISK_ALREADY_OWNED syscall.Errno = 0xC03A001E + ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE syscall.Errno = 0xC03A001F + ERROR_CTLOG_TRACKING_NOT_INITIALIZED syscall.Errno = 0xC03A0020 + ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE syscall.Errno = 0xC03A0021 + ERROR_CTLOG_VHD_CHANGED_OFFLINE syscall.Errno = 0xC03A0022 + ERROR_CTLOG_INVALID_TRACKING_STATE syscall.Errno = 0xC03A0023 + ERROR_CTLOG_INCONSISTENT_TRACKING_FILE syscall.Errno = 0xC03A0024 + ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA syscall.Errno = 0xC03A0025 + ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0026 + ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0027 + ERROR_VHD_METADATA_FULL syscall.Errno = 0xC03A0028 + ERROR_VHD_INVALID_CHANGE_TRACKING_ID syscall.Errno = 0xC03A0029 + ERROR_VHD_CHANGE_TRACKING_DISABLED syscall.Errno = 0xC03A002A + ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION syscall.Errno = 0xC03A0030 + ERROR_QUERY_STORAGE_ERROR syscall.Errno = 0x803A0001 + HCN_E_NETWORK_NOT_FOUND Handle = 0x803B0001 + HCN_E_ENDPOINT_NOT_FOUND Handle = 0x803B0002 + HCN_E_LAYER_NOT_FOUND Handle = 0x803B0003 + HCN_E_SWITCH_NOT_FOUND Handle = 0x803B0004 + HCN_E_SUBNET_NOT_FOUND Handle = 0x803B0005 + HCN_E_ADAPTER_NOT_FOUND Handle = 0x803B0006 + HCN_E_PORT_NOT_FOUND Handle = 0x803B0007 + HCN_E_POLICY_NOT_FOUND Handle = 0x803B0008 + HCN_E_VFP_PORTSETTING_NOT_FOUND Handle = 0x803B0009 + HCN_E_INVALID_NETWORK Handle = 0x803B000A + HCN_E_INVALID_NETWORK_TYPE Handle = 0x803B000B + HCN_E_INVALID_ENDPOINT Handle = 0x803B000C + HCN_E_INVALID_POLICY Handle = 0x803B000D + HCN_E_INVALID_POLICY_TYPE Handle = 0x803B000E + HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION Handle = 0x803B000F + HCN_E_NETWORK_ALREADY_EXISTS Handle = 0x803B0010 + HCN_E_LAYER_ALREADY_EXISTS Handle = 0x803B0011 + HCN_E_POLICY_ALREADY_EXISTS Handle = 0x803B0012 + HCN_E_PORT_ALREADY_EXISTS Handle = 0x803B0013 + HCN_E_ENDPOINT_ALREADY_ATTACHED Handle = 0x803B0014 + HCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0015 + HCN_E_MAPPING_NOT_SUPPORTED Handle = 0x803B0016 + HCN_E_DEGRADED_OPERATION Handle = 0x803B0017 + HCN_E_SHARED_SWITCH_MODIFICATION Handle = 0x803B0018 + HCN_E_GUID_CONVERSION_FAILURE Handle = 0x803B0019 + HCN_E_REGKEY_FAILURE Handle = 0x803B001A + HCN_E_INVALID_JSON Handle = 0x803B001B + HCN_E_INVALID_JSON_REFERENCE Handle = 0x803B001C + HCN_E_ENDPOINT_SHARING_DISABLED Handle = 0x803B001D + HCN_E_INVALID_IP Handle = 0x803B001E + HCN_E_SWITCH_EXTENSION_NOT_FOUND Handle = 0x803B001F + HCN_E_MANAGER_STOPPED Handle = 0x803B0020 + GCN_E_MODULE_NOT_FOUND Handle = 0x803B0021 + GCN_E_NO_REQUEST_HANDLERS Handle = 0x803B0022 + GCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0023 + GCN_E_RUNTIMEKEYS_FAILED Handle = 0x803B0024 + GCN_E_NETADAPTER_TIMEOUT Handle = 0x803B0025 + GCN_E_NETADAPTER_NOT_FOUND Handle = 0x803B0026 + GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027 + GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028 + GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029 + HCN_E_ICS_DISABLED Handle = 0x803B002A + HCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS Handle = 0x803B002B + HCN_E_ENTITY_HAS_REFERENCES Handle = 0x803B002C + HCN_E_INVALID_INTERNAL_PORT Handle = 0x803B002D + HCN_E_NAMESPACE_ATTACH_FAILED Handle = 0x803B002E + HCN_E_ADDR_INVALID_OR_RESERVED Handle = 0x803B002F + SDIAG_E_CANCELLED syscall.Errno = 0x803C0100 + SDIAG_E_SCRIPT syscall.Errno = 0x803C0101 + SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102 + SDIAG_E_MANAGEDHOST syscall.Errno = 0x803C0103 + SDIAG_E_NOVERIFIER syscall.Errno = 0x803C0104 + SDIAG_S_CANNOTRUN syscall.Errno = 0x003C0105 + SDIAG_E_DISABLED syscall.Errno = 0x803C0106 + SDIAG_E_TRUST syscall.Errno = 0x803C0107 + SDIAG_E_CANNOTRUN syscall.Errno = 0x803C0108 + SDIAG_E_VERSION syscall.Errno = 0x803C0109 + SDIAG_E_RESOURCE syscall.Errno = 0x803C010A + SDIAG_E_ROOTCAUSE syscall.Errno = 0x803C010B + WPN_E_CHANNEL_CLOSED Handle = 0x803E0100 + WPN_E_CHANNEL_REQUEST_NOT_COMPLETE Handle = 0x803E0101 + WPN_E_INVALID_APP Handle = 0x803E0102 + WPN_E_OUTSTANDING_CHANNEL_REQUEST Handle = 0x803E0103 + WPN_E_DUPLICATE_CHANNEL Handle = 0x803E0104 + WPN_E_PLATFORM_UNAVAILABLE Handle = 0x803E0105 + WPN_E_NOTIFICATION_POSTED Handle = 0x803E0106 + WPN_E_NOTIFICATION_HIDDEN Handle = 0x803E0107 + WPN_E_NOTIFICATION_NOT_POSTED Handle = 0x803E0108 + WPN_E_CLOUD_DISABLED Handle = 0x803E0109 + WPN_E_CLOUD_INCAPABLE Handle = 0x803E0110 + WPN_E_CLOUD_AUTH_UNAVAILABLE Handle = 0x803E011A + WPN_E_CLOUD_SERVICE_UNAVAILABLE Handle = 0x803E011B + WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION Handle = 0x803E011C + WPN_E_NOTIFICATION_DISABLED Handle = 0x803E0111 + WPN_E_NOTIFICATION_INCAPABLE Handle = 0x803E0112 + WPN_E_INTERNET_INCAPABLE Handle = 0x803E0113 + WPN_E_NOTIFICATION_TYPE_DISABLED Handle = 0x803E0114 + WPN_E_NOTIFICATION_SIZE Handle = 0x803E0115 + WPN_E_TAG_SIZE Handle = 0x803E0116 + WPN_E_ACCESS_DENIED Handle = 0x803E0117 + WPN_E_DUPLICATE_REGISTRATION Handle = 0x803E0118 + WPN_E_PUSH_NOTIFICATION_INCAPABLE Handle = 0x803E0119 + WPN_E_DEV_ID_SIZE Handle = 0x803E0120 + WPN_E_TAG_ALPHANUMERIC Handle = 0x803E012A + WPN_E_INVALID_HTTP_STATUS_CODE Handle = 0x803E012B + WPN_E_OUT_OF_SESSION Handle = 0x803E0200 + WPN_E_POWER_SAVE Handle = 0x803E0201 + WPN_E_IMAGE_NOT_FOUND_IN_CACHE Handle = 0x803E0202 + WPN_E_ALL_URL_NOT_COMPLETED Handle = 0x803E0203 + WPN_E_INVALID_CLOUD_IMAGE Handle = 0x803E0204 + WPN_E_NOTIFICATION_ID_MATCHED Handle = 0x803E0205 + WPN_E_CALLBACK_ALREADY_REGISTERED Handle = 0x803E0206 + WPN_E_TOAST_NOTIFICATION_DROPPED Handle = 0x803E0207 + WPN_E_STORAGE_LOCKED Handle = 0x803E0208 + WPN_E_GROUP_SIZE Handle = 0x803E0209 + WPN_E_GROUP_ALPHANUMERIC Handle = 0x803E020A + WPN_E_CLOUD_DISABLED_FOR_APP Handle = 0x803E020B + E_MBN_CONTEXT_NOT_ACTIVATED Handle = 0x80548201 + E_MBN_BAD_SIM Handle = 0x80548202 + E_MBN_DATA_CLASS_NOT_AVAILABLE Handle = 0x80548203 + E_MBN_INVALID_ACCESS_STRING Handle = 0x80548204 + E_MBN_MAX_ACTIVATED_CONTEXTS Handle = 0x80548205 + E_MBN_PACKET_SVC_DETACHED Handle = 0x80548206 + E_MBN_PROVIDER_NOT_VISIBLE Handle = 0x80548207 + E_MBN_RADIO_POWER_OFF Handle = 0x80548208 + E_MBN_SERVICE_NOT_ACTIVATED Handle = 0x80548209 + E_MBN_SIM_NOT_INSERTED Handle = 0x8054820A + E_MBN_VOICE_CALL_IN_PROGRESS Handle = 0x8054820B + E_MBN_INVALID_CACHE Handle = 0x8054820C + E_MBN_NOT_REGISTERED Handle = 0x8054820D + E_MBN_PROVIDERS_NOT_FOUND Handle = 0x8054820E + E_MBN_PIN_NOT_SUPPORTED Handle = 0x8054820F + E_MBN_PIN_REQUIRED Handle = 0x80548210 + E_MBN_PIN_DISABLED Handle = 0x80548211 + E_MBN_FAILURE Handle = 0x80548212 + E_MBN_INVALID_PROFILE Handle = 0x80548218 + E_MBN_DEFAULT_PROFILE_EXIST Handle = 0x80548219 + E_MBN_SMS_ENCODING_NOT_SUPPORTED Handle = 0x80548220 + E_MBN_SMS_FILTER_NOT_SUPPORTED Handle = 0x80548221 + E_MBN_SMS_INVALID_MEMORY_INDEX Handle = 0x80548222 + E_MBN_SMS_LANG_NOT_SUPPORTED Handle = 0x80548223 + E_MBN_SMS_MEMORY_FAILURE Handle = 0x80548224 + E_MBN_SMS_NETWORK_TIMEOUT Handle = 0x80548225 + E_MBN_SMS_UNKNOWN_SMSC_ADDRESS Handle = 0x80548226 + E_MBN_SMS_FORMAT_NOT_SUPPORTED Handle = 0x80548227 + E_MBN_SMS_OPERATION_NOT_ALLOWED Handle = 0x80548228 + E_MBN_SMS_MEMORY_FULL Handle = 0x80548229 + PEER_E_IPV6_NOT_INSTALLED Handle = 0x80630001 + PEER_E_NOT_INITIALIZED Handle = 0x80630002 + PEER_E_CANNOT_START_SERVICE Handle = 0x80630003 + PEER_E_NOT_LICENSED Handle = 0x80630004 + PEER_E_INVALID_GRAPH Handle = 0x80630010 + PEER_E_DBNAME_CHANGED Handle = 0x80630011 + PEER_E_DUPLICATE_GRAPH Handle = 0x80630012 + PEER_E_GRAPH_NOT_READY Handle = 0x80630013 + PEER_E_GRAPH_SHUTTING_DOWN Handle = 0x80630014 + PEER_E_GRAPH_IN_USE Handle = 0x80630015 + PEER_E_INVALID_DATABASE Handle = 0x80630016 + PEER_E_TOO_MANY_ATTRIBUTES Handle = 0x80630017 + PEER_E_CONNECTION_NOT_FOUND Handle = 0x80630103 + PEER_E_CONNECT_SELF Handle = 0x80630106 + PEER_E_ALREADY_LISTENING Handle = 0x80630107 + PEER_E_NODE_NOT_FOUND Handle = 0x80630108 + PEER_E_CONNECTION_FAILED Handle = 0x80630109 + PEER_E_CONNECTION_NOT_AUTHENTICATED Handle = 0x8063010A + PEER_E_CONNECTION_REFUSED Handle = 0x8063010B + PEER_E_CLASSIFIER_TOO_LONG Handle = 0x80630201 + PEER_E_TOO_MANY_IDENTITIES Handle = 0x80630202 + PEER_E_NO_KEY_ACCESS Handle = 0x80630203 + PEER_E_GROUPS_EXIST Handle = 0x80630204 + PEER_E_RECORD_NOT_FOUND Handle = 0x80630301 + PEER_E_DATABASE_ACCESSDENIED Handle = 0x80630302 + PEER_E_DBINITIALIZATION_FAILED Handle = 0x80630303 + PEER_E_MAX_RECORD_SIZE_EXCEEDED Handle = 0x80630304 + PEER_E_DATABASE_ALREADY_PRESENT Handle = 0x80630305 + PEER_E_DATABASE_NOT_PRESENT Handle = 0x80630306 + PEER_E_IDENTITY_NOT_FOUND Handle = 0x80630401 + PEER_E_EVENT_HANDLE_NOT_FOUND Handle = 0x80630501 + PEER_E_INVALID_SEARCH Handle = 0x80630601 + PEER_E_INVALID_ATTRIBUTES Handle = 0x80630602 + PEER_E_INVITATION_NOT_TRUSTED Handle = 0x80630701 + PEER_E_CHAIN_TOO_LONG Handle = 0x80630703 + PEER_E_INVALID_TIME_PERIOD Handle = 0x80630705 + PEER_E_CIRCULAR_CHAIN_DETECTED Handle = 0x80630706 + PEER_E_CERT_STORE_CORRUPTED Handle = 0x80630801 + PEER_E_NO_CLOUD Handle = 0x80631001 + PEER_E_CLOUD_NAME_AMBIGUOUS Handle = 0x80631005 + PEER_E_INVALID_RECORD Handle = 0x80632010 + PEER_E_NOT_AUTHORIZED Handle = 0x80632020 + PEER_E_PASSWORD_DOES_NOT_MEET_POLICY Handle = 0x80632021 + PEER_E_DEFERRED_VALIDATION Handle = 0x80632030 + PEER_E_INVALID_GROUP_PROPERTIES Handle = 0x80632040 + PEER_E_INVALID_PEER_NAME Handle = 0x80632050 + PEER_E_INVALID_CLASSIFIER Handle = 0x80632060 + PEER_E_INVALID_FRIENDLY_NAME Handle = 0x80632070 + PEER_E_INVALID_ROLE_PROPERTY Handle = 0x80632071 + PEER_E_INVALID_CLASSIFIER_PROPERTY Handle = 0x80632072 + PEER_E_INVALID_RECORD_EXPIRATION Handle = 0x80632080 + PEER_E_INVALID_CREDENTIAL_INFO Handle = 0x80632081 + PEER_E_INVALID_CREDENTIAL Handle = 0x80632082 + PEER_E_INVALID_RECORD_SIZE Handle = 0x80632083 + PEER_E_UNSUPPORTED_VERSION Handle = 0x80632090 + PEER_E_GROUP_NOT_READY Handle = 0x80632091 + PEER_E_GROUP_IN_USE Handle = 0x80632092 + PEER_E_INVALID_GROUP Handle = 0x80632093 + PEER_E_NO_MEMBERS_FOUND Handle = 0x80632094 + PEER_E_NO_MEMBER_CONNECTIONS Handle = 0x80632095 + PEER_E_UNABLE_TO_LISTEN Handle = 0x80632096 + PEER_E_IDENTITY_DELETED Handle = 0x806320A0 + PEER_E_SERVICE_NOT_AVAILABLE Handle = 0x806320A1 + PEER_E_CONTACT_NOT_FOUND Handle = 0x80636001 + PEER_S_GRAPH_DATA_CREATED Handle = 0x00630001 + PEER_S_NO_EVENT_DATA Handle = 0x00630002 + PEER_S_ALREADY_CONNECTED Handle = 0x00632000 + PEER_S_SUBSCRIPTION_EXISTS Handle = 0x00636000 + PEER_S_NO_CONNECTIVITY Handle = 0x00630005 + PEER_S_ALREADY_A_MEMBER Handle = 0x00630006 + PEER_E_CANNOT_CONVERT_PEER_NAME Handle = 0x80634001 + PEER_E_INVALID_PEER_HOST_NAME Handle = 0x80634002 + PEER_E_NO_MORE Handle = 0x80634003 + PEER_E_PNRP_DUPLICATE_PEER_NAME Handle = 0x80634005 + PEER_E_INVITE_CANCELLED Handle = 0x80637000 + PEER_E_INVITE_RESPONSE_NOT_AVAILABLE Handle = 0x80637001 + PEER_E_NOT_SIGNED_IN Handle = 0x80637003 + PEER_E_PRIVACY_DECLINED Handle = 0x80637004 + PEER_E_TIMEOUT Handle = 0x80637005 + PEER_E_INVALID_ADDRESS Handle = 0x80637007 + PEER_E_FW_EXCEPTION_DISABLED Handle = 0x80637008 + PEER_E_FW_BLOCKED_BY_POLICY Handle = 0x80637009 + PEER_E_FW_BLOCKED_BY_SHIELDS_UP Handle = 0x8063700A + PEER_E_FW_DECLINED Handle = 0x8063700B + UI_E_CREATE_FAILED Handle = 0x802A0001 + UI_E_SHUTDOWN_CALLED Handle = 0x802A0002 + UI_E_ILLEGAL_REENTRANCY Handle = 0x802A0003 + UI_E_OBJECT_SEALED Handle = 0x802A0004 + UI_E_VALUE_NOT_SET Handle = 0x802A0005 + UI_E_VALUE_NOT_DETERMINED Handle = 0x802A0006 + UI_E_INVALID_OUTPUT Handle = 0x802A0007 + UI_E_BOOLEAN_EXPECTED Handle = 0x802A0008 + UI_E_DIFFERENT_OWNER Handle = 0x802A0009 + UI_E_AMBIGUOUS_MATCH Handle = 0x802A000A + UI_E_FP_OVERFLOW Handle = 0x802A000B + UI_E_WRONG_THREAD Handle = 0x802A000C + UI_E_STORYBOARD_ACTIVE Handle = 0x802A0101 + UI_E_STORYBOARD_NOT_PLAYING Handle = 0x802A0102 + UI_E_START_KEYFRAME_AFTER_END Handle = 0x802A0103 + UI_E_END_KEYFRAME_NOT_DETERMINED Handle = 0x802A0104 + UI_E_LOOPS_OVERLAP Handle = 0x802A0105 + UI_E_TRANSITION_ALREADY_USED Handle = 0x802A0106 + UI_E_TRANSITION_NOT_IN_STORYBOARD Handle = 0x802A0107 + UI_E_TRANSITION_ECLIPSED Handle = 0x802A0108 + UI_E_TIME_BEFORE_LAST_UPDATE Handle = 0x802A0109 + UI_E_TIMER_CLIENT_ALREADY_CONNECTED Handle = 0x802A010A + UI_E_INVALID_DIMENSION Handle = 0x802A010B + UI_E_PRIMITIVE_OUT_OF_BOUNDS Handle = 0x802A010C + UI_E_WINDOW_CLOSED Handle = 0x802A0201 + E_BLUETOOTH_ATT_INVALID_HANDLE Handle = 0x80650001 + E_BLUETOOTH_ATT_READ_NOT_PERMITTED Handle = 0x80650002 + E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED Handle = 0x80650003 + E_BLUETOOTH_ATT_INVALID_PDU Handle = 0x80650004 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION Handle = 0x80650005 + E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED Handle = 0x80650006 + E_BLUETOOTH_ATT_INVALID_OFFSET Handle = 0x80650007 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION Handle = 0x80650008 + E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL Handle = 0x80650009 + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND Handle = 0x8065000A + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG Handle = 0x8065000B + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE Handle = 0x8065000C + E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH Handle = 0x8065000D + E_BLUETOOTH_ATT_UNLIKELY Handle = 0x8065000E + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION Handle = 0x8065000F + E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE Handle = 0x80650010 + E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES Handle = 0x80650011 + E_BLUETOOTH_ATT_UNKNOWN_ERROR Handle = 0x80651000 + E_AUDIO_ENGINE_NODE_NOT_FOUND Handle = 0x80660001 + E_HDAUDIO_EMPTY_CONNECTION_LIST Handle = 0x80660002 + E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED Handle = 0x80660003 + E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED Handle = 0x80660004 + E_HDAUDIO_NULL_LINKED_LIST_ENTRY Handle = 0x80660005 + STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE Handle = 0x80670001 + STATEREPOSITORY_E_STATEMENT_INPROGRESS Handle = 0x80670002 + STATEREPOSITORY_E_CONFIGURATION_INVALID Handle = 0x80670003 + STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION Handle = 0x80670004 + STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED Handle = 0x80670005 + STATEREPOSITORY_E_BLOCKED Handle = 0x80670006 + STATEREPOSITORY_E_BUSY_RETRY Handle = 0x80670007 + STATEREPOSITORY_E_BUSY_RECOVERY_RETRY Handle = 0x80670008 + STATEREPOSITORY_E_LOCKED_RETRY Handle = 0x80670009 + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY Handle = 0x8067000A + STATEREPOSITORY_E_TRANSACTION_REQUIRED Handle = 0x8067000B + STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED Handle = 0x8067000C + STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED Handle = 0x8067000D + STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED Handle = 0x8067000E + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED Handle = 0x8067000F + STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS Handle = 0x80670010 + STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED Handle = 0x80670011 + STATEREPOSITORY_ERROR_CACHE_CORRUPTED Handle = 0x80670012 + STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED Handle = 0x00670013 + STATEREPOSITORY_TRANSACTION_IN_PROGRESS Handle = 0x00670014 + ERROR_SPACES_POOL_WAS_DELETED Handle = 0x00E70001 + ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID Handle = 0x80E70001 + ERROR_SPACES_INTERNAL_ERROR Handle = 0x80E70002 + ERROR_SPACES_RESILIENCY_TYPE_INVALID Handle = 0x80E70003 + ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID Handle = 0x80E70004 + ERROR_SPACES_DRIVE_REDUNDANCY_INVALID Handle = 0x80E70006 + ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID Handle = 0x80E70007 + ERROR_SPACES_PARITY_LAYOUT_INVALID Handle = 0x80E70008 + ERROR_SPACES_INTERLEAVE_LENGTH_INVALID Handle = 0x80E70009 + ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID Handle = 0x80E7000A + ERROR_SPACES_NOT_ENOUGH_DRIVES Handle = 0x80E7000B + ERROR_SPACES_EXTENDED_ERROR Handle = 0x80E7000C + ERROR_SPACES_PROVISIONING_TYPE_INVALID Handle = 0x80E7000D + ERROR_SPACES_ALLOCATION_SIZE_INVALID Handle = 0x80E7000E + ERROR_SPACES_ENCLOSURE_AWARE_INVALID Handle = 0x80E7000F + ERROR_SPACES_WRITE_CACHE_SIZE_INVALID Handle = 0x80E70010 + ERROR_SPACES_NUMBER_OF_GROUPS_INVALID Handle = 0x80E70011 + ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID Handle = 0x80E70012 + ERROR_SPACES_ENTRY_INCOMPLETE Handle = 0x80E70013 + ERROR_SPACES_ENTRY_INVALID Handle = 0x80E70014 + ERROR_VOLSNAP_BOOTFILE_NOT_VALID Handle = 0x80820001 + ERROR_VOLSNAP_ACTIVATION_TIMEOUT Handle = 0x80820002 + ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME Handle = 0x80830001 + ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS Handle = 0x80830002 + ERROR_TIERING_STORAGE_TIER_NOT_FOUND Handle = 0x80830003 + ERROR_TIERING_INVALID_FILE_ID Handle = 0x80830004 + ERROR_TIERING_WRONG_CLUSTER_NODE Handle = 0x80830005 + ERROR_TIERING_ALREADY_PROCESSING Handle = 0x80830006 + ERROR_TIERING_CANNOT_PIN_OBJECT Handle = 0x80830007 + ERROR_TIERING_FILE_IS_NOT_PINNED Handle = 0x80830008 + ERROR_NOT_A_TIERED_VOLUME Handle = 0x80830009 + ERROR_ATTRIBUTE_NOT_PRESENT Handle = 0x8083000A + ERROR_SECCORE_INVALID_COMMAND Handle = 0xC0E80000 + ERROR_NO_APPLICABLE_APP_LICENSES_FOUND Handle = 0xC0EA0001 + ERROR_CLIP_LICENSE_NOT_FOUND Handle = 0xC0EA0002 + ERROR_CLIP_DEVICE_LICENSE_MISSING Handle = 0xC0EA0003 + ERROR_CLIP_LICENSE_INVALID_SIGNATURE Handle = 0xC0EA0004 + ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID Handle = 0xC0EA0005 + ERROR_CLIP_LICENSE_EXPIRED Handle = 0xC0EA0006 + ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE Handle = 0xC0EA0007 + ERROR_CLIP_LICENSE_NOT_SIGNED Handle = 0xC0EA0008 + ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE Handle = 0xC0EA0009 + ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH Handle = 0xC0EA000A + DXGI_STATUS_OCCLUDED Handle = 0x087A0001 + DXGI_STATUS_CLIPPED Handle = 0x087A0002 + DXGI_STATUS_NO_REDIRECTION Handle = 0x087A0004 + DXGI_STATUS_NO_DESKTOP_ACCESS Handle = 0x087A0005 + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x087A0006 + DXGI_STATUS_MODE_CHANGED Handle = 0x087A0007 + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS Handle = 0x087A0008 + DXGI_ERROR_INVALID_CALL Handle = 0x887A0001 + DXGI_ERROR_NOT_FOUND Handle = 0x887A0002 + DXGI_ERROR_MORE_DATA Handle = 0x887A0003 + DXGI_ERROR_UNSUPPORTED Handle = 0x887A0004 + DXGI_ERROR_DEVICE_REMOVED Handle = 0x887A0005 + DXGI_ERROR_DEVICE_HUNG Handle = 0x887A0006 + DXGI_ERROR_DEVICE_RESET Handle = 0x887A0007 + DXGI_ERROR_WAS_STILL_DRAWING Handle = 0x887A000A + DXGI_ERROR_FRAME_STATISTICS_DISJOINT Handle = 0x887A000B + DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x887A000C + DXGI_ERROR_DRIVER_INTERNAL_ERROR Handle = 0x887A0020 + DXGI_ERROR_NONEXCLUSIVE Handle = 0x887A0021 + DXGI_ERROR_NOT_CURRENTLY_AVAILABLE Handle = 0x887A0022 + DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED Handle = 0x887A0023 + DXGI_ERROR_REMOTE_OUTOFMEMORY Handle = 0x887A0024 + DXGI_ERROR_ACCESS_LOST Handle = 0x887A0026 + DXGI_ERROR_WAIT_TIMEOUT Handle = 0x887A0027 + DXGI_ERROR_SESSION_DISCONNECTED Handle = 0x887A0028 + DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE Handle = 0x887A0029 + DXGI_ERROR_CANNOT_PROTECT_CONTENT Handle = 0x887A002A + DXGI_ERROR_ACCESS_DENIED Handle = 0x887A002B + DXGI_ERROR_NAME_ALREADY_EXISTS Handle = 0x887A002C + DXGI_ERROR_SDK_COMPONENT_MISSING Handle = 0x887A002D + DXGI_ERROR_NOT_CURRENT Handle = 0x887A002E + DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY Handle = 0x887A0030 + DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION Handle = 0x887A0031 + DXGI_ERROR_NON_COMPOSITED_UI Handle = 0x887A0032 + DXGI_STATUS_UNOCCLUDED Handle = 0x087A0009 + DXGI_STATUS_DDA_WAS_STILL_DRAWING Handle = 0x087A000A + DXGI_ERROR_MODE_CHANGE_IN_PROGRESS Handle = 0x887A0025 + DXGI_STATUS_PRESENT_REQUIRED Handle = 0x087A002F + DXGI_ERROR_CACHE_CORRUPT Handle = 0x887A0033 + DXGI_ERROR_CACHE_FULL Handle = 0x887A0034 + DXGI_ERROR_CACHE_HASH_COLLISION Handle = 0x887A0035 + DXGI_ERROR_ALREADY_EXISTS Handle = 0x887A0036 + DXGI_DDI_ERR_WASSTILLDRAWING Handle = 0x887B0001 + DXGI_DDI_ERR_UNSUPPORTED Handle = 0x887B0002 + DXGI_DDI_ERR_NONEXCLUSIVE Handle = 0x887B0003 + D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x88790001 + D3D10_ERROR_FILE_NOT_FOUND Handle = 0x88790002 + D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x887C0001 + D3D11_ERROR_FILE_NOT_FOUND Handle = 0x887C0002 + D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS Handle = 0x887C0003 + D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD Handle = 0x887C0004 + D3D12_ERROR_ADAPTER_NOT_FOUND Handle = 0x887E0001 + D3D12_ERROR_DRIVER_VERSION_MISMATCH Handle = 0x887E0002 + D2DERR_WRONG_STATE Handle = 0x88990001 + D2DERR_NOT_INITIALIZED Handle = 0x88990002 + D2DERR_UNSUPPORTED_OPERATION Handle = 0x88990003 + D2DERR_SCANNER_FAILED Handle = 0x88990004 + D2DERR_SCREEN_ACCESS_DENIED Handle = 0x88990005 + D2DERR_DISPLAY_STATE_INVALID Handle = 0x88990006 + D2DERR_ZERO_VECTOR Handle = 0x88990007 + D2DERR_INTERNAL_ERROR Handle = 0x88990008 + D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED Handle = 0x88990009 + D2DERR_INVALID_CALL Handle = 0x8899000A + D2DERR_NO_HARDWARE_DEVICE Handle = 0x8899000B + D2DERR_RECREATE_TARGET Handle = 0x8899000C + D2DERR_TOO_MANY_SHADER_ELEMENTS Handle = 0x8899000D + D2DERR_SHADER_COMPILE_FAILED Handle = 0x8899000E + D2DERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8899000F + D2DERR_UNSUPPORTED_VERSION Handle = 0x88990010 + D2DERR_BAD_NUMBER Handle = 0x88990011 + D2DERR_WRONG_FACTORY Handle = 0x88990012 + D2DERR_LAYER_ALREADY_IN_USE Handle = 0x88990013 + D2DERR_POP_CALL_DID_NOT_MATCH_PUSH Handle = 0x88990014 + D2DERR_WRONG_RESOURCE_DOMAIN Handle = 0x88990015 + D2DERR_PUSH_POP_UNBALANCED Handle = 0x88990016 + D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT Handle = 0x88990017 + D2DERR_INCOMPATIBLE_BRUSH_TYPES Handle = 0x88990018 + D2DERR_WIN32_ERROR Handle = 0x88990019 + D2DERR_TARGET_NOT_GDI_COMPATIBLE Handle = 0x8899001A + D2DERR_TEXT_EFFECT_IS_WRONG_TYPE Handle = 0x8899001B + D2DERR_TEXT_RENDERER_NOT_RELEASED Handle = 0x8899001C + D2DERR_EXCEEDS_MAX_BITMAP_SIZE Handle = 0x8899001D + D2DERR_INVALID_GRAPH_CONFIGURATION Handle = 0x8899001E + D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION Handle = 0x8899001F + D2DERR_CYCLIC_GRAPH Handle = 0x88990020 + D2DERR_BITMAP_CANNOT_DRAW Handle = 0x88990021 + D2DERR_OUTSTANDING_BITMAP_REFERENCES Handle = 0x88990022 + D2DERR_ORIGINAL_TARGET_NOT_BOUND Handle = 0x88990023 + D2DERR_INVALID_TARGET Handle = 0x88990024 + D2DERR_BITMAP_BOUND_AS_TARGET Handle = 0x88990025 + D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES Handle = 0x88990026 + D2DERR_INTERMEDIATE_TOO_LARGE Handle = 0x88990027 + D2DERR_EFFECT_IS_NOT_REGISTERED Handle = 0x88990028 + D2DERR_INVALID_PROPERTY Handle = 0x88990029 + D2DERR_NO_SUBPROPERTIES Handle = 0x8899002A + D2DERR_PRINT_JOB_CLOSED Handle = 0x8899002B + D2DERR_PRINT_FORMAT_NOT_SUPPORTED Handle = 0x8899002C + D2DERR_TOO_MANY_TRANSFORM_INPUTS Handle = 0x8899002D + D2DERR_INVALID_GLYPH_IMAGE Handle = 0x8899002E + DWRITE_E_FILEFORMAT Handle = 0x88985000 + DWRITE_E_UNEXPECTED Handle = 0x88985001 + DWRITE_E_NOFONT Handle = 0x88985002 + DWRITE_E_FILENOTFOUND Handle = 0x88985003 + DWRITE_E_FILEACCESS Handle = 0x88985004 + DWRITE_E_FONTCOLLECTIONOBSOLETE Handle = 0x88985005 + DWRITE_E_ALREADYREGISTERED Handle = 0x88985006 + DWRITE_E_CACHEFORMAT Handle = 0x88985007 + DWRITE_E_CACHEVERSION Handle = 0x88985008 + DWRITE_E_UNSUPPORTEDOPERATION Handle = 0x88985009 + DWRITE_E_TEXTRENDERERINCOMPATIBLE Handle = 0x8898500A + DWRITE_E_FLOWDIRECTIONCONFLICTS Handle = 0x8898500B + DWRITE_E_NOCOLOR Handle = 0x8898500C + DWRITE_E_REMOTEFONT Handle = 0x8898500D + DWRITE_E_DOWNLOADCANCELLED Handle = 0x8898500E + DWRITE_E_DOWNLOADFAILED Handle = 0x8898500F + DWRITE_E_TOOMANYDOWNLOADS Handle = 0x88985010 + WINCODEC_ERR_WRONGSTATE Handle = 0x88982F04 + WINCODEC_ERR_VALUEOUTOFRANGE Handle = 0x88982F05 + WINCODEC_ERR_UNKNOWNIMAGEFORMAT Handle = 0x88982F07 + WINCODEC_ERR_UNSUPPORTEDVERSION Handle = 0x88982F0B + WINCODEC_ERR_NOTINITIALIZED Handle = 0x88982F0C + WINCODEC_ERR_ALREADYLOCKED Handle = 0x88982F0D + WINCODEC_ERR_PROPERTYNOTFOUND Handle = 0x88982F40 + WINCODEC_ERR_PROPERTYNOTSUPPORTED Handle = 0x88982F41 + WINCODEC_ERR_PROPERTYSIZE Handle = 0x88982F42 + WINCODEC_ERR_CODECPRESENT Handle = 0x88982F43 + WINCODEC_ERR_CODECNOTHUMBNAIL Handle = 0x88982F44 + WINCODEC_ERR_PALETTEUNAVAILABLE Handle = 0x88982F45 + WINCODEC_ERR_CODECTOOMANYSCANLINES Handle = 0x88982F46 + WINCODEC_ERR_INTERNALERROR Handle = 0x88982F48 + WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS Handle = 0x88982F49 + WINCODEC_ERR_COMPONENTNOTFOUND Handle = 0x88982F50 + WINCODEC_ERR_IMAGESIZEOUTOFRANGE Handle = 0x88982F51 + WINCODEC_ERR_TOOMUCHMETADATA Handle = 0x88982F52 + WINCODEC_ERR_BADIMAGE Handle = 0x88982F60 + WINCODEC_ERR_BADHEADER Handle = 0x88982F61 + WINCODEC_ERR_FRAMEMISSING Handle = 0x88982F62 + WINCODEC_ERR_BADMETADATAHEADER Handle = 0x88982F63 + WINCODEC_ERR_BADSTREAMDATA Handle = 0x88982F70 + WINCODEC_ERR_STREAMWRITE Handle = 0x88982F71 + WINCODEC_ERR_STREAMREAD Handle = 0x88982F72 + WINCODEC_ERR_STREAMNOTAVAILABLE Handle = 0x88982F73 + WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT Handle = 0x88982F80 + WINCODEC_ERR_UNSUPPORTEDOPERATION Handle = 0x88982F81 + WINCODEC_ERR_INVALIDREGISTRATION Handle = 0x88982F8A + WINCODEC_ERR_COMPONENTINITIALIZEFAILURE Handle = 0x88982F8B + WINCODEC_ERR_INSUFFICIENTBUFFER Handle = 0x88982F8C + WINCODEC_ERR_DUPLICATEMETADATAPRESENT Handle = 0x88982F8D + WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE Handle = 0x88982F8E + WINCODEC_ERR_UNEXPECTEDSIZE Handle = 0x88982F8F + WINCODEC_ERR_INVALIDQUERYREQUEST Handle = 0x88982F90 + WINCODEC_ERR_UNEXPECTEDMETADATATYPE Handle = 0x88982F91 + WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT Handle = 0x88982F92 + WINCODEC_ERR_INVALIDQUERYCHARACTER Handle = 0x88982F93 + WINCODEC_ERR_WIN32ERROR Handle = 0x88982F94 + WINCODEC_ERR_INVALIDPROGRESSIVELEVEL Handle = 0x88982F95 + WINCODEC_ERR_INVALIDJPEGSCANINDEX Handle = 0x88982F96 + MILERR_OBJECTBUSY Handle = 0x88980001 + MILERR_INSUFFICIENTBUFFER Handle = 0x88980002 + MILERR_WIN32ERROR Handle = 0x88980003 + MILERR_SCANNER_FAILED Handle = 0x88980004 + MILERR_SCREENACCESSDENIED Handle = 0x88980005 + MILERR_DISPLAYSTATEINVALID Handle = 0x88980006 + MILERR_NONINVERTIBLEMATRIX Handle = 0x88980007 + MILERR_ZEROVECTOR Handle = 0x88980008 + MILERR_TERMINATED Handle = 0x88980009 + MILERR_BADNUMBER Handle = 0x8898000A + MILERR_INTERNALERROR Handle = 0x88980080 + MILERR_DISPLAYFORMATNOTSUPPORTED Handle = 0x88980084 + MILERR_INVALIDCALL Handle = 0x88980085 + MILERR_ALREADYLOCKED Handle = 0x88980086 + MILERR_NOTLOCKED Handle = 0x88980087 + MILERR_DEVICECANNOTRENDERTEXT Handle = 0x88980088 + MILERR_GLYPHBITMAPMISSED Handle = 0x88980089 + MILERR_MALFORMEDGLYPHCACHE Handle = 0x8898008A + MILERR_GENERIC_IGNORE Handle = 0x8898008B + MILERR_MALFORMED_GUIDELINE_DATA Handle = 0x8898008C + MILERR_NO_HARDWARE_DEVICE Handle = 0x8898008D + MILERR_NEED_RECREATE_AND_PRESENT Handle = 0x8898008E + MILERR_ALREADY_INITIALIZED Handle = 0x8898008F + MILERR_MISMATCHED_SIZE Handle = 0x88980090 + MILERR_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x88980091 + MILERR_REMOTING_NOT_SUPPORTED Handle = 0x88980092 + MILERR_QUEUED_PRESENT_NOT_SUPPORTED Handle = 0x88980093 + MILERR_NOT_QUEUING_PRESENTS Handle = 0x88980094 + MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER Handle = 0x88980095 + MILERR_TOOMANYSHADERELEMNTS Handle = 0x88980096 + MILERR_MROW_READLOCK_FAILED Handle = 0x88980097 + MILERR_MROW_UPDATE_FAILED Handle = 0x88980098 + MILERR_SHADER_COMPILE_FAILED Handle = 0x88980099 + MILERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8898009A + MILERR_QPC_TIME_WENT_BACKWARD Handle = 0x8898009B + MILERR_DXGI_ENUMERATION_OUT_OF_SYNC Handle = 0x8898009D + MILERR_ADAPTER_NOT_FOUND Handle = 0x8898009E + MILERR_COLORSPACE_NOT_SUPPORTED Handle = 0x8898009F + MILERR_PREFILTER_NOT_SUPPORTED Handle = 0x889800A0 + MILERR_DISPLAYID_ACCESS_DENIED Handle = 0x889800A1 + UCEERR_INVALIDPACKETHEADER Handle = 0x88980400 + UCEERR_UNKNOWNPACKET Handle = 0x88980401 + UCEERR_ILLEGALPACKET Handle = 0x88980402 + UCEERR_MALFORMEDPACKET Handle = 0x88980403 + UCEERR_ILLEGALHANDLE Handle = 0x88980404 + UCEERR_HANDLELOOKUPFAILED Handle = 0x88980405 + UCEERR_RENDERTHREADFAILURE Handle = 0x88980406 + UCEERR_CTXSTACKFRSTTARGETNULL Handle = 0x88980407 + UCEERR_CONNECTIONIDLOOKUPFAILED Handle = 0x88980408 + UCEERR_BLOCKSFULL Handle = 0x88980409 + UCEERR_MEMORYFAILURE Handle = 0x8898040A + UCEERR_PACKETRECORDOUTOFRANGE Handle = 0x8898040B + UCEERR_ILLEGALRECORDTYPE Handle = 0x8898040C + UCEERR_OUTOFHANDLES Handle = 0x8898040D + UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED Handle = 0x8898040E + UCEERR_NO_MULTIPLE_WORKER_THREADS Handle = 0x8898040F + UCEERR_REMOTINGNOTSUPPORTED Handle = 0x88980410 + UCEERR_MISSINGENDCOMMAND Handle = 0x88980411 + UCEERR_MISSINGBEGINCOMMAND Handle = 0x88980412 + UCEERR_CHANNELSYNCTIMEDOUT Handle = 0x88980413 + UCEERR_CHANNELSYNCABANDONED Handle = 0x88980414 + UCEERR_UNSUPPORTEDTRANSPORTVERSION Handle = 0x88980415 + UCEERR_TRANSPORTUNAVAILABLE Handle = 0x88980416 + UCEERR_FEEDBACK_UNSUPPORTED Handle = 0x88980417 + UCEERR_COMMANDTRANSPORTDENIED Handle = 0x88980418 + UCEERR_GRAPHICSSTREAMUNAVAILABLE Handle = 0x88980419 + UCEERR_GRAPHICSSTREAMALREADYOPEN Handle = 0x88980420 + UCEERR_TRANSPORTDISCONNECTED Handle = 0x88980421 + UCEERR_TRANSPORTOVERLOADED Handle = 0x88980422 + UCEERR_PARTITION_ZOMBIED Handle = 0x88980423 + MILAVERR_NOCLOCK Handle = 0x88980500 + MILAVERR_NOMEDIATYPE Handle = 0x88980501 + MILAVERR_NOVIDEOMIXER Handle = 0x88980502 + MILAVERR_NOVIDEOPRESENTER Handle = 0x88980503 + MILAVERR_NOREADYFRAMES Handle = 0x88980504 + MILAVERR_MODULENOTLOADED Handle = 0x88980505 + MILAVERR_WMPFACTORYNOTREGISTERED Handle = 0x88980506 + MILAVERR_INVALIDWMPVERSION Handle = 0x88980507 + MILAVERR_INSUFFICIENTVIDEORESOURCES Handle = 0x88980508 + MILAVERR_VIDEOACCELERATIONNOTAVAILABLE Handle = 0x88980509 + MILAVERR_REQUESTEDTEXTURETOOBIG Handle = 0x8898050A + MILAVERR_SEEKFAILED Handle = 0x8898050B + MILAVERR_UNEXPECTEDWMPFAILURE Handle = 0x8898050C + MILAVERR_MEDIAPLAYERCLOSED Handle = 0x8898050D + MILAVERR_UNKNOWNHARDWAREERROR Handle = 0x8898050E + MILEFFECTSERR_UNKNOWNPROPERTY Handle = 0x8898060E + MILEFFECTSERR_EFFECTNOTPARTOFGROUP Handle = 0x8898060F + MILEFFECTSERR_NOINPUTSOURCEATTACHED Handle = 0x88980610 + MILEFFECTSERR_CONNECTORNOTCONNECTED Handle = 0x88980611 + MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT Handle = 0x88980612 + MILEFFECTSERR_RESERVED Handle = 0x88980613 + MILEFFECTSERR_CYCLEDETECTED Handle = 0x88980614 + MILEFFECTSERR_EFFECTINMORETHANONEGRAPH Handle = 0x88980615 + MILEFFECTSERR_EFFECTALREADYINAGRAPH Handle = 0x88980616 + MILEFFECTSERR_EFFECTHASNOCHILDREN Handle = 0x88980617 + MILEFFECTSERR_ALREADYATTACHEDTOLISTENER Handle = 0x88980618 + MILEFFECTSERR_NOTAFFINETRANSFORM Handle = 0x88980619 + MILEFFECTSERR_EMPTYBOUNDS Handle = 0x8898061A + MILEFFECTSERR_OUTPUTSIZETOOLARGE Handle = 0x8898061B + DWMERR_STATE_TRANSITION_FAILED Handle = 0x88980700 + DWMERR_THEME_FAILED Handle = 0x88980701 + DWMERR_CATASTROPHIC_FAILURE Handle = 0x88980702 + DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED Handle = 0x88980800 + DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED Handle = 0x88980801 + DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED Handle = 0x88980802 + ONL_E_INVALID_AUTHENTICATION_TARGET Handle = 0x80860001 + ONL_E_ACCESS_DENIED_BY_TOU Handle = 0x80860002 + ONL_E_INVALID_APPLICATION Handle = 0x80860003 + ONL_E_PASSWORD_UPDATE_REQUIRED Handle = 0x80860004 + ONL_E_ACCOUNT_UPDATE_REQUIRED Handle = 0x80860005 + ONL_E_FORCESIGNIN Handle = 0x80860006 + ONL_E_ACCOUNT_LOCKED Handle = 0x80860007 + ONL_E_PARENTAL_CONSENT_REQUIRED Handle = 0x80860008 + ONL_E_EMAIL_VERIFICATION_REQUIRED Handle = 0x80860009 + ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE Handle = 0x8086000A + ONL_E_ACCOUNT_SUSPENDED_ABUSE Handle = 0x8086000B + ONL_E_ACTION_REQUIRED Handle = 0x8086000C + ONL_CONNECTION_COUNT_LIMIT Handle = 0x8086000D + ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT Handle = 0x8086000E + ONL_E_USER_AUTHENTICATION_REQUIRED Handle = 0x8086000F + ONL_E_REQUEST_THROTTLED Handle = 0x80860010 + FA_E_MAX_PERSISTED_ITEMS_REACHED Handle = 0x80270220 + FA_E_HOMEGROUP_NOT_AVAILABLE Handle = 0x80270222 + E_MONITOR_RESOLUTION_TOO_LOW Handle = 0x80270250 + E_ELEVATED_ACTIVATION_NOT_SUPPORTED Handle = 0x80270251 + E_UAC_DISABLED Handle = 0x80270252 + E_FULL_ADMIN_NOT_SUPPORTED Handle = 0x80270253 + E_APPLICATION_NOT_REGISTERED Handle = 0x80270254 + E_MULTIPLE_EXTENSIONS_FOR_APPLICATION Handle = 0x80270255 + E_MULTIPLE_PACKAGES_FOR_FAMILY Handle = 0x80270256 + E_APPLICATION_MANAGER_NOT_RUNNING Handle = 0x80270257 + S_STORE_LAUNCHED_FOR_REMEDIATION Handle = 0x00270258 + S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG Handle = 0x00270259 + E_APPLICATION_ACTIVATION_TIMED_OUT Handle = 0x8027025A + E_APPLICATION_ACTIVATION_EXEC_FAILURE Handle = 0x8027025B + E_APPLICATION_TEMPORARY_LICENSE_ERROR Handle = 0x8027025C + E_APPLICATION_TRIAL_LICENSE_EXPIRED Handle = 0x8027025D + E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED Handle = 0x80270260 + E_SKYDRIVE_ROOT_TARGET_OVERLAP Handle = 0x80270261 + E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX Handle = 0x80270262 + E_SKYDRIVE_FILE_NOT_UPLOADED Handle = 0x80270263 + E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL Handle = 0x80270264 + E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED Handle = 0x80270265 + E_SYNCENGINE_FILE_SIZE_OVER_LIMIT Handle = 0x8802B001 + E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA Handle = 0x8802B002 + E_SYNCENGINE_UNSUPPORTED_FILE_NAME Handle = 0x8802B003 + E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED Handle = 0x8802B004 + E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR Handle = 0x8802B005 + E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE Handle = 0x8802B006 + E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN Handle = 0x8802C002 + E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED Handle = 0x8802C003 + E_SYNCENGINE_UNKNOWN_SERVICE_ERROR Handle = 0x8802C004 + E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE Handle = 0x8802C005 + E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE Handle = 0x8802C006 + E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR Handle = 0x8802C007 + E_SYNCENGINE_FOLDER_INACCESSIBLE Handle = 0x8802D001 + E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME Handle = 0x8802D002 + E_SYNCENGINE_UNSUPPORTED_MARKET Handle = 0x8802D003 + E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D004 + E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D005 + E_SYNCENGINE_CLIENT_UPDATE_NEEDED Handle = 0x8802D006 + E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED Handle = 0x8802D007 + E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED Handle = 0x8802D008 + E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT Handle = 0x8802D009 + E_SYNCENGINE_STORAGE_SERVICE_BLOCKED Handle = 0x8802D00A + E_SYNCENGINE_FOLDER_IN_REDIRECTION Handle = 0x8802D00B + EAS_E_POLICY_NOT_MANAGED_BY_OS Handle = 0x80550001 + EAS_E_POLICY_COMPLIANT_WITH_ACTIONS Handle = 0x80550002 + EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE Handle = 0x80550003 + EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD Handle = 0x80550004 + EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE Handle = 0x80550005 + EAS_E_USER_CANNOT_CHANGE_PASSWORD Handle = 0x80550006 + EAS_E_ADMINS_HAVE_BLANK_PASSWORD Handle = 0x80550007 + EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD Handle = 0x80550008 + EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD Handle = 0x80550009 + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS Handle = 0x8055000A + EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000B + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER Handle = 0x8055000C + EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000D + WEB_E_UNSUPPORTED_FORMAT Handle = 0x83750001 + WEB_E_INVALID_XML Handle = 0x83750002 + WEB_E_MISSING_REQUIRED_ELEMENT Handle = 0x83750003 + WEB_E_MISSING_REQUIRED_ATTRIBUTE Handle = 0x83750004 + WEB_E_UNEXPECTED_CONTENT Handle = 0x83750005 + WEB_E_RESOURCE_TOO_LARGE Handle = 0x83750006 + WEB_E_INVALID_JSON_STRING Handle = 0x83750007 + WEB_E_INVALID_JSON_NUMBER Handle = 0x83750008 + WEB_E_JSON_VALUE_NOT_FOUND Handle = 0x83750009 + HTTP_E_STATUS_UNEXPECTED Handle = 0x80190001 + HTTP_E_STATUS_UNEXPECTED_REDIRECTION Handle = 0x80190003 + HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR Handle = 0x80190004 + HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR Handle = 0x80190005 + HTTP_E_STATUS_AMBIGUOUS Handle = 0x8019012C + HTTP_E_STATUS_MOVED Handle = 0x8019012D + HTTP_E_STATUS_REDIRECT Handle = 0x8019012E + HTTP_E_STATUS_REDIRECT_METHOD Handle = 0x8019012F + HTTP_E_STATUS_NOT_MODIFIED Handle = 0x80190130 + HTTP_E_STATUS_USE_PROXY Handle = 0x80190131 + HTTP_E_STATUS_REDIRECT_KEEP_VERB Handle = 0x80190133 + HTTP_E_STATUS_BAD_REQUEST Handle = 0x80190190 + HTTP_E_STATUS_DENIED Handle = 0x80190191 + HTTP_E_STATUS_PAYMENT_REQ Handle = 0x80190192 + HTTP_E_STATUS_FORBIDDEN Handle = 0x80190193 + HTTP_E_STATUS_NOT_FOUND Handle = 0x80190194 + HTTP_E_STATUS_BAD_METHOD Handle = 0x80190195 + HTTP_E_STATUS_NONE_ACCEPTABLE Handle = 0x80190196 + HTTP_E_STATUS_PROXY_AUTH_REQ Handle = 0x80190197 + HTTP_E_STATUS_REQUEST_TIMEOUT Handle = 0x80190198 + HTTP_E_STATUS_CONFLICT Handle = 0x80190199 + HTTP_E_STATUS_GONE Handle = 0x8019019A + HTTP_E_STATUS_LENGTH_REQUIRED Handle = 0x8019019B + HTTP_E_STATUS_PRECOND_FAILED Handle = 0x8019019C + HTTP_E_STATUS_REQUEST_TOO_LARGE Handle = 0x8019019D + HTTP_E_STATUS_URI_TOO_LONG Handle = 0x8019019E + HTTP_E_STATUS_UNSUPPORTED_MEDIA Handle = 0x8019019F + HTTP_E_STATUS_RANGE_NOT_SATISFIABLE Handle = 0x801901A0 + HTTP_E_STATUS_EXPECTATION_FAILED Handle = 0x801901A1 + HTTP_E_STATUS_SERVER_ERROR Handle = 0x801901F4 + HTTP_E_STATUS_NOT_SUPPORTED Handle = 0x801901F5 + HTTP_E_STATUS_BAD_GATEWAY Handle = 0x801901F6 + HTTP_E_STATUS_SERVICE_UNAVAIL Handle = 0x801901F7 + HTTP_E_STATUS_GATEWAY_TIMEOUT Handle = 0x801901F8 + HTTP_E_STATUS_VERSION_NOT_SUP Handle = 0x801901F9 + E_INVALID_PROTOCOL_OPERATION Handle = 0x83760001 + E_INVALID_PROTOCOL_FORMAT Handle = 0x83760002 + E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED Handle = 0x83760003 + E_SUBPROTOCOL_NOT_SUPPORTED Handle = 0x83760004 + E_PROTOCOL_VERSION_NOT_SUPPORTED Handle = 0x83760005 + INPUT_E_OUT_OF_ORDER Handle = 0x80400000 + INPUT_E_REENTRANCY Handle = 0x80400001 + INPUT_E_MULTIMODAL Handle = 0x80400002 + INPUT_E_PACKET Handle = 0x80400003 + INPUT_E_FRAME Handle = 0x80400004 + INPUT_E_HISTORY Handle = 0x80400005 + INPUT_E_DEVICE_INFO Handle = 0x80400006 + INPUT_E_TRANSFORM Handle = 0x80400007 + INPUT_E_DEVICE_PROPERTY Handle = 0x80400008 + INET_E_INVALID_URL Handle = 0x800C0002 + INET_E_NO_SESSION Handle = 0x800C0003 + INET_E_CANNOT_CONNECT Handle = 0x800C0004 + INET_E_RESOURCE_NOT_FOUND Handle = 0x800C0005 + INET_E_OBJECT_NOT_FOUND Handle = 0x800C0006 + INET_E_DATA_NOT_AVAILABLE Handle = 0x800C0007 + INET_E_DOWNLOAD_FAILURE Handle = 0x800C0008 + INET_E_AUTHENTICATION_REQUIRED Handle = 0x800C0009 + INET_E_NO_VALID_MEDIA Handle = 0x800C000A + INET_E_CONNECTION_TIMEOUT Handle = 0x800C000B + INET_E_INVALID_REQUEST Handle = 0x800C000C + INET_E_UNKNOWN_PROTOCOL Handle = 0x800C000D + INET_E_SECURITY_PROBLEM Handle = 0x800C000E + INET_E_CANNOT_LOAD_DATA Handle = 0x800C000F + INET_E_CANNOT_INSTANTIATE_OBJECT Handle = 0x800C0010 + INET_E_INVALID_CERTIFICATE Handle = 0x800C0019 + INET_E_REDIRECT_FAILED Handle = 0x800C0014 + INET_E_REDIRECT_TO_DIR Handle = 0x800C0015 + ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00001 + ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00002 + ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00003 + ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00004 + ERROR_IO_PREEMPTED Handle = 0x89010001 + JSCRIPT_E_CANTEXECUTE Handle = 0x89020001 + WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x88010001 + WEP_E_FIXED_DATA_NOT_SUPPORTED Handle = 0x88010002 + WEP_E_HARDWARE_NOT_COMPLIANT Handle = 0x88010003 + WEP_E_LOCK_NOT_CONFIGURED Handle = 0x88010004 + WEP_E_PROTECTION_SUSPENDED Handle = 0x88010005 + WEP_E_NO_LICENSE Handle = 0x88010006 + WEP_E_OS_NOT_PROTECTED Handle = 0x88010007 + WEP_E_UNEXPECTED_FAIL Handle = 0x88010008 + WEP_E_BUFFER_TOO_LARGE Handle = 0x88010009 + ERROR_SVHDX_ERROR_STORED Handle = 0xC05C0000 + ERROR_SVHDX_ERROR_NOT_AVAILABLE Handle = 0xC05CFF00 + ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE Handle = 0xC05CFF01 + ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED Handle = 0xC05CFF02 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED Handle = 0xC05CFF03 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED Handle = 0xC05CFF04 + ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED Handle = 0xC05CFF05 + ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED Handle = 0xC05CFF06 + ERROR_SVHDX_RESERVATION_CONFLICT Handle = 0xC05CFF07 + ERROR_SVHDX_WRONG_FILE_TYPE Handle = 0xC05CFF08 + ERROR_SVHDX_VERSION_MISMATCH Handle = 0xC05CFF09 + ERROR_VHD_SHARED Handle = 0xC05CFF0A + ERROR_SVHDX_NO_INITIATOR Handle = 0xC05CFF0B + ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND Handle = 0xC05CFF0C + ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP Handle = 0xC05D0000 + ERROR_SMB_BAD_CLUSTER_DIALECT Handle = 0xC05D0001 + WININET_E_OUT_OF_HANDLES Handle = 0x80072EE1 + WININET_E_TIMEOUT Handle = 0x80072EE2 + WININET_E_EXTENDED_ERROR Handle = 0x80072EE3 + WININET_E_INTERNAL_ERROR Handle = 0x80072EE4 + WININET_E_INVALID_URL Handle = 0x80072EE5 + WININET_E_UNRECOGNIZED_SCHEME Handle = 0x80072EE6 + WININET_E_NAME_NOT_RESOLVED Handle = 0x80072EE7 + WININET_E_PROTOCOL_NOT_FOUND Handle = 0x80072EE8 + WININET_E_INVALID_OPTION Handle = 0x80072EE9 + WININET_E_BAD_OPTION_LENGTH Handle = 0x80072EEA + WININET_E_OPTION_NOT_SETTABLE Handle = 0x80072EEB + WININET_E_SHUTDOWN Handle = 0x80072EEC + WININET_E_INCORRECT_USER_NAME Handle = 0x80072EED + WININET_E_INCORRECT_PASSWORD Handle = 0x80072EEE + WININET_E_LOGIN_FAILURE Handle = 0x80072EEF + WININET_E_INVALID_OPERATION Handle = 0x80072EF0 + WININET_E_OPERATION_CANCELLED Handle = 0x80072EF1 + WININET_E_INCORRECT_HANDLE_TYPE Handle = 0x80072EF2 + WININET_E_INCORRECT_HANDLE_STATE Handle = 0x80072EF3 + WININET_E_NOT_PROXY_REQUEST Handle = 0x80072EF4 + WININET_E_REGISTRY_VALUE_NOT_FOUND Handle = 0x80072EF5 + WININET_E_BAD_REGISTRY_PARAMETER Handle = 0x80072EF6 + WININET_E_NO_DIRECT_ACCESS Handle = 0x80072EF7 + WININET_E_NO_CONTEXT Handle = 0x80072EF8 + WININET_E_NO_CALLBACK Handle = 0x80072EF9 + WININET_E_REQUEST_PENDING Handle = 0x80072EFA + WININET_E_INCORRECT_FORMAT Handle = 0x80072EFB + WININET_E_ITEM_NOT_FOUND Handle = 0x80072EFC + WININET_E_CANNOT_CONNECT Handle = 0x80072EFD + WININET_E_CONNECTION_ABORTED Handle = 0x80072EFE + WININET_E_CONNECTION_RESET Handle = 0x80072EFF + WININET_E_FORCE_RETRY Handle = 0x80072F00 + WININET_E_INVALID_PROXY_REQUEST Handle = 0x80072F01 + WININET_E_NEED_UI Handle = 0x80072F02 + WININET_E_HANDLE_EXISTS Handle = 0x80072F04 + WININET_E_SEC_CERT_DATE_INVALID Handle = 0x80072F05 + WININET_E_SEC_CERT_CN_INVALID Handle = 0x80072F06 + WININET_E_HTTP_TO_HTTPS_ON_REDIR Handle = 0x80072F07 + WININET_E_HTTPS_TO_HTTP_ON_REDIR Handle = 0x80072F08 + WININET_E_MIXED_SECURITY Handle = 0x80072F09 + WININET_E_CHG_POST_IS_NON_SECURE Handle = 0x80072F0A + WININET_E_POST_IS_NON_SECURE Handle = 0x80072F0B + WININET_E_CLIENT_AUTH_CERT_NEEDED Handle = 0x80072F0C + WININET_E_INVALID_CA Handle = 0x80072F0D + WININET_E_CLIENT_AUTH_NOT_SETUP Handle = 0x80072F0E + WININET_E_ASYNC_THREAD_FAILED Handle = 0x80072F0F + WININET_E_REDIRECT_SCHEME_CHANGE Handle = 0x80072F10 + WININET_E_DIALOG_PENDING Handle = 0x80072F11 + WININET_E_RETRY_DIALOG Handle = 0x80072F12 + WININET_E_NO_NEW_CONTAINERS Handle = 0x80072F13 + WININET_E_HTTPS_HTTP_SUBMIT_REDIR Handle = 0x80072F14 + WININET_E_SEC_CERT_ERRORS Handle = 0x80072F17 + WININET_E_SEC_CERT_REV_FAILED Handle = 0x80072F19 + WININET_E_HEADER_NOT_FOUND Handle = 0x80072F76 + WININET_E_DOWNLEVEL_SERVER Handle = 0x80072F77 + WININET_E_INVALID_SERVER_RESPONSE Handle = 0x80072F78 + WININET_E_INVALID_HEADER Handle = 0x80072F79 + WININET_E_INVALID_QUERY_REQUEST Handle = 0x80072F7A + WININET_E_HEADER_ALREADY_EXISTS Handle = 0x80072F7B + WININET_E_REDIRECT_FAILED Handle = 0x80072F7C + WININET_E_SECURITY_CHANNEL_ERROR Handle = 0x80072F7D + WININET_E_UNABLE_TO_CACHE_FILE Handle = 0x80072F7E + WININET_E_TCPIP_NOT_INSTALLED Handle = 0x80072F7F + WININET_E_DISCONNECTED Handle = 0x80072F83 + WININET_E_SERVER_UNREACHABLE Handle = 0x80072F84 + WININET_E_PROXY_SERVER_UNREACHABLE Handle = 0x80072F85 + WININET_E_BAD_AUTO_PROXY_SCRIPT Handle = 0x80072F86 + WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT Handle = 0x80072F87 + WININET_E_SEC_INVALID_CERT Handle = 0x80072F89 + WININET_E_SEC_CERT_REVOKED Handle = 0x80072F8A + WININET_E_FAILED_DUETOSECURITYCHECK Handle = 0x80072F8B + WININET_E_NOT_INITIALIZED Handle = 0x80072F8C + WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY Handle = 0x80072F8E + WININET_E_DECODING_FAILED Handle = 0x80072F8F + WININET_E_NOT_REDIRECTED Handle = 0x80072F80 + WININET_E_COOKIE_NEEDS_CONFIRMATION Handle = 0x80072F81 + WININET_E_COOKIE_DECLINED Handle = 0x80072F82 + WININET_E_REDIRECT_NEEDS_CONFIRMATION Handle = 0x80072F88 + SQLITE_E_ERROR Handle = 0x87AF0001 + SQLITE_E_INTERNAL Handle = 0x87AF0002 + SQLITE_E_PERM Handle = 0x87AF0003 + SQLITE_E_ABORT Handle = 0x87AF0004 + SQLITE_E_BUSY Handle = 0x87AF0005 + SQLITE_E_LOCKED Handle = 0x87AF0006 + SQLITE_E_NOMEM Handle = 0x87AF0007 + SQLITE_E_READONLY Handle = 0x87AF0008 + SQLITE_E_INTERRUPT Handle = 0x87AF0009 + SQLITE_E_IOERR Handle = 0x87AF000A + SQLITE_E_CORRUPT Handle = 0x87AF000B + SQLITE_E_NOTFOUND Handle = 0x87AF000C + SQLITE_E_FULL Handle = 0x87AF000D + SQLITE_E_CANTOPEN Handle = 0x87AF000E + SQLITE_E_PROTOCOL Handle = 0x87AF000F + SQLITE_E_EMPTY Handle = 0x87AF0010 + SQLITE_E_SCHEMA Handle = 0x87AF0011 + SQLITE_E_TOOBIG Handle = 0x87AF0012 + SQLITE_E_CONSTRAINT Handle = 0x87AF0013 + SQLITE_E_MISMATCH Handle = 0x87AF0014 + SQLITE_E_MISUSE Handle = 0x87AF0015 + SQLITE_E_NOLFS Handle = 0x87AF0016 + SQLITE_E_AUTH Handle = 0x87AF0017 + SQLITE_E_FORMAT Handle = 0x87AF0018 + SQLITE_E_RANGE Handle = 0x87AF0019 + SQLITE_E_NOTADB Handle = 0x87AF001A + SQLITE_E_NOTICE Handle = 0x87AF001B + SQLITE_E_WARNING Handle = 0x87AF001C + SQLITE_E_ROW Handle = 0x87AF0064 + SQLITE_E_DONE Handle = 0x87AF0065 + SQLITE_E_IOERR_READ Handle = 0x87AF010A + SQLITE_E_IOERR_SHORT_READ Handle = 0x87AF020A + SQLITE_E_IOERR_WRITE Handle = 0x87AF030A + SQLITE_E_IOERR_FSYNC Handle = 0x87AF040A + SQLITE_E_IOERR_DIR_FSYNC Handle = 0x87AF050A + SQLITE_E_IOERR_TRUNCATE Handle = 0x87AF060A + SQLITE_E_IOERR_FSTAT Handle = 0x87AF070A + SQLITE_E_IOERR_UNLOCK Handle = 0x87AF080A + SQLITE_E_IOERR_RDLOCK Handle = 0x87AF090A + SQLITE_E_IOERR_DELETE Handle = 0x87AF0A0A + SQLITE_E_IOERR_BLOCKED Handle = 0x87AF0B0A + SQLITE_E_IOERR_NOMEM Handle = 0x87AF0C0A + SQLITE_E_IOERR_ACCESS Handle = 0x87AF0D0A + SQLITE_E_IOERR_CHECKRESERVEDLOCK Handle = 0x87AF0E0A + SQLITE_E_IOERR_LOCK Handle = 0x87AF0F0A + SQLITE_E_IOERR_CLOSE Handle = 0x87AF100A + SQLITE_E_IOERR_DIR_CLOSE Handle = 0x87AF110A + SQLITE_E_IOERR_SHMOPEN Handle = 0x87AF120A + SQLITE_E_IOERR_SHMSIZE Handle = 0x87AF130A + SQLITE_E_IOERR_SHMLOCK Handle = 0x87AF140A + SQLITE_E_IOERR_SHMMAP Handle = 0x87AF150A + SQLITE_E_IOERR_SEEK Handle = 0x87AF160A + SQLITE_E_IOERR_DELETE_NOENT Handle = 0x87AF170A + SQLITE_E_IOERR_MMAP Handle = 0x87AF180A + SQLITE_E_IOERR_GETTEMPPATH Handle = 0x87AF190A + SQLITE_E_IOERR_CONVPATH Handle = 0x87AF1A0A + SQLITE_E_IOERR_VNODE Handle = 0x87AF1A02 + SQLITE_E_IOERR_AUTH Handle = 0x87AF1A03 + SQLITE_E_LOCKED_SHAREDCACHE Handle = 0x87AF0106 + SQLITE_E_BUSY_RECOVERY Handle = 0x87AF0105 + SQLITE_E_BUSY_SNAPSHOT Handle = 0x87AF0205 + SQLITE_E_CANTOPEN_NOTEMPDIR Handle = 0x87AF010E + SQLITE_E_CANTOPEN_ISDIR Handle = 0x87AF020E + SQLITE_E_CANTOPEN_FULLPATH Handle = 0x87AF030E + SQLITE_E_CANTOPEN_CONVPATH Handle = 0x87AF040E + SQLITE_E_CORRUPT_VTAB Handle = 0x87AF010B + SQLITE_E_READONLY_RECOVERY Handle = 0x87AF0108 + SQLITE_E_READONLY_CANTLOCK Handle = 0x87AF0208 + SQLITE_E_READONLY_ROLLBACK Handle = 0x87AF0308 + SQLITE_E_READONLY_DBMOVED Handle = 0x87AF0408 + SQLITE_E_ABORT_ROLLBACK Handle = 0x87AF0204 + SQLITE_E_CONSTRAINT_CHECK Handle = 0x87AF0113 + SQLITE_E_CONSTRAINT_COMMITHOOK Handle = 0x87AF0213 + SQLITE_E_CONSTRAINT_FOREIGNKEY Handle = 0x87AF0313 + SQLITE_E_CONSTRAINT_FUNCTION Handle = 0x87AF0413 + SQLITE_E_CONSTRAINT_NOTNULL Handle = 0x87AF0513 + SQLITE_E_CONSTRAINT_PRIMARYKEY Handle = 0x87AF0613 + SQLITE_E_CONSTRAINT_TRIGGER Handle = 0x87AF0713 + SQLITE_E_CONSTRAINT_UNIQUE Handle = 0x87AF0813 + SQLITE_E_CONSTRAINT_VTAB Handle = 0x87AF0913 + SQLITE_E_CONSTRAINT_ROWID Handle = 0x87AF0A13 + SQLITE_E_NOTICE_RECOVER_WAL Handle = 0x87AF011B + SQLITE_E_NOTICE_RECOVER_ROLLBACK Handle = 0x87AF021B + SQLITE_E_WARNING_AUTOINDEX Handle = 0x87AF011C + UTC_E_TOGGLE_TRACE_STARTED Handle = 0x87C51001 + UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT Handle = 0x87C51002 + UTC_E_AOT_NOT_RUNNING Handle = 0x87C51003 + UTC_E_SCRIPT_TYPE_INVALID Handle = 0x87C51004 + UTC_E_SCENARIODEF_NOT_FOUND Handle = 0x87C51005 + UTC_E_TRACEPROFILE_NOT_FOUND Handle = 0x87C51006 + UTC_E_FORWARDER_ALREADY_ENABLED Handle = 0x87C51007 + UTC_E_FORWARDER_ALREADY_DISABLED Handle = 0x87C51008 + UTC_E_EVENTLOG_ENTRY_MALFORMED Handle = 0x87C51009 + UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH Handle = 0x87C5100A + UTC_E_SCRIPT_TERMINATED Handle = 0x87C5100B + UTC_E_INVALID_CUSTOM_FILTER Handle = 0x87C5100C + UTC_E_TRACE_NOT_RUNNING Handle = 0x87C5100D + UTC_E_REESCALATED_TOO_QUICKLY Handle = 0x87C5100E + UTC_E_ESCALATION_ALREADY_RUNNING Handle = 0x87C5100F + UTC_E_PERFTRACK_ALREADY_TRACING Handle = 0x87C51010 + UTC_E_REACHED_MAX_ESCALATIONS Handle = 0x87C51011 + UTC_E_FORWARDER_PRODUCER_MISMATCH Handle = 0x87C51012 + UTC_E_INTENTIONAL_SCRIPT_FAILURE Handle = 0x87C51013 + UTC_E_SQM_INIT_FAILED Handle = 0x87C51014 + UTC_E_NO_WER_LOGGER_SUPPORTED Handle = 0x87C51015 + UTC_E_TRACERS_DONT_EXIST Handle = 0x87C51016 + UTC_E_WINRT_INIT_FAILED Handle = 0x87C51017 + UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH Handle = 0x87C51018 + UTC_E_INVALID_FILTER Handle = 0x87C51019 + UTC_E_EXE_TERMINATED Handle = 0x87C5101A + UTC_E_ESCALATION_NOT_AUTHORIZED Handle = 0x87C5101B + UTC_E_SETUP_NOT_AUTHORIZED Handle = 0x87C5101C + UTC_E_CHILD_PROCESS_FAILED Handle = 0x87C5101D + UTC_E_COMMAND_LINE_NOT_AUTHORIZED Handle = 0x87C5101E + UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML Handle = 0x87C5101F + UTC_E_ESCALATION_TIMED_OUT Handle = 0x87C51020 + UTC_E_SETUP_TIMED_OUT Handle = 0x87C51021 + UTC_E_TRIGGER_MISMATCH Handle = 0x87C51022 + UTC_E_TRIGGER_NOT_FOUND Handle = 0x87C51023 + UTC_E_SIF_NOT_SUPPORTED Handle = 0x87C51024 + UTC_E_DELAY_TERMINATED Handle = 0x87C51025 + UTC_E_DEVICE_TICKET_ERROR Handle = 0x87C51026 + UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED Handle = 0x87C51027 + UTC_E_API_RESULT_UNAVAILABLE Handle = 0x87C51028 + UTC_E_RPC_TIMEOUT Handle = 0x87C51029 + UTC_E_RPC_WAIT_FAILED Handle = 0x87C5102A + UTC_E_API_BUSY Handle = 0x87C5102B + UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET Handle = 0x87C5102C + UTC_E_EXCLUSIVITY_NOT_AVAILABLE Handle = 0x87C5102D + UTC_E_GETFILE_FILE_PATH_NOT_APPROVED Handle = 0x87C5102E + UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS Handle = 0x87C5102F + UTC_E_TIME_TRIGGER_ON_START_INVALID Handle = 0x87C51030 + UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION Handle = 0x87C51031 + UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE Handle = 0x87C51032 + UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE Handle = 0x87C51033 + UTC_E_BINARY_MISSING Handle = 0x87C51034 + UTC_E_NETWORK_CAPTURE_NOT_ALLOWED Handle = 0x87C51035 + UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID Handle = 0x87C51036 + UTC_E_UNABLE_TO_RESOLVE_SESSION Handle = 0x87C51037 + UTC_E_THROTTLED Handle = 0x87C51038 + UTC_E_UNAPPROVED_SCRIPT Handle = 0x87C51039 + UTC_E_SCRIPT_MISSING Handle = 0x87C5103A + UTC_E_SCENARIO_THROTTLED Handle = 0x87C5103B + UTC_E_API_NOT_SUPPORTED Handle = 0x87C5103C + UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED Handle = 0x87C5103D + UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED Handle = 0x87C5103E + UTC_E_CERT_REV_FAILED Handle = 0x87C5103F + UTC_E_FAILED_TO_START_NDISCAP Handle = 0x87C51040 + UTC_E_KERNELDUMP_LIMIT_REACHED Handle = 0x87C51041 + UTC_E_MISSING_AGGREGATE_EVENT_TAG Handle = 0x87C51042 + UTC_E_INVALID_AGGREGATION_STRUCT Handle = 0x87C51043 + UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION Handle = 0x87C51044 + UTC_E_FILTER_MISSING_ATTRIBUTE Handle = 0x87C51045 + UTC_E_FILTER_INVALID_TYPE Handle = 0x87C51046 + UTC_E_FILTER_VARIABLE_NOT_FOUND Handle = 0x87C51047 + UTC_E_FILTER_FUNCTION_RESTRICTED Handle = 0x87C51048 + UTC_E_FILTER_VERSION_MISMATCH Handle = 0x87C51049 + UTC_E_FILTER_INVALID_FUNCTION Handle = 0x87C51050 + UTC_E_FILTER_INVALID_FUNCTION_PARAMS Handle = 0x87C51051 + UTC_E_FILTER_INVALID_COMMAND Handle = 0x87C51052 + UTC_E_FILTER_ILLEGAL_EVAL Handle = 0x87C51053 + UTC_E_TTTRACER_RETURNED_ERROR Handle = 0x87C51054 + UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE Handle = 0x87C51055 + UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS Handle = 0x87C51056 + UTC_E_SCENARIO_HAS_NO_ACTIONS Handle = 0x87C51057 + UTC_E_TTTRACER_STORAGE_FULL Handle = 0x87C51058 + UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059 + UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A + UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B + UTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED Handle = 0x87C5105C + WINML_ERR_INVALID_DEVICE Handle = 0x88900001 + WINML_ERR_INVALID_BINDING Handle = 0x88900002 + WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003 + WINML_ERR_SIZE_MISMATCH Handle = 0x88900004 + STATUS_WAIT_0 NTStatus = 0x00000000 + STATUS_SUCCESS NTStatus = 0x00000000 + STATUS_WAIT_1 NTStatus = 0x00000001 + STATUS_WAIT_2 NTStatus = 0x00000002 + STATUS_WAIT_3 NTStatus = 0x00000003 + STATUS_WAIT_63 NTStatus = 0x0000003F + STATUS_ABANDONED NTStatus = 0x00000080 + STATUS_ABANDONED_WAIT_0 NTStatus = 0x00000080 + STATUS_ABANDONED_WAIT_63 NTStatus = 0x000000BF + STATUS_USER_APC NTStatus = 0x000000C0 + STATUS_ALREADY_COMPLETE NTStatus = 0x000000FF + STATUS_KERNEL_APC NTStatus = 0x00000100 + STATUS_ALERTED NTStatus = 0x00000101 + STATUS_TIMEOUT NTStatus = 0x00000102 + STATUS_PENDING NTStatus = 0x00000103 + STATUS_REPARSE NTStatus = 0x00000104 + STATUS_MORE_ENTRIES NTStatus = 0x00000105 + STATUS_NOT_ALL_ASSIGNED NTStatus = 0x00000106 + STATUS_SOME_NOT_MAPPED NTStatus = 0x00000107 + STATUS_OPLOCK_BREAK_IN_PROGRESS NTStatus = 0x00000108 + STATUS_VOLUME_MOUNTED NTStatus = 0x00000109 + STATUS_RXACT_COMMITTED NTStatus = 0x0000010A + STATUS_NOTIFY_CLEANUP NTStatus = 0x0000010B + STATUS_NOTIFY_ENUM_DIR NTStatus = 0x0000010C + STATUS_NO_QUOTAS_FOR_ACCOUNT NTStatus = 0x0000010D + STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED NTStatus = 0x0000010E + STATUS_PAGE_FAULT_TRANSITION NTStatus = 0x00000110 + STATUS_PAGE_FAULT_DEMAND_ZERO NTStatus = 0x00000111 + STATUS_PAGE_FAULT_COPY_ON_WRITE NTStatus = 0x00000112 + STATUS_PAGE_FAULT_GUARD_PAGE NTStatus = 0x00000113 + STATUS_PAGE_FAULT_PAGING_FILE NTStatus = 0x00000114 + STATUS_CACHE_PAGE_LOCKED NTStatus = 0x00000115 + STATUS_CRASH_DUMP NTStatus = 0x00000116 + STATUS_BUFFER_ALL_ZEROS NTStatus = 0x00000117 + STATUS_REPARSE_OBJECT NTStatus = 0x00000118 + STATUS_RESOURCE_REQUIREMENTS_CHANGED NTStatus = 0x00000119 + STATUS_TRANSLATION_COMPLETE NTStatus = 0x00000120 + STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY NTStatus = 0x00000121 + STATUS_NOTHING_TO_TERMINATE NTStatus = 0x00000122 + STATUS_PROCESS_NOT_IN_JOB NTStatus = 0x00000123 + STATUS_PROCESS_IN_JOB NTStatus = 0x00000124 + STATUS_VOLSNAP_HIBERNATE_READY NTStatus = 0x00000125 + STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY NTStatus = 0x00000126 + STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED NTStatus = 0x00000127 + STATUS_INTERRUPT_STILL_CONNECTED NTStatus = 0x00000128 + STATUS_PROCESS_CLONED NTStatus = 0x00000129 + STATUS_FILE_LOCKED_WITH_ONLY_READERS NTStatus = 0x0000012A + STATUS_FILE_LOCKED_WITH_WRITERS NTStatus = 0x0000012B + STATUS_VALID_IMAGE_HASH NTStatus = 0x0000012C + STATUS_VALID_CATALOG_HASH NTStatus = 0x0000012D + STATUS_VALID_STRONG_CODE_HASH NTStatus = 0x0000012E + STATUS_GHOSTED NTStatus = 0x0000012F + STATUS_DATA_OVERWRITTEN NTStatus = 0x00000130 + STATUS_RESOURCEMANAGER_READ_ONLY NTStatus = 0x00000202 + STATUS_RING_PREVIOUSLY_EMPTY NTStatus = 0x00000210 + STATUS_RING_PREVIOUSLY_FULL NTStatus = 0x00000211 + STATUS_RING_PREVIOUSLY_ABOVE_QUOTA NTStatus = 0x00000212 + STATUS_RING_NEWLY_EMPTY NTStatus = 0x00000213 + STATUS_RING_SIGNAL_OPPOSITE_ENDPOINT NTStatus = 0x00000214 + STATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE NTStatus = 0x00000215 + STATUS_OPLOCK_HANDLE_CLOSED NTStatus = 0x00000216 + STATUS_WAIT_FOR_OPLOCK NTStatus = 0x00000367 + STATUS_REPARSE_GLOBAL NTStatus = 0x00000368 + STATUS_FLT_IO_COMPLETE NTStatus = 0x001C0001 + STATUS_OBJECT_NAME_EXISTS NTStatus = 0x40000000 + STATUS_THREAD_WAS_SUSPENDED NTStatus = 0x40000001 + STATUS_WORKING_SET_LIMIT_RANGE NTStatus = 0x40000002 + STATUS_IMAGE_NOT_AT_BASE NTStatus = 0x40000003 + STATUS_RXACT_STATE_CREATED NTStatus = 0x40000004 + STATUS_SEGMENT_NOTIFICATION NTStatus = 0x40000005 + STATUS_LOCAL_USER_SESSION_KEY NTStatus = 0x40000006 + STATUS_BAD_CURRENT_DIRECTORY NTStatus = 0x40000007 + STATUS_SERIAL_MORE_WRITES NTStatus = 0x40000008 + STATUS_REGISTRY_RECOVERED NTStatus = 0x40000009 + STATUS_FT_READ_RECOVERY_FROM_BACKUP NTStatus = 0x4000000A + STATUS_FT_WRITE_RECOVERY NTStatus = 0x4000000B + STATUS_SERIAL_COUNTER_TIMEOUT NTStatus = 0x4000000C + STATUS_NULL_LM_PASSWORD NTStatus = 0x4000000D + STATUS_IMAGE_MACHINE_TYPE_MISMATCH NTStatus = 0x4000000E + STATUS_RECEIVE_PARTIAL NTStatus = 0x4000000F + STATUS_RECEIVE_EXPEDITED NTStatus = 0x40000010 + STATUS_RECEIVE_PARTIAL_EXPEDITED NTStatus = 0x40000011 + STATUS_EVENT_DONE NTStatus = 0x40000012 + STATUS_EVENT_PENDING NTStatus = 0x40000013 + STATUS_CHECKING_FILE_SYSTEM NTStatus = 0x40000014 + STATUS_FATAL_APP_EXIT NTStatus = 0x40000015 + STATUS_PREDEFINED_HANDLE NTStatus = 0x40000016 + STATUS_WAS_UNLOCKED NTStatus = 0x40000017 + STATUS_SERVICE_NOTIFICATION NTStatus = 0x40000018 + STATUS_WAS_LOCKED NTStatus = 0x40000019 + STATUS_LOG_HARD_ERROR NTStatus = 0x4000001A + STATUS_ALREADY_WIN32 NTStatus = 0x4000001B + STATUS_WX86_UNSIMULATE NTStatus = 0x4000001C + STATUS_WX86_CONTINUE NTStatus = 0x4000001D + STATUS_WX86_SINGLE_STEP NTStatus = 0x4000001E + STATUS_WX86_BREAKPOINT NTStatus = 0x4000001F + STATUS_WX86_EXCEPTION_CONTINUE NTStatus = 0x40000020 + STATUS_WX86_EXCEPTION_LASTCHANCE NTStatus = 0x40000021 + STATUS_WX86_EXCEPTION_CHAIN NTStatus = 0x40000022 + STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE NTStatus = 0x40000023 + STATUS_NO_YIELD_PERFORMED NTStatus = 0x40000024 + STATUS_TIMER_RESUME_IGNORED NTStatus = 0x40000025 + STATUS_ARBITRATION_UNHANDLED NTStatus = 0x40000026 + STATUS_CARDBUS_NOT_SUPPORTED NTStatus = 0x40000027 + STATUS_WX86_CREATEWX86TIB NTStatus = 0x40000028 + STATUS_MP_PROCESSOR_MISMATCH NTStatus = 0x40000029 + STATUS_HIBERNATED NTStatus = 0x4000002A + STATUS_RESUME_HIBERNATION NTStatus = 0x4000002B + STATUS_FIRMWARE_UPDATED NTStatus = 0x4000002C + STATUS_DRIVERS_LEAKING_LOCKED_PAGES NTStatus = 0x4000002D + STATUS_MESSAGE_RETRIEVED NTStatus = 0x4000002E + STATUS_SYSTEM_POWERSTATE_TRANSITION NTStatus = 0x4000002F + STATUS_ALPC_CHECK_COMPLETION_LIST NTStatus = 0x40000030 + STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION NTStatus = 0x40000031 + STATUS_ACCESS_AUDIT_BY_POLICY NTStatus = 0x40000032 + STATUS_ABANDON_HIBERFILE NTStatus = 0x40000033 + STATUS_BIZRULES_NOT_ENABLED NTStatus = 0x40000034 + STATUS_FT_READ_FROM_COPY NTStatus = 0x40000035 + STATUS_IMAGE_AT_DIFFERENT_BASE NTStatus = 0x40000036 + STATUS_PATCH_DEFERRED NTStatus = 0x40000037 + STATUS_HEURISTIC_DAMAGE_POSSIBLE NTStatus = 0x40190001 + STATUS_GUARD_PAGE_VIOLATION NTStatus = 0x80000001 + STATUS_DATATYPE_MISALIGNMENT NTStatus = 0x80000002 + STATUS_BREAKPOINT NTStatus = 0x80000003 + STATUS_SINGLE_STEP NTStatus = 0x80000004 + STATUS_BUFFER_OVERFLOW NTStatus = 0x80000005 + STATUS_NO_MORE_FILES NTStatus = 0x80000006 + STATUS_WAKE_SYSTEM_DEBUGGER NTStatus = 0x80000007 + STATUS_HANDLES_CLOSED NTStatus = 0x8000000A + STATUS_NO_INHERITANCE NTStatus = 0x8000000B + STATUS_GUID_SUBSTITUTION_MADE NTStatus = 0x8000000C + STATUS_PARTIAL_COPY NTStatus = 0x8000000D + STATUS_DEVICE_PAPER_EMPTY NTStatus = 0x8000000E + STATUS_DEVICE_POWERED_OFF NTStatus = 0x8000000F + STATUS_DEVICE_OFF_LINE NTStatus = 0x80000010 + STATUS_DEVICE_BUSY NTStatus = 0x80000011 + STATUS_NO_MORE_EAS NTStatus = 0x80000012 + STATUS_INVALID_EA_NAME NTStatus = 0x80000013 + STATUS_EA_LIST_INCONSISTENT NTStatus = 0x80000014 + STATUS_INVALID_EA_FLAG NTStatus = 0x80000015 + STATUS_VERIFY_REQUIRED NTStatus = 0x80000016 + STATUS_EXTRANEOUS_INFORMATION NTStatus = 0x80000017 + STATUS_RXACT_COMMIT_NECESSARY NTStatus = 0x80000018 + STATUS_NO_MORE_ENTRIES NTStatus = 0x8000001A + STATUS_FILEMARK_DETECTED NTStatus = 0x8000001B + STATUS_MEDIA_CHANGED NTStatus = 0x8000001C + STATUS_BUS_RESET NTStatus = 0x8000001D + STATUS_END_OF_MEDIA NTStatus = 0x8000001E + STATUS_BEGINNING_OF_MEDIA NTStatus = 0x8000001F + STATUS_MEDIA_CHECK NTStatus = 0x80000020 + STATUS_SETMARK_DETECTED NTStatus = 0x80000021 + STATUS_NO_DATA_DETECTED NTStatus = 0x80000022 + STATUS_REDIRECTOR_HAS_OPEN_HANDLES NTStatus = 0x80000023 + STATUS_SERVER_HAS_OPEN_HANDLES NTStatus = 0x80000024 + STATUS_ALREADY_DISCONNECTED NTStatus = 0x80000025 + STATUS_LONGJUMP NTStatus = 0x80000026 + STATUS_CLEANER_CARTRIDGE_INSTALLED NTStatus = 0x80000027 + STATUS_PLUGPLAY_QUERY_VETOED NTStatus = 0x80000028 + STATUS_UNWIND_CONSOLIDATE NTStatus = 0x80000029 + STATUS_REGISTRY_HIVE_RECOVERED NTStatus = 0x8000002A + STATUS_DLL_MIGHT_BE_INSECURE NTStatus = 0x8000002B + STATUS_DLL_MIGHT_BE_INCOMPATIBLE NTStatus = 0x8000002C + STATUS_STOPPED_ON_SYMLINK NTStatus = 0x8000002D + STATUS_CANNOT_GRANT_REQUESTED_OPLOCK NTStatus = 0x8000002E + STATUS_NO_ACE_CONDITION NTStatus = 0x8000002F + STATUS_DEVICE_SUPPORT_IN_PROGRESS NTStatus = 0x80000030 + STATUS_DEVICE_POWER_CYCLE_REQUIRED NTStatus = 0x80000031 + STATUS_NO_WORK_DONE NTStatus = 0x80000032 + STATUS_CLUSTER_NODE_ALREADY_UP NTStatus = 0x80130001 + STATUS_CLUSTER_NODE_ALREADY_DOWN NTStatus = 0x80130002 + STATUS_CLUSTER_NETWORK_ALREADY_ONLINE NTStatus = 0x80130003 + STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE NTStatus = 0x80130004 + STATUS_CLUSTER_NODE_ALREADY_MEMBER NTStatus = 0x80130005 + STATUS_FLT_BUFFER_TOO_SMALL NTStatus = 0x801C0001 + STATUS_FVE_PARTIAL_METADATA NTStatus = 0x80210001 + STATUS_FVE_TRANSIENT_STATE NTStatus = 0x80210002 + STATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH NTStatus = 0x8000CF00 + STATUS_UNSUCCESSFUL NTStatus = 0xC0000001 + STATUS_NOT_IMPLEMENTED NTStatus = 0xC0000002 + STATUS_INVALID_INFO_CLASS NTStatus = 0xC0000003 + STATUS_INFO_LENGTH_MISMATCH NTStatus = 0xC0000004 + STATUS_ACCESS_VIOLATION NTStatus = 0xC0000005 + STATUS_IN_PAGE_ERROR NTStatus = 0xC0000006 + STATUS_PAGEFILE_QUOTA NTStatus = 0xC0000007 + STATUS_INVALID_HANDLE NTStatus = 0xC0000008 + STATUS_BAD_INITIAL_STACK NTStatus = 0xC0000009 + STATUS_BAD_INITIAL_PC NTStatus = 0xC000000A + STATUS_INVALID_CID NTStatus = 0xC000000B + STATUS_TIMER_NOT_CANCELED NTStatus = 0xC000000C + STATUS_INVALID_PARAMETER NTStatus = 0xC000000D + STATUS_NO_SUCH_DEVICE NTStatus = 0xC000000E + STATUS_NO_SUCH_FILE NTStatus = 0xC000000F + STATUS_INVALID_DEVICE_REQUEST NTStatus = 0xC0000010 + STATUS_END_OF_FILE NTStatus = 0xC0000011 + STATUS_WRONG_VOLUME NTStatus = 0xC0000012 + STATUS_NO_MEDIA_IN_DEVICE NTStatus = 0xC0000013 + STATUS_UNRECOGNIZED_MEDIA NTStatus = 0xC0000014 + STATUS_NONEXISTENT_SECTOR NTStatus = 0xC0000015 + STATUS_MORE_PROCESSING_REQUIRED NTStatus = 0xC0000016 + STATUS_NO_MEMORY NTStatus = 0xC0000017 + STATUS_CONFLICTING_ADDRESSES NTStatus = 0xC0000018 + STATUS_NOT_MAPPED_VIEW NTStatus = 0xC0000019 + STATUS_UNABLE_TO_FREE_VM NTStatus = 0xC000001A + STATUS_UNABLE_TO_DELETE_SECTION NTStatus = 0xC000001B + STATUS_INVALID_SYSTEM_SERVICE NTStatus = 0xC000001C + STATUS_ILLEGAL_INSTRUCTION NTStatus = 0xC000001D + STATUS_INVALID_LOCK_SEQUENCE NTStatus = 0xC000001E + STATUS_INVALID_VIEW_SIZE NTStatus = 0xC000001F + STATUS_INVALID_FILE_FOR_SECTION NTStatus = 0xC0000020 + STATUS_ALREADY_COMMITTED NTStatus = 0xC0000021 + STATUS_ACCESS_DENIED NTStatus = 0xC0000022 + STATUS_BUFFER_TOO_SMALL NTStatus = 0xC0000023 + STATUS_OBJECT_TYPE_MISMATCH NTStatus = 0xC0000024 + STATUS_NONCONTINUABLE_EXCEPTION NTStatus = 0xC0000025 + STATUS_INVALID_DISPOSITION NTStatus = 0xC0000026 + STATUS_UNWIND NTStatus = 0xC0000027 + STATUS_BAD_STACK NTStatus = 0xC0000028 + STATUS_INVALID_UNWIND_TARGET NTStatus = 0xC0000029 + STATUS_NOT_LOCKED NTStatus = 0xC000002A + STATUS_PARITY_ERROR NTStatus = 0xC000002B + STATUS_UNABLE_TO_DECOMMIT_VM NTStatus = 0xC000002C + STATUS_NOT_COMMITTED NTStatus = 0xC000002D + STATUS_INVALID_PORT_ATTRIBUTES NTStatus = 0xC000002E + STATUS_PORT_MESSAGE_TOO_LONG NTStatus = 0xC000002F + STATUS_INVALID_PARAMETER_MIX NTStatus = 0xC0000030 + STATUS_INVALID_QUOTA_LOWER NTStatus = 0xC0000031 + STATUS_DISK_CORRUPT_ERROR NTStatus = 0xC0000032 + STATUS_OBJECT_NAME_INVALID NTStatus = 0xC0000033 + STATUS_OBJECT_NAME_NOT_FOUND NTStatus = 0xC0000034 + STATUS_OBJECT_NAME_COLLISION NTStatus = 0xC0000035 + STATUS_PORT_DO_NOT_DISTURB NTStatus = 0xC0000036 + STATUS_PORT_DISCONNECTED NTStatus = 0xC0000037 + STATUS_DEVICE_ALREADY_ATTACHED NTStatus = 0xC0000038 + STATUS_OBJECT_PATH_INVALID NTStatus = 0xC0000039 + STATUS_OBJECT_PATH_NOT_FOUND NTStatus = 0xC000003A + STATUS_OBJECT_PATH_SYNTAX_BAD NTStatus = 0xC000003B + STATUS_DATA_OVERRUN NTStatus = 0xC000003C + STATUS_DATA_LATE_ERROR NTStatus = 0xC000003D + STATUS_DATA_ERROR NTStatus = 0xC000003E + STATUS_CRC_ERROR NTStatus = 0xC000003F + STATUS_SECTION_TOO_BIG NTStatus = 0xC0000040 + STATUS_PORT_CONNECTION_REFUSED NTStatus = 0xC0000041 + STATUS_INVALID_PORT_HANDLE NTStatus = 0xC0000042 + STATUS_SHARING_VIOLATION NTStatus = 0xC0000043 + STATUS_QUOTA_EXCEEDED NTStatus = 0xC0000044 + STATUS_INVALID_PAGE_PROTECTION NTStatus = 0xC0000045 + STATUS_MUTANT_NOT_OWNED NTStatus = 0xC0000046 + STATUS_SEMAPHORE_LIMIT_EXCEEDED NTStatus = 0xC0000047 + STATUS_PORT_ALREADY_SET NTStatus = 0xC0000048 + STATUS_SECTION_NOT_IMAGE NTStatus = 0xC0000049 + STATUS_SUSPEND_COUNT_EXCEEDED NTStatus = 0xC000004A + STATUS_THREAD_IS_TERMINATING NTStatus = 0xC000004B + STATUS_BAD_WORKING_SET_LIMIT NTStatus = 0xC000004C + STATUS_INCOMPATIBLE_FILE_MAP NTStatus = 0xC000004D + STATUS_SECTION_PROTECTION NTStatus = 0xC000004E + STATUS_EAS_NOT_SUPPORTED NTStatus = 0xC000004F + STATUS_EA_TOO_LARGE NTStatus = 0xC0000050 + STATUS_NONEXISTENT_EA_ENTRY NTStatus = 0xC0000051 + STATUS_NO_EAS_ON_FILE NTStatus = 0xC0000052 + STATUS_EA_CORRUPT_ERROR NTStatus = 0xC0000053 + STATUS_FILE_LOCK_CONFLICT NTStatus = 0xC0000054 + STATUS_LOCK_NOT_GRANTED NTStatus = 0xC0000055 + STATUS_DELETE_PENDING NTStatus = 0xC0000056 + STATUS_CTL_FILE_NOT_SUPPORTED NTStatus = 0xC0000057 + STATUS_UNKNOWN_REVISION NTStatus = 0xC0000058 + STATUS_REVISION_MISMATCH NTStatus = 0xC0000059 + STATUS_INVALID_OWNER NTStatus = 0xC000005A + STATUS_INVALID_PRIMARY_GROUP NTStatus = 0xC000005B + STATUS_NO_IMPERSONATION_TOKEN NTStatus = 0xC000005C + STATUS_CANT_DISABLE_MANDATORY NTStatus = 0xC000005D + STATUS_NO_LOGON_SERVERS NTStatus = 0xC000005E + STATUS_NO_SUCH_LOGON_SESSION NTStatus = 0xC000005F + STATUS_NO_SUCH_PRIVILEGE NTStatus = 0xC0000060 + STATUS_PRIVILEGE_NOT_HELD NTStatus = 0xC0000061 + STATUS_INVALID_ACCOUNT_NAME NTStatus = 0xC0000062 + STATUS_USER_EXISTS NTStatus = 0xC0000063 + STATUS_NO_SUCH_USER NTStatus = 0xC0000064 + STATUS_GROUP_EXISTS NTStatus = 0xC0000065 + STATUS_NO_SUCH_GROUP NTStatus = 0xC0000066 + STATUS_MEMBER_IN_GROUP NTStatus = 0xC0000067 + STATUS_MEMBER_NOT_IN_GROUP NTStatus = 0xC0000068 + STATUS_LAST_ADMIN NTStatus = 0xC0000069 + STATUS_WRONG_PASSWORD NTStatus = 0xC000006A + STATUS_ILL_FORMED_PASSWORD NTStatus = 0xC000006B + STATUS_PASSWORD_RESTRICTION NTStatus = 0xC000006C + STATUS_LOGON_FAILURE NTStatus = 0xC000006D + STATUS_ACCOUNT_RESTRICTION NTStatus = 0xC000006E + STATUS_INVALID_LOGON_HOURS NTStatus = 0xC000006F + STATUS_INVALID_WORKSTATION NTStatus = 0xC0000070 + STATUS_PASSWORD_EXPIRED NTStatus = 0xC0000071 + STATUS_ACCOUNT_DISABLED NTStatus = 0xC0000072 + STATUS_NONE_MAPPED NTStatus = 0xC0000073 + STATUS_TOO_MANY_LUIDS_REQUESTED NTStatus = 0xC0000074 + STATUS_LUIDS_EXHAUSTED NTStatus = 0xC0000075 + STATUS_INVALID_SUB_AUTHORITY NTStatus = 0xC0000076 + STATUS_INVALID_ACL NTStatus = 0xC0000077 + STATUS_INVALID_SID NTStatus = 0xC0000078 + STATUS_INVALID_SECURITY_DESCR NTStatus = 0xC0000079 + STATUS_PROCEDURE_NOT_FOUND NTStatus = 0xC000007A + STATUS_INVALID_IMAGE_FORMAT NTStatus = 0xC000007B + STATUS_NO_TOKEN NTStatus = 0xC000007C + STATUS_BAD_INHERITANCE_ACL NTStatus = 0xC000007D + STATUS_RANGE_NOT_LOCKED NTStatus = 0xC000007E + STATUS_DISK_FULL NTStatus = 0xC000007F + STATUS_SERVER_DISABLED NTStatus = 0xC0000080 + STATUS_SERVER_NOT_DISABLED NTStatus = 0xC0000081 + STATUS_TOO_MANY_GUIDS_REQUESTED NTStatus = 0xC0000082 + STATUS_GUIDS_EXHAUSTED NTStatus = 0xC0000083 + STATUS_INVALID_ID_AUTHORITY NTStatus = 0xC0000084 + STATUS_AGENTS_EXHAUSTED NTStatus = 0xC0000085 + STATUS_INVALID_VOLUME_LABEL NTStatus = 0xC0000086 + STATUS_SECTION_NOT_EXTENDED NTStatus = 0xC0000087 + STATUS_NOT_MAPPED_DATA NTStatus = 0xC0000088 + STATUS_RESOURCE_DATA_NOT_FOUND NTStatus = 0xC0000089 + STATUS_RESOURCE_TYPE_NOT_FOUND NTStatus = 0xC000008A + STATUS_RESOURCE_NAME_NOT_FOUND NTStatus = 0xC000008B + STATUS_ARRAY_BOUNDS_EXCEEDED NTStatus = 0xC000008C + STATUS_FLOAT_DENORMAL_OPERAND NTStatus = 0xC000008D + STATUS_FLOAT_DIVIDE_BY_ZERO NTStatus = 0xC000008E + STATUS_FLOAT_INEXACT_RESULT NTStatus = 0xC000008F + STATUS_FLOAT_INVALID_OPERATION NTStatus = 0xC0000090 + STATUS_FLOAT_OVERFLOW NTStatus = 0xC0000091 + STATUS_FLOAT_STACK_CHECK NTStatus = 0xC0000092 + STATUS_FLOAT_UNDERFLOW NTStatus = 0xC0000093 + STATUS_INTEGER_DIVIDE_BY_ZERO NTStatus = 0xC0000094 + STATUS_INTEGER_OVERFLOW NTStatus = 0xC0000095 + STATUS_PRIVILEGED_INSTRUCTION NTStatus = 0xC0000096 + STATUS_TOO_MANY_PAGING_FILES NTStatus = 0xC0000097 + STATUS_FILE_INVALID NTStatus = 0xC0000098 + STATUS_ALLOTTED_SPACE_EXCEEDED NTStatus = 0xC0000099 + STATUS_INSUFFICIENT_RESOURCES NTStatus = 0xC000009A + STATUS_DFS_EXIT_PATH_FOUND NTStatus = 0xC000009B + STATUS_DEVICE_DATA_ERROR NTStatus = 0xC000009C + STATUS_DEVICE_NOT_CONNECTED NTStatus = 0xC000009D + STATUS_DEVICE_POWER_FAILURE NTStatus = 0xC000009E + STATUS_FREE_VM_NOT_AT_BASE NTStatus = 0xC000009F + STATUS_MEMORY_NOT_ALLOCATED NTStatus = 0xC00000A0 + STATUS_WORKING_SET_QUOTA NTStatus = 0xC00000A1 + STATUS_MEDIA_WRITE_PROTECTED NTStatus = 0xC00000A2 + STATUS_DEVICE_NOT_READY NTStatus = 0xC00000A3 + STATUS_INVALID_GROUP_ATTRIBUTES NTStatus = 0xC00000A4 + STATUS_BAD_IMPERSONATION_LEVEL NTStatus = 0xC00000A5 + STATUS_CANT_OPEN_ANONYMOUS NTStatus = 0xC00000A6 + STATUS_BAD_VALIDATION_CLASS NTStatus = 0xC00000A7 + STATUS_BAD_TOKEN_TYPE NTStatus = 0xC00000A8 + STATUS_BAD_MASTER_BOOT_RECORD NTStatus = 0xC00000A9 + STATUS_INSTRUCTION_MISALIGNMENT NTStatus = 0xC00000AA + STATUS_INSTANCE_NOT_AVAILABLE NTStatus = 0xC00000AB + STATUS_PIPE_NOT_AVAILABLE NTStatus = 0xC00000AC + STATUS_INVALID_PIPE_STATE NTStatus = 0xC00000AD + STATUS_PIPE_BUSY NTStatus = 0xC00000AE + STATUS_ILLEGAL_FUNCTION NTStatus = 0xC00000AF + STATUS_PIPE_DISCONNECTED NTStatus = 0xC00000B0 + STATUS_PIPE_CLOSING NTStatus = 0xC00000B1 + STATUS_PIPE_CONNECTED NTStatus = 0xC00000B2 + STATUS_PIPE_LISTENING NTStatus = 0xC00000B3 + STATUS_INVALID_READ_MODE NTStatus = 0xC00000B4 + STATUS_IO_TIMEOUT NTStatus = 0xC00000B5 + STATUS_FILE_FORCED_CLOSED NTStatus = 0xC00000B6 + STATUS_PROFILING_NOT_STARTED NTStatus = 0xC00000B7 + STATUS_PROFILING_NOT_STOPPED NTStatus = 0xC00000B8 + STATUS_COULD_NOT_INTERPRET NTStatus = 0xC00000B9 + STATUS_FILE_IS_A_DIRECTORY NTStatus = 0xC00000BA + STATUS_NOT_SUPPORTED NTStatus = 0xC00000BB + STATUS_REMOTE_NOT_LISTENING NTStatus = 0xC00000BC + STATUS_DUPLICATE_NAME NTStatus = 0xC00000BD + STATUS_BAD_NETWORK_PATH NTStatus = 0xC00000BE + STATUS_NETWORK_BUSY NTStatus = 0xC00000BF + STATUS_DEVICE_DOES_NOT_EXIST NTStatus = 0xC00000C0 + STATUS_TOO_MANY_COMMANDS NTStatus = 0xC00000C1 + STATUS_ADAPTER_HARDWARE_ERROR NTStatus = 0xC00000C2 + STATUS_INVALID_NETWORK_RESPONSE NTStatus = 0xC00000C3 + STATUS_UNEXPECTED_NETWORK_ERROR NTStatus = 0xC00000C4 + STATUS_BAD_REMOTE_ADAPTER NTStatus = 0xC00000C5 + STATUS_PRINT_QUEUE_FULL NTStatus = 0xC00000C6 + STATUS_NO_SPOOL_SPACE NTStatus = 0xC00000C7 + STATUS_PRINT_CANCELLED NTStatus = 0xC00000C8 + STATUS_NETWORK_NAME_DELETED NTStatus = 0xC00000C9 + STATUS_NETWORK_ACCESS_DENIED NTStatus = 0xC00000CA + STATUS_BAD_DEVICE_TYPE NTStatus = 0xC00000CB + STATUS_BAD_NETWORK_NAME NTStatus = 0xC00000CC + STATUS_TOO_MANY_NAMES NTStatus = 0xC00000CD + STATUS_TOO_MANY_SESSIONS NTStatus = 0xC00000CE + STATUS_SHARING_PAUSED NTStatus = 0xC00000CF + STATUS_REQUEST_NOT_ACCEPTED NTStatus = 0xC00000D0 + STATUS_REDIRECTOR_PAUSED NTStatus = 0xC00000D1 + STATUS_NET_WRITE_FAULT NTStatus = 0xC00000D2 + STATUS_PROFILING_AT_LIMIT NTStatus = 0xC00000D3 + STATUS_NOT_SAME_DEVICE NTStatus = 0xC00000D4 + STATUS_FILE_RENAMED NTStatus = 0xC00000D5 + STATUS_VIRTUAL_CIRCUIT_CLOSED NTStatus = 0xC00000D6 + STATUS_NO_SECURITY_ON_OBJECT NTStatus = 0xC00000D7 + STATUS_CANT_WAIT NTStatus = 0xC00000D8 + STATUS_PIPE_EMPTY NTStatus = 0xC00000D9 + STATUS_CANT_ACCESS_DOMAIN_INFO NTStatus = 0xC00000DA + STATUS_CANT_TERMINATE_SELF NTStatus = 0xC00000DB + STATUS_INVALID_SERVER_STATE NTStatus = 0xC00000DC + STATUS_INVALID_DOMAIN_STATE NTStatus = 0xC00000DD + STATUS_INVALID_DOMAIN_ROLE NTStatus = 0xC00000DE + STATUS_NO_SUCH_DOMAIN NTStatus = 0xC00000DF + STATUS_DOMAIN_EXISTS NTStatus = 0xC00000E0 + STATUS_DOMAIN_LIMIT_EXCEEDED NTStatus = 0xC00000E1 + STATUS_OPLOCK_NOT_GRANTED NTStatus = 0xC00000E2 + STATUS_INVALID_OPLOCK_PROTOCOL NTStatus = 0xC00000E3 + STATUS_INTERNAL_DB_CORRUPTION NTStatus = 0xC00000E4 + STATUS_INTERNAL_ERROR NTStatus = 0xC00000E5 + STATUS_GENERIC_NOT_MAPPED NTStatus = 0xC00000E6 + STATUS_BAD_DESCRIPTOR_FORMAT NTStatus = 0xC00000E7 + STATUS_INVALID_USER_BUFFER NTStatus = 0xC00000E8 + STATUS_UNEXPECTED_IO_ERROR NTStatus = 0xC00000E9 + STATUS_UNEXPECTED_MM_CREATE_ERR NTStatus = 0xC00000EA + STATUS_UNEXPECTED_MM_MAP_ERROR NTStatus = 0xC00000EB + STATUS_UNEXPECTED_MM_EXTEND_ERR NTStatus = 0xC00000EC + STATUS_NOT_LOGON_PROCESS NTStatus = 0xC00000ED + STATUS_LOGON_SESSION_EXISTS NTStatus = 0xC00000EE + STATUS_INVALID_PARAMETER_1 NTStatus = 0xC00000EF + STATUS_INVALID_PARAMETER_2 NTStatus = 0xC00000F0 + STATUS_INVALID_PARAMETER_3 NTStatus = 0xC00000F1 + STATUS_INVALID_PARAMETER_4 NTStatus = 0xC00000F2 + STATUS_INVALID_PARAMETER_5 NTStatus = 0xC00000F3 + STATUS_INVALID_PARAMETER_6 NTStatus = 0xC00000F4 + STATUS_INVALID_PARAMETER_7 NTStatus = 0xC00000F5 + STATUS_INVALID_PARAMETER_8 NTStatus = 0xC00000F6 + STATUS_INVALID_PARAMETER_9 NTStatus = 0xC00000F7 + STATUS_INVALID_PARAMETER_10 NTStatus = 0xC00000F8 + STATUS_INVALID_PARAMETER_11 NTStatus = 0xC00000F9 + STATUS_INVALID_PARAMETER_12 NTStatus = 0xC00000FA + STATUS_REDIRECTOR_NOT_STARTED NTStatus = 0xC00000FB + STATUS_REDIRECTOR_STARTED NTStatus = 0xC00000FC + STATUS_STACK_OVERFLOW NTStatus = 0xC00000FD + STATUS_NO_SUCH_PACKAGE NTStatus = 0xC00000FE + STATUS_BAD_FUNCTION_TABLE NTStatus = 0xC00000FF + STATUS_VARIABLE_NOT_FOUND NTStatus = 0xC0000100 + STATUS_DIRECTORY_NOT_EMPTY NTStatus = 0xC0000101 + STATUS_FILE_CORRUPT_ERROR NTStatus = 0xC0000102 + STATUS_NOT_A_DIRECTORY NTStatus = 0xC0000103 + STATUS_BAD_LOGON_SESSION_STATE NTStatus = 0xC0000104 + STATUS_LOGON_SESSION_COLLISION NTStatus = 0xC0000105 + STATUS_NAME_TOO_LONG NTStatus = 0xC0000106 + STATUS_FILES_OPEN NTStatus = 0xC0000107 + STATUS_CONNECTION_IN_USE NTStatus = 0xC0000108 + STATUS_MESSAGE_NOT_FOUND NTStatus = 0xC0000109 + STATUS_PROCESS_IS_TERMINATING NTStatus = 0xC000010A + STATUS_INVALID_LOGON_TYPE NTStatus = 0xC000010B + STATUS_NO_GUID_TRANSLATION NTStatus = 0xC000010C + STATUS_CANNOT_IMPERSONATE NTStatus = 0xC000010D + STATUS_IMAGE_ALREADY_LOADED NTStatus = 0xC000010E + STATUS_ABIOS_NOT_PRESENT NTStatus = 0xC000010F + STATUS_ABIOS_LID_NOT_EXIST NTStatus = 0xC0000110 + STATUS_ABIOS_LID_ALREADY_OWNED NTStatus = 0xC0000111 + STATUS_ABIOS_NOT_LID_OWNER NTStatus = 0xC0000112 + STATUS_ABIOS_INVALID_COMMAND NTStatus = 0xC0000113 + STATUS_ABIOS_INVALID_LID NTStatus = 0xC0000114 + STATUS_ABIOS_SELECTOR_NOT_AVAILABLE NTStatus = 0xC0000115 + STATUS_ABIOS_INVALID_SELECTOR NTStatus = 0xC0000116 + STATUS_NO_LDT NTStatus = 0xC0000117 + STATUS_INVALID_LDT_SIZE NTStatus = 0xC0000118 + STATUS_INVALID_LDT_OFFSET NTStatus = 0xC0000119 + STATUS_INVALID_LDT_DESCRIPTOR NTStatus = 0xC000011A + STATUS_INVALID_IMAGE_NE_FORMAT NTStatus = 0xC000011B + STATUS_RXACT_INVALID_STATE NTStatus = 0xC000011C + STATUS_RXACT_COMMIT_FAILURE NTStatus = 0xC000011D + STATUS_MAPPED_FILE_SIZE_ZERO NTStatus = 0xC000011E + STATUS_TOO_MANY_OPENED_FILES NTStatus = 0xC000011F + STATUS_CANCELLED NTStatus = 0xC0000120 + STATUS_CANNOT_DELETE NTStatus = 0xC0000121 + STATUS_INVALID_COMPUTER_NAME NTStatus = 0xC0000122 + STATUS_FILE_DELETED NTStatus = 0xC0000123 + STATUS_SPECIAL_ACCOUNT NTStatus = 0xC0000124 + STATUS_SPECIAL_GROUP NTStatus = 0xC0000125 + STATUS_SPECIAL_USER NTStatus = 0xC0000126 + STATUS_MEMBERS_PRIMARY_GROUP NTStatus = 0xC0000127 + STATUS_FILE_CLOSED NTStatus = 0xC0000128 + STATUS_TOO_MANY_THREADS NTStatus = 0xC0000129 + STATUS_THREAD_NOT_IN_PROCESS NTStatus = 0xC000012A + STATUS_TOKEN_ALREADY_IN_USE NTStatus = 0xC000012B + STATUS_PAGEFILE_QUOTA_EXCEEDED NTStatus = 0xC000012C + STATUS_COMMITMENT_LIMIT NTStatus = 0xC000012D + STATUS_INVALID_IMAGE_LE_FORMAT NTStatus = 0xC000012E + STATUS_INVALID_IMAGE_NOT_MZ NTStatus = 0xC000012F + STATUS_INVALID_IMAGE_PROTECT NTStatus = 0xC0000130 + STATUS_INVALID_IMAGE_WIN_16 NTStatus = 0xC0000131 + STATUS_LOGON_SERVER_CONFLICT NTStatus = 0xC0000132 + STATUS_TIME_DIFFERENCE_AT_DC NTStatus = 0xC0000133 + STATUS_SYNCHRONIZATION_REQUIRED NTStatus = 0xC0000134 + STATUS_DLL_NOT_FOUND NTStatus = 0xC0000135 + STATUS_OPEN_FAILED NTStatus = 0xC0000136 + STATUS_IO_PRIVILEGE_FAILED NTStatus = 0xC0000137 + STATUS_ORDINAL_NOT_FOUND NTStatus = 0xC0000138 + STATUS_ENTRYPOINT_NOT_FOUND NTStatus = 0xC0000139 + STATUS_CONTROL_C_EXIT NTStatus = 0xC000013A + STATUS_LOCAL_DISCONNECT NTStatus = 0xC000013B + STATUS_REMOTE_DISCONNECT NTStatus = 0xC000013C + STATUS_REMOTE_RESOURCES NTStatus = 0xC000013D + STATUS_LINK_FAILED NTStatus = 0xC000013E + STATUS_LINK_TIMEOUT NTStatus = 0xC000013F + STATUS_INVALID_CONNECTION NTStatus = 0xC0000140 + STATUS_INVALID_ADDRESS NTStatus = 0xC0000141 + STATUS_DLL_INIT_FAILED NTStatus = 0xC0000142 + STATUS_MISSING_SYSTEMFILE NTStatus = 0xC0000143 + STATUS_UNHANDLED_EXCEPTION NTStatus = 0xC0000144 + STATUS_APP_INIT_FAILURE NTStatus = 0xC0000145 + STATUS_PAGEFILE_CREATE_FAILED NTStatus = 0xC0000146 + STATUS_NO_PAGEFILE NTStatus = 0xC0000147 + STATUS_INVALID_LEVEL NTStatus = 0xC0000148 + STATUS_WRONG_PASSWORD_CORE NTStatus = 0xC0000149 + STATUS_ILLEGAL_FLOAT_CONTEXT NTStatus = 0xC000014A + STATUS_PIPE_BROKEN NTStatus = 0xC000014B + STATUS_REGISTRY_CORRUPT NTStatus = 0xC000014C + STATUS_REGISTRY_IO_FAILED NTStatus = 0xC000014D + STATUS_NO_EVENT_PAIR NTStatus = 0xC000014E + STATUS_UNRECOGNIZED_VOLUME NTStatus = 0xC000014F + STATUS_SERIAL_NO_DEVICE_INITED NTStatus = 0xC0000150 + STATUS_NO_SUCH_ALIAS NTStatus = 0xC0000151 + STATUS_MEMBER_NOT_IN_ALIAS NTStatus = 0xC0000152 + STATUS_MEMBER_IN_ALIAS NTStatus = 0xC0000153 + STATUS_ALIAS_EXISTS NTStatus = 0xC0000154 + STATUS_LOGON_NOT_GRANTED NTStatus = 0xC0000155 + STATUS_TOO_MANY_SECRETS NTStatus = 0xC0000156 + STATUS_SECRET_TOO_LONG NTStatus = 0xC0000157 + STATUS_INTERNAL_DB_ERROR NTStatus = 0xC0000158 + STATUS_FULLSCREEN_MODE NTStatus = 0xC0000159 + STATUS_TOO_MANY_CONTEXT_IDS NTStatus = 0xC000015A + STATUS_LOGON_TYPE_NOT_GRANTED NTStatus = 0xC000015B + STATUS_NOT_REGISTRY_FILE NTStatus = 0xC000015C + STATUS_NT_CROSS_ENCRYPTION_REQUIRED NTStatus = 0xC000015D + STATUS_DOMAIN_CTRLR_CONFIG_ERROR NTStatus = 0xC000015E + STATUS_FT_MISSING_MEMBER NTStatus = 0xC000015F + STATUS_ILL_FORMED_SERVICE_ENTRY NTStatus = 0xC0000160 + STATUS_ILLEGAL_CHARACTER NTStatus = 0xC0000161 + STATUS_UNMAPPABLE_CHARACTER NTStatus = 0xC0000162 + STATUS_UNDEFINED_CHARACTER NTStatus = 0xC0000163 + STATUS_FLOPPY_VOLUME NTStatus = 0xC0000164 + STATUS_FLOPPY_ID_MARK_NOT_FOUND NTStatus = 0xC0000165 + STATUS_FLOPPY_WRONG_CYLINDER NTStatus = 0xC0000166 + STATUS_FLOPPY_UNKNOWN_ERROR NTStatus = 0xC0000167 + STATUS_FLOPPY_BAD_REGISTERS NTStatus = 0xC0000168 + STATUS_DISK_RECALIBRATE_FAILED NTStatus = 0xC0000169 + STATUS_DISK_OPERATION_FAILED NTStatus = 0xC000016A + STATUS_DISK_RESET_FAILED NTStatus = 0xC000016B + STATUS_SHARED_IRQ_BUSY NTStatus = 0xC000016C + STATUS_FT_ORPHANING NTStatus = 0xC000016D + STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT NTStatus = 0xC000016E + STATUS_PARTITION_FAILURE NTStatus = 0xC0000172 + STATUS_INVALID_BLOCK_LENGTH NTStatus = 0xC0000173 + STATUS_DEVICE_NOT_PARTITIONED NTStatus = 0xC0000174 + STATUS_UNABLE_TO_LOCK_MEDIA NTStatus = 0xC0000175 + STATUS_UNABLE_TO_UNLOAD_MEDIA NTStatus = 0xC0000176 + STATUS_EOM_OVERFLOW NTStatus = 0xC0000177 + STATUS_NO_MEDIA NTStatus = 0xC0000178 + STATUS_NO_SUCH_MEMBER NTStatus = 0xC000017A + STATUS_INVALID_MEMBER NTStatus = 0xC000017B + STATUS_KEY_DELETED NTStatus = 0xC000017C + STATUS_NO_LOG_SPACE NTStatus = 0xC000017D + STATUS_TOO_MANY_SIDS NTStatus = 0xC000017E + STATUS_LM_CROSS_ENCRYPTION_REQUIRED NTStatus = 0xC000017F + STATUS_KEY_HAS_CHILDREN NTStatus = 0xC0000180 + STATUS_CHILD_MUST_BE_VOLATILE NTStatus = 0xC0000181 + STATUS_DEVICE_CONFIGURATION_ERROR NTStatus = 0xC0000182 + STATUS_DRIVER_INTERNAL_ERROR NTStatus = 0xC0000183 + STATUS_INVALID_DEVICE_STATE NTStatus = 0xC0000184 + STATUS_IO_DEVICE_ERROR NTStatus = 0xC0000185 + STATUS_DEVICE_PROTOCOL_ERROR NTStatus = 0xC0000186 + STATUS_BACKUP_CONTROLLER NTStatus = 0xC0000187 + STATUS_LOG_FILE_FULL NTStatus = 0xC0000188 + STATUS_TOO_LATE NTStatus = 0xC0000189 + STATUS_NO_TRUST_LSA_SECRET NTStatus = 0xC000018A + STATUS_NO_TRUST_SAM_ACCOUNT NTStatus = 0xC000018B + STATUS_TRUSTED_DOMAIN_FAILURE NTStatus = 0xC000018C + STATUS_TRUSTED_RELATIONSHIP_FAILURE NTStatus = 0xC000018D + STATUS_EVENTLOG_FILE_CORRUPT NTStatus = 0xC000018E + STATUS_EVENTLOG_CANT_START NTStatus = 0xC000018F + STATUS_TRUST_FAILURE NTStatus = 0xC0000190 + STATUS_MUTANT_LIMIT_EXCEEDED NTStatus = 0xC0000191 + STATUS_NETLOGON_NOT_STARTED NTStatus = 0xC0000192 + STATUS_ACCOUNT_EXPIRED NTStatus = 0xC0000193 + STATUS_POSSIBLE_DEADLOCK NTStatus = 0xC0000194 + STATUS_NETWORK_CREDENTIAL_CONFLICT NTStatus = 0xC0000195 + STATUS_REMOTE_SESSION_LIMIT NTStatus = 0xC0000196 + STATUS_EVENTLOG_FILE_CHANGED NTStatus = 0xC0000197 + STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT NTStatus = 0xC0000198 + STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT NTStatus = 0xC0000199 + STATUS_NOLOGON_SERVER_TRUST_ACCOUNT NTStatus = 0xC000019A + STATUS_DOMAIN_TRUST_INCONSISTENT NTStatus = 0xC000019B + STATUS_FS_DRIVER_REQUIRED NTStatus = 0xC000019C + STATUS_IMAGE_ALREADY_LOADED_AS_DLL NTStatus = 0xC000019D + STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING NTStatus = 0xC000019E + STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME NTStatus = 0xC000019F + STATUS_SECURITY_STREAM_IS_INCONSISTENT NTStatus = 0xC00001A0 + STATUS_INVALID_LOCK_RANGE NTStatus = 0xC00001A1 + STATUS_INVALID_ACE_CONDITION NTStatus = 0xC00001A2 + STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT NTStatus = 0xC00001A3 + STATUS_NOTIFICATION_GUID_ALREADY_DEFINED NTStatus = 0xC00001A4 + STATUS_INVALID_EXCEPTION_HANDLER NTStatus = 0xC00001A5 + STATUS_DUPLICATE_PRIVILEGES NTStatus = 0xC00001A6 + STATUS_NOT_ALLOWED_ON_SYSTEM_FILE NTStatus = 0xC00001A7 + STATUS_REPAIR_NEEDED NTStatus = 0xC00001A8 + STATUS_QUOTA_NOT_ENABLED NTStatus = 0xC00001A9 + STATUS_NO_APPLICATION_PACKAGE NTStatus = 0xC00001AA + STATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS NTStatus = 0xC00001AB + STATUS_NOT_SAME_OBJECT NTStatus = 0xC00001AC + STATUS_FATAL_MEMORY_EXHAUSTION NTStatus = 0xC00001AD + STATUS_ERROR_PROCESS_NOT_IN_JOB NTStatus = 0xC00001AE + STATUS_CPU_SET_INVALID NTStatus = 0xC00001AF + STATUS_IO_DEVICE_INVALID_DATA NTStatus = 0xC00001B0 + STATUS_IO_UNALIGNED_WRITE NTStatus = 0xC00001B1 + STATUS_NETWORK_OPEN_RESTRICTION NTStatus = 0xC0000201 + STATUS_NO_USER_SESSION_KEY NTStatus = 0xC0000202 + STATUS_USER_SESSION_DELETED NTStatus = 0xC0000203 + STATUS_RESOURCE_LANG_NOT_FOUND NTStatus = 0xC0000204 + STATUS_INSUFF_SERVER_RESOURCES NTStatus = 0xC0000205 + STATUS_INVALID_BUFFER_SIZE NTStatus = 0xC0000206 + STATUS_INVALID_ADDRESS_COMPONENT NTStatus = 0xC0000207 + STATUS_INVALID_ADDRESS_WILDCARD NTStatus = 0xC0000208 + STATUS_TOO_MANY_ADDRESSES NTStatus = 0xC0000209 + STATUS_ADDRESS_ALREADY_EXISTS NTStatus = 0xC000020A + STATUS_ADDRESS_CLOSED NTStatus = 0xC000020B + STATUS_CONNECTION_DISCONNECTED NTStatus = 0xC000020C + STATUS_CONNECTION_RESET NTStatus = 0xC000020D + STATUS_TOO_MANY_NODES NTStatus = 0xC000020E + STATUS_TRANSACTION_ABORTED NTStatus = 0xC000020F + STATUS_TRANSACTION_TIMED_OUT NTStatus = 0xC0000210 + STATUS_TRANSACTION_NO_RELEASE NTStatus = 0xC0000211 + STATUS_TRANSACTION_NO_MATCH NTStatus = 0xC0000212 + STATUS_TRANSACTION_RESPONDED NTStatus = 0xC0000213 + STATUS_TRANSACTION_INVALID_ID NTStatus = 0xC0000214 + STATUS_TRANSACTION_INVALID_TYPE NTStatus = 0xC0000215 + STATUS_NOT_SERVER_SESSION NTStatus = 0xC0000216 + STATUS_NOT_CLIENT_SESSION NTStatus = 0xC0000217 + STATUS_CANNOT_LOAD_REGISTRY_FILE NTStatus = 0xC0000218 + STATUS_DEBUG_ATTACH_FAILED NTStatus = 0xC0000219 + STATUS_SYSTEM_PROCESS_TERMINATED NTStatus = 0xC000021A + STATUS_DATA_NOT_ACCEPTED NTStatus = 0xC000021B + STATUS_NO_BROWSER_SERVERS_FOUND NTStatus = 0xC000021C + STATUS_VDM_HARD_ERROR NTStatus = 0xC000021D + STATUS_DRIVER_CANCEL_TIMEOUT NTStatus = 0xC000021E + STATUS_REPLY_MESSAGE_MISMATCH NTStatus = 0xC000021F + STATUS_MAPPED_ALIGNMENT NTStatus = 0xC0000220 + STATUS_IMAGE_CHECKSUM_MISMATCH NTStatus = 0xC0000221 + STATUS_LOST_WRITEBEHIND_DATA NTStatus = 0xC0000222 + STATUS_CLIENT_SERVER_PARAMETERS_INVALID NTStatus = 0xC0000223 + STATUS_PASSWORD_MUST_CHANGE NTStatus = 0xC0000224 + STATUS_NOT_FOUND NTStatus = 0xC0000225 + STATUS_NOT_TINY_STREAM NTStatus = 0xC0000226 + STATUS_RECOVERY_FAILURE NTStatus = 0xC0000227 + STATUS_STACK_OVERFLOW_READ NTStatus = 0xC0000228 + STATUS_FAIL_CHECK NTStatus = 0xC0000229 + STATUS_DUPLICATE_OBJECTID NTStatus = 0xC000022A + STATUS_OBJECTID_EXISTS NTStatus = 0xC000022B + STATUS_CONVERT_TO_LARGE NTStatus = 0xC000022C + STATUS_RETRY NTStatus = 0xC000022D + STATUS_FOUND_OUT_OF_SCOPE NTStatus = 0xC000022E + STATUS_ALLOCATE_BUCKET NTStatus = 0xC000022F + STATUS_PROPSET_NOT_FOUND NTStatus = 0xC0000230 + STATUS_MARSHALL_OVERFLOW NTStatus = 0xC0000231 + STATUS_INVALID_VARIANT NTStatus = 0xC0000232 + STATUS_DOMAIN_CONTROLLER_NOT_FOUND NTStatus = 0xC0000233 + STATUS_ACCOUNT_LOCKED_OUT NTStatus = 0xC0000234 + STATUS_HANDLE_NOT_CLOSABLE NTStatus = 0xC0000235 + STATUS_CONNECTION_REFUSED NTStatus = 0xC0000236 + STATUS_GRACEFUL_DISCONNECT NTStatus = 0xC0000237 + STATUS_ADDRESS_ALREADY_ASSOCIATED NTStatus = 0xC0000238 + STATUS_ADDRESS_NOT_ASSOCIATED NTStatus = 0xC0000239 + STATUS_CONNECTION_INVALID NTStatus = 0xC000023A + STATUS_CONNECTION_ACTIVE NTStatus = 0xC000023B + STATUS_NETWORK_UNREACHABLE NTStatus = 0xC000023C + STATUS_HOST_UNREACHABLE NTStatus = 0xC000023D + STATUS_PROTOCOL_UNREACHABLE NTStatus = 0xC000023E + STATUS_PORT_UNREACHABLE NTStatus = 0xC000023F + STATUS_REQUEST_ABORTED NTStatus = 0xC0000240 + STATUS_CONNECTION_ABORTED NTStatus = 0xC0000241 + STATUS_BAD_COMPRESSION_BUFFER NTStatus = 0xC0000242 + STATUS_USER_MAPPED_FILE NTStatus = 0xC0000243 + STATUS_AUDIT_FAILED NTStatus = 0xC0000244 + STATUS_TIMER_RESOLUTION_NOT_SET NTStatus = 0xC0000245 + STATUS_CONNECTION_COUNT_LIMIT NTStatus = 0xC0000246 + STATUS_LOGIN_TIME_RESTRICTION NTStatus = 0xC0000247 + STATUS_LOGIN_WKSTA_RESTRICTION NTStatus = 0xC0000248 + STATUS_IMAGE_MP_UP_MISMATCH NTStatus = 0xC0000249 + STATUS_INSUFFICIENT_LOGON_INFO NTStatus = 0xC0000250 + STATUS_BAD_DLL_ENTRYPOINT NTStatus = 0xC0000251 + STATUS_BAD_SERVICE_ENTRYPOINT NTStatus = 0xC0000252 + STATUS_LPC_REPLY_LOST NTStatus = 0xC0000253 + STATUS_IP_ADDRESS_CONFLICT1 NTStatus = 0xC0000254 + STATUS_IP_ADDRESS_CONFLICT2 NTStatus = 0xC0000255 + STATUS_REGISTRY_QUOTA_LIMIT NTStatus = 0xC0000256 + STATUS_PATH_NOT_COVERED NTStatus = 0xC0000257 + STATUS_NO_CALLBACK_ACTIVE NTStatus = 0xC0000258 + STATUS_LICENSE_QUOTA_EXCEEDED NTStatus = 0xC0000259 + STATUS_PWD_TOO_SHORT NTStatus = 0xC000025A + STATUS_PWD_TOO_RECENT NTStatus = 0xC000025B + STATUS_PWD_HISTORY_CONFLICT NTStatus = 0xC000025C + STATUS_PLUGPLAY_NO_DEVICE NTStatus = 0xC000025E + STATUS_UNSUPPORTED_COMPRESSION NTStatus = 0xC000025F + STATUS_INVALID_HW_PROFILE NTStatus = 0xC0000260 + STATUS_INVALID_PLUGPLAY_DEVICE_PATH NTStatus = 0xC0000261 + STATUS_DRIVER_ORDINAL_NOT_FOUND NTStatus = 0xC0000262 + STATUS_DRIVER_ENTRYPOINT_NOT_FOUND NTStatus = 0xC0000263 + STATUS_RESOURCE_NOT_OWNED NTStatus = 0xC0000264 + STATUS_TOO_MANY_LINKS NTStatus = 0xC0000265 + STATUS_QUOTA_LIST_INCONSISTENT NTStatus = 0xC0000266 + STATUS_FILE_IS_OFFLINE NTStatus = 0xC0000267 + STATUS_EVALUATION_EXPIRATION NTStatus = 0xC0000268 + STATUS_ILLEGAL_DLL_RELOCATION NTStatus = 0xC0000269 + STATUS_LICENSE_VIOLATION NTStatus = 0xC000026A + STATUS_DLL_INIT_FAILED_LOGOFF NTStatus = 0xC000026B + STATUS_DRIVER_UNABLE_TO_LOAD NTStatus = 0xC000026C + STATUS_DFS_UNAVAILABLE NTStatus = 0xC000026D + STATUS_VOLUME_DISMOUNTED NTStatus = 0xC000026E + STATUS_WX86_INTERNAL_ERROR NTStatus = 0xC000026F + STATUS_WX86_FLOAT_STACK_CHECK NTStatus = 0xC0000270 + STATUS_VALIDATE_CONTINUE NTStatus = 0xC0000271 + STATUS_NO_MATCH NTStatus = 0xC0000272 + STATUS_NO_MORE_MATCHES NTStatus = 0xC0000273 + STATUS_NOT_A_REPARSE_POINT NTStatus = 0xC0000275 + STATUS_IO_REPARSE_TAG_INVALID NTStatus = 0xC0000276 + STATUS_IO_REPARSE_TAG_MISMATCH NTStatus = 0xC0000277 + STATUS_IO_REPARSE_DATA_INVALID NTStatus = 0xC0000278 + STATUS_IO_REPARSE_TAG_NOT_HANDLED NTStatus = 0xC0000279 + STATUS_PWD_TOO_LONG NTStatus = 0xC000027A + STATUS_STOWED_EXCEPTION NTStatus = 0xC000027B + STATUS_CONTEXT_STOWED_EXCEPTION NTStatus = 0xC000027C + STATUS_REPARSE_POINT_NOT_RESOLVED NTStatus = 0xC0000280 + STATUS_DIRECTORY_IS_A_REPARSE_POINT NTStatus = 0xC0000281 + STATUS_RANGE_LIST_CONFLICT NTStatus = 0xC0000282 + STATUS_SOURCE_ELEMENT_EMPTY NTStatus = 0xC0000283 + STATUS_DESTINATION_ELEMENT_FULL NTStatus = 0xC0000284 + STATUS_ILLEGAL_ELEMENT_ADDRESS NTStatus = 0xC0000285 + STATUS_MAGAZINE_NOT_PRESENT NTStatus = 0xC0000286 + STATUS_REINITIALIZATION_NEEDED NTStatus = 0xC0000287 + STATUS_DEVICE_REQUIRES_CLEANING NTStatus = 0x80000288 + STATUS_DEVICE_DOOR_OPEN NTStatus = 0x80000289 + STATUS_ENCRYPTION_FAILED NTStatus = 0xC000028A + STATUS_DECRYPTION_FAILED NTStatus = 0xC000028B + STATUS_RANGE_NOT_FOUND NTStatus = 0xC000028C + STATUS_NO_RECOVERY_POLICY NTStatus = 0xC000028D + STATUS_NO_EFS NTStatus = 0xC000028E + STATUS_WRONG_EFS NTStatus = 0xC000028F + STATUS_NO_USER_KEYS NTStatus = 0xC0000290 + STATUS_FILE_NOT_ENCRYPTED NTStatus = 0xC0000291 + STATUS_NOT_EXPORT_FORMAT NTStatus = 0xC0000292 + STATUS_FILE_ENCRYPTED NTStatus = 0xC0000293 + STATUS_WAKE_SYSTEM NTStatus = 0x40000294 + STATUS_WMI_GUID_NOT_FOUND NTStatus = 0xC0000295 + STATUS_WMI_INSTANCE_NOT_FOUND NTStatus = 0xC0000296 + STATUS_WMI_ITEMID_NOT_FOUND NTStatus = 0xC0000297 + STATUS_WMI_TRY_AGAIN NTStatus = 0xC0000298 + STATUS_SHARED_POLICY NTStatus = 0xC0000299 + STATUS_POLICY_OBJECT_NOT_FOUND NTStatus = 0xC000029A + STATUS_POLICY_ONLY_IN_DS NTStatus = 0xC000029B + STATUS_VOLUME_NOT_UPGRADED NTStatus = 0xC000029C + STATUS_REMOTE_STORAGE_NOT_ACTIVE NTStatus = 0xC000029D + STATUS_REMOTE_STORAGE_MEDIA_ERROR NTStatus = 0xC000029E + STATUS_NO_TRACKING_SERVICE NTStatus = 0xC000029F + STATUS_SERVER_SID_MISMATCH NTStatus = 0xC00002A0 + STATUS_DS_NO_ATTRIBUTE_OR_VALUE NTStatus = 0xC00002A1 + STATUS_DS_INVALID_ATTRIBUTE_SYNTAX NTStatus = 0xC00002A2 + STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED NTStatus = 0xC00002A3 + STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS NTStatus = 0xC00002A4 + STATUS_DS_BUSY NTStatus = 0xC00002A5 + STATUS_DS_UNAVAILABLE NTStatus = 0xC00002A6 + STATUS_DS_NO_RIDS_ALLOCATED NTStatus = 0xC00002A7 + STATUS_DS_NO_MORE_RIDS NTStatus = 0xC00002A8 + STATUS_DS_INCORRECT_ROLE_OWNER NTStatus = 0xC00002A9 + STATUS_DS_RIDMGR_INIT_ERROR NTStatus = 0xC00002AA + STATUS_DS_OBJ_CLASS_VIOLATION NTStatus = 0xC00002AB + STATUS_DS_CANT_ON_NON_LEAF NTStatus = 0xC00002AC + STATUS_DS_CANT_ON_RDN NTStatus = 0xC00002AD + STATUS_DS_CANT_MOD_OBJ_CLASS NTStatus = 0xC00002AE + STATUS_DS_CROSS_DOM_MOVE_FAILED NTStatus = 0xC00002AF + STATUS_DS_GC_NOT_AVAILABLE NTStatus = 0xC00002B0 + STATUS_DIRECTORY_SERVICE_REQUIRED NTStatus = 0xC00002B1 + STATUS_REPARSE_ATTRIBUTE_CONFLICT NTStatus = 0xC00002B2 + STATUS_CANT_ENABLE_DENY_ONLY NTStatus = 0xC00002B3 + STATUS_FLOAT_MULTIPLE_FAULTS NTStatus = 0xC00002B4 + STATUS_FLOAT_MULTIPLE_TRAPS NTStatus = 0xC00002B5 + STATUS_DEVICE_REMOVED NTStatus = 0xC00002B6 + STATUS_JOURNAL_DELETE_IN_PROGRESS NTStatus = 0xC00002B7 + STATUS_JOURNAL_NOT_ACTIVE NTStatus = 0xC00002B8 + STATUS_NOINTERFACE NTStatus = 0xC00002B9 + STATUS_DS_RIDMGR_DISABLED NTStatus = 0xC00002BA + STATUS_DS_ADMIN_LIMIT_EXCEEDED NTStatus = 0xC00002C1 + STATUS_DRIVER_FAILED_SLEEP NTStatus = 0xC00002C2 + STATUS_MUTUAL_AUTHENTICATION_FAILED NTStatus = 0xC00002C3 + STATUS_CORRUPT_SYSTEM_FILE NTStatus = 0xC00002C4 + STATUS_DATATYPE_MISALIGNMENT_ERROR NTStatus = 0xC00002C5 + STATUS_WMI_READ_ONLY NTStatus = 0xC00002C6 + STATUS_WMI_SET_FAILURE NTStatus = 0xC00002C7 + STATUS_COMMITMENT_MINIMUM NTStatus = 0xC00002C8 + STATUS_REG_NAT_CONSUMPTION NTStatus = 0xC00002C9 + STATUS_TRANSPORT_FULL NTStatus = 0xC00002CA + STATUS_DS_SAM_INIT_FAILURE NTStatus = 0xC00002CB + STATUS_ONLY_IF_CONNECTED NTStatus = 0xC00002CC + STATUS_DS_SENSITIVE_GROUP_VIOLATION NTStatus = 0xC00002CD + STATUS_PNP_RESTART_ENUMERATION NTStatus = 0xC00002CE + STATUS_JOURNAL_ENTRY_DELETED NTStatus = 0xC00002CF + STATUS_DS_CANT_MOD_PRIMARYGROUPID NTStatus = 0xC00002D0 + STATUS_SYSTEM_IMAGE_BAD_SIGNATURE NTStatus = 0xC00002D1 + STATUS_PNP_REBOOT_REQUIRED NTStatus = 0xC00002D2 + STATUS_POWER_STATE_INVALID NTStatus = 0xC00002D3 + STATUS_DS_INVALID_GROUP_TYPE NTStatus = 0xC00002D4 + STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN NTStatus = 0xC00002D5 + STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN NTStatus = 0xC00002D6 + STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER NTStatus = 0xC00002D7 + STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER NTStatus = 0xC00002D8 + STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER NTStatus = 0xC00002D9 + STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER NTStatus = 0xC00002DA + STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER NTStatus = 0xC00002DB + STATUS_DS_HAVE_PRIMARY_MEMBERS NTStatus = 0xC00002DC + STATUS_WMI_NOT_SUPPORTED NTStatus = 0xC00002DD + STATUS_INSUFFICIENT_POWER NTStatus = 0xC00002DE + STATUS_SAM_NEED_BOOTKEY_PASSWORD NTStatus = 0xC00002DF + STATUS_SAM_NEED_BOOTKEY_FLOPPY NTStatus = 0xC00002E0 + STATUS_DS_CANT_START NTStatus = 0xC00002E1 + STATUS_DS_INIT_FAILURE NTStatus = 0xC00002E2 + STATUS_SAM_INIT_FAILURE NTStatus = 0xC00002E3 + STATUS_DS_GC_REQUIRED NTStatus = 0xC00002E4 + STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY NTStatus = 0xC00002E5 + STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS NTStatus = 0xC00002E6 + STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED NTStatus = 0xC00002E7 + STATUS_MULTIPLE_FAULT_VIOLATION NTStatus = 0xC00002E8 + STATUS_CURRENT_DOMAIN_NOT_ALLOWED NTStatus = 0xC00002E9 + STATUS_CANNOT_MAKE NTStatus = 0xC00002EA + STATUS_SYSTEM_SHUTDOWN NTStatus = 0xC00002EB + STATUS_DS_INIT_FAILURE_CONSOLE NTStatus = 0xC00002EC + STATUS_DS_SAM_INIT_FAILURE_CONSOLE NTStatus = 0xC00002ED + STATUS_UNFINISHED_CONTEXT_DELETED NTStatus = 0xC00002EE + STATUS_NO_TGT_REPLY NTStatus = 0xC00002EF + STATUS_OBJECTID_NOT_FOUND NTStatus = 0xC00002F0 + STATUS_NO_IP_ADDRESSES NTStatus = 0xC00002F1 + STATUS_WRONG_CREDENTIAL_HANDLE NTStatus = 0xC00002F2 + STATUS_CRYPTO_SYSTEM_INVALID NTStatus = 0xC00002F3 + STATUS_MAX_REFERRALS_EXCEEDED NTStatus = 0xC00002F4 + STATUS_MUST_BE_KDC NTStatus = 0xC00002F5 + STATUS_STRONG_CRYPTO_NOT_SUPPORTED NTStatus = 0xC00002F6 + STATUS_TOO_MANY_PRINCIPALS NTStatus = 0xC00002F7 + STATUS_NO_PA_DATA NTStatus = 0xC00002F8 + STATUS_PKINIT_NAME_MISMATCH NTStatus = 0xC00002F9 + STATUS_SMARTCARD_LOGON_REQUIRED NTStatus = 0xC00002FA + STATUS_KDC_INVALID_REQUEST NTStatus = 0xC00002FB + STATUS_KDC_UNABLE_TO_REFER NTStatus = 0xC00002FC + STATUS_KDC_UNKNOWN_ETYPE NTStatus = 0xC00002FD + STATUS_SHUTDOWN_IN_PROGRESS NTStatus = 0xC00002FE + STATUS_SERVER_SHUTDOWN_IN_PROGRESS NTStatus = 0xC00002FF + STATUS_NOT_SUPPORTED_ON_SBS NTStatus = 0xC0000300 + STATUS_WMI_GUID_DISCONNECTED NTStatus = 0xC0000301 + STATUS_WMI_ALREADY_DISABLED NTStatus = 0xC0000302 + STATUS_WMI_ALREADY_ENABLED NTStatus = 0xC0000303 + STATUS_MFT_TOO_FRAGMENTED NTStatus = 0xC0000304 + STATUS_COPY_PROTECTION_FAILURE NTStatus = 0xC0000305 + STATUS_CSS_AUTHENTICATION_FAILURE NTStatus = 0xC0000306 + STATUS_CSS_KEY_NOT_PRESENT NTStatus = 0xC0000307 + STATUS_CSS_KEY_NOT_ESTABLISHED NTStatus = 0xC0000308 + STATUS_CSS_SCRAMBLED_SECTOR NTStatus = 0xC0000309 + STATUS_CSS_REGION_MISMATCH NTStatus = 0xC000030A + STATUS_CSS_RESETS_EXHAUSTED NTStatus = 0xC000030B + STATUS_PASSWORD_CHANGE_REQUIRED NTStatus = 0xC000030C + STATUS_LOST_MODE_LOGON_RESTRICTION NTStatus = 0xC000030D + STATUS_PKINIT_FAILURE NTStatus = 0xC0000320 + STATUS_SMARTCARD_SUBSYSTEM_FAILURE NTStatus = 0xC0000321 + STATUS_NO_KERB_KEY NTStatus = 0xC0000322 + STATUS_HOST_DOWN NTStatus = 0xC0000350 + STATUS_UNSUPPORTED_PREAUTH NTStatus = 0xC0000351 + STATUS_EFS_ALG_BLOB_TOO_BIG NTStatus = 0xC0000352 + STATUS_PORT_NOT_SET NTStatus = 0xC0000353 + STATUS_DEBUGGER_INACTIVE NTStatus = 0xC0000354 + STATUS_DS_VERSION_CHECK_FAILURE NTStatus = 0xC0000355 + STATUS_AUDITING_DISABLED NTStatus = 0xC0000356 + STATUS_PRENT4_MACHINE_ACCOUNT NTStatus = 0xC0000357 + STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER NTStatus = 0xC0000358 + STATUS_INVALID_IMAGE_WIN_32 NTStatus = 0xC0000359 + STATUS_INVALID_IMAGE_WIN_64 NTStatus = 0xC000035A + STATUS_BAD_BINDINGS NTStatus = 0xC000035B + STATUS_NETWORK_SESSION_EXPIRED NTStatus = 0xC000035C + STATUS_APPHELP_BLOCK NTStatus = 0xC000035D + STATUS_ALL_SIDS_FILTERED NTStatus = 0xC000035E + STATUS_NOT_SAFE_MODE_DRIVER NTStatus = 0xC000035F + STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT NTStatus = 0xC0000361 + STATUS_ACCESS_DISABLED_BY_POLICY_PATH NTStatus = 0xC0000362 + STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER NTStatus = 0xC0000363 + STATUS_ACCESS_DISABLED_BY_POLICY_OTHER NTStatus = 0xC0000364 + STATUS_FAILED_DRIVER_ENTRY NTStatus = 0xC0000365 + STATUS_DEVICE_ENUMERATION_ERROR NTStatus = 0xC0000366 + STATUS_MOUNT_POINT_NOT_RESOLVED NTStatus = 0xC0000368 + STATUS_INVALID_DEVICE_OBJECT_PARAMETER NTStatus = 0xC0000369 + STATUS_MCA_OCCURED NTStatus = 0xC000036A + STATUS_DRIVER_BLOCKED_CRITICAL NTStatus = 0xC000036B + STATUS_DRIVER_BLOCKED NTStatus = 0xC000036C + STATUS_DRIVER_DATABASE_ERROR NTStatus = 0xC000036D + STATUS_SYSTEM_HIVE_TOO_LARGE NTStatus = 0xC000036E + STATUS_INVALID_IMPORT_OF_NON_DLL NTStatus = 0xC000036F + STATUS_DS_SHUTTING_DOWN NTStatus = 0x40000370 + STATUS_NO_SECRETS NTStatus = 0xC0000371 + STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY NTStatus = 0xC0000372 + STATUS_FAILED_STACK_SWITCH NTStatus = 0xC0000373 + STATUS_HEAP_CORRUPTION NTStatus = 0xC0000374 + STATUS_SMARTCARD_WRONG_PIN NTStatus = 0xC0000380 + STATUS_SMARTCARD_CARD_BLOCKED NTStatus = 0xC0000381 + STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED NTStatus = 0xC0000382 + STATUS_SMARTCARD_NO_CARD NTStatus = 0xC0000383 + STATUS_SMARTCARD_NO_KEY_CONTAINER NTStatus = 0xC0000384 + STATUS_SMARTCARD_NO_CERTIFICATE NTStatus = 0xC0000385 + STATUS_SMARTCARD_NO_KEYSET NTStatus = 0xC0000386 + STATUS_SMARTCARD_IO_ERROR NTStatus = 0xC0000387 + STATUS_DOWNGRADE_DETECTED NTStatus = 0xC0000388 + STATUS_SMARTCARD_CERT_REVOKED NTStatus = 0xC0000389 + STATUS_ISSUING_CA_UNTRUSTED NTStatus = 0xC000038A + STATUS_REVOCATION_OFFLINE_C NTStatus = 0xC000038B + STATUS_PKINIT_CLIENT_FAILURE NTStatus = 0xC000038C + STATUS_SMARTCARD_CERT_EXPIRED NTStatus = 0xC000038D + STATUS_DRIVER_FAILED_PRIOR_UNLOAD NTStatus = 0xC000038E + STATUS_SMARTCARD_SILENT_CONTEXT NTStatus = 0xC000038F + STATUS_PER_USER_TRUST_QUOTA_EXCEEDED NTStatus = 0xC0000401 + STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED NTStatus = 0xC0000402 + STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED NTStatus = 0xC0000403 + STATUS_DS_NAME_NOT_UNIQUE NTStatus = 0xC0000404 + STATUS_DS_DUPLICATE_ID_FOUND NTStatus = 0xC0000405 + STATUS_DS_GROUP_CONVERSION_ERROR NTStatus = 0xC0000406 + STATUS_VOLSNAP_PREPARE_HIBERNATE NTStatus = 0xC0000407 + STATUS_USER2USER_REQUIRED NTStatus = 0xC0000408 + STATUS_STACK_BUFFER_OVERRUN NTStatus = 0xC0000409 + STATUS_NO_S4U_PROT_SUPPORT NTStatus = 0xC000040A + STATUS_CROSSREALM_DELEGATION_FAILURE NTStatus = 0xC000040B + STATUS_REVOCATION_OFFLINE_KDC NTStatus = 0xC000040C + STATUS_ISSUING_CA_UNTRUSTED_KDC NTStatus = 0xC000040D + STATUS_KDC_CERT_EXPIRED NTStatus = 0xC000040E + STATUS_KDC_CERT_REVOKED NTStatus = 0xC000040F + STATUS_PARAMETER_QUOTA_EXCEEDED NTStatus = 0xC0000410 + STATUS_HIBERNATION_FAILURE NTStatus = 0xC0000411 + STATUS_DELAY_LOAD_FAILED NTStatus = 0xC0000412 + STATUS_AUTHENTICATION_FIREWALL_FAILED NTStatus = 0xC0000413 + STATUS_VDM_DISALLOWED NTStatus = 0xC0000414 + STATUS_HUNG_DISPLAY_DRIVER_THREAD NTStatus = 0xC0000415 + STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE NTStatus = 0xC0000416 + STATUS_INVALID_CRUNTIME_PARAMETER NTStatus = 0xC0000417 + STATUS_NTLM_BLOCKED NTStatus = 0xC0000418 + STATUS_DS_SRC_SID_EXISTS_IN_FOREST NTStatus = 0xC0000419 + STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST NTStatus = 0xC000041A + STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST NTStatus = 0xC000041B + STATUS_INVALID_USER_PRINCIPAL_NAME NTStatus = 0xC000041C + STATUS_FATAL_USER_CALLBACK_EXCEPTION NTStatus = 0xC000041D + STATUS_ASSERTION_FAILURE NTStatus = 0xC0000420 + STATUS_VERIFIER_STOP NTStatus = 0xC0000421 + STATUS_CALLBACK_POP_STACK NTStatus = 0xC0000423 + STATUS_INCOMPATIBLE_DRIVER_BLOCKED NTStatus = 0xC0000424 + STATUS_HIVE_UNLOADED NTStatus = 0xC0000425 + STATUS_COMPRESSION_DISABLED NTStatus = 0xC0000426 + STATUS_FILE_SYSTEM_LIMITATION NTStatus = 0xC0000427 + STATUS_INVALID_IMAGE_HASH NTStatus = 0xC0000428 + STATUS_NOT_CAPABLE NTStatus = 0xC0000429 + STATUS_REQUEST_OUT_OF_SEQUENCE NTStatus = 0xC000042A + STATUS_IMPLEMENTATION_LIMIT NTStatus = 0xC000042B + STATUS_ELEVATION_REQUIRED NTStatus = 0xC000042C + STATUS_NO_SECURITY_CONTEXT NTStatus = 0xC000042D + STATUS_PKU2U_CERT_FAILURE NTStatus = 0xC000042F + STATUS_BEYOND_VDL NTStatus = 0xC0000432 + STATUS_ENCOUNTERED_WRITE_IN_PROGRESS NTStatus = 0xC0000433 + STATUS_PTE_CHANGED NTStatus = 0xC0000434 + STATUS_PURGE_FAILED NTStatus = 0xC0000435 + STATUS_CRED_REQUIRES_CONFIRMATION NTStatus = 0xC0000440 + STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE NTStatus = 0xC0000441 + STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER NTStatus = 0xC0000442 + STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE NTStatus = 0xC0000443 + STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE NTStatus = 0xC0000444 + STATUS_CS_ENCRYPTION_FILE_NOT_CSE NTStatus = 0xC0000445 + STATUS_INVALID_LABEL NTStatus = 0xC0000446 + STATUS_DRIVER_PROCESS_TERMINATED NTStatus = 0xC0000450 + STATUS_AMBIGUOUS_SYSTEM_DEVICE NTStatus = 0xC0000451 + STATUS_SYSTEM_DEVICE_NOT_FOUND NTStatus = 0xC0000452 + STATUS_RESTART_BOOT_APPLICATION NTStatus = 0xC0000453 + STATUS_INSUFFICIENT_NVRAM_RESOURCES NTStatus = 0xC0000454 + STATUS_INVALID_SESSION NTStatus = 0xC0000455 + STATUS_THREAD_ALREADY_IN_SESSION NTStatus = 0xC0000456 + STATUS_THREAD_NOT_IN_SESSION NTStatus = 0xC0000457 + STATUS_INVALID_WEIGHT NTStatus = 0xC0000458 + STATUS_REQUEST_PAUSED NTStatus = 0xC0000459 + STATUS_NO_RANGES_PROCESSED NTStatus = 0xC0000460 + STATUS_DISK_RESOURCES_EXHAUSTED NTStatus = 0xC0000461 + STATUS_NEEDS_REMEDIATION NTStatus = 0xC0000462 + STATUS_DEVICE_FEATURE_NOT_SUPPORTED NTStatus = 0xC0000463 + STATUS_DEVICE_UNREACHABLE NTStatus = 0xC0000464 + STATUS_INVALID_TOKEN NTStatus = 0xC0000465 + STATUS_SERVER_UNAVAILABLE NTStatus = 0xC0000466 + STATUS_FILE_NOT_AVAILABLE NTStatus = 0xC0000467 + STATUS_DEVICE_INSUFFICIENT_RESOURCES NTStatus = 0xC0000468 + STATUS_PACKAGE_UPDATING NTStatus = 0xC0000469 + STATUS_NOT_READ_FROM_COPY NTStatus = 0xC000046A + STATUS_FT_WRITE_FAILURE NTStatus = 0xC000046B + STATUS_FT_DI_SCAN_REQUIRED NTStatus = 0xC000046C + STATUS_OBJECT_NOT_EXTERNALLY_BACKED NTStatus = 0xC000046D + STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN NTStatus = 0xC000046E + STATUS_COMPRESSION_NOT_BENEFICIAL NTStatus = 0xC000046F + STATUS_DATA_CHECKSUM_ERROR NTStatus = 0xC0000470 + STATUS_INTERMIXED_KERNEL_EA_OPERATION NTStatus = 0xC0000471 + STATUS_TRIM_READ_ZERO_NOT_SUPPORTED NTStatus = 0xC0000472 + STATUS_TOO_MANY_SEGMENT_DESCRIPTORS NTStatus = 0xC0000473 + STATUS_INVALID_OFFSET_ALIGNMENT NTStatus = 0xC0000474 + STATUS_INVALID_FIELD_IN_PARAMETER_LIST NTStatus = 0xC0000475 + STATUS_OPERATION_IN_PROGRESS NTStatus = 0xC0000476 + STATUS_INVALID_INITIATOR_TARGET_PATH NTStatus = 0xC0000477 + STATUS_SCRUB_DATA_DISABLED NTStatus = 0xC0000478 + STATUS_NOT_REDUNDANT_STORAGE NTStatus = 0xC0000479 + STATUS_RESIDENT_FILE_NOT_SUPPORTED NTStatus = 0xC000047A + STATUS_COMPRESSED_FILE_NOT_SUPPORTED NTStatus = 0xC000047B + STATUS_DIRECTORY_NOT_SUPPORTED NTStatus = 0xC000047C + STATUS_IO_OPERATION_TIMEOUT NTStatus = 0xC000047D + STATUS_SYSTEM_NEEDS_REMEDIATION NTStatus = 0xC000047E + STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN NTStatus = 0xC000047F + STATUS_SHARE_UNAVAILABLE NTStatus = 0xC0000480 + STATUS_APISET_NOT_HOSTED NTStatus = 0xC0000481 + STATUS_APISET_NOT_PRESENT NTStatus = 0xC0000482 + STATUS_DEVICE_HARDWARE_ERROR NTStatus = 0xC0000483 + STATUS_FIRMWARE_SLOT_INVALID NTStatus = 0xC0000484 + STATUS_FIRMWARE_IMAGE_INVALID NTStatus = 0xC0000485 + STATUS_STORAGE_TOPOLOGY_ID_MISMATCH NTStatus = 0xC0000486 + STATUS_WIM_NOT_BOOTABLE NTStatus = 0xC0000487 + STATUS_BLOCKED_BY_PARENTAL_CONTROLS NTStatus = 0xC0000488 + STATUS_NEEDS_REGISTRATION NTStatus = 0xC0000489 + STATUS_QUOTA_ACTIVITY NTStatus = 0xC000048A + STATUS_CALLBACK_INVOKE_INLINE NTStatus = 0xC000048B + STATUS_BLOCK_TOO_MANY_REFERENCES NTStatus = 0xC000048C + STATUS_MARKED_TO_DISALLOW_WRITES NTStatus = 0xC000048D + STATUS_NETWORK_ACCESS_DENIED_EDP NTStatus = 0xC000048E + STATUS_ENCLAVE_FAILURE NTStatus = 0xC000048F + STATUS_PNP_NO_COMPAT_DRIVERS NTStatus = 0xC0000490 + STATUS_PNP_DRIVER_PACKAGE_NOT_FOUND NTStatus = 0xC0000491 + STATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND NTStatus = 0xC0000492 + STATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE NTStatus = 0xC0000493 + STATUS_PNP_FUNCTION_DRIVER_REQUIRED NTStatus = 0xC0000494 + STATUS_PNP_DEVICE_CONFIGURATION_PENDING NTStatus = 0xC0000495 + STATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL NTStatus = 0xC0000496 + STATUS_PACKAGE_NOT_AVAILABLE NTStatus = 0xC0000497 + STATUS_DEVICE_IN_MAINTENANCE NTStatus = 0xC0000499 + STATUS_NOT_SUPPORTED_ON_DAX NTStatus = 0xC000049A + STATUS_FREE_SPACE_TOO_FRAGMENTED NTStatus = 0xC000049B + STATUS_DAX_MAPPING_EXISTS NTStatus = 0xC000049C + STATUS_CHILD_PROCESS_BLOCKED NTStatus = 0xC000049D + STATUS_STORAGE_LOST_DATA_PERSISTENCE NTStatus = 0xC000049E + STATUS_VRF_CFG_ENABLED NTStatus = 0xC000049F + STATUS_PARTITION_TERMINATING NTStatus = 0xC00004A0 + STATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED NTStatus = 0xC00004A1 + STATUS_ENCLAVE_VIOLATION NTStatus = 0xC00004A2 + STATUS_FILE_PROTECTED_UNDER_DPL NTStatus = 0xC00004A3 + STATUS_VOLUME_NOT_CLUSTER_ALIGNED NTStatus = 0xC00004A4 + STATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND NTStatus = 0xC00004A5 + STATUS_APPX_FILE_NOT_ENCRYPTED NTStatus = 0xC00004A6 + STATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED NTStatus = 0xC00004A7 + STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET NTStatus = 0xC00004A8 + STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE NTStatus = 0xC00004A9 + STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER NTStatus = 0xC00004AA + STATUS_FT_READ_FAILURE NTStatus = 0xC00004AB + STATUS_PATCH_CONFLICT NTStatus = 0xC00004AC + STATUS_STORAGE_RESERVE_ID_INVALID NTStatus = 0xC00004AD + STATUS_STORAGE_RESERVE_DOES_NOT_EXIST NTStatus = 0xC00004AE + STATUS_STORAGE_RESERVE_ALREADY_EXISTS NTStatus = 0xC00004AF + STATUS_STORAGE_RESERVE_NOT_EMPTY NTStatus = 0xC00004B0 + STATUS_NOT_A_DAX_VOLUME NTStatus = 0xC00004B1 + STATUS_NOT_DAX_MAPPABLE NTStatus = 0xC00004B2 + STATUS_CASE_DIFFERING_NAMES_IN_DIR NTStatus = 0xC00004B3 + STATUS_FILE_NOT_SUPPORTED NTStatus = 0xC00004B4 + STATUS_NOT_SUPPORTED_WITH_BTT NTStatus = 0xC00004B5 + STATUS_ENCRYPTION_DISABLED NTStatus = 0xC00004B6 + STATUS_ENCRYPTING_METADATA_DISALLOWED NTStatus = 0xC00004B7 + STATUS_CANT_CLEAR_ENCRYPTION_FLAG NTStatus = 0xC00004B8 + STATUS_INVALID_TASK_NAME NTStatus = 0xC0000500 + STATUS_INVALID_TASK_INDEX NTStatus = 0xC0000501 + STATUS_THREAD_ALREADY_IN_TASK NTStatus = 0xC0000502 + STATUS_CALLBACK_BYPASS NTStatus = 0xC0000503 + STATUS_UNDEFINED_SCOPE NTStatus = 0xC0000504 + STATUS_INVALID_CAP NTStatus = 0xC0000505 + STATUS_NOT_GUI_PROCESS NTStatus = 0xC0000506 + STATUS_DEVICE_HUNG NTStatus = 0xC0000507 + STATUS_CONTAINER_ASSIGNED NTStatus = 0xC0000508 + STATUS_JOB_NO_CONTAINER NTStatus = 0xC0000509 + STATUS_DEVICE_UNRESPONSIVE NTStatus = 0xC000050A + STATUS_REPARSE_POINT_ENCOUNTERED NTStatus = 0xC000050B + STATUS_ATTRIBUTE_NOT_PRESENT NTStatus = 0xC000050C + STATUS_NOT_A_TIERED_VOLUME NTStatus = 0xC000050D + STATUS_ALREADY_HAS_STREAM_ID NTStatus = 0xC000050E + STATUS_JOB_NOT_EMPTY NTStatus = 0xC000050F + STATUS_ALREADY_INITIALIZED NTStatus = 0xC0000510 + STATUS_ENCLAVE_NOT_TERMINATED NTStatus = 0xC0000511 + STATUS_ENCLAVE_IS_TERMINATING NTStatus = 0xC0000512 + STATUS_SMB1_NOT_AVAILABLE NTStatus = 0xC0000513 + STATUS_SMR_GARBAGE_COLLECTION_REQUIRED NTStatus = 0xC0000514 + STATUS_INTERRUPTED NTStatus = 0xC0000515 + STATUS_THREAD_NOT_RUNNING NTStatus = 0xC0000516 + STATUS_FAIL_FAST_EXCEPTION NTStatus = 0xC0000602 + STATUS_IMAGE_CERT_REVOKED NTStatus = 0xC0000603 + STATUS_DYNAMIC_CODE_BLOCKED NTStatus = 0xC0000604 + STATUS_IMAGE_CERT_EXPIRED NTStatus = 0xC0000605 + STATUS_STRICT_CFG_VIOLATION NTStatus = 0xC0000606 + STATUS_SET_CONTEXT_DENIED NTStatus = 0xC000060A + STATUS_CROSS_PARTITION_VIOLATION NTStatus = 0xC000060B + STATUS_PORT_CLOSED NTStatus = 0xC0000700 + STATUS_MESSAGE_LOST NTStatus = 0xC0000701 + STATUS_INVALID_MESSAGE NTStatus = 0xC0000702 + STATUS_REQUEST_CANCELED NTStatus = 0xC0000703 + STATUS_RECURSIVE_DISPATCH NTStatus = 0xC0000704 + STATUS_LPC_RECEIVE_BUFFER_EXPECTED NTStatus = 0xC0000705 + STATUS_LPC_INVALID_CONNECTION_USAGE NTStatus = 0xC0000706 + STATUS_LPC_REQUESTS_NOT_ALLOWED NTStatus = 0xC0000707 + STATUS_RESOURCE_IN_USE NTStatus = 0xC0000708 + STATUS_HARDWARE_MEMORY_ERROR NTStatus = 0xC0000709 + STATUS_THREADPOOL_HANDLE_EXCEPTION NTStatus = 0xC000070A + STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED NTStatus = 0xC000070B + STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED NTStatus = 0xC000070C + STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED NTStatus = 0xC000070D + STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED NTStatus = 0xC000070E + STATUS_THREADPOOL_RELEASED_DURING_OPERATION NTStatus = 0xC000070F + STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING NTStatus = 0xC0000710 + STATUS_APC_RETURNED_WHILE_IMPERSONATING NTStatus = 0xC0000711 + STATUS_PROCESS_IS_PROTECTED NTStatus = 0xC0000712 + STATUS_MCA_EXCEPTION NTStatus = 0xC0000713 + STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE NTStatus = 0xC0000714 + STATUS_SYMLINK_CLASS_DISABLED NTStatus = 0xC0000715 + STATUS_INVALID_IDN_NORMALIZATION NTStatus = 0xC0000716 + STATUS_NO_UNICODE_TRANSLATION NTStatus = 0xC0000717 + STATUS_ALREADY_REGISTERED NTStatus = 0xC0000718 + STATUS_CONTEXT_MISMATCH NTStatus = 0xC0000719 + STATUS_PORT_ALREADY_HAS_COMPLETION_LIST NTStatus = 0xC000071A + STATUS_CALLBACK_RETURNED_THREAD_PRIORITY NTStatus = 0xC000071B + STATUS_INVALID_THREAD NTStatus = 0xC000071C + STATUS_CALLBACK_RETURNED_TRANSACTION NTStatus = 0xC000071D + STATUS_CALLBACK_RETURNED_LDR_LOCK NTStatus = 0xC000071E + STATUS_CALLBACK_RETURNED_LANG NTStatus = 0xC000071F + STATUS_CALLBACK_RETURNED_PRI_BACK NTStatus = 0xC0000720 + STATUS_CALLBACK_RETURNED_THREAD_AFFINITY NTStatus = 0xC0000721 + STATUS_LPC_HANDLE_COUNT_EXCEEDED NTStatus = 0xC0000722 + STATUS_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000723 + STATUS_KERNEL_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000724 + STATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000725 + STATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000726 + STATUS_DISK_REPAIR_DISABLED NTStatus = 0xC0000800 + STATUS_DS_DOMAIN_RENAME_IN_PROGRESS NTStatus = 0xC0000801 + STATUS_DISK_QUOTA_EXCEEDED NTStatus = 0xC0000802 + STATUS_DATA_LOST_REPAIR NTStatus = 0x80000803 + STATUS_CONTENT_BLOCKED NTStatus = 0xC0000804 + STATUS_BAD_CLUSTERS NTStatus = 0xC0000805 + STATUS_VOLUME_DIRTY NTStatus = 0xC0000806 + STATUS_DISK_REPAIR_REDIRECTED NTStatus = 0x40000807 + STATUS_DISK_REPAIR_UNSUCCESSFUL NTStatus = 0xC0000808 + STATUS_CORRUPT_LOG_OVERFULL NTStatus = 0xC0000809 + STATUS_CORRUPT_LOG_CORRUPTED NTStatus = 0xC000080A + STATUS_CORRUPT_LOG_UNAVAILABLE NTStatus = 0xC000080B + STATUS_CORRUPT_LOG_DELETED_FULL NTStatus = 0xC000080C + STATUS_CORRUPT_LOG_CLEARED NTStatus = 0xC000080D + STATUS_ORPHAN_NAME_EXHAUSTED NTStatus = 0xC000080E + STATUS_PROACTIVE_SCAN_IN_PROGRESS NTStatus = 0xC000080F + STATUS_ENCRYPTED_IO_NOT_POSSIBLE NTStatus = 0xC0000810 + STATUS_CORRUPT_LOG_UPLEVEL_RECORDS NTStatus = 0xC0000811 + STATUS_FILE_CHECKED_OUT NTStatus = 0xC0000901 + STATUS_CHECKOUT_REQUIRED NTStatus = 0xC0000902 + STATUS_BAD_FILE_TYPE NTStatus = 0xC0000903 + STATUS_FILE_TOO_LARGE NTStatus = 0xC0000904 + STATUS_FORMS_AUTH_REQUIRED NTStatus = 0xC0000905 + STATUS_VIRUS_INFECTED NTStatus = 0xC0000906 + STATUS_VIRUS_DELETED NTStatus = 0xC0000907 + STATUS_BAD_MCFG_TABLE NTStatus = 0xC0000908 + STATUS_CANNOT_BREAK_OPLOCK NTStatus = 0xC0000909 + STATUS_BAD_KEY NTStatus = 0xC000090A + STATUS_BAD_DATA NTStatus = 0xC000090B + STATUS_NO_KEY NTStatus = 0xC000090C + STATUS_FILE_HANDLE_REVOKED NTStatus = 0xC0000910 + STATUS_WOW_ASSERTION NTStatus = 0xC0009898 + STATUS_INVALID_SIGNATURE NTStatus = 0xC000A000 + STATUS_HMAC_NOT_SUPPORTED NTStatus = 0xC000A001 + STATUS_AUTH_TAG_MISMATCH NTStatus = 0xC000A002 + STATUS_INVALID_STATE_TRANSITION NTStatus = 0xC000A003 + STATUS_INVALID_KERNEL_INFO_VERSION NTStatus = 0xC000A004 + STATUS_INVALID_PEP_INFO_VERSION NTStatus = 0xC000A005 + STATUS_HANDLE_REVOKED NTStatus = 0xC000A006 + STATUS_EOF_ON_GHOSTED_RANGE NTStatus = 0xC000A007 + STATUS_IPSEC_QUEUE_OVERFLOW NTStatus = 0xC000A010 + STATUS_ND_QUEUE_OVERFLOW NTStatus = 0xC000A011 + STATUS_HOPLIMIT_EXCEEDED NTStatus = 0xC000A012 + STATUS_PROTOCOL_NOT_SUPPORTED NTStatus = 0xC000A013 + STATUS_FASTPATH_REJECTED NTStatus = 0xC000A014 + STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED NTStatus = 0xC000A080 + STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR NTStatus = 0xC000A081 + STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR NTStatus = 0xC000A082 + STATUS_XML_PARSE_ERROR NTStatus = 0xC000A083 + STATUS_XMLDSIG_ERROR NTStatus = 0xC000A084 + STATUS_WRONG_COMPARTMENT NTStatus = 0xC000A085 + STATUS_AUTHIP_FAILURE NTStatus = 0xC000A086 + STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS NTStatus = 0xC000A087 + STATUS_DS_OID_NOT_FOUND NTStatus = 0xC000A088 + STATUS_INCORRECT_ACCOUNT_TYPE NTStatus = 0xC000A089 + STATUS_HASH_NOT_SUPPORTED NTStatus = 0xC000A100 + STATUS_HASH_NOT_PRESENT NTStatus = 0xC000A101 + STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED NTStatus = 0xC000A121 + STATUS_GPIO_CLIENT_INFORMATION_INVALID NTStatus = 0xC000A122 + STATUS_GPIO_VERSION_NOT_SUPPORTED NTStatus = 0xC000A123 + STATUS_GPIO_INVALID_REGISTRATION_PACKET NTStatus = 0xC000A124 + STATUS_GPIO_OPERATION_DENIED NTStatus = 0xC000A125 + STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE NTStatus = 0xC000A126 + STATUS_GPIO_INTERRUPT_ALREADY_UNMASKED NTStatus = 0x8000A127 + STATUS_CANNOT_SWITCH_RUNLEVEL NTStatus = 0xC000A141 + STATUS_INVALID_RUNLEVEL_SETTING NTStatus = 0xC000A142 + STATUS_RUNLEVEL_SWITCH_TIMEOUT NTStatus = 0xC000A143 + STATUS_SERVICES_FAILED_AUTOSTART NTStatus = 0x4000A144 + STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT NTStatus = 0xC000A145 + STATUS_RUNLEVEL_SWITCH_IN_PROGRESS NTStatus = 0xC000A146 + STATUS_NOT_APPCONTAINER NTStatus = 0xC000A200 + STATUS_NOT_SUPPORTED_IN_APPCONTAINER NTStatus = 0xC000A201 + STATUS_INVALID_PACKAGE_SID_LENGTH NTStatus = 0xC000A202 + STATUS_LPAC_ACCESS_DENIED NTStatus = 0xC000A203 + STATUS_ADMINLESS_ACCESS_DENIED NTStatus = 0xC000A204 + STATUS_APP_DATA_NOT_FOUND NTStatus = 0xC000A281 + STATUS_APP_DATA_EXPIRED NTStatus = 0xC000A282 + STATUS_APP_DATA_CORRUPT NTStatus = 0xC000A283 + STATUS_APP_DATA_LIMIT_EXCEEDED NTStatus = 0xC000A284 + STATUS_APP_DATA_REBOOT_REQUIRED NTStatus = 0xC000A285 + STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED NTStatus = 0xC000A2A1 + STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED NTStatus = 0xC000A2A2 + STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED NTStatus = 0xC000A2A3 + STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED NTStatus = 0xC000A2A4 + STATUS_WOF_WIM_HEADER_CORRUPT NTStatus = 0xC000A2A5 + STATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT NTStatus = 0xC000A2A6 + STATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT NTStatus = 0xC000A2A7 + STATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE NTStatus = 0xC000CE01 + STATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT NTStatus = 0xC000CE02 + STATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY NTStatus = 0xC000CE03 + STATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN NTStatus = 0xC000CE04 + STATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION NTStatus = 0xC000CE05 + STATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT NTStatus = 0xC000CF00 + STATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING NTStatus = 0xC000CF01 + STATUS_CLOUD_FILE_METADATA_CORRUPT NTStatus = 0xC000CF02 + STATUS_CLOUD_FILE_METADATA_TOO_LARGE NTStatus = 0xC000CF03 + STATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE NTStatus = 0x8000CF04 + STATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS NTStatus = 0x8000CF05 + STATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED NTStatus = 0xC000CF06 + STATUS_NOT_A_CLOUD_FILE NTStatus = 0xC000CF07 + STATUS_CLOUD_FILE_NOT_IN_SYNC NTStatus = 0xC000CF08 + STATUS_CLOUD_FILE_ALREADY_CONNECTED NTStatus = 0xC000CF09 + STATUS_CLOUD_FILE_NOT_SUPPORTED NTStatus = 0xC000CF0A + STATUS_CLOUD_FILE_INVALID_REQUEST NTStatus = 0xC000CF0B + STATUS_CLOUD_FILE_READ_ONLY_VOLUME NTStatus = 0xC000CF0C + STATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY NTStatus = 0xC000CF0D + STATUS_CLOUD_FILE_VALIDATION_FAILED NTStatus = 0xC000CF0E + STATUS_CLOUD_FILE_AUTHENTICATION_FAILED NTStatus = 0xC000CF0F + STATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES NTStatus = 0xC000CF10 + STATUS_CLOUD_FILE_NETWORK_UNAVAILABLE NTStatus = 0xC000CF11 + STATUS_CLOUD_FILE_UNSUCCESSFUL NTStatus = 0xC000CF12 + STATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT NTStatus = 0xC000CF13 + STATUS_CLOUD_FILE_IN_USE NTStatus = 0xC000CF14 + STATUS_CLOUD_FILE_PINNED NTStatus = 0xC000CF15 + STATUS_CLOUD_FILE_REQUEST_ABORTED NTStatus = 0xC000CF16 + STATUS_CLOUD_FILE_PROPERTY_CORRUPT NTStatus = 0xC000CF17 + STATUS_CLOUD_FILE_ACCESS_DENIED NTStatus = 0xC000CF18 + STATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS NTStatus = 0xC000CF19 + STATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT NTStatus = 0xC000CF1A + STATUS_CLOUD_FILE_REQUEST_CANCELED NTStatus = 0xC000CF1B + STATUS_CLOUD_FILE_PROVIDER_TERMINATED NTStatus = 0xC000CF1D + STATUS_NOT_A_CLOUD_SYNC_ROOT NTStatus = 0xC000CF1E + STATUS_CLOUD_FILE_REQUEST_TIMEOUT NTStatus = 0xC000CF1F + STATUS_ACPI_INVALID_OPCODE NTStatus = 0xC0140001 + STATUS_ACPI_STACK_OVERFLOW NTStatus = 0xC0140002 + STATUS_ACPI_ASSERT_FAILED NTStatus = 0xC0140003 + STATUS_ACPI_INVALID_INDEX NTStatus = 0xC0140004 + STATUS_ACPI_INVALID_ARGUMENT NTStatus = 0xC0140005 + STATUS_ACPI_FATAL NTStatus = 0xC0140006 + STATUS_ACPI_INVALID_SUPERNAME NTStatus = 0xC0140007 + STATUS_ACPI_INVALID_ARGTYPE NTStatus = 0xC0140008 + STATUS_ACPI_INVALID_OBJTYPE NTStatus = 0xC0140009 + STATUS_ACPI_INVALID_TARGETTYPE NTStatus = 0xC014000A + STATUS_ACPI_INCORRECT_ARGUMENT_COUNT NTStatus = 0xC014000B + STATUS_ACPI_ADDRESS_NOT_MAPPED NTStatus = 0xC014000C + STATUS_ACPI_INVALID_EVENTTYPE NTStatus = 0xC014000D + STATUS_ACPI_HANDLER_COLLISION NTStatus = 0xC014000E + STATUS_ACPI_INVALID_DATA NTStatus = 0xC014000F + STATUS_ACPI_INVALID_REGION NTStatus = 0xC0140010 + STATUS_ACPI_INVALID_ACCESS_SIZE NTStatus = 0xC0140011 + STATUS_ACPI_ACQUIRE_GLOBAL_LOCK NTStatus = 0xC0140012 + STATUS_ACPI_ALREADY_INITIALIZED NTStatus = 0xC0140013 + STATUS_ACPI_NOT_INITIALIZED NTStatus = 0xC0140014 + STATUS_ACPI_INVALID_MUTEX_LEVEL NTStatus = 0xC0140015 + STATUS_ACPI_MUTEX_NOT_OWNED NTStatus = 0xC0140016 + STATUS_ACPI_MUTEX_NOT_OWNER NTStatus = 0xC0140017 + STATUS_ACPI_RS_ACCESS NTStatus = 0xC0140018 + STATUS_ACPI_INVALID_TABLE NTStatus = 0xC0140019 + STATUS_ACPI_REG_HANDLER_FAILED NTStatus = 0xC0140020 + STATUS_ACPI_POWER_REQUEST_FAILED NTStatus = 0xC0140021 + STATUS_CTX_WINSTATION_NAME_INVALID NTStatus = 0xC00A0001 + STATUS_CTX_INVALID_PD NTStatus = 0xC00A0002 + STATUS_CTX_PD_NOT_FOUND NTStatus = 0xC00A0003 + STATUS_CTX_CDM_CONNECT NTStatus = 0x400A0004 + STATUS_CTX_CDM_DISCONNECT NTStatus = 0x400A0005 + STATUS_CTX_CLOSE_PENDING NTStatus = 0xC00A0006 + STATUS_CTX_NO_OUTBUF NTStatus = 0xC00A0007 + STATUS_CTX_MODEM_INF_NOT_FOUND NTStatus = 0xC00A0008 + STATUS_CTX_INVALID_MODEMNAME NTStatus = 0xC00A0009 + STATUS_CTX_RESPONSE_ERROR NTStatus = 0xC00A000A + STATUS_CTX_MODEM_RESPONSE_TIMEOUT NTStatus = 0xC00A000B + STATUS_CTX_MODEM_RESPONSE_NO_CARRIER NTStatus = 0xC00A000C + STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE NTStatus = 0xC00A000D + STATUS_CTX_MODEM_RESPONSE_BUSY NTStatus = 0xC00A000E + STATUS_CTX_MODEM_RESPONSE_VOICE NTStatus = 0xC00A000F + STATUS_CTX_TD_ERROR NTStatus = 0xC00A0010 + STATUS_CTX_LICENSE_CLIENT_INVALID NTStatus = 0xC00A0012 + STATUS_CTX_LICENSE_NOT_AVAILABLE NTStatus = 0xC00A0013 + STATUS_CTX_LICENSE_EXPIRED NTStatus = 0xC00A0014 + STATUS_CTX_WINSTATION_NOT_FOUND NTStatus = 0xC00A0015 + STATUS_CTX_WINSTATION_NAME_COLLISION NTStatus = 0xC00A0016 + STATUS_CTX_WINSTATION_BUSY NTStatus = 0xC00A0017 + STATUS_CTX_BAD_VIDEO_MODE NTStatus = 0xC00A0018 + STATUS_CTX_GRAPHICS_INVALID NTStatus = 0xC00A0022 + STATUS_CTX_NOT_CONSOLE NTStatus = 0xC00A0024 + STATUS_CTX_CLIENT_QUERY_TIMEOUT NTStatus = 0xC00A0026 + STATUS_CTX_CONSOLE_DISCONNECT NTStatus = 0xC00A0027 + STATUS_CTX_CONSOLE_CONNECT NTStatus = 0xC00A0028 + STATUS_CTX_SHADOW_DENIED NTStatus = 0xC00A002A + STATUS_CTX_WINSTATION_ACCESS_DENIED NTStatus = 0xC00A002B + STATUS_CTX_INVALID_WD NTStatus = 0xC00A002E + STATUS_CTX_WD_NOT_FOUND NTStatus = 0xC00A002F + STATUS_CTX_SHADOW_INVALID NTStatus = 0xC00A0030 + STATUS_CTX_SHADOW_DISABLED NTStatus = 0xC00A0031 + STATUS_RDP_PROTOCOL_ERROR NTStatus = 0xC00A0032 + STATUS_CTX_CLIENT_LICENSE_NOT_SET NTStatus = 0xC00A0033 + STATUS_CTX_CLIENT_LICENSE_IN_USE NTStatus = 0xC00A0034 + STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE NTStatus = 0xC00A0035 + STATUS_CTX_SHADOW_NOT_RUNNING NTStatus = 0xC00A0036 + STATUS_CTX_LOGON_DISABLED NTStatus = 0xC00A0037 + STATUS_CTX_SECURITY_LAYER_ERROR NTStatus = 0xC00A0038 + STATUS_TS_INCOMPATIBLE_SESSIONS NTStatus = 0xC00A0039 + STATUS_TS_VIDEO_SUBSYSTEM_ERROR NTStatus = 0xC00A003A + STATUS_PNP_BAD_MPS_TABLE NTStatus = 0xC0040035 + STATUS_PNP_TRANSLATION_FAILED NTStatus = 0xC0040036 + STATUS_PNP_IRQ_TRANSLATION_FAILED NTStatus = 0xC0040037 + STATUS_PNP_INVALID_ID NTStatus = 0xC0040038 + STATUS_IO_REISSUE_AS_CACHED NTStatus = 0xC0040039 + STATUS_MUI_FILE_NOT_FOUND NTStatus = 0xC00B0001 + STATUS_MUI_INVALID_FILE NTStatus = 0xC00B0002 + STATUS_MUI_INVALID_RC_CONFIG NTStatus = 0xC00B0003 + STATUS_MUI_INVALID_LOCALE_NAME NTStatus = 0xC00B0004 + STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME NTStatus = 0xC00B0005 + STATUS_MUI_FILE_NOT_LOADED NTStatus = 0xC00B0006 + STATUS_RESOURCE_ENUM_USER_STOP NTStatus = 0xC00B0007 + STATUS_FLT_NO_HANDLER_DEFINED NTStatus = 0xC01C0001 + STATUS_FLT_CONTEXT_ALREADY_DEFINED NTStatus = 0xC01C0002 + STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST NTStatus = 0xC01C0003 + STATUS_FLT_DISALLOW_FAST_IO NTStatus = 0xC01C0004 + STATUS_FLT_INVALID_NAME_REQUEST NTStatus = 0xC01C0005 + STATUS_FLT_NOT_SAFE_TO_POST_OPERATION NTStatus = 0xC01C0006 + STATUS_FLT_NOT_INITIALIZED NTStatus = 0xC01C0007 + STATUS_FLT_FILTER_NOT_READY NTStatus = 0xC01C0008 + STATUS_FLT_POST_OPERATION_CLEANUP NTStatus = 0xC01C0009 + STATUS_FLT_INTERNAL_ERROR NTStatus = 0xC01C000A + STATUS_FLT_DELETING_OBJECT NTStatus = 0xC01C000B + STATUS_FLT_MUST_BE_NONPAGED_POOL NTStatus = 0xC01C000C + STATUS_FLT_DUPLICATE_ENTRY NTStatus = 0xC01C000D + STATUS_FLT_CBDQ_DISABLED NTStatus = 0xC01C000E + STATUS_FLT_DO_NOT_ATTACH NTStatus = 0xC01C000F + STATUS_FLT_DO_NOT_DETACH NTStatus = 0xC01C0010 + STATUS_FLT_INSTANCE_ALTITUDE_COLLISION NTStatus = 0xC01C0011 + STATUS_FLT_INSTANCE_NAME_COLLISION NTStatus = 0xC01C0012 + STATUS_FLT_FILTER_NOT_FOUND NTStatus = 0xC01C0013 + STATUS_FLT_VOLUME_NOT_FOUND NTStatus = 0xC01C0014 + STATUS_FLT_INSTANCE_NOT_FOUND NTStatus = 0xC01C0015 + STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND NTStatus = 0xC01C0016 + STATUS_FLT_INVALID_CONTEXT_REGISTRATION NTStatus = 0xC01C0017 + STATUS_FLT_NAME_CACHE_MISS NTStatus = 0xC01C0018 + STATUS_FLT_NO_DEVICE_OBJECT NTStatus = 0xC01C0019 + STATUS_FLT_VOLUME_ALREADY_MOUNTED NTStatus = 0xC01C001A + STATUS_FLT_ALREADY_ENLISTED NTStatus = 0xC01C001B + STATUS_FLT_CONTEXT_ALREADY_LINKED NTStatus = 0xC01C001C + STATUS_FLT_NO_WAITER_FOR_REPLY NTStatus = 0xC01C0020 + STATUS_FLT_REGISTRATION_BUSY NTStatus = 0xC01C0023 + STATUS_SXS_SECTION_NOT_FOUND NTStatus = 0xC0150001 + STATUS_SXS_CANT_GEN_ACTCTX NTStatus = 0xC0150002 + STATUS_SXS_INVALID_ACTCTXDATA_FORMAT NTStatus = 0xC0150003 + STATUS_SXS_ASSEMBLY_NOT_FOUND NTStatus = 0xC0150004 + STATUS_SXS_MANIFEST_FORMAT_ERROR NTStatus = 0xC0150005 + STATUS_SXS_MANIFEST_PARSE_ERROR NTStatus = 0xC0150006 + STATUS_SXS_ACTIVATION_CONTEXT_DISABLED NTStatus = 0xC0150007 + STATUS_SXS_KEY_NOT_FOUND NTStatus = 0xC0150008 + STATUS_SXS_VERSION_CONFLICT NTStatus = 0xC0150009 + STATUS_SXS_WRONG_SECTION_TYPE NTStatus = 0xC015000A + STATUS_SXS_THREAD_QUERIES_DISABLED NTStatus = 0xC015000B + STATUS_SXS_ASSEMBLY_MISSING NTStatus = 0xC015000C + STATUS_SXS_RELEASE_ACTIVATION_CONTEXT NTStatus = 0x4015000D + STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET NTStatus = 0xC015000E + STATUS_SXS_EARLY_DEACTIVATION NTStatus = 0xC015000F + STATUS_SXS_INVALID_DEACTIVATION NTStatus = 0xC0150010 + STATUS_SXS_MULTIPLE_DEACTIVATION NTStatus = 0xC0150011 + STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY NTStatus = 0xC0150012 + STATUS_SXS_PROCESS_TERMINATION_REQUESTED NTStatus = 0xC0150013 + STATUS_SXS_CORRUPT_ACTIVATION_STACK NTStatus = 0xC0150014 + STATUS_SXS_CORRUPTION NTStatus = 0xC0150015 + STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE NTStatus = 0xC0150016 + STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME NTStatus = 0xC0150017 + STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE NTStatus = 0xC0150018 + STATUS_SXS_IDENTITY_PARSE_ERROR NTStatus = 0xC0150019 + STATUS_SXS_COMPONENT_STORE_CORRUPT NTStatus = 0xC015001A + STATUS_SXS_FILE_HASH_MISMATCH NTStatus = 0xC015001B + STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT NTStatus = 0xC015001C + STATUS_SXS_IDENTITIES_DIFFERENT NTStatus = 0xC015001D + STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT NTStatus = 0xC015001E + STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY NTStatus = 0xC015001F + STATUS_ADVANCED_INSTALLER_FAILED NTStatus = 0xC0150020 + STATUS_XML_ENCODING_MISMATCH NTStatus = 0xC0150021 + STATUS_SXS_MANIFEST_TOO_BIG NTStatus = 0xC0150022 + STATUS_SXS_SETTING_NOT_REGISTERED NTStatus = 0xC0150023 + STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE NTStatus = 0xC0150024 + STATUS_SMI_PRIMITIVE_INSTALLER_FAILED NTStatus = 0xC0150025 + STATUS_GENERIC_COMMAND_FAILED NTStatus = 0xC0150026 + STATUS_SXS_FILE_HASH_MISSING NTStatus = 0xC0150027 + STATUS_CLUSTER_INVALID_NODE NTStatus = 0xC0130001 + STATUS_CLUSTER_NODE_EXISTS NTStatus = 0xC0130002 + STATUS_CLUSTER_JOIN_IN_PROGRESS NTStatus = 0xC0130003 + STATUS_CLUSTER_NODE_NOT_FOUND NTStatus = 0xC0130004 + STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND NTStatus = 0xC0130005 + STATUS_CLUSTER_NETWORK_EXISTS NTStatus = 0xC0130006 + STATUS_CLUSTER_NETWORK_NOT_FOUND NTStatus = 0xC0130007 + STATUS_CLUSTER_NETINTERFACE_EXISTS NTStatus = 0xC0130008 + STATUS_CLUSTER_NETINTERFACE_NOT_FOUND NTStatus = 0xC0130009 + STATUS_CLUSTER_INVALID_REQUEST NTStatus = 0xC013000A + STATUS_CLUSTER_INVALID_NETWORK_PROVIDER NTStatus = 0xC013000B + STATUS_CLUSTER_NODE_DOWN NTStatus = 0xC013000C + STATUS_CLUSTER_NODE_UNREACHABLE NTStatus = 0xC013000D + STATUS_CLUSTER_NODE_NOT_MEMBER NTStatus = 0xC013000E + STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS NTStatus = 0xC013000F + STATUS_CLUSTER_INVALID_NETWORK NTStatus = 0xC0130010 + STATUS_CLUSTER_NO_NET_ADAPTERS NTStatus = 0xC0130011 + STATUS_CLUSTER_NODE_UP NTStatus = 0xC0130012 + STATUS_CLUSTER_NODE_PAUSED NTStatus = 0xC0130013 + STATUS_CLUSTER_NODE_NOT_PAUSED NTStatus = 0xC0130014 + STATUS_CLUSTER_NO_SECURITY_CONTEXT NTStatus = 0xC0130015 + STATUS_CLUSTER_NETWORK_NOT_INTERNAL NTStatus = 0xC0130016 + STATUS_CLUSTER_POISONED NTStatus = 0xC0130017 + STATUS_CLUSTER_NON_CSV_PATH NTStatus = 0xC0130018 + STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL NTStatus = 0xC0130019 + STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS NTStatus = 0xC0130020 + STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR NTStatus = 0xC0130021 + STATUS_CLUSTER_CSV_REDIRECTED NTStatus = 0xC0130022 + STATUS_CLUSTER_CSV_NOT_REDIRECTED NTStatus = 0xC0130023 + STATUS_CLUSTER_CSV_VOLUME_DRAINING NTStatus = 0xC0130024 + STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS NTStatus = 0xC0130025 + STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL NTStatus = 0xC0130026 + STATUS_CLUSTER_CSV_NO_SNAPSHOTS NTStatus = 0xC0130027 + STATUS_CSV_IO_PAUSE_TIMEOUT NTStatus = 0xC0130028 + STATUS_CLUSTER_CSV_INVALID_HANDLE NTStatus = 0xC0130029 + STATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR NTStatus = 0xC0130030 + STATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED NTStatus = 0xC0130031 + STATUS_TRANSACTIONAL_CONFLICT NTStatus = 0xC0190001 + STATUS_INVALID_TRANSACTION NTStatus = 0xC0190002 + STATUS_TRANSACTION_NOT_ACTIVE NTStatus = 0xC0190003 + STATUS_TM_INITIALIZATION_FAILED NTStatus = 0xC0190004 + STATUS_RM_NOT_ACTIVE NTStatus = 0xC0190005 + STATUS_RM_METADATA_CORRUPT NTStatus = 0xC0190006 + STATUS_TRANSACTION_NOT_JOINED NTStatus = 0xC0190007 + STATUS_DIRECTORY_NOT_RM NTStatus = 0xC0190008 + STATUS_COULD_NOT_RESIZE_LOG NTStatus = 0x80190009 + STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE NTStatus = 0xC019000A + STATUS_LOG_RESIZE_INVALID_SIZE NTStatus = 0xC019000B + STATUS_REMOTE_FILE_VERSION_MISMATCH NTStatus = 0xC019000C + STATUS_CRM_PROTOCOL_ALREADY_EXISTS NTStatus = 0xC019000F + STATUS_TRANSACTION_PROPAGATION_FAILED NTStatus = 0xC0190010 + STATUS_CRM_PROTOCOL_NOT_FOUND NTStatus = 0xC0190011 + STATUS_TRANSACTION_SUPERIOR_EXISTS NTStatus = 0xC0190012 + STATUS_TRANSACTION_REQUEST_NOT_VALID NTStatus = 0xC0190013 + STATUS_TRANSACTION_NOT_REQUESTED NTStatus = 0xC0190014 + STATUS_TRANSACTION_ALREADY_ABORTED NTStatus = 0xC0190015 + STATUS_TRANSACTION_ALREADY_COMMITTED NTStatus = 0xC0190016 + STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER NTStatus = 0xC0190017 + STATUS_CURRENT_TRANSACTION_NOT_VALID NTStatus = 0xC0190018 + STATUS_LOG_GROWTH_FAILED NTStatus = 0xC0190019 + STATUS_OBJECT_NO_LONGER_EXISTS NTStatus = 0xC0190021 + STATUS_STREAM_MINIVERSION_NOT_FOUND NTStatus = 0xC0190022 + STATUS_STREAM_MINIVERSION_NOT_VALID NTStatus = 0xC0190023 + STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION NTStatus = 0xC0190024 + STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT NTStatus = 0xC0190025 + STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS NTStatus = 0xC0190026 + STATUS_HANDLE_NO_LONGER_VALID NTStatus = 0xC0190028 + STATUS_NO_TXF_METADATA NTStatus = 0x80190029 + STATUS_LOG_CORRUPTION_DETECTED NTStatus = 0xC0190030 + STATUS_CANT_RECOVER_WITH_HANDLE_OPEN NTStatus = 0x80190031 + STATUS_RM_DISCONNECTED NTStatus = 0xC0190032 + STATUS_ENLISTMENT_NOT_SUPERIOR NTStatus = 0xC0190033 + STATUS_RECOVERY_NOT_NEEDED NTStatus = 0x40190034 + STATUS_RM_ALREADY_STARTED NTStatus = 0x40190035 + STATUS_FILE_IDENTITY_NOT_PERSISTENT NTStatus = 0xC0190036 + STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY NTStatus = 0xC0190037 + STATUS_CANT_CROSS_RM_BOUNDARY NTStatus = 0xC0190038 + STATUS_TXF_DIR_NOT_EMPTY NTStatus = 0xC0190039 + STATUS_INDOUBT_TRANSACTIONS_EXIST NTStatus = 0xC019003A + STATUS_TM_VOLATILE NTStatus = 0xC019003B + STATUS_ROLLBACK_TIMER_EXPIRED NTStatus = 0xC019003C + STATUS_TXF_ATTRIBUTE_CORRUPT NTStatus = 0xC019003D + STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION NTStatus = 0xC019003E + STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED NTStatus = 0xC019003F + STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE NTStatus = 0xC0190040 + STATUS_TXF_METADATA_ALREADY_PRESENT NTStatus = 0x80190041 + STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET NTStatus = 0x80190042 + STATUS_TRANSACTION_REQUIRED_PROMOTION NTStatus = 0xC0190043 + STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION NTStatus = 0xC0190044 + STATUS_TRANSACTIONS_NOT_FROZEN NTStatus = 0xC0190045 + STATUS_TRANSACTION_FREEZE_IN_PROGRESS NTStatus = 0xC0190046 + STATUS_NOT_SNAPSHOT_VOLUME NTStatus = 0xC0190047 + STATUS_NO_SAVEPOINT_WITH_OPEN_FILES NTStatus = 0xC0190048 + STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION NTStatus = 0xC0190049 + STATUS_TM_IDENTITY_MISMATCH NTStatus = 0xC019004A + STATUS_FLOATED_SECTION NTStatus = 0xC019004B + STATUS_CANNOT_ACCEPT_TRANSACTED_WORK NTStatus = 0xC019004C + STATUS_CANNOT_ABORT_TRANSACTIONS NTStatus = 0xC019004D + STATUS_TRANSACTION_NOT_FOUND NTStatus = 0xC019004E + STATUS_RESOURCEMANAGER_NOT_FOUND NTStatus = 0xC019004F + STATUS_ENLISTMENT_NOT_FOUND NTStatus = 0xC0190050 + STATUS_TRANSACTIONMANAGER_NOT_FOUND NTStatus = 0xC0190051 + STATUS_TRANSACTIONMANAGER_NOT_ONLINE NTStatus = 0xC0190052 + STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION NTStatus = 0xC0190053 + STATUS_TRANSACTION_NOT_ROOT NTStatus = 0xC0190054 + STATUS_TRANSACTION_OBJECT_EXPIRED NTStatus = 0xC0190055 + STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION NTStatus = 0xC0190056 + STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED NTStatus = 0xC0190057 + STATUS_TRANSACTION_RECORD_TOO_LONG NTStatus = 0xC0190058 + STATUS_NO_LINK_TRACKING_IN_TRANSACTION NTStatus = 0xC0190059 + STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION NTStatus = 0xC019005A + STATUS_TRANSACTION_INTEGRITY_VIOLATED NTStatus = 0xC019005B + STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH NTStatus = 0xC019005C + STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT NTStatus = 0xC019005D + STATUS_TRANSACTION_MUST_WRITETHROUGH NTStatus = 0xC019005E + STATUS_TRANSACTION_NO_SUPERIOR NTStatus = 0xC019005F + STATUS_EXPIRED_HANDLE NTStatus = 0xC0190060 + STATUS_TRANSACTION_NOT_ENLISTED NTStatus = 0xC0190061 + STATUS_LOG_SECTOR_INVALID NTStatus = 0xC01A0001 + STATUS_LOG_SECTOR_PARITY_INVALID NTStatus = 0xC01A0002 + STATUS_LOG_SECTOR_REMAPPED NTStatus = 0xC01A0003 + STATUS_LOG_BLOCK_INCOMPLETE NTStatus = 0xC01A0004 + STATUS_LOG_INVALID_RANGE NTStatus = 0xC01A0005 + STATUS_LOG_BLOCKS_EXHAUSTED NTStatus = 0xC01A0006 + STATUS_LOG_READ_CONTEXT_INVALID NTStatus = 0xC01A0007 + STATUS_LOG_RESTART_INVALID NTStatus = 0xC01A0008 + STATUS_LOG_BLOCK_VERSION NTStatus = 0xC01A0009 + STATUS_LOG_BLOCK_INVALID NTStatus = 0xC01A000A + STATUS_LOG_READ_MODE_INVALID NTStatus = 0xC01A000B + STATUS_LOG_NO_RESTART NTStatus = 0x401A000C + STATUS_LOG_METADATA_CORRUPT NTStatus = 0xC01A000D + STATUS_LOG_METADATA_INVALID NTStatus = 0xC01A000E + STATUS_LOG_METADATA_INCONSISTENT NTStatus = 0xC01A000F + STATUS_LOG_RESERVATION_INVALID NTStatus = 0xC01A0010 + STATUS_LOG_CANT_DELETE NTStatus = 0xC01A0011 + STATUS_LOG_CONTAINER_LIMIT_EXCEEDED NTStatus = 0xC01A0012 + STATUS_LOG_START_OF_LOG NTStatus = 0xC01A0013 + STATUS_LOG_POLICY_ALREADY_INSTALLED NTStatus = 0xC01A0014 + STATUS_LOG_POLICY_NOT_INSTALLED NTStatus = 0xC01A0015 + STATUS_LOG_POLICY_INVALID NTStatus = 0xC01A0016 + STATUS_LOG_POLICY_CONFLICT NTStatus = 0xC01A0017 + STATUS_LOG_PINNED_ARCHIVE_TAIL NTStatus = 0xC01A0018 + STATUS_LOG_RECORD_NONEXISTENT NTStatus = 0xC01A0019 + STATUS_LOG_RECORDS_RESERVED_INVALID NTStatus = 0xC01A001A + STATUS_LOG_SPACE_RESERVED_INVALID NTStatus = 0xC01A001B + STATUS_LOG_TAIL_INVALID NTStatus = 0xC01A001C + STATUS_LOG_FULL NTStatus = 0xC01A001D + STATUS_LOG_MULTIPLEXED NTStatus = 0xC01A001E + STATUS_LOG_DEDICATED NTStatus = 0xC01A001F + STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS NTStatus = 0xC01A0020 + STATUS_LOG_ARCHIVE_IN_PROGRESS NTStatus = 0xC01A0021 + STATUS_LOG_EPHEMERAL NTStatus = 0xC01A0022 + STATUS_LOG_NOT_ENOUGH_CONTAINERS NTStatus = 0xC01A0023 + STATUS_LOG_CLIENT_ALREADY_REGISTERED NTStatus = 0xC01A0024 + STATUS_LOG_CLIENT_NOT_REGISTERED NTStatus = 0xC01A0025 + STATUS_LOG_FULL_HANDLER_IN_PROGRESS NTStatus = 0xC01A0026 + STATUS_LOG_CONTAINER_READ_FAILED NTStatus = 0xC01A0027 + STATUS_LOG_CONTAINER_WRITE_FAILED NTStatus = 0xC01A0028 + STATUS_LOG_CONTAINER_OPEN_FAILED NTStatus = 0xC01A0029 + STATUS_LOG_CONTAINER_STATE_INVALID NTStatus = 0xC01A002A + STATUS_LOG_STATE_INVALID NTStatus = 0xC01A002B + STATUS_LOG_PINNED NTStatus = 0xC01A002C + STATUS_LOG_METADATA_FLUSH_FAILED NTStatus = 0xC01A002D + STATUS_LOG_INCONSISTENT_SECURITY NTStatus = 0xC01A002E + STATUS_LOG_APPENDED_FLUSH_FAILED NTStatus = 0xC01A002F + STATUS_LOG_PINNED_RESERVATION NTStatus = 0xC01A0030 + STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD NTStatus = 0xC01B00EA + STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED NTStatus = 0x801B00EB + STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST NTStatus = 0x401B00EC + STATUS_MONITOR_NO_DESCRIPTOR NTStatus = 0xC01D0001 + STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT NTStatus = 0xC01D0002 + STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM NTStatus = 0xC01D0003 + STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK NTStatus = 0xC01D0004 + STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED NTStatus = 0xC01D0005 + STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK NTStatus = 0xC01D0006 + STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK NTStatus = 0xC01D0007 + STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA NTStatus = 0xC01D0008 + STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK NTStatus = 0xC01D0009 + STATUS_MONITOR_INVALID_MANUFACTURE_DATE NTStatus = 0xC01D000A + STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER NTStatus = 0xC01E0000 + STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER NTStatus = 0xC01E0001 + STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER NTStatus = 0xC01E0002 + STATUS_GRAPHICS_ADAPTER_WAS_RESET NTStatus = 0xC01E0003 + STATUS_GRAPHICS_INVALID_DRIVER_MODEL NTStatus = 0xC01E0004 + STATUS_GRAPHICS_PRESENT_MODE_CHANGED NTStatus = 0xC01E0005 + STATUS_GRAPHICS_PRESENT_OCCLUDED NTStatus = 0xC01E0006 + STATUS_GRAPHICS_PRESENT_DENIED NTStatus = 0xC01E0007 + STATUS_GRAPHICS_CANNOTCOLORCONVERT NTStatus = 0xC01E0008 + STATUS_GRAPHICS_DRIVER_MISMATCH NTStatus = 0xC01E0009 + STATUS_GRAPHICS_PARTIAL_DATA_POPULATED NTStatus = 0x401E000A + STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED NTStatus = 0xC01E000B + STATUS_GRAPHICS_PRESENT_UNOCCLUDED NTStatus = 0xC01E000C + STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE NTStatus = 0xC01E000D + STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED NTStatus = 0xC01E000E + STATUS_GRAPHICS_PRESENT_INVALID_WINDOW NTStatus = 0xC01E000F + STATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND NTStatus = 0xC01E0010 + STATUS_GRAPHICS_VAIL_STATE_CHANGED NTStatus = 0xC01E0011 + STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN NTStatus = 0xC01E0012 + STATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED NTStatus = 0xC01E0013 + STATUS_GRAPHICS_NO_VIDEO_MEMORY NTStatus = 0xC01E0100 + STATUS_GRAPHICS_CANT_LOCK_MEMORY NTStatus = 0xC01E0101 + STATUS_GRAPHICS_ALLOCATION_BUSY NTStatus = 0xC01E0102 + STATUS_GRAPHICS_TOO_MANY_REFERENCES NTStatus = 0xC01E0103 + STATUS_GRAPHICS_TRY_AGAIN_LATER NTStatus = 0xC01E0104 + STATUS_GRAPHICS_TRY_AGAIN_NOW NTStatus = 0xC01E0105 + STATUS_GRAPHICS_ALLOCATION_INVALID NTStatus = 0xC01E0106 + STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE NTStatus = 0xC01E0107 + STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED NTStatus = 0xC01E0108 + STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION NTStatus = 0xC01E0109 + STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE NTStatus = 0xC01E0110 + STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION NTStatus = 0xC01E0111 + STATUS_GRAPHICS_ALLOCATION_CLOSED NTStatus = 0xC01E0112 + STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE NTStatus = 0xC01E0113 + STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE NTStatus = 0xC01E0114 + STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE NTStatus = 0xC01E0115 + STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST NTStatus = 0xC01E0116 + STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE NTStatus = 0xC01E0200 + STATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION NTStatus = 0x401E0201 + STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY NTStatus = 0xC01E0300 + STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED NTStatus = 0xC01E0301 + STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED NTStatus = 0xC01E0302 + STATUS_GRAPHICS_INVALID_VIDPN NTStatus = 0xC01E0303 + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE NTStatus = 0xC01E0304 + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET NTStatus = 0xC01E0305 + STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED NTStatus = 0xC01E0306 + STATUS_GRAPHICS_MODE_NOT_PINNED NTStatus = 0x401E0307 + STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET NTStatus = 0xC01E0308 + STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET NTStatus = 0xC01E0309 + STATUS_GRAPHICS_INVALID_FREQUENCY NTStatus = 0xC01E030A + STATUS_GRAPHICS_INVALID_ACTIVE_REGION NTStatus = 0xC01E030B + STATUS_GRAPHICS_INVALID_TOTAL_REGION NTStatus = 0xC01E030C + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE NTStatus = 0xC01E0310 + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE NTStatus = 0xC01E0311 + STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET NTStatus = 0xC01E0312 + STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY NTStatus = 0xC01E0313 + STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET NTStatus = 0xC01E0314 + STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET NTStatus = 0xC01E0315 + STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET NTStatus = 0xC01E0316 + STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET NTStatus = 0xC01E0317 + STATUS_GRAPHICS_TARGET_ALREADY_IN_SET NTStatus = 0xC01E0318 + STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH NTStatus = 0xC01E0319 + STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY NTStatus = 0xC01E031A + STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET NTStatus = 0xC01E031B + STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE NTStatus = 0xC01E031C + STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET NTStatus = 0xC01E031D + STATUS_GRAPHICS_NO_PREFERRED_MODE NTStatus = 0x401E031E + STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET NTStatus = 0xC01E031F + STATUS_GRAPHICS_STALE_MODESET NTStatus = 0xC01E0320 + STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET NTStatus = 0xC01E0321 + STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE NTStatus = 0xC01E0322 + STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN NTStatus = 0xC01E0323 + STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE NTStatus = 0xC01E0324 + STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION NTStatus = 0xC01E0325 + STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES NTStatus = 0xC01E0326 + STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY NTStatus = 0xC01E0327 + STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE NTStatus = 0xC01E0328 + STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET NTStatus = 0xC01E0329 + STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET NTStatus = 0xC01E032A + STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR NTStatus = 0xC01E032B + STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET NTStatus = 0xC01E032C + STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET NTStatus = 0xC01E032D + STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE NTStatus = 0xC01E032E + STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE NTStatus = 0xC01E032F + STATUS_GRAPHICS_RESOURCES_NOT_RELATED NTStatus = 0xC01E0330 + STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE NTStatus = 0xC01E0331 + STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE NTStatus = 0xC01E0332 + STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET NTStatus = 0xC01E0333 + STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER NTStatus = 0xC01E0334 + STATUS_GRAPHICS_NO_VIDPNMGR NTStatus = 0xC01E0335 + STATUS_GRAPHICS_NO_ACTIVE_VIDPN NTStatus = 0xC01E0336 + STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY NTStatus = 0xC01E0337 + STATUS_GRAPHICS_MONITOR_NOT_CONNECTED NTStatus = 0xC01E0338 + STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY NTStatus = 0xC01E0339 + STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE NTStatus = 0xC01E033A + STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE NTStatus = 0xC01E033B + STATUS_GRAPHICS_INVALID_STRIDE NTStatus = 0xC01E033C + STATUS_GRAPHICS_INVALID_PIXELFORMAT NTStatus = 0xC01E033D + STATUS_GRAPHICS_INVALID_COLORBASIS NTStatus = 0xC01E033E + STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE NTStatus = 0xC01E033F + STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY NTStatus = 0xC01E0340 + STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT NTStatus = 0xC01E0341 + STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE NTStatus = 0xC01E0342 + STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN NTStatus = 0xC01E0343 + STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL NTStatus = 0xC01E0344 + STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION NTStatus = 0xC01E0345 + STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED NTStatus = 0xC01E0346 + STATUS_GRAPHICS_INVALID_GAMMA_RAMP NTStatus = 0xC01E0347 + STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED NTStatus = 0xC01E0348 + STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED NTStatus = 0xC01E0349 + STATUS_GRAPHICS_MODE_NOT_IN_MODESET NTStatus = 0xC01E034A + STATUS_GRAPHICS_DATASET_IS_EMPTY NTStatus = 0x401E034B + STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET NTStatus = 0x401E034C + STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON NTStatus = 0xC01E034D + STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE NTStatus = 0xC01E034E + STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE NTStatus = 0xC01E034F + STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS NTStatus = 0xC01E0350 + STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED NTStatus = 0x401E0351 + STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING NTStatus = 0xC01E0352 + STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED NTStatus = 0xC01E0353 + STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS NTStatus = 0xC01E0354 + STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT NTStatus = 0xC01E0355 + STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM NTStatus = 0xC01E0356 + STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN NTStatus = 0xC01E0357 + STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT NTStatus = 0xC01E0358 + STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED NTStatus = 0xC01E0359 + STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION NTStatus = 0xC01E035A + STATUS_GRAPHICS_INVALID_CLIENT_TYPE NTStatus = 0xC01E035B + STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET NTStatus = 0xC01E035C + STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED NTStatus = 0xC01E0400 + STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED NTStatus = 0xC01E0401 + STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS NTStatus = 0x401E042F + STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER NTStatus = 0xC01E0430 + STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED NTStatus = 0xC01E0431 + STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED NTStatus = 0xC01E0432 + STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY NTStatus = 0xC01E0433 + STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED NTStatus = 0xC01E0434 + STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON NTStatus = 0xC01E0435 + STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE NTStatus = 0xC01E0436 + STATUS_GRAPHICS_LEADLINK_START_DEFERRED NTStatus = 0x401E0437 + STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER NTStatus = 0xC01E0438 + STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY NTStatus = 0x401E0439 + STATUS_GRAPHICS_START_DEFERRED NTStatus = 0x401E043A + STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED NTStatus = 0xC01E043B + STATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS NTStatus = 0x401E043C + STATUS_GRAPHICS_OPM_NOT_SUPPORTED NTStatus = 0xC01E0500 + STATUS_GRAPHICS_COPP_NOT_SUPPORTED NTStatus = 0xC01E0501 + STATUS_GRAPHICS_UAB_NOT_SUPPORTED NTStatus = 0xC01E0502 + STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS NTStatus = 0xC01E0503 + STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST NTStatus = 0xC01E0505 + STATUS_GRAPHICS_OPM_INTERNAL_ERROR NTStatus = 0xC01E050B + STATUS_GRAPHICS_OPM_INVALID_HANDLE NTStatus = 0xC01E050C + STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH NTStatus = 0xC01E050E + STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED NTStatus = 0xC01E050F + STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED NTStatus = 0xC01E0510 + STATUS_GRAPHICS_PVP_HFS_FAILED NTStatus = 0xC01E0511 + STATUS_GRAPHICS_OPM_INVALID_SRM NTStatus = 0xC01E0512 + STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP NTStatus = 0xC01E0513 + STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP NTStatus = 0xC01E0514 + STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA NTStatus = 0xC01E0515 + STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET NTStatus = 0xC01E0516 + STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH NTStatus = 0xC01E0517 + STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE NTStatus = 0xC01E0518 + STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS NTStatus = 0xC01E051A + STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS NTStatus = 0xC01E051C + STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST NTStatus = 0xC01E051D + STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR NTStatus = 0xC01E051E + STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS NTStatus = 0xC01E051F + STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED NTStatus = 0xC01E0520 + STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST NTStatus = 0xC01E0521 + STATUS_GRAPHICS_I2C_NOT_SUPPORTED NTStatus = 0xC01E0580 + STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST NTStatus = 0xC01E0581 + STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA NTStatus = 0xC01E0582 + STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA NTStatus = 0xC01E0583 + STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED NTStatus = 0xC01E0584 + STATUS_GRAPHICS_DDCCI_INVALID_DATA NTStatus = 0xC01E0585 + STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE NTStatus = 0xC01E0586 + STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING NTStatus = 0xC01E0587 + STATUS_GRAPHICS_MCA_INTERNAL_ERROR NTStatus = 0xC01E0588 + STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND NTStatus = 0xC01E0589 + STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH NTStatus = 0xC01E058A + STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM NTStatus = 0xC01E058B + STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE NTStatus = 0xC01E058C + STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS NTStatus = 0xC01E058D + STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED NTStatus = 0xC01E05E0 + STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME NTStatus = 0xC01E05E1 + STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP NTStatus = 0xC01E05E2 + STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED NTStatus = 0xC01E05E3 + STATUS_GRAPHICS_INVALID_POINTER NTStatus = 0xC01E05E4 + STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE NTStatus = 0xC01E05E5 + STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL NTStatus = 0xC01E05E6 + STATUS_GRAPHICS_INTERNAL_ERROR NTStatus = 0xC01E05E7 + STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS NTStatus = 0xC01E05E8 + STATUS_FVE_LOCKED_VOLUME NTStatus = 0xC0210000 + STATUS_FVE_NOT_ENCRYPTED NTStatus = 0xC0210001 + STATUS_FVE_BAD_INFORMATION NTStatus = 0xC0210002 + STATUS_FVE_TOO_SMALL NTStatus = 0xC0210003 + STATUS_FVE_FAILED_WRONG_FS NTStatus = 0xC0210004 + STATUS_FVE_BAD_PARTITION_SIZE NTStatus = 0xC0210005 + STATUS_FVE_FS_NOT_EXTENDED NTStatus = 0xC0210006 + STATUS_FVE_FS_MOUNTED NTStatus = 0xC0210007 + STATUS_FVE_NO_LICENSE NTStatus = 0xC0210008 + STATUS_FVE_ACTION_NOT_ALLOWED NTStatus = 0xC0210009 + STATUS_FVE_BAD_DATA NTStatus = 0xC021000A + STATUS_FVE_VOLUME_NOT_BOUND NTStatus = 0xC021000B + STATUS_FVE_NOT_DATA_VOLUME NTStatus = 0xC021000C + STATUS_FVE_CONV_READ_ERROR NTStatus = 0xC021000D + STATUS_FVE_CONV_WRITE_ERROR NTStatus = 0xC021000E + STATUS_FVE_OVERLAPPED_UPDATE NTStatus = 0xC021000F + STATUS_FVE_FAILED_SECTOR_SIZE NTStatus = 0xC0210010 + STATUS_FVE_FAILED_AUTHENTICATION NTStatus = 0xC0210011 + STATUS_FVE_NOT_OS_VOLUME NTStatus = 0xC0210012 + STATUS_FVE_KEYFILE_NOT_FOUND NTStatus = 0xC0210013 + STATUS_FVE_KEYFILE_INVALID NTStatus = 0xC0210014 + STATUS_FVE_KEYFILE_NO_VMK NTStatus = 0xC0210015 + STATUS_FVE_TPM_DISABLED NTStatus = 0xC0210016 + STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO NTStatus = 0xC0210017 + STATUS_FVE_TPM_INVALID_PCR NTStatus = 0xC0210018 + STATUS_FVE_TPM_NO_VMK NTStatus = 0xC0210019 + STATUS_FVE_PIN_INVALID NTStatus = 0xC021001A + STATUS_FVE_AUTH_INVALID_APPLICATION NTStatus = 0xC021001B + STATUS_FVE_AUTH_INVALID_CONFIG NTStatus = 0xC021001C + STATUS_FVE_DEBUGGER_ENABLED NTStatus = 0xC021001D + STATUS_FVE_DRY_RUN_FAILED NTStatus = 0xC021001E + STATUS_FVE_BAD_METADATA_POINTER NTStatus = 0xC021001F + STATUS_FVE_OLD_METADATA_COPY NTStatus = 0xC0210020 + STATUS_FVE_REBOOT_REQUIRED NTStatus = 0xC0210021 + STATUS_FVE_RAW_ACCESS NTStatus = 0xC0210022 + STATUS_FVE_RAW_BLOCKED NTStatus = 0xC0210023 + STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY NTStatus = 0xC0210024 + STATUS_FVE_MOR_FAILED NTStatus = 0xC0210025 + STATUS_FVE_NO_FEATURE_LICENSE NTStatus = 0xC0210026 + STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED NTStatus = 0xC0210027 + STATUS_FVE_CONV_RECOVERY_FAILED NTStatus = 0xC0210028 + STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG NTStatus = 0xC0210029 + STATUS_FVE_INVALID_DATUM_TYPE NTStatus = 0xC021002A + STATUS_FVE_VOLUME_TOO_SMALL NTStatus = 0xC0210030 + STATUS_FVE_ENH_PIN_INVALID NTStatus = 0xC0210031 + STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE NTStatus = 0xC0210032 + STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE NTStatus = 0xC0210033 + STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK NTStatus = 0xC0210034 + STATUS_FVE_NOT_ALLOWED_ON_CLUSTER NTStatus = 0xC0210035 + STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING NTStatus = 0xC0210036 + STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE NTStatus = 0xC0210037 + STATUS_FVE_EDRIVE_DRY_RUN_FAILED NTStatus = 0xC0210038 + STATUS_FVE_SECUREBOOT_DISABLED NTStatus = 0xC0210039 + STATUS_FVE_SECUREBOOT_CONFIG_CHANGE NTStatus = 0xC021003A + STATUS_FVE_DEVICE_LOCKEDOUT NTStatus = 0xC021003B + STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT NTStatus = 0xC021003C + STATUS_FVE_NOT_DE_VOLUME NTStatus = 0xC021003D + STATUS_FVE_PROTECTION_DISABLED NTStatus = 0xC021003E + STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED NTStatus = 0xC021003F + STATUS_FVE_OSV_KSR_NOT_ALLOWED NTStatus = 0xC0210040 + STATUS_FWP_CALLOUT_NOT_FOUND NTStatus = 0xC0220001 + STATUS_FWP_CONDITION_NOT_FOUND NTStatus = 0xC0220002 + STATUS_FWP_FILTER_NOT_FOUND NTStatus = 0xC0220003 + STATUS_FWP_LAYER_NOT_FOUND NTStatus = 0xC0220004 + STATUS_FWP_PROVIDER_NOT_FOUND NTStatus = 0xC0220005 + STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND NTStatus = 0xC0220006 + STATUS_FWP_SUBLAYER_NOT_FOUND NTStatus = 0xC0220007 + STATUS_FWP_NOT_FOUND NTStatus = 0xC0220008 + STATUS_FWP_ALREADY_EXISTS NTStatus = 0xC0220009 + STATUS_FWP_IN_USE NTStatus = 0xC022000A + STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS NTStatus = 0xC022000B + STATUS_FWP_WRONG_SESSION NTStatus = 0xC022000C + STATUS_FWP_NO_TXN_IN_PROGRESS NTStatus = 0xC022000D + STATUS_FWP_TXN_IN_PROGRESS NTStatus = 0xC022000E + STATUS_FWP_TXN_ABORTED NTStatus = 0xC022000F + STATUS_FWP_SESSION_ABORTED NTStatus = 0xC0220010 + STATUS_FWP_INCOMPATIBLE_TXN NTStatus = 0xC0220011 + STATUS_FWP_TIMEOUT NTStatus = 0xC0220012 + STATUS_FWP_NET_EVENTS_DISABLED NTStatus = 0xC0220013 + STATUS_FWP_INCOMPATIBLE_LAYER NTStatus = 0xC0220014 + STATUS_FWP_KM_CLIENTS_ONLY NTStatus = 0xC0220015 + STATUS_FWP_LIFETIME_MISMATCH NTStatus = 0xC0220016 + STATUS_FWP_BUILTIN_OBJECT NTStatus = 0xC0220017 + STATUS_FWP_TOO_MANY_CALLOUTS NTStatus = 0xC0220018 + STATUS_FWP_NOTIFICATION_DROPPED NTStatus = 0xC0220019 + STATUS_FWP_TRAFFIC_MISMATCH NTStatus = 0xC022001A + STATUS_FWP_INCOMPATIBLE_SA_STATE NTStatus = 0xC022001B + STATUS_FWP_NULL_POINTER NTStatus = 0xC022001C + STATUS_FWP_INVALID_ENUMERATOR NTStatus = 0xC022001D + STATUS_FWP_INVALID_FLAGS NTStatus = 0xC022001E + STATUS_FWP_INVALID_NET_MASK NTStatus = 0xC022001F + STATUS_FWP_INVALID_RANGE NTStatus = 0xC0220020 + STATUS_FWP_INVALID_INTERVAL NTStatus = 0xC0220021 + STATUS_FWP_ZERO_LENGTH_ARRAY NTStatus = 0xC0220022 + STATUS_FWP_NULL_DISPLAY_NAME NTStatus = 0xC0220023 + STATUS_FWP_INVALID_ACTION_TYPE NTStatus = 0xC0220024 + STATUS_FWP_INVALID_WEIGHT NTStatus = 0xC0220025 + STATUS_FWP_MATCH_TYPE_MISMATCH NTStatus = 0xC0220026 + STATUS_FWP_TYPE_MISMATCH NTStatus = 0xC0220027 + STATUS_FWP_OUT_OF_BOUNDS NTStatus = 0xC0220028 + STATUS_FWP_RESERVED NTStatus = 0xC0220029 + STATUS_FWP_DUPLICATE_CONDITION NTStatus = 0xC022002A + STATUS_FWP_DUPLICATE_KEYMOD NTStatus = 0xC022002B + STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER NTStatus = 0xC022002C + STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER NTStatus = 0xC022002D + STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER NTStatus = 0xC022002E + STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT NTStatus = 0xC022002F + STATUS_FWP_INCOMPATIBLE_AUTH_METHOD NTStatus = 0xC0220030 + STATUS_FWP_INCOMPATIBLE_DH_GROUP NTStatus = 0xC0220031 + STATUS_FWP_EM_NOT_SUPPORTED NTStatus = 0xC0220032 + STATUS_FWP_NEVER_MATCH NTStatus = 0xC0220033 + STATUS_FWP_PROVIDER_CONTEXT_MISMATCH NTStatus = 0xC0220034 + STATUS_FWP_INVALID_PARAMETER NTStatus = 0xC0220035 + STATUS_FWP_TOO_MANY_SUBLAYERS NTStatus = 0xC0220036 + STATUS_FWP_CALLOUT_NOTIFICATION_FAILED NTStatus = 0xC0220037 + STATUS_FWP_INVALID_AUTH_TRANSFORM NTStatus = 0xC0220038 + STATUS_FWP_INVALID_CIPHER_TRANSFORM NTStatus = 0xC0220039 + STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM NTStatus = 0xC022003A + STATUS_FWP_INVALID_TRANSFORM_COMBINATION NTStatus = 0xC022003B + STATUS_FWP_DUPLICATE_AUTH_METHOD NTStatus = 0xC022003C + STATUS_FWP_INVALID_TUNNEL_ENDPOINT NTStatus = 0xC022003D + STATUS_FWP_L2_DRIVER_NOT_READY NTStatus = 0xC022003E + STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED NTStatus = 0xC022003F + STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL NTStatus = 0xC0220040 + STATUS_FWP_CONNECTIONS_DISABLED NTStatus = 0xC0220041 + STATUS_FWP_INVALID_DNS_NAME NTStatus = 0xC0220042 + STATUS_FWP_STILL_ON NTStatus = 0xC0220043 + STATUS_FWP_IKEEXT_NOT_RUNNING NTStatus = 0xC0220044 + STATUS_FWP_TCPIP_NOT_READY NTStatus = 0xC0220100 + STATUS_FWP_INJECT_HANDLE_CLOSING NTStatus = 0xC0220101 + STATUS_FWP_INJECT_HANDLE_STALE NTStatus = 0xC0220102 + STATUS_FWP_CANNOT_PEND NTStatus = 0xC0220103 + STATUS_FWP_DROP_NOICMP NTStatus = 0xC0220104 + STATUS_NDIS_CLOSING NTStatus = 0xC0230002 + STATUS_NDIS_BAD_VERSION NTStatus = 0xC0230004 + STATUS_NDIS_BAD_CHARACTERISTICS NTStatus = 0xC0230005 + STATUS_NDIS_ADAPTER_NOT_FOUND NTStatus = 0xC0230006 + STATUS_NDIS_OPEN_FAILED NTStatus = 0xC0230007 + STATUS_NDIS_DEVICE_FAILED NTStatus = 0xC0230008 + STATUS_NDIS_MULTICAST_FULL NTStatus = 0xC0230009 + STATUS_NDIS_MULTICAST_EXISTS NTStatus = 0xC023000A + STATUS_NDIS_MULTICAST_NOT_FOUND NTStatus = 0xC023000B + STATUS_NDIS_REQUEST_ABORTED NTStatus = 0xC023000C + STATUS_NDIS_RESET_IN_PROGRESS NTStatus = 0xC023000D + STATUS_NDIS_NOT_SUPPORTED NTStatus = 0xC02300BB + STATUS_NDIS_INVALID_PACKET NTStatus = 0xC023000F + STATUS_NDIS_ADAPTER_NOT_READY NTStatus = 0xC0230011 + STATUS_NDIS_INVALID_LENGTH NTStatus = 0xC0230014 + STATUS_NDIS_INVALID_DATA NTStatus = 0xC0230015 + STATUS_NDIS_BUFFER_TOO_SHORT NTStatus = 0xC0230016 + STATUS_NDIS_INVALID_OID NTStatus = 0xC0230017 + STATUS_NDIS_ADAPTER_REMOVED NTStatus = 0xC0230018 + STATUS_NDIS_UNSUPPORTED_MEDIA NTStatus = 0xC0230019 + STATUS_NDIS_GROUP_ADDRESS_IN_USE NTStatus = 0xC023001A + STATUS_NDIS_FILE_NOT_FOUND NTStatus = 0xC023001B + STATUS_NDIS_ERROR_READING_FILE NTStatus = 0xC023001C + STATUS_NDIS_ALREADY_MAPPED NTStatus = 0xC023001D + STATUS_NDIS_RESOURCE_CONFLICT NTStatus = 0xC023001E + STATUS_NDIS_MEDIA_DISCONNECTED NTStatus = 0xC023001F + STATUS_NDIS_INVALID_ADDRESS NTStatus = 0xC0230022 + STATUS_NDIS_INVALID_DEVICE_REQUEST NTStatus = 0xC0230010 + STATUS_NDIS_PAUSED NTStatus = 0xC023002A + STATUS_NDIS_INTERFACE_NOT_FOUND NTStatus = 0xC023002B + STATUS_NDIS_UNSUPPORTED_REVISION NTStatus = 0xC023002C + STATUS_NDIS_INVALID_PORT NTStatus = 0xC023002D + STATUS_NDIS_INVALID_PORT_STATE NTStatus = 0xC023002E + STATUS_NDIS_LOW_POWER_STATE NTStatus = 0xC023002F + STATUS_NDIS_REINIT_REQUIRED NTStatus = 0xC0230030 + STATUS_NDIS_NO_QUEUES NTStatus = 0xC0230031 + STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED NTStatus = 0xC0232000 + STATUS_NDIS_DOT11_MEDIA_IN_USE NTStatus = 0xC0232001 + STATUS_NDIS_DOT11_POWER_STATE_INVALID NTStatus = 0xC0232002 + STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL NTStatus = 0xC0232003 + STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL NTStatus = 0xC0232004 + STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE NTStatus = 0xC0232005 + STATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE NTStatus = 0xC0232006 + STATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED NTStatus = 0xC0232007 + STATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED NTStatus = 0xC0232008 + STATUS_NDIS_INDICATION_REQUIRED NTStatus = 0x40230001 + STATUS_NDIS_OFFLOAD_POLICY NTStatus = 0xC023100F + STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED NTStatus = 0xC0231012 + STATUS_NDIS_OFFLOAD_PATH_REJECTED NTStatus = 0xC0231013 + STATUS_TPM_ERROR_MASK NTStatus = 0xC0290000 + STATUS_TPM_AUTHFAIL NTStatus = 0xC0290001 + STATUS_TPM_BADINDEX NTStatus = 0xC0290002 + STATUS_TPM_BAD_PARAMETER NTStatus = 0xC0290003 + STATUS_TPM_AUDITFAILURE NTStatus = 0xC0290004 + STATUS_TPM_CLEAR_DISABLED NTStatus = 0xC0290005 + STATUS_TPM_DEACTIVATED NTStatus = 0xC0290006 + STATUS_TPM_DISABLED NTStatus = 0xC0290007 + STATUS_TPM_DISABLED_CMD NTStatus = 0xC0290008 + STATUS_TPM_FAIL NTStatus = 0xC0290009 + STATUS_TPM_BAD_ORDINAL NTStatus = 0xC029000A + STATUS_TPM_INSTALL_DISABLED NTStatus = 0xC029000B + STATUS_TPM_INVALID_KEYHANDLE NTStatus = 0xC029000C + STATUS_TPM_KEYNOTFOUND NTStatus = 0xC029000D + STATUS_TPM_INAPPROPRIATE_ENC NTStatus = 0xC029000E + STATUS_TPM_MIGRATEFAIL NTStatus = 0xC029000F + STATUS_TPM_INVALID_PCR_INFO NTStatus = 0xC0290010 + STATUS_TPM_NOSPACE NTStatus = 0xC0290011 + STATUS_TPM_NOSRK NTStatus = 0xC0290012 + STATUS_TPM_NOTSEALED_BLOB NTStatus = 0xC0290013 + STATUS_TPM_OWNER_SET NTStatus = 0xC0290014 + STATUS_TPM_RESOURCES NTStatus = 0xC0290015 + STATUS_TPM_SHORTRANDOM NTStatus = 0xC0290016 + STATUS_TPM_SIZE NTStatus = 0xC0290017 + STATUS_TPM_WRONGPCRVAL NTStatus = 0xC0290018 + STATUS_TPM_BAD_PARAM_SIZE NTStatus = 0xC0290019 + STATUS_TPM_SHA_THREAD NTStatus = 0xC029001A + STATUS_TPM_SHA_ERROR NTStatus = 0xC029001B + STATUS_TPM_FAILEDSELFTEST NTStatus = 0xC029001C + STATUS_TPM_AUTH2FAIL NTStatus = 0xC029001D + STATUS_TPM_BADTAG NTStatus = 0xC029001E + STATUS_TPM_IOERROR NTStatus = 0xC029001F + STATUS_TPM_ENCRYPT_ERROR NTStatus = 0xC0290020 + STATUS_TPM_DECRYPT_ERROR NTStatus = 0xC0290021 + STATUS_TPM_INVALID_AUTHHANDLE NTStatus = 0xC0290022 + STATUS_TPM_NO_ENDORSEMENT NTStatus = 0xC0290023 + STATUS_TPM_INVALID_KEYUSAGE NTStatus = 0xC0290024 + STATUS_TPM_WRONG_ENTITYTYPE NTStatus = 0xC0290025 + STATUS_TPM_INVALID_POSTINIT NTStatus = 0xC0290026 + STATUS_TPM_INAPPROPRIATE_SIG NTStatus = 0xC0290027 + STATUS_TPM_BAD_KEY_PROPERTY NTStatus = 0xC0290028 + STATUS_TPM_BAD_MIGRATION NTStatus = 0xC0290029 + STATUS_TPM_BAD_SCHEME NTStatus = 0xC029002A + STATUS_TPM_BAD_DATASIZE NTStatus = 0xC029002B + STATUS_TPM_BAD_MODE NTStatus = 0xC029002C + STATUS_TPM_BAD_PRESENCE NTStatus = 0xC029002D + STATUS_TPM_BAD_VERSION NTStatus = 0xC029002E + STATUS_TPM_NO_WRAP_TRANSPORT NTStatus = 0xC029002F + STATUS_TPM_AUDITFAIL_UNSUCCESSFUL NTStatus = 0xC0290030 + STATUS_TPM_AUDITFAIL_SUCCESSFUL NTStatus = 0xC0290031 + STATUS_TPM_NOTRESETABLE NTStatus = 0xC0290032 + STATUS_TPM_NOTLOCAL NTStatus = 0xC0290033 + STATUS_TPM_BAD_TYPE NTStatus = 0xC0290034 + STATUS_TPM_INVALID_RESOURCE NTStatus = 0xC0290035 + STATUS_TPM_NOTFIPS NTStatus = 0xC0290036 + STATUS_TPM_INVALID_FAMILY NTStatus = 0xC0290037 + STATUS_TPM_NO_NV_PERMISSION NTStatus = 0xC0290038 + STATUS_TPM_REQUIRES_SIGN NTStatus = 0xC0290039 + STATUS_TPM_KEY_NOTSUPPORTED NTStatus = 0xC029003A + STATUS_TPM_AUTH_CONFLICT NTStatus = 0xC029003B + STATUS_TPM_AREA_LOCKED NTStatus = 0xC029003C + STATUS_TPM_BAD_LOCALITY NTStatus = 0xC029003D + STATUS_TPM_READ_ONLY NTStatus = 0xC029003E + STATUS_TPM_PER_NOWRITE NTStatus = 0xC029003F + STATUS_TPM_FAMILYCOUNT NTStatus = 0xC0290040 + STATUS_TPM_WRITE_LOCKED NTStatus = 0xC0290041 + STATUS_TPM_BAD_ATTRIBUTES NTStatus = 0xC0290042 + STATUS_TPM_INVALID_STRUCTURE NTStatus = 0xC0290043 + STATUS_TPM_KEY_OWNER_CONTROL NTStatus = 0xC0290044 + STATUS_TPM_BAD_COUNTER NTStatus = 0xC0290045 + STATUS_TPM_NOT_FULLWRITE NTStatus = 0xC0290046 + STATUS_TPM_CONTEXT_GAP NTStatus = 0xC0290047 + STATUS_TPM_MAXNVWRITES NTStatus = 0xC0290048 + STATUS_TPM_NOOPERATOR NTStatus = 0xC0290049 + STATUS_TPM_RESOURCEMISSING NTStatus = 0xC029004A + STATUS_TPM_DELEGATE_LOCK NTStatus = 0xC029004B + STATUS_TPM_DELEGATE_FAMILY NTStatus = 0xC029004C + STATUS_TPM_DELEGATE_ADMIN NTStatus = 0xC029004D + STATUS_TPM_TRANSPORT_NOTEXCLUSIVE NTStatus = 0xC029004E + STATUS_TPM_OWNER_CONTROL NTStatus = 0xC029004F + STATUS_TPM_DAA_RESOURCES NTStatus = 0xC0290050 + STATUS_TPM_DAA_INPUT_DATA0 NTStatus = 0xC0290051 + STATUS_TPM_DAA_INPUT_DATA1 NTStatus = 0xC0290052 + STATUS_TPM_DAA_ISSUER_SETTINGS NTStatus = 0xC0290053 + STATUS_TPM_DAA_TPM_SETTINGS NTStatus = 0xC0290054 + STATUS_TPM_DAA_STAGE NTStatus = 0xC0290055 + STATUS_TPM_DAA_ISSUER_VALIDITY NTStatus = 0xC0290056 + STATUS_TPM_DAA_WRONG_W NTStatus = 0xC0290057 + STATUS_TPM_BAD_HANDLE NTStatus = 0xC0290058 + STATUS_TPM_BAD_DELEGATE NTStatus = 0xC0290059 + STATUS_TPM_BADCONTEXT NTStatus = 0xC029005A + STATUS_TPM_TOOMANYCONTEXTS NTStatus = 0xC029005B + STATUS_TPM_MA_TICKET_SIGNATURE NTStatus = 0xC029005C + STATUS_TPM_MA_DESTINATION NTStatus = 0xC029005D + STATUS_TPM_MA_SOURCE NTStatus = 0xC029005E + STATUS_TPM_MA_AUTHORITY NTStatus = 0xC029005F + STATUS_TPM_PERMANENTEK NTStatus = 0xC0290061 + STATUS_TPM_BAD_SIGNATURE NTStatus = 0xC0290062 + STATUS_TPM_NOCONTEXTSPACE NTStatus = 0xC0290063 + STATUS_TPM_20_E_ASYMMETRIC NTStatus = 0xC0290081 + STATUS_TPM_20_E_ATTRIBUTES NTStatus = 0xC0290082 + STATUS_TPM_20_E_HASH NTStatus = 0xC0290083 + STATUS_TPM_20_E_VALUE NTStatus = 0xC0290084 + STATUS_TPM_20_E_HIERARCHY NTStatus = 0xC0290085 + STATUS_TPM_20_E_KEY_SIZE NTStatus = 0xC0290087 + STATUS_TPM_20_E_MGF NTStatus = 0xC0290088 + STATUS_TPM_20_E_MODE NTStatus = 0xC0290089 + STATUS_TPM_20_E_TYPE NTStatus = 0xC029008A + STATUS_TPM_20_E_HANDLE NTStatus = 0xC029008B + STATUS_TPM_20_E_KDF NTStatus = 0xC029008C + STATUS_TPM_20_E_RANGE NTStatus = 0xC029008D + STATUS_TPM_20_E_AUTH_FAIL NTStatus = 0xC029008E + STATUS_TPM_20_E_NONCE NTStatus = 0xC029008F + STATUS_TPM_20_E_PP NTStatus = 0xC0290090 + STATUS_TPM_20_E_SCHEME NTStatus = 0xC0290092 + STATUS_TPM_20_E_SIZE NTStatus = 0xC0290095 + STATUS_TPM_20_E_SYMMETRIC NTStatus = 0xC0290096 + STATUS_TPM_20_E_TAG NTStatus = 0xC0290097 + STATUS_TPM_20_E_SELECTOR NTStatus = 0xC0290098 + STATUS_TPM_20_E_INSUFFICIENT NTStatus = 0xC029009A + STATUS_TPM_20_E_SIGNATURE NTStatus = 0xC029009B + STATUS_TPM_20_E_KEY NTStatus = 0xC029009C + STATUS_TPM_20_E_POLICY_FAIL NTStatus = 0xC029009D + STATUS_TPM_20_E_INTEGRITY NTStatus = 0xC029009F + STATUS_TPM_20_E_TICKET NTStatus = 0xC02900A0 + STATUS_TPM_20_E_RESERVED_BITS NTStatus = 0xC02900A1 + STATUS_TPM_20_E_BAD_AUTH NTStatus = 0xC02900A2 + STATUS_TPM_20_E_EXPIRED NTStatus = 0xC02900A3 + STATUS_TPM_20_E_POLICY_CC NTStatus = 0xC02900A4 + STATUS_TPM_20_E_BINDING NTStatus = 0xC02900A5 + STATUS_TPM_20_E_CURVE NTStatus = 0xC02900A6 + STATUS_TPM_20_E_ECC_POINT NTStatus = 0xC02900A7 + STATUS_TPM_20_E_INITIALIZE NTStatus = 0xC0290100 + STATUS_TPM_20_E_FAILURE NTStatus = 0xC0290101 + STATUS_TPM_20_E_SEQUENCE NTStatus = 0xC0290103 + STATUS_TPM_20_E_PRIVATE NTStatus = 0xC029010B + STATUS_TPM_20_E_HMAC NTStatus = 0xC0290119 + STATUS_TPM_20_E_DISABLED NTStatus = 0xC0290120 + STATUS_TPM_20_E_EXCLUSIVE NTStatus = 0xC0290121 + STATUS_TPM_20_E_ECC_CURVE NTStatus = 0xC0290123 + STATUS_TPM_20_E_AUTH_TYPE NTStatus = 0xC0290124 + STATUS_TPM_20_E_AUTH_MISSING NTStatus = 0xC0290125 + STATUS_TPM_20_E_POLICY NTStatus = 0xC0290126 + STATUS_TPM_20_E_PCR NTStatus = 0xC0290127 + STATUS_TPM_20_E_PCR_CHANGED NTStatus = 0xC0290128 + STATUS_TPM_20_E_UPGRADE NTStatus = 0xC029012D + STATUS_TPM_20_E_TOO_MANY_CONTEXTS NTStatus = 0xC029012E + STATUS_TPM_20_E_AUTH_UNAVAILABLE NTStatus = 0xC029012F + STATUS_TPM_20_E_REBOOT NTStatus = 0xC0290130 + STATUS_TPM_20_E_UNBALANCED NTStatus = 0xC0290131 + STATUS_TPM_20_E_COMMAND_SIZE NTStatus = 0xC0290142 + STATUS_TPM_20_E_COMMAND_CODE NTStatus = 0xC0290143 + STATUS_TPM_20_E_AUTHSIZE NTStatus = 0xC0290144 + STATUS_TPM_20_E_AUTH_CONTEXT NTStatus = 0xC0290145 + STATUS_TPM_20_E_NV_RANGE NTStatus = 0xC0290146 + STATUS_TPM_20_E_NV_SIZE NTStatus = 0xC0290147 + STATUS_TPM_20_E_NV_LOCKED NTStatus = 0xC0290148 + STATUS_TPM_20_E_NV_AUTHORIZATION NTStatus = 0xC0290149 + STATUS_TPM_20_E_NV_UNINITIALIZED NTStatus = 0xC029014A + STATUS_TPM_20_E_NV_SPACE NTStatus = 0xC029014B + STATUS_TPM_20_E_NV_DEFINED NTStatus = 0xC029014C + STATUS_TPM_20_E_BAD_CONTEXT NTStatus = 0xC0290150 + STATUS_TPM_20_E_CPHASH NTStatus = 0xC0290151 + STATUS_TPM_20_E_PARENT NTStatus = 0xC0290152 + STATUS_TPM_20_E_NEEDS_TEST NTStatus = 0xC0290153 + STATUS_TPM_20_E_NO_RESULT NTStatus = 0xC0290154 + STATUS_TPM_20_E_SENSITIVE NTStatus = 0xC0290155 + STATUS_TPM_COMMAND_BLOCKED NTStatus = 0xC0290400 + STATUS_TPM_INVALID_HANDLE NTStatus = 0xC0290401 + STATUS_TPM_DUPLICATE_VHANDLE NTStatus = 0xC0290402 + STATUS_TPM_EMBEDDED_COMMAND_BLOCKED NTStatus = 0xC0290403 + STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED NTStatus = 0xC0290404 + STATUS_TPM_RETRY NTStatus = 0xC0290800 + STATUS_TPM_NEEDS_SELFTEST NTStatus = 0xC0290801 + STATUS_TPM_DOING_SELFTEST NTStatus = 0xC0290802 + STATUS_TPM_DEFEND_LOCK_RUNNING NTStatus = 0xC0290803 + STATUS_TPM_COMMAND_CANCELED NTStatus = 0xC0291001 + STATUS_TPM_TOO_MANY_CONTEXTS NTStatus = 0xC0291002 + STATUS_TPM_NOT_FOUND NTStatus = 0xC0291003 + STATUS_TPM_ACCESS_DENIED NTStatus = 0xC0291004 + STATUS_TPM_INSUFFICIENT_BUFFER NTStatus = 0xC0291005 + STATUS_TPM_PPI_FUNCTION_UNSUPPORTED NTStatus = 0xC0291006 + STATUS_PCP_ERROR_MASK NTStatus = 0xC0292000 + STATUS_PCP_DEVICE_NOT_READY NTStatus = 0xC0292001 + STATUS_PCP_INVALID_HANDLE NTStatus = 0xC0292002 + STATUS_PCP_INVALID_PARAMETER NTStatus = 0xC0292003 + STATUS_PCP_FLAG_NOT_SUPPORTED NTStatus = 0xC0292004 + STATUS_PCP_NOT_SUPPORTED NTStatus = 0xC0292005 + STATUS_PCP_BUFFER_TOO_SMALL NTStatus = 0xC0292006 + STATUS_PCP_INTERNAL_ERROR NTStatus = 0xC0292007 + STATUS_PCP_AUTHENTICATION_FAILED NTStatus = 0xC0292008 + STATUS_PCP_AUTHENTICATION_IGNORED NTStatus = 0xC0292009 + STATUS_PCP_POLICY_NOT_FOUND NTStatus = 0xC029200A + STATUS_PCP_PROFILE_NOT_FOUND NTStatus = 0xC029200B + STATUS_PCP_VALIDATION_FAILED NTStatus = 0xC029200C + STATUS_PCP_DEVICE_NOT_FOUND NTStatus = 0xC029200D + STATUS_PCP_WRONG_PARENT NTStatus = 0xC029200E + STATUS_PCP_KEY_NOT_LOADED NTStatus = 0xC029200F + STATUS_PCP_NO_KEY_CERTIFICATION NTStatus = 0xC0292010 + STATUS_PCP_KEY_NOT_FINALIZED NTStatus = 0xC0292011 + STATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET NTStatus = 0xC0292012 + STATUS_PCP_NOT_PCR_BOUND NTStatus = 0xC0292013 + STATUS_PCP_KEY_ALREADY_FINALIZED NTStatus = 0xC0292014 + STATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED NTStatus = 0xC0292015 + STATUS_PCP_KEY_USAGE_POLICY_INVALID NTStatus = 0xC0292016 + STATUS_PCP_SOFT_KEY_ERROR NTStatus = 0xC0292017 + STATUS_PCP_KEY_NOT_AUTHENTICATED NTStatus = 0xC0292018 + STATUS_PCP_KEY_NOT_AIK NTStatus = 0xC0292019 + STATUS_PCP_KEY_NOT_SIGNING_KEY NTStatus = 0xC029201A + STATUS_PCP_LOCKED_OUT NTStatus = 0xC029201B + STATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED NTStatus = 0xC029201C + STATUS_PCP_TPM_VERSION_NOT_SUPPORTED NTStatus = 0xC029201D + STATUS_PCP_BUFFER_LENGTH_MISMATCH NTStatus = 0xC029201E + STATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED NTStatus = 0xC029201F + STATUS_PCP_TICKET_MISSING NTStatus = 0xC0292020 + STATUS_PCP_RAW_POLICY_NOT_SUPPORTED NTStatus = 0xC0292021 + STATUS_PCP_KEY_HANDLE_INVALIDATED NTStatus = 0xC0292022 + STATUS_PCP_UNSUPPORTED_PSS_SALT NTStatus = 0x40292023 + STATUS_RTPM_CONTEXT_CONTINUE NTStatus = 0x00293000 + STATUS_RTPM_CONTEXT_COMPLETE NTStatus = 0x00293001 + STATUS_RTPM_NO_RESULT NTStatus = 0xC0293002 + STATUS_RTPM_PCR_READ_INCOMPLETE NTStatus = 0xC0293003 + STATUS_RTPM_INVALID_CONTEXT NTStatus = 0xC0293004 + STATUS_RTPM_UNSUPPORTED_CMD NTStatus = 0xC0293005 + STATUS_TPM_ZERO_EXHAUST_ENABLED NTStatus = 0xC0294000 + STATUS_HV_INVALID_HYPERCALL_CODE NTStatus = 0xC0350002 + STATUS_HV_INVALID_HYPERCALL_INPUT NTStatus = 0xC0350003 + STATUS_HV_INVALID_ALIGNMENT NTStatus = 0xC0350004 + STATUS_HV_INVALID_PARAMETER NTStatus = 0xC0350005 + STATUS_HV_ACCESS_DENIED NTStatus = 0xC0350006 + STATUS_HV_INVALID_PARTITION_STATE NTStatus = 0xC0350007 + STATUS_HV_OPERATION_DENIED NTStatus = 0xC0350008 + STATUS_HV_UNKNOWN_PROPERTY NTStatus = 0xC0350009 + STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE NTStatus = 0xC035000A + STATUS_HV_INSUFFICIENT_MEMORY NTStatus = 0xC035000B + STATUS_HV_PARTITION_TOO_DEEP NTStatus = 0xC035000C + STATUS_HV_INVALID_PARTITION_ID NTStatus = 0xC035000D + STATUS_HV_INVALID_VP_INDEX NTStatus = 0xC035000E + STATUS_HV_INVALID_PORT_ID NTStatus = 0xC0350011 + STATUS_HV_INVALID_CONNECTION_ID NTStatus = 0xC0350012 + STATUS_HV_INSUFFICIENT_BUFFERS NTStatus = 0xC0350013 + STATUS_HV_NOT_ACKNOWLEDGED NTStatus = 0xC0350014 + STATUS_HV_INVALID_VP_STATE NTStatus = 0xC0350015 + STATUS_HV_ACKNOWLEDGED NTStatus = 0xC0350016 + STATUS_HV_INVALID_SAVE_RESTORE_STATE NTStatus = 0xC0350017 + STATUS_HV_INVALID_SYNIC_STATE NTStatus = 0xC0350018 + STATUS_HV_OBJECT_IN_USE NTStatus = 0xC0350019 + STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO NTStatus = 0xC035001A + STATUS_HV_NO_DATA NTStatus = 0xC035001B + STATUS_HV_INACTIVE NTStatus = 0xC035001C + STATUS_HV_NO_RESOURCES NTStatus = 0xC035001D + STATUS_HV_FEATURE_UNAVAILABLE NTStatus = 0xC035001E + STATUS_HV_INSUFFICIENT_BUFFER NTStatus = 0xC0350033 + STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS NTStatus = 0xC0350038 + STATUS_HV_CPUID_FEATURE_VALIDATION_ERROR NTStatus = 0xC035003C + STATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR NTStatus = 0xC035003D + STATUS_HV_PROCESSOR_STARTUP_TIMEOUT NTStatus = 0xC035003E + STATUS_HV_SMX_ENABLED NTStatus = 0xC035003F + STATUS_HV_INVALID_LP_INDEX NTStatus = 0xC0350041 + STATUS_HV_INVALID_REGISTER_VALUE NTStatus = 0xC0350050 + STATUS_HV_INVALID_VTL_STATE NTStatus = 0xC0350051 + STATUS_HV_NX_NOT_DETECTED NTStatus = 0xC0350055 + STATUS_HV_INVALID_DEVICE_ID NTStatus = 0xC0350057 + STATUS_HV_INVALID_DEVICE_STATE NTStatus = 0xC0350058 + STATUS_HV_PENDING_PAGE_REQUESTS NTStatus = 0x00350059 + STATUS_HV_PAGE_REQUEST_INVALID NTStatus = 0xC0350060 + STATUS_HV_INVALID_CPU_GROUP_ID NTStatus = 0xC035006F + STATUS_HV_INVALID_CPU_GROUP_STATE NTStatus = 0xC0350070 + STATUS_HV_OPERATION_FAILED NTStatus = 0xC0350071 + STATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE NTStatus = 0xC0350072 + STATUS_HV_INSUFFICIENT_ROOT_MEMORY NTStatus = 0xC0350073 + STATUS_HV_NOT_PRESENT NTStatus = 0xC0351000 + STATUS_VID_DUPLICATE_HANDLER NTStatus = 0xC0370001 + STATUS_VID_TOO_MANY_HANDLERS NTStatus = 0xC0370002 + STATUS_VID_QUEUE_FULL NTStatus = 0xC0370003 + STATUS_VID_HANDLER_NOT_PRESENT NTStatus = 0xC0370004 + STATUS_VID_INVALID_OBJECT_NAME NTStatus = 0xC0370005 + STATUS_VID_PARTITION_NAME_TOO_LONG NTStatus = 0xC0370006 + STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG NTStatus = 0xC0370007 + STATUS_VID_PARTITION_ALREADY_EXISTS NTStatus = 0xC0370008 + STATUS_VID_PARTITION_DOES_NOT_EXIST NTStatus = 0xC0370009 + STATUS_VID_PARTITION_NAME_NOT_FOUND NTStatus = 0xC037000A + STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS NTStatus = 0xC037000B + STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT NTStatus = 0xC037000C + STATUS_VID_MB_STILL_REFERENCED NTStatus = 0xC037000D + STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED NTStatus = 0xC037000E + STATUS_VID_INVALID_NUMA_SETTINGS NTStatus = 0xC037000F + STATUS_VID_INVALID_NUMA_NODE_INDEX NTStatus = 0xC0370010 + STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED NTStatus = 0xC0370011 + STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE NTStatus = 0xC0370012 + STATUS_VID_PAGE_RANGE_OVERFLOW NTStatus = 0xC0370013 + STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE NTStatus = 0xC0370014 + STATUS_VID_INVALID_GPA_RANGE_HANDLE NTStatus = 0xC0370015 + STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE NTStatus = 0xC0370016 + STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED NTStatus = 0xC0370017 + STATUS_VID_INVALID_PPM_HANDLE NTStatus = 0xC0370018 + STATUS_VID_MBPS_ARE_LOCKED NTStatus = 0xC0370019 + STATUS_VID_MESSAGE_QUEUE_CLOSED NTStatus = 0xC037001A + STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED NTStatus = 0xC037001B + STATUS_VID_STOP_PENDING NTStatus = 0xC037001C + STATUS_VID_INVALID_PROCESSOR_STATE NTStatus = 0xC037001D + STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT NTStatus = 0xC037001E + STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED NTStatus = 0xC037001F + STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET NTStatus = 0xC0370020 + STATUS_VID_MMIO_RANGE_DESTROYED NTStatus = 0xC0370021 + STATUS_VID_INVALID_CHILD_GPA_PAGE_SET NTStatus = 0xC0370022 + STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED NTStatus = 0xC0370023 + STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL NTStatus = 0xC0370024 + STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE NTStatus = 0xC0370025 + STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT NTStatus = 0xC0370026 + STATUS_VID_SAVED_STATE_CORRUPT NTStatus = 0xC0370027 + STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM NTStatus = 0xC0370028 + STATUS_VID_SAVED_STATE_INCOMPATIBLE NTStatus = 0xC0370029 + STATUS_VID_VTL_ACCESS_DENIED NTStatus = 0xC037002A + STATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED NTStatus = 0x80370001 + STATUS_IPSEC_BAD_SPI NTStatus = 0xC0360001 + STATUS_IPSEC_SA_LIFETIME_EXPIRED NTStatus = 0xC0360002 + STATUS_IPSEC_WRONG_SA NTStatus = 0xC0360003 + STATUS_IPSEC_REPLAY_CHECK_FAILED NTStatus = 0xC0360004 + STATUS_IPSEC_INVALID_PACKET NTStatus = 0xC0360005 + STATUS_IPSEC_INTEGRITY_CHECK_FAILED NTStatus = 0xC0360006 + STATUS_IPSEC_CLEAR_TEXT_DROP NTStatus = 0xC0360007 + STATUS_IPSEC_AUTH_FIREWALL_DROP NTStatus = 0xC0360008 + STATUS_IPSEC_THROTTLE_DROP NTStatus = 0xC0360009 + STATUS_IPSEC_DOSP_BLOCK NTStatus = 0xC0368000 + STATUS_IPSEC_DOSP_RECEIVED_MULTICAST NTStatus = 0xC0368001 + STATUS_IPSEC_DOSP_INVALID_PACKET NTStatus = 0xC0368002 + STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED NTStatus = 0xC0368003 + STATUS_IPSEC_DOSP_MAX_ENTRIES NTStatus = 0xC0368004 + STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED NTStatus = 0xC0368005 + STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES NTStatus = 0xC0368006 + STATUS_VOLMGR_INCOMPLETE_REGENERATION NTStatus = 0x80380001 + STATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION NTStatus = 0x80380002 + STATUS_VOLMGR_DATABASE_FULL NTStatus = 0xC0380001 + STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED NTStatus = 0xC0380002 + STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC NTStatus = 0xC0380003 + STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED NTStatus = 0xC0380004 + STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME NTStatus = 0xC0380005 + STATUS_VOLMGR_DISK_DUPLICATE NTStatus = 0xC0380006 + STATUS_VOLMGR_DISK_DYNAMIC NTStatus = 0xC0380007 + STATUS_VOLMGR_DISK_ID_INVALID NTStatus = 0xC0380008 + STATUS_VOLMGR_DISK_INVALID NTStatus = 0xC0380009 + STATUS_VOLMGR_DISK_LAST_VOTER NTStatus = 0xC038000A + STATUS_VOLMGR_DISK_LAYOUT_INVALID NTStatus = 0xC038000B + STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS NTStatus = 0xC038000C + STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED NTStatus = 0xC038000D + STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL NTStatus = 0xC038000E + STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS NTStatus = 0xC038000F + STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS NTStatus = 0xC0380010 + STATUS_VOLMGR_DISK_MISSING NTStatus = 0xC0380011 + STATUS_VOLMGR_DISK_NOT_EMPTY NTStatus = 0xC0380012 + STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE NTStatus = 0xC0380013 + STATUS_VOLMGR_DISK_REVECTORING_FAILED NTStatus = 0xC0380014 + STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID NTStatus = 0xC0380015 + STATUS_VOLMGR_DISK_SET_NOT_CONTAINED NTStatus = 0xC0380016 + STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS NTStatus = 0xC0380017 + STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES NTStatus = 0xC0380018 + STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED NTStatus = 0xC0380019 + STATUS_VOLMGR_EXTENT_ALREADY_USED NTStatus = 0xC038001A + STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS NTStatus = 0xC038001B + STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION NTStatus = 0xC038001C + STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED NTStatus = 0xC038001D + STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION NTStatus = 0xC038001E + STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH NTStatus = 0xC038001F + STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED NTStatus = 0xC0380020 + STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID NTStatus = 0xC0380021 + STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS NTStatus = 0xC0380022 + STATUS_VOLMGR_MEMBER_IN_SYNC NTStatus = 0xC0380023 + STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE NTStatus = 0xC0380024 + STATUS_VOLMGR_MEMBER_INDEX_INVALID NTStatus = 0xC0380025 + STATUS_VOLMGR_MEMBER_MISSING NTStatus = 0xC0380026 + STATUS_VOLMGR_MEMBER_NOT_DETACHED NTStatus = 0xC0380027 + STATUS_VOLMGR_MEMBER_REGENERATING NTStatus = 0xC0380028 + STATUS_VOLMGR_ALL_DISKS_FAILED NTStatus = 0xC0380029 + STATUS_VOLMGR_NO_REGISTERED_USERS NTStatus = 0xC038002A + STATUS_VOLMGR_NO_SUCH_USER NTStatus = 0xC038002B + STATUS_VOLMGR_NOTIFICATION_RESET NTStatus = 0xC038002C + STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID NTStatus = 0xC038002D + STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID NTStatus = 0xC038002E + STATUS_VOLMGR_PACK_DUPLICATE NTStatus = 0xC038002F + STATUS_VOLMGR_PACK_ID_INVALID NTStatus = 0xC0380030 + STATUS_VOLMGR_PACK_INVALID NTStatus = 0xC0380031 + STATUS_VOLMGR_PACK_NAME_INVALID NTStatus = 0xC0380032 + STATUS_VOLMGR_PACK_OFFLINE NTStatus = 0xC0380033 + STATUS_VOLMGR_PACK_HAS_QUORUM NTStatus = 0xC0380034 + STATUS_VOLMGR_PACK_WITHOUT_QUORUM NTStatus = 0xC0380035 + STATUS_VOLMGR_PARTITION_STYLE_INVALID NTStatus = 0xC0380036 + STATUS_VOLMGR_PARTITION_UPDATE_FAILED NTStatus = 0xC0380037 + STATUS_VOLMGR_PLEX_IN_SYNC NTStatus = 0xC0380038 + STATUS_VOLMGR_PLEX_INDEX_DUPLICATE NTStatus = 0xC0380039 + STATUS_VOLMGR_PLEX_INDEX_INVALID NTStatus = 0xC038003A + STATUS_VOLMGR_PLEX_LAST_ACTIVE NTStatus = 0xC038003B + STATUS_VOLMGR_PLEX_MISSING NTStatus = 0xC038003C + STATUS_VOLMGR_PLEX_REGENERATING NTStatus = 0xC038003D + STATUS_VOLMGR_PLEX_TYPE_INVALID NTStatus = 0xC038003E + STATUS_VOLMGR_PLEX_NOT_RAID5 NTStatus = 0xC038003F + STATUS_VOLMGR_PLEX_NOT_SIMPLE NTStatus = 0xC0380040 + STATUS_VOLMGR_STRUCTURE_SIZE_INVALID NTStatus = 0xC0380041 + STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS NTStatus = 0xC0380042 + STATUS_VOLMGR_TRANSACTION_IN_PROGRESS NTStatus = 0xC0380043 + STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE NTStatus = 0xC0380044 + STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK NTStatus = 0xC0380045 + STATUS_VOLMGR_VOLUME_ID_INVALID NTStatus = 0xC0380046 + STATUS_VOLMGR_VOLUME_LENGTH_INVALID NTStatus = 0xC0380047 + STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE NTStatus = 0xC0380048 + STATUS_VOLMGR_VOLUME_NOT_MIRRORED NTStatus = 0xC0380049 + STATUS_VOLMGR_VOLUME_NOT_RETAINED NTStatus = 0xC038004A + STATUS_VOLMGR_VOLUME_OFFLINE NTStatus = 0xC038004B + STATUS_VOLMGR_VOLUME_RETAINED NTStatus = 0xC038004C + STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID NTStatus = 0xC038004D + STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE NTStatus = 0xC038004E + STATUS_VOLMGR_BAD_BOOT_DISK NTStatus = 0xC038004F + STATUS_VOLMGR_PACK_CONFIG_OFFLINE NTStatus = 0xC0380050 + STATUS_VOLMGR_PACK_CONFIG_ONLINE NTStatus = 0xC0380051 + STATUS_VOLMGR_NOT_PRIMARY_PACK NTStatus = 0xC0380052 + STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED NTStatus = 0xC0380053 + STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID NTStatus = 0xC0380054 + STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID NTStatus = 0xC0380055 + STATUS_VOLMGR_VOLUME_MIRRORED NTStatus = 0xC0380056 + STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED NTStatus = 0xC0380057 + STATUS_VOLMGR_NO_VALID_LOG_COPIES NTStatus = 0xC0380058 + STATUS_VOLMGR_PRIMARY_PACK_PRESENT NTStatus = 0xC0380059 + STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID NTStatus = 0xC038005A + STATUS_VOLMGR_MIRROR_NOT_SUPPORTED NTStatus = 0xC038005B + STATUS_VOLMGR_RAID5_NOT_SUPPORTED NTStatus = 0xC038005C + STATUS_BCD_NOT_ALL_ENTRIES_IMPORTED NTStatus = 0x80390001 + STATUS_BCD_TOO_MANY_ELEMENTS NTStatus = 0xC0390002 + STATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED NTStatus = 0x80390003 + STATUS_VHD_DRIVE_FOOTER_MISSING NTStatus = 0xC03A0001 + STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH NTStatus = 0xC03A0002 + STATUS_VHD_DRIVE_FOOTER_CORRUPT NTStatus = 0xC03A0003 + STATUS_VHD_FORMAT_UNKNOWN NTStatus = 0xC03A0004 + STATUS_VHD_FORMAT_UNSUPPORTED_VERSION NTStatus = 0xC03A0005 + STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH NTStatus = 0xC03A0006 + STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION NTStatus = 0xC03A0007 + STATUS_VHD_SPARSE_HEADER_CORRUPT NTStatus = 0xC03A0008 + STATUS_VHD_BLOCK_ALLOCATION_FAILURE NTStatus = 0xC03A0009 + STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT NTStatus = 0xC03A000A + STATUS_VHD_INVALID_BLOCK_SIZE NTStatus = 0xC03A000B + STATUS_VHD_BITMAP_MISMATCH NTStatus = 0xC03A000C + STATUS_VHD_PARENT_VHD_NOT_FOUND NTStatus = 0xC03A000D + STATUS_VHD_CHILD_PARENT_ID_MISMATCH NTStatus = 0xC03A000E + STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH NTStatus = 0xC03A000F + STATUS_VHD_METADATA_READ_FAILURE NTStatus = 0xC03A0010 + STATUS_VHD_METADATA_WRITE_FAILURE NTStatus = 0xC03A0011 + STATUS_VHD_INVALID_SIZE NTStatus = 0xC03A0012 + STATUS_VHD_INVALID_FILE_SIZE NTStatus = 0xC03A0013 + STATUS_VIRTDISK_PROVIDER_NOT_FOUND NTStatus = 0xC03A0014 + STATUS_VIRTDISK_NOT_VIRTUAL_DISK NTStatus = 0xC03A0015 + STATUS_VHD_PARENT_VHD_ACCESS_DENIED NTStatus = 0xC03A0016 + STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH NTStatus = 0xC03A0017 + STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED NTStatus = 0xC03A0018 + STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT NTStatus = 0xC03A0019 + STATUS_VIRTUAL_DISK_LIMITATION NTStatus = 0xC03A001A + STATUS_VHD_INVALID_TYPE NTStatus = 0xC03A001B + STATUS_VHD_INVALID_STATE NTStatus = 0xC03A001C + STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE NTStatus = 0xC03A001D + STATUS_VIRTDISK_DISK_ALREADY_OWNED NTStatus = 0xC03A001E + STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE NTStatus = 0xC03A001F + STATUS_CTLOG_TRACKING_NOT_INITIALIZED NTStatus = 0xC03A0020 + STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE NTStatus = 0xC03A0021 + STATUS_CTLOG_VHD_CHANGED_OFFLINE NTStatus = 0xC03A0022 + STATUS_CTLOG_INVALID_TRACKING_STATE NTStatus = 0xC03A0023 + STATUS_CTLOG_INCONSISTENT_TRACKING_FILE NTStatus = 0xC03A0024 + STATUS_VHD_METADATA_FULL NTStatus = 0xC03A0028 + STATUS_VHD_INVALID_CHANGE_TRACKING_ID NTStatus = 0xC03A0029 + STATUS_VHD_CHANGE_TRACKING_DISABLED NTStatus = 0xC03A002A + STATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION NTStatus = 0xC03A0030 + STATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA NTStatus = 0xC03A0031 + STATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE NTStatus = 0xC03A0032 + STATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE NTStatus = 0xC03A0033 + STATUS_QUERY_STORAGE_ERROR NTStatus = 0x803A0001 + STATUS_GDI_HANDLE_LEAK NTStatus = 0x803F0001 + STATUS_RKF_KEY_NOT_FOUND NTStatus = 0xC0400001 + STATUS_RKF_DUPLICATE_KEY NTStatus = 0xC0400002 + STATUS_RKF_BLOB_FULL NTStatus = 0xC0400003 + STATUS_RKF_STORE_FULL NTStatus = 0xC0400004 + STATUS_RKF_FILE_BLOCKED NTStatus = 0xC0400005 + STATUS_RKF_ACTIVE_KEY NTStatus = 0xC0400006 + STATUS_RDBSS_RESTART_OPERATION NTStatus = 0xC0410001 + STATUS_RDBSS_CONTINUE_OPERATION NTStatus = 0xC0410002 + STATUS_RDBSS_POST_OPERATION NTStatus = 0xC0410003 + STATUS_RDBSS_RETRY_LOOKUP NTStatus = 0xC0410004 + STATUS_BTH_ATT_INVALID_HANDLE NTStatus = 0xC0420001 + STATUS_BTH_ATT_READ_NOT_PERMITTED NTStatus = 0xC0420002 + STATUS_BTH_ATT_WRITE_NOT_PERMITTED NTStatus = 0xC0420003 + STATUS_BTH_ATT_INVALID_PDU NTStatus = 0xC0420004 + STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION NTStatus = 0xC0420005 + STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED NTStatus = 0xC0420006 + STATUS_BTH_ATT_INVALID_OFFSET NTStatus = 0xC0420007 + STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION NTStatus = 0xC0420008 + STATUS_BTH_ATT_PREPARE_QUEUE_FULL NTStatus = 0xC0420009 + STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND NTStatus = 0xC042000A + STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG NTStatus = 0xC042000B + STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE NTStatus = 0xC042000C + STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH NTStatus = 0xC042000D + STATUS_BTH_ATT_UNLIKELY NTStatus = 0xC042000E + STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION NTStatus = 0xC042000F + STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE NTStatus = 0xC0420010 + STATUS_BTH_ATT_INSUFFICIENT_RESOURCES NTStatus = 0xC0420011 + STATUS_BTH_ATT_UNKNOWN_ERROR NTStatus = 0xC0421000 + STATUS_SECUREBOOT_ROLLBACK_DETECTED NTStatus = 0xC0430001 + STATUS_SECUREBOOT_POLICY_VIOLATION NTStatus = 0xC0430002 + STATUS_SECUREBOOT_INVALID_POLICY NTStatus = 0xC0430003 + STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND NTStatus = 0xC0430004 + STATUS_SECUREBOOT_POLICY_NOT_SIGNED NTStatus = 0xC0430005 + STATUS_SECUREBOOT_NOT_ENABLED NTStatus = 0x80430006 + STATUS_SECUREBOOT_FILE_REPLACED NTStatus = 0xC0430007 + STATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED NTStatus = 0xC0430008 + STATUS_SECUREBOOT_POLICY_UNKNOWN NTStatus = 0xC0430009 + STATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION NTStatus = 0xC043000A + STATUS_SECUREBOOT_PLATFORM_ID_MISMATCH NTStatus = 0xC043000B + STATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED NTStatus = 0xC043000C + STATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH NTStatus = 0xC043000D + STATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING NTStatus = 0xC043000E + STATUS_SECUREBOOT_NOT_BASE_POLICY NTStatus = 0xC043000F + STATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY NTStatus = 0xC0430010 + STATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED NTStatus = 0xC0EB0001 + STATUS_PLATFORM_MANIFEST_INVALID NTStatus = 0xC0EB0002 + STATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED NTStatus = 0xC0EB0003 + STATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED NTStatus = 0xC0EB0004 + STATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND NTStatus = 0xC0EB0005 + STATUS_PLATFORM_MANIFEST_NOT_ACTIVE NTStatus = 0xC0EB0006 + STATUS_PLATFORM_MANIFEST_NOT_SIGNED NTStatus = 0xC0EB0007 + STATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED NTStatus = 0xC0E90001 + STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION NTStatus = 0xC0E90002 + STATUS_SYSTEM_INTEGRITY_INVALID_POLICY NTStatus = 0xC0E90003 + STATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED NTStatus = 0xC0E90004 + STATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES NTStatus = 0xC0E90005 + STATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED NTStatus = 0xC0E90006 + STATUS_NO_APPLICABLE_APP_LICENSES_FOUND NTStatus = 0xC0EA0001 + STATUS_CLIP_LICENSE_NOT_FOUND NTStatus = 0xC0EA0002 + STATUS_CLIP_DEVICE_LICENSE_MISSING NTStatus = 0xC0EA0003 + STATUS_CLIP_LICENSE_INVALID_SIGNATURE NTStatus = 0xC0EA0004 + STATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID NTStatus = 0xC0EA0005 + STATUS_CLIP_LICENSE_EXPIRED NTStatus = 0xC0EA0006 + STATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE NTStatus = 0xC0EA0007 + STATUS_CLIP_LICENSE_NOT_SIGNED NTStatus = 0xC0EA0008 + STATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE NTStatus = 0xC0EA0009 + STATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH NTStatus = 0xC0EA000A + STATUS_AUDIO_ENGINE_NODE_NOT_FOUND NTStatus = 0xC0440001 + STATUS_HDAUDIO_EMPTY_CONNECTION_LIST NTStatus = 0xC0440002 + STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED NTStatus = 0xC0440003 + STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED NTStatus = 0xC0440004 + STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY NTStatus = 0xC0440005 + STATUS_SPACES_REPAIRED NTStatus = 0x00E70000 + STATUS_SPACES_PAUSE NTStatus = 0x00E70001 + STATUS_SPACES_COMPLETE NTStatus = 0x00E70002 + STATUS_SPACES_REDIRECT NTStatus = 0x00E70003 + STATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID NTStatus = 0xC0E70001 + STATUS_SPACES_RESILIENCY_TYPE_INVALID NTStatus = 0xC0E70003 + STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID NTStatus = 0xC0E70004 + STATUS_SPACES_DRIVE_REDUNDANCY_INVALID NTStatus = 0xC0E70006 + STATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID NTStatus = 0xC0E70007 + STATUS_SPACES_INTERLEAVE_LENGTH_INVALID NTStatus = 0xC0E70009 + STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID NTStatus = 0xC0E7000A + STATUS_SPACES_NOT_ENOUGH_DRIVES NTStatus = 0xC0E7000B + STATUS_SPACES_EXTENDED_ERROR NTStatus = 0xC0E7000C + STATUS_SPACES_PROVISIONING_TYPE_INVALID NTStatus = 0xC0E7000D + STATUS_SPACES_ALLOCATION_SIZE_INVALID NTStatus = 0xC0E7000E + STATUS_SPACES_ENCLOSURE_AWARE_INVALID NTStatus = 0xC0E7000F + STATUS_SPACES_WRITE_CACHE_SIZE_INVALID NTStatus = 0xC0E70010 + STATUS_SPACES_NUMBER_OF_GROUPS_INVALID NTStatus = 0xC0E70011 + STATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID NTStatus = 0xC0E70012 + STATUS_SPACES_UPDATE_COLUMN_STATE NTStatus = 0xC0E70013 + STATUS_SPACES_MAP_REQUIRED NTStatus = 0xC0E70014 + STATUS_SPACES_UNSUPPORTED_VERSION NTStatus = 0xC0E70015 + STATUS_SPACES_CORRUPT_METADATA NTStatus = 0xC0E70016 + STATUS_SPACES_DRT_FULL NTStatus = 0xC0E70017 + STATUS_SPACES_INCONSISTENCY NTStatus = 0xC0E70018 + STATUS_SPACES_LOG_NOT_READY NTStatus = 0xC0E70019 + STATUS_SPACES_NO_REDUNDANCY NTStatus = 0xC0E7001A + STATUS_SPACES_DRIVE_NOT_READY NTStatus = 0xC0E7001B + STATUS_SPACES_DRIVE_SPLIT NTStatus = 0xC0E7001C + STATUS_SPACES_DRIVE_LOST_DATA NTStatus = 0xC0E7001D + STATUS_SPACES_ENTRY_INCOMPLETE NTStatus = 0xC0E7001E + STATUS_SPACES_ENTRY_INVALID NTStatus = 0xC0E7001F + STATUS_SPACES_MARK_DIRTY NTStatus = 0xC0E70020 + STATUS_VOLSNAP_BOOTFILE_NOT_VALID NTStatus = 0xC0500003 + STATUS_VOLSNAP_ACTIVATION_TIMEOUT NTStatus = 0xC0500004 + STATUS_IO_PREEMPTED NTStatus = 0xC0510001 + STATUS_SVHDX_ERROR_STORED NTStatus = 0xC05C0000 + STATUS_SVHDX_ERROR_NOT_AVAILABLE NTStatus = 0xC05CFF00 + STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE NTStatus = 0xC05CFF01 + STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED NTStatus = 0xC05CFF02 + STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED NTStatus = 0xC05CFF03 + STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED NTStatus = 0xC05CFF04 + STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED NTStatus = 0xC05CFF05 + STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED NTStatus = 0xC05CFF06 + STATUS_SVHDX_RESERVATION_CONFLICT NTStatus = 0xC05CFF07 + STATUS_SVHDX_WRONG_FILE_TYPE NTStatus = 0xC05CFF08 + STATUS_SVHDX_VERSION_MISMATCH NTStatus = 0xC05CFF09 + STATUS_VHD_SHARED NTStatus = 0xC05CFF0A + STATUS_SVHDX_NO_INITIATOR NTStatus = 0xC05CFF0B + STATUS_VHDSET_BACKING_STORAGE_NOT_FOUND NTStatus = 0xC05CFF0C + STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP NTStatus = 0xC05D0000 + STATUS_SMB_BAD_CLUSTER_DIALECT NTStatus = 0xC05D0001 + STATUS_SMB_GUEST_LOGON_BLOCKED NTStatus = 0xC05D0002 + STATUS_SECCORE_INVALID_COMMAND NTStatus = 0xC0E80000 + STATUS_VSM_NOT_INITIALIZED NTStatus = 0xC0450000 + STATUS_VSM_DMA_PROTECTION_NOT_IN_USE NTStatus = 0xC0450001 + STATUS_APPEXEC_CONDITION_NOT_SATISFIED NTStatus = 0xC0EC0000 + STATUS_APPEXEC_HANDLE_INVALIDATED NTStatus = 0xC0EC0001 + STATUS_APPEXEC_INVALID_HOST_GENERATION NTStatus = 0xC0EC0002 + STATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION NTStatus = 0xC0EC0003 + STATUS_APPEXEC_INVALID_HOST_STATE NTStatus = 0xC0EC0004 + STATUS_APPEXEC_NO_DONOR NTStatus = 0xC0EC0005 + STATUS_APPEXEC_HOST_ID_MISMATCH NTStatus = 0xC0EC0006 + STATUS_APPEXEC_UNKNOWN_USER NTStatus = 0xC0EC0007 +) diff --git a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go new file mode 100644 index 0000000..6048ac6 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go @@ -0,0 +1,149 @@ +// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT. + +package windows + +type KNOWNFOLDERID GUID + +var ( + FOLDERID_NetworkFolder = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}} + FOLDERID_ComputerFolder = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}} + FOLDERID_InternetFolder = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}} + FOLDERID_ControlPanelFolder = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}} + FOLDERID_PrintersFolder = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}} + FOLDERID_SyncManagerFolder = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}} + FOLDERID_SyncSetupFolder = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}} + FOLDERID_ConflictFolder = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}} + FOLDERID_SyncResultsFolder = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}} + FOLDERID_RecycleBinFolder = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}} + FOLDERID_ConnectionsFolder = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}} + FOLDERID_Fonts = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}} + FOLDERID_Desktop = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}} + FOLDERID_Startup = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}} + FOLDERID_Programs = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}} + FOLDERID_StartMenu = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}} + FOLDERID_Recent = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}} + FOLDERID_SendTo = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}} + FOLDERID_Documents = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}} + FOLDERID_Favorites = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}} + FOLDERID_NetHood = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}} + FOLDERID_PrintHood = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}} + FOLDERID_Templates = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}} + FOLDERID_CommonStartup = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}} + FOLDERID_CommonPrograms = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}} + FOLDERID_CommonStartMenu = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}} + FOLDERID_PublicDesktop = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}} + FOLDERID_ProgramData = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}} + FOLDERID_CommonTemplates = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}} + FOLDERID_PublicDocuments = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}} + FOLDERID_RoamingAppData = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}} + FOLDERID_LocalAppData = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}} + FOLDERID_LocalAppDataLow = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}} + FOLDERID_InternetCache = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}} + FOLDERID_Cookies = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}} + FOLDERID_History = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}} + FOLDERID_System = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}} + FOLDERID_SystemX86 = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}} + FOLDERID_Windows = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}} + FOLDERID_Profile = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}} + FOLDERID_Pictures = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}} + FOLDERID_ProgramFilesX86 = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}} + FOLDERID_ProgramFilesCommonX86 = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}} + FOLDERID_ProgramFilesX64 = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}} + FOLDERID_ProgramFilesCommonX64 = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}} + FOLDERID_ProgramFiles = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}} + FOLDERID_ProgramFilesCommon = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}} + FOLDERID_UserProgramFiles = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}} + FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}} + FOLDERID_AdminTools = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}} + FOLDERID_CommonAdminTools = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}} + FOLDERID_Music = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}} + FOLDERID_Videos = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}} + FOLDERID_Ringtones = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}} + FOLDERID_PublicPictures = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}} + FOLDERID_PublicMusic = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}} + FOLDERID_PublicVideos = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}} + FOLDERID_PublicRingtones = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}} + FOLDERID_ResourceDir = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}} + FOLDERID_LocalizedResourcesDir = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}} + FOLDERID_CommonOEMLinks = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}} + FOLDERID_CDBurning = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}} + FOLDERID_UserProfiles = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}} + FOLDERID_Playlists = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}} + FOLDERID_SamplePlaylists = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}} + FOLDERID_SampleMusic = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}} + FOLDERID_SamplePictures = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}} + FOLDERID_SampleVideos = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}} + FOLDERID_PhotoAlbums = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}} + FOLDERID_Public = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}} + FOLDERID_ChangeRemovePrograms = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}} + FOLDERID_AppUpdates = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}} + FOLDERID_AddNewPrograms = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}} + FOLDERID_Downloads = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}} + FOLDERID_PublicDownloads = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}} + FOLDERID_SavedSearches = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}} + FOLDERID_QuickLaunch = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}} + FOLDERID_Contacts = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}} + FOLDERID_SidebarParts = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}} + FOLDERID_SidebarDefaultParts = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}} + FOLDERID_PublicGameTasks = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}} + FOLDERID_GameTasks = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}} + FOLDERID_SavedGames = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}} + FOLDERID_Games = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}} + FOLDERID_SEARCH_MAPI = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}} + FOLDERID_SEARCH_CSC = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}} + FOLDERID_Links = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}} + FOLDERID_UsersFiles = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}} + FOLDERID_UsersLibraries = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}} + FOLDERID_SearchHome = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}} + FOLDERID_OriginalImages = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}} + FOLDERID_DocumentsLibrary = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}} + FOLDERID_MusicLibrary = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}} + FOLDERID_PicturesLibrary = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}} + FOLDERID_VideosLibrary = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}} + FOLDERID_RecordedTVLibrary = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}} + FOLDERID_HomeGroup = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}} + FOLDERID_HomeGroupCurrentUser = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}} + FOLDERID_DeviceMetadataStore = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}} + FOLDERID_Libraries = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}} + FOLDERID_PublicLibraries = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}} + FOLDERID_UserPinned = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}} + FOLDERID_ImplicitAppShortcuts = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}} + FOLDERID_AccountPictures = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}} + FOLDERID_PublicUserTiles = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}} + FOLDERID_AppsFolder = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}} + FOLDERID_StartMenuAllPrograms = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}} + FOLDERID_CommonStartMenuPlaces = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}} + FOLDERID_ApplicationShortcuts = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}} + FOLDERID_RoamingTiles = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}} + FOLDERID_RoamedTileImages = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}} + FOLDERID_Screenshots = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}} + FOLDERID_CameraRoll = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}} + FOLDERID_SkyDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_OneDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_SkyDriveDocuments = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}} + FOLDERID_SkyDrivePictures = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}} + FOLDERID_SkyDriveMusic = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}} + FOLDERID_SkyDriveCameraRoll = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}} + FOLDERID_SearchHistory = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}} + FOLDERID_SearchTemplates = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}} + FOLDERID_CameraRollLibrary = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}} + FOLDERID_SavedPictures = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}} + FOLDERID_SavedPicturesLibrary = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}} + FOLDERID_RetailDemo = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}} + FOLDERID_Device = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}} + FOLDERID_DevelopmentFiles = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}} + FOLDERID_Objects3D = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}} + FOLDERID_AppCaptures = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}} + FOLDERID_LocalDocuments = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}} + FOLDERID_LocalPictures = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}} + FOLDERID_LocalVideos = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}} + FOLDERID_LocalMusic = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}} + FOLDERID_LocalDownloads = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}} + FOLDERID_RecordedCalls = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}} + FOLDERID_AllAppMods = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}} + FOLDERID_CurrentAppMods = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}} + FOLDERID_AppDataDesktop = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}} + FOLDERID_AppDataDocuments = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}} + FOLDERID_AppDataFavorites = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}} + FOLDERID_AppDataProgramData = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}} +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go new file mode 100644 index 0000000..e8791c8 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -0,0 +1,4418 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package windows + +import ( + "syscall" + "unsafe" +) + +var _ unsafe.Pointer + +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) + errERROR_EINVAL error = syscall.EINVAL +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return errERROR_EINVAL + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + +var ( + modCfgMgr32 = NewLazySystemDLL("CfgMgr32.dll") + modadvapi32 = NewLazySystemDLL("advapi32.dll") + modcrypt32 = NewLazySystemDLL("crypt32.dll") + moddnsapi = NewLazySystemDLL("dnsapi.dll") + moddwmapi = NewLazySystemDLL("dwmapi.dll") + modiphlpapi = NewLazySystemDLL("iphlpapi.dll") + modkernel32 = NewLazySystemDLL("kernel32.dll") + modmswsock = NewLazySystemDLL("mswsock.dll") + modnetapi32 = NewLazySystemDLL("netapi32.dll") + modntdll = NewLazySystemDLL("ntdll.dll") + modole32 = NewLazySystemDLL("ole32.dll") + modpsapi = NewLazySystemDLL("psapi.dll") + modsechost = NewLazySystemDLL("sechost.dll") + modsecur32 = NewLazySystemDLL("secur32.dll") + modsetupapi = NewLazySystemDLL("setupapi.dll") + modshell32 = NewLazySystemDLL("shell32.dll") + moduser32 = NewLazySystemDLL("user32.dll") + moduserenv = NewLazySystemDLL("userenv.dll") + modversion = NewLazySystemDLL("version.dll") + modwinmm = NewLazySystemDLL("winmm.dll") + modwintrust = NewLazySystemDLL("wintrust.dll") + modws2_32 = NewLazySystemDLL("ws2_32.dll") + modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") + + procCM_Get_DevNode_Status = modCfgMgr32.NewProc("CM_Get_DevNode_Status") + procCM_Get_Device_Interface_ListW = modCfgMgr32.NewProc("CM_Get_Device_Interface_ListW") + procCM_Get_Device_Interface_List_SizeW = modCfgMgr32.NewProc("CM_Get_Device_Interface_List_SizeW") + procCM_MapCrToWin32Err = modCfgMgr32.NewProc("CM_MapCrToWin32Err") + procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups") + procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges") + procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") + procBuildSecurityDescriptorW = modadvapi32.NewProc("BuildSecurityDescriptorW") + procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") + procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") + procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") + procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") + procControlService = modadvapi32.NewProc("ControlService") + procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procCopySid = modadvapi32.NewProc("CopySid") + procCreateProcessAsUserW = modadvapi32.NewProc("CreateProcessAsUserW") + procCreateServiceW = modadvapi32.NewProc("CreateServiceW") + procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procDeleteService = modadvapi32.NewProc("DeleteService") + procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") + procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx") + procEnumDependentServicesW = modadvapi32.NewProc("EnumDependentServicesW") + procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") + procEqualSid = modadvapi32.NewProc("EqualSid") + procFreeSid = modadvapi32.NewProc("FreeSid") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procGetNamedSecurityInfoW = modadvapi32.NewProc("GetNamedSecurityInfoW") + procGetSecurityDescriptorControl = modadvapi32.NewProc("GetSecurityDescriptorControl") + procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl") + procGetSecurityDescriptorGroup = modadvapi32.NewProc("GetSecurityDescriptorGroup") + procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength") + procGetSecurityDescriptorOwner = modadvapi32.NewProc("GetSecurityDescriptorOwner") + procGetSecurityDescriptorRMControl = modadvapi32.NewProc("GetSecurityDescriptorRMControl") + procGetSecurityDescriptorSacl = modadvapi32.NewProc("GetSecurityDescriptorSacl") + procGetSecurityInfo = modadvapi32.NewProc("GetSecurityInfo") + procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority") + procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority") + procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") + procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor") + procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW") + procIsTokenRestricted = modadvapi32.NewProc("IsTokenRestricted") + procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor") + procIsValidSid = modadvapi32.NewProc("IsValidSid") + procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW") + procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD") + procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD") + procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") + procOpenServiceW = modadvapi32.NewProc("OpenServiceW") + procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken") + procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") + procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") + procQueryServiceDynamicInformation = modadvapi32.NewProc("QueryServiceDynamicInformation") + procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW") + procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") + procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegNotifyChangeKeyValue = modadvapi32.NewProc("RegNotifyChangeKeyValue") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") + procRegisterServiceCtrlHandlerExW = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW") + procReportEventW = modadvapi32.NewProc("ReportEventW") + procRevertToSelf = modadvapi32.NewProc("RevertToSelf") + procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW") + procSetKernelObjectSecurity = modadvapi32.NewProc("SetKernelObjectSecurity") + procSetNamedSecurityInfoW = modadvapi32.NewProc("SetNamedSecurityInfoW") + procSetSecurityDescriptorControl = modadvapi32.NewProc("SetSecurityDescriptorControl") + procSetSecurityDescriptorDacl = modadvapi32.NewProc("SetSecurityDescriptorDacl") + procSetSecurityDescriptorGroup = modadvapi32.NewProc("SetSecurityDescriptorGroup") + procSetSecurityDescriptorOwner = modadvapi32.NewProc("SetSecurityDescriptorOwner") + procSetSecurityDescriptorRMControl = modadvapi32.NewProc("SetSecurityDescriptorRMControl") + procSetSecurityDescriptorSacl = modadvapi32.NewProc("SetSecurityDescriptorSacl") + procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo") + procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") + procSetThreadToken = modadvapi32.NewProc("SetThreadToken") + procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation") + procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") + procStartServiceW = modadvapi32.NewProc("StartServiceW") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore") + procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertFindCertificateInStore = modcrypt32.NewProc("CertFindCertificateInStore") + procCertFindChainInStore = modcrypt32.NewProc("CertFindChainInStore") + procCertFindExtension = modcrypt32.NewProc("CertFindExtension") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertGetNameStringW = modcrypt32.NewProc("CertGetNameStringW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procCryptAcquireCertificatePrivateKey = modcrypt32.NewProc("CryptAcquireCertificatePrivateKey") + procCryptDecodeObject = modcrypt32.NewProc("CryptDecodeObject") + procCryptProtectData = modcrypt32.NewProc("CryptProtectData") + procCryptQueryObject = modcrypt32.NewProc("CryptQueryObject") + procCryptUnprotectData = modcrypt32.NewProc("CryptUnprotectData") + procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore") + procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") + procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") + procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procAddDllDirectory = modkernel32.NewProc("AddDllDirectory") + procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") + procCancelIo = modkernel32.NewProc("CancelIo") + procCancelIoEx = modkernel32.NewProc("CancelIoEx") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procClosePseudoConsole = modkernel32.NewProc("ClosePseudoConsole") + procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procCreateEventExW = modkernel32.NewProc("CreateEventExW") + procCreateEventW = modkernel32.NewProc("CreateEventW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW") + procCreateMutexExW = modkernel32.NewProc("CreateMutexExW") + procCreateMutexW = modkernel32.NewProc("CreateMutexW") + procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procCreatePseudoConsole = modkernel32.NewProc("CreatePseudoConsole") + procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") + procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") + procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procDeleteProcThreadAttributeList = modkernel32.NewProc("DeleteProcThreadAttributeList") + procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") + procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procExitProcess = modkernel32.NewProc("ExitProcess") + procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW") + procFindClose = modkernel32.NewProc("FindClose") + procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification") + procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") + procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindNextChangeNotification = modkernel32.NewProc("FindNextChangeNotification") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") + procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") + procFindResourceW = modkernel32.NewProc("FindResourceW") + procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") + procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent") + procGetACP = modkernel32.NewProc("GetACP") + procGetActiveProcessorCount = modkernel32.NewProc("GetActiveProcessorCount") + procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") + procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") + procGetDiskFreeSpaceExW = modkernel32.NewProc("GetDiskFreeSpaceExW") + procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") + procGetFileTime = modkernel32.NewProc("GetFileTime") + procGetFileType = modkernel32.NewProc("GetFileType") + procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLargePageMinimum = modkernel32.NewProc("GetLargePageMinimum") + procGetLastError = modkernel32.NewProc("GetLastError") + procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") + procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") + procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") + procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetProcessId = modkernel32.NewProc("GetProcessId") + procGetProcessPreferredUILanguages = modkernel32.NewProc("GetProcessPreferredUILanguages") + procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procGetProcessWorkingSetSizeEx = modkernel32.NewProc("GetProcessWorkingSetSizeEx") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") + procGetSystemPreferredUILanguages = modkernel32.NewProc("GetSystemPreferredUILanguages") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") + procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procGetThreadPreferredUILanguages = modkernel32.NewProc("GetThreadPreferredUILanguages") + procGetTickCount64 = modkernel32.NewProc("GetTickCount64") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procGetUserPreferredUILanguages = modkernel32.NewProc("GetUserPreferredUILanguages") + procGetVersion = modkernel32.NewProc("GetVersion") + procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") + procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") + procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") + procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") + procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") + procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW") + procInitializeProcThreadAttributeList = modkernel32.NewProc("InitializeProcThreadAttributeList") + procIsWow64Process = modkernel32.NewProc("IsWow64Process") + procIsWow64Process2 = modkernel32.NewProc("IsWow64Process2") + procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procLoadResource = modkernel32.NewProc("LoadResource") + procLocalAlloc = modkernel32.NewProc("LocalAlloc") + procLocalFree = modkernel32.NewProc("LocalFree") + procLockFileEx = modkernel32.NewProc("LockFileEx") + procLockResource = modkernel32.NewProc("LockResource") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procModule32FirstW = modkernel32.NewProc("Module32FirstW") + procModule32NextW = modkernel32.NewProc("Module32NextW") + procMoveFileExW = modkernel32.NewProc("MoveFileExW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") + procOpenEventW = modkernel32.NewProc("OpenEventW") + procOpenMutexW = modkernel32.NewProc("OpenMutexW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procOpenThread = modkernel32.NewProc("OpenThread") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procProcess32FirstW = modkernel32.NewProc("Process32FirstW") + procProcess32NextW = modkernel32.NewProc("Process32NextW") + procProcessIdToSessionId = modkernel32.NewProc("ProcessIdToSessionId") + procPulseEvent = modkernel32.NewProc("PulseEvent") + procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") + procQueryFullProcessImageNameW = modkernel32.NewProc("QueryFullProcessImageNameW") + procQueryInformationJobObject = modkernel32.NewProc("QueryInformationJobObject") + procReadConsoleW = modkernel32.NewProc("ReadConsoleW") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procReadFile = modkernel32.NewProc("ReadFile") + procReadProcessMemory = modkernel32.NewProc("ReadProcessMemory") + procReleaseMutex = modkernel32.NewProc("ReleaseMutex") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procRemoveDllDirectory = modkernel32.NewProc("RemoveDllDirectory") + procResetEvent = modkernel32.NewProc("ResetEvent") + procResizePseudoConsole = modkernel32.NewProc("ResizePseudoConsole") + procResumeThread = modkernel32.NewProc("ResumeThread") + procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") + procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") + procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories") + procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procSetFileValidData = modkernel32.NewProc("SetFileValidData") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procSetErrorMode = modkernel32.NewProc("SetErrorMode") + procSetEvent = modkernel32.NewProc("SetEvent") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") + procSetFileInformationByHandle = modkernel32.NewProc("SetFileInformationByHandle") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject") + procSetNamedPipeHandleState = modkernel32.NewProc("SetNamedPipeHandleState") + procSetPriorityClass = modkernel32.NewProc("SetPriorityClass") + procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost") + procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters") + procSetProcessWorkingSetSizeEx = modkernel32.NewProc("SetProcessWorkingSetSizeEx") + procSetStdHandle = modkernel32.NewProc("SetStdHandle") + procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") + procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procSizeofResource = modkernel32.NewProc("SizeofResource") + procSleepEx = modkernel32.NewProc("SleepEx") + procTerminateJobObject = modkernel32.NewProc("TerminateJobObject") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procThread32First = modkernel32.NewProc("Thread32First") + procThread32Next = modkernel32.NewProc("Thread32Next") + procUnlockFileEx = modkernel32.NewProc("UnlockFileEx") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procUpdateProcThreadAttribute = modkernel32.NewProc("UpdateProcThreadAttribute") + procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") + procVirtualFree = modkernel32.NewProc("VirtualFree") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualProtect = modkernel32.NewProc("VirtualProtect") + procVirtualProtectEx = modkernel32.NewProc("VirtualProtectEx") + procVirtualQuery = modkernel32.NewProc("VirtualQuery") + procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId") + procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") + procWriteFile = modkernel32.NewProc("WriteFile") + procWriteProcessMemory = modkernel32.NewProc("WriteProcessMemory") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNtCreateFile = modntdll.NewProc("NtCreateFile") + procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile") + procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess") + procNtQuerySystemInformation = modntdll.NewProc("NtQuerySystemInformation") + procNtSetInformationFile = modntdll.NewProc("NtSetInformationFile") + procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess") + procNtSetSystemInformation = modntdll.NewProc("NtSetSystemInformation") + procRtlAddFunctionTable = modntdll.NewProc("RtlAddFunctionTable") + procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl") + procRtlDeleteFunctionTable = modntdll.NewProc("RtlDeleteFunctionTable") + procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus") + procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus") + procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb") + procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers") + procRtlGetVersion = modntdll.NewProc("RtlGetVersion") + procRtlInitString = modntdll.NewProc("RtlInitString") + procRtlInitUnicodeString = modntdll.NewProc("RtlInitUnicodeString") + procRtlNtStatusToDosErrorNoTeb = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb") + procCLSIDFromString = modole32.NewProc("CLSIDFromString") + procCoCreateGuid = modole32.NewProc("CoCreateGuid") + procCoGetObject = modole32.NewProc("CoGetObject") + procCoInitializeEx = modole32.NewProc("CoInitializeEx") + procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") + procCoUninitialize = modole32.NewProc("CoUninitialize") + procStringFromGUID2 = modole32.NewProc("StringFromGUID2") + procEnumProcessModules = modpsapi.NewProc("EnumProcessModules") + procEnumProcessModulesEx = modpsapi.NewProc("EnumProcessModulesEx") + procEnumProcesses = modpsapi.NewProc("EnumProcesses") + procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW") + procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW") + procGetModuleInformation = modpsapi.NewProc("GetModuleInformation") + procQueryWorkingSetEx = modpsapi.NewProc("QueryWorkingSetEx") + procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications") + procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procSetupDiBuildDriverInfoList = modsetupapi.NewProc("SetupDiBuildDriverInfoList") + procSetupDiCallClassInstaller = modsetupapi.NewProc("SetupDiCallClassInstaller") + procSetupDiCancelDriverInfoSearch = modsetupapi.NewProc("SetupDiCancelDriverInfoSearch") + procSetupDiClassGuidsFromNameExW = modsetupapi.NewProc("SetupDiClassGuidsFromNameExW") + procSetupDiClassNameFromGuidExW = modsetupapi.NewProc("SetupDiClassNameFromGuidExW") + procSetupDiCreateDeviceInfoListExW = modsetupapi.NewProc("SetupDiCreateDeviceInfoListExW") + procSetupDiCreateDeviceInfoW = modsetupapi.NewProc("SetupDiCreateDeviceInfoW") + procSetupDiDestroyDeviceInfoList = modsetupapi.NewProc("SetupDiDestroyDeviceInfoList") + procSetupDiDestroyDriverInfoList = modsetupapi.NewProc("SetupDiDestroyDriverInfoList") + procSetupDiEnumDeviceInfo = modsetupapi.NewProc("SetupDiEnumDeviceInfo") + procSetupDiEnumDriverInfoW = modsetupapi.NewProc("SetupDiEnumDriverInfoW") + procSetupDiGetClassDevsExW = modsetupapi.NewProc("SetupDiGetClassDevsExW") + procSetupDiGetClassInstallParamsW = modsetupapi.NewProc("SetupDiGetClassInstallParamsW") + procSetupDiGetDeviceInfoListDetailW = modsetupapi.NewProc("SetupDiGetDeviceInfoListDetailW") + procSetupDiGetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiGetDeviceInstallParamsW") + procSetupDiGetDeviceInstanceIdW = modsetupapi.NewProc("SetupDiGetDeviceInstanceIdW") + procSetupDiGetDevicePropertyW = modsetupapi.NewProc("SetupDiGetDevicePropertyW") + procSetupDiGetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiGetDeviceRegistryPropertyW") + procSetupDiGetDriverInfoDetailW = modsetupapi.NewProc("SetupDiGetDriverInfoDetailW") + procSetupDiGetSelectedDevice = modsetupapi.NewProc("SetupDiGetSelectedDevice") + procSetupDiGetSelectedDriverW = modsetupapi.NewProc("SetupDiGetSelectedDriverW") + procSetupDiOpenDevRegKey = modsetupapi.NewProc("SetupDiOpenDevRegKey") + procSetupDiSetClassInstallParamsW = modsetupapi.NewProc("SetupDiSetClassInstallParamsW") + procSetupDiSetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiSetDeviceInstallParamsW") + procSetupDiSetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiSetDeviceRegistryPropertyW") + procSetupDiSetSelectedDevice = modsetupapi.NewProc("SetupDiSetSelectedDevice") + procSetupDiSetSelectedDriverW = modsetupapi.NewProc("SetupDiSetSelectedDriverW") + procSetupUninstallOEMInfW = modsetupapi.NewProc("SetupUninstallOEMInfW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") + procShellExecuteW = modshell32.NewProc("ShellExecuteW") + procEnumChildWindows = moduser32.NewProc("EnumChildWindows") + procEnumWindows = moduser32.NewProc("EnumWindows") + procExitWindowsEx = moduser32.NewProc("ExitWindowsEx") + procGetClassNameW = moduser32.NewProc("GetClassNameW") + procGetDesktopWindow = moduser32.NewProc("GetDesktopWindow") + procGetForegroundWindow = moduser32.NewProc("GetForegroundWindow") + procGetGUIThreadInfo = moduser32.NewProc("GetGUIThreadInfo") + procGetShellWindow = moduser32.NewProc("GetShellWindow") + procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") + procIsWindow = moduser32.NewProc("IsWindow") + procIsWindowUnicode = moduser32.NewProc("IsWindowUnicode") + procIsWindowVisible = moduser32.NewProc("IsWindowVisible") + procMessageBoxW = moduser32.NewProc("MessageBoxW") + procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") + procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW") + procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW") + procVerQueryValueW = modversion.NewProc("VerQueryValueW") + proctimeBeginPeriod = modwinmm.NewProc("timeBeginPeriod") + proctimeEndPeriod = modwinmm.NewProc("timeEndPeriod") + procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx") + procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") + procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") + procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procWSALookupServiceBeginW = modws2_32.NewProc("WSALookupServiceBeginW") + procWSALookupServiceEnd = modws2_32.NewProc("WSALookupServiceEnd") + procWSALookupServiceNextW = modws2_32.NewProc("WSALookupServiceNextW") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASend = modws2_32.NewProc("WSASend") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procWSASocketW = modws2_32.NewProc("WSASocketW") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procbind = modws2_32.NewProc("bind") + procclosesocket = modws2_32.NewProc("closesocket") + procconnect = modws2_32.NewProc("connect") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetpeername = modws2_32.NewProc("getpeername") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procgetsockname = modws2_32.NewProc("getsockname") + procgetsockopt = modws2_32.NewProc("getsockopt") + proclisten = modws2_32.NewProc("listen") + procntohs = modws2_32.NewProc("ntohs") + procrecvfrom = modws2_32.NewProc("recvfrom") + procsendto = modws2_32.NewProc("sendto") + procsetsockopt = modws2_32.NewProc("setsockopt") + procshutdown = modws2_32.NewProc("shutdown") + procsocket = modws2_32.NewProc("socket") + procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW") + procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory") + procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken") +) + +func cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) { + r0, _, _ := syscall.Syscall6(procCM_Get_DevNode_Status.Addr(), 4, uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags), 0, 0) + ret = CONFIGRET(r0) + return +} + +func cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) { + r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_ListW.Addr(), 5, uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags), 0) + ret = CONFIGRET(r0) + return +} + +func cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) { + r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_List_SizeW.Addr(), 4, uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags), 0, 0) + ret = CONFIGRET(r0) + return +} + +func cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) { + r0, _, _ := syscall.Syscall(procCM_MapCrToWin32Err.Addr(), 2, uintptr(configRet), uintptr(defaultWin32Error), 0) + ret = Errno(r0) + return +} + +func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) { + var _p0 uint32 + if resetToDefault { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) { + var _p0 uint32 + if disableAllPrivileges { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) { + r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { + r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CloseServiceHandle(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(str) + if err != nil { + return + } + return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size) +} + +func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { + r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeleteService(service Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeregisterEventSource(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) { + r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procEnumDependentServicesW.Addr(), 6, uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { + r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) + isEqual = r0 != 0 + return +} + +func FreeSid(sid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func GetLengthSid(sid *SID) (len uint32) { + r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + len = uint32(r0) + return +} + +func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + var _p0 *uint16 + _p0, ret = syscall.UTF16PtrFromString(objectName) + if ret != nil { + return + } + return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd) +} + +func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) { + var _p0 uint32 + if *daclPresent { + _p0 = 1 + } + var _p1 uint32 + if *daclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) + *daclPresent = _p0 != 0 + *daclDefaulted = _p1 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) { + var _p0 uint32 + if *groupDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0))) + *groupDefaulted = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) { + r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) + len = uint32(r0) + return +} + +func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) { + var _p0 uint32 + if *ownerDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0))) + *ownerDefaulted = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) { + r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) { + var _p0 uint32 + if *saclPresent { + _p0 = 1 + } + var _p1 uint32 + if *saclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) + *saclPresent = _p0 != 0 + *saclDefaulted = _p1 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) { + r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) { + r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0) + subAuthority = (*uint32)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthorityCount(sid *SID) (count *uint8) { + r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + count = (*uint8)(unsafe.Pointer(r0)) + return +} + +func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ImpersonateSelf(impersonationlevel uint32) (err error) { + r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) { + r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) { + var _p0 uint32 + if forceAppsClosed { + _p0 = 1 + } + var _p1 uint32 + if rebootAfterShutdown { + _p1 = 1 + } + r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func isTokenRestricted(tokenHandle Token) (ret bool, err error) { + r0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0) + ret = r0 != 0 + if !ret { + err = errnoErr(e1) + } + return +} + +func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { + r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) + isValid = r0 != 0 + return +} + +func isValidSid(sid *SID) (isValid bool) { + r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + isValid = r0 != 0 + return +} + +func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) { + r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0) + isWellKnown = r0 != 0 + return +} + +func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) { + r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) { + r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) { + var _p0 uint32 + if openAsSelf { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) { + err = procQueryServiceDynamicInformation.Find() + if err != nil { + return + } + r1, _, e1 := syscall.Syscall(procQueryServiceDynamicInformation.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RegCloseKey(key Handle) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) { + var _p0 uint32 + if watchSubtree { + _p0 = 1 + } + var _p1 uint32 + if asynchronous { + _p1 = 1 + } + r0, _, _ := syscall.Syscall6(procRegNotifyChangeKeyValue.Addr(), 5, uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RevertToSelf() (err error) { + r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) { + r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) { + r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + var _p0 *uint16 + _p0, ret = syscall.UTF16PtrFromString(objectName) + if ret != nil { + return + } + return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl) +} + +func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) { + r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) { + var _p0 uint32 + if daclPresent { + _p0 = 1 + } + var _p1 uint32 + if daclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) { + var _p0 uint32 + if groupDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) { + var _p0 uint32 + if ownerDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) { + syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) + return +} + +func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) { + var _p0 uint32 + if saclPresent { + _p0 = 1 + } + var _p1 uint32 + if saclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + r0, _, _ := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetThreadToken(thread *Handle, token Token) (err error) { + r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { + r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { + r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertCloseStore(store Handle, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { + r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + err = errnoErr(e1) + } + return +} + +func CertDeleteCertificateFromStore(certContext *CertContext) (err error) { + r1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) { + r0, _, _ := syscall.Syscall(procCertDuplicateCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) + dupContext = (*CertContext)(unsafe.Pointer(r0)) + return +} + +func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { + r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + err = errnoErr(e1) + } + return +} + +func CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) { + r0, _, e1 := syscall.Syscall6(procCertFindCertificateInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext))) + cert = (*CertContext)(unsafe.Pointer(r0)) + if cert == nil { + err = errnoErr(e1) + } + return +} + +func CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) { + r0, _, e1 := syscall.Syscall6(procCertFindChainInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext))) + certchain = (*CertChainContext)(unsafe.Pointer(r0)) + if certchain == nil { + err = errnoErr(e1) + } + return +} + +func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) { + r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions))) + ret = (*CertExtension)(unsafe.Pointer(r0)) + return +} + +func CertFreeCertificateChain(ctx *CertChainContext) { + syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + return +} + +func CertFreeCertificateContext(ctx *CertContext) (err error) { + r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { + r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) { + r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size)) + chars = uint32(r0) + return +} + +func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { + r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0) + store = Handle(r0) + if store == 0 { + err = errnoErr(e1) + } + return +} + +func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { + r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) { + var _p0 uint32 + if *callerFreeProvOrNCryptKey { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall6(procCryptAcquireCertificatePrivateKey.Addr(), 6, uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0))) + *callerFreeProvOrNCryptKey = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { + r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) { + r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { + r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) { + r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags)) + store = Handle(r0) + if store == 0 { + err = errnoErr(e1) + } + return +} + +func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { + r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) + same = r0 != 0 + return +} + +func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + var _p0 *uint16 + _p0, status = syscall.UTF16PtrFromString(name) + if status != nil { + return + } + return _DnsQuery(_p0, qtype, options, extra, qrs, pr) +} + +func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) + if r0 != 0 { + status = syscall.Errno(r0) + } + return +} + +func DnsRecordListFree(rl *DNSRecord, freetype uint32) { + syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) + return +} + +func DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { + r0, _, _ := syscall.Syscall6(procDwmGetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { + r0, _, _ := syscall.Syscall6(procDwmSetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { + r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func AddDllDirectory(path *uint16) (cookie uintptr, err error) { + r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + cookie = uintptr(r0) + if cookie == 0 { + err = errnoErr(e1) + } + return +} + +func AssignProcessToJobObject(job Handle, process Handle) (err error) { + r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CancelIo(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CancelIoEx(s Handle, o *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CloseHandle(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ClosePseudoConsole(console Handle) { + syscall.Syscall(procClosePseudoConsole.Addr(), 1, uintptr(console), 0, 0) + return +} + +func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { + r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if initialOwner { + _p0 = 1 + } + r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) { + r0, _, _ := syscall.Syscall6(procCreatePseudoConsole.Addr(), 5, uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)), 0) + if r0 != 0 { + hr = syscall.Errno(r0) + } + return +} + +func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeleteFile(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) { + syscall.Syscall(procDeleteProcThreadAttributeList.Addr(), 1, uintptr(unsafe.Pointer(attrlist)), 0, 0) + return +} + +func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) { + var _p0 uint32 + if bInheritHandle { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ExitProcess(exitcode uint32) { + syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0) + return +} + +func ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func FindClose(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindCloseChangeNotification(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(path) + if err != nil { + return + } + return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter) +} + +func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) { + var _p1 uint32 + if watchSubtree { + _p1 = 1 + } + r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func FindNextChangeNotification(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func findNextFile1(handle Handle, data *win32finddata1) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindResourceW.Addr(), 3, uintptr(module), uintptr(name), uintptr(resType)) + resInfo = Handle(r0) + if resInfo == 0 { + err = errnoErr(e1) + } + return +} + +func FindVolumeClose(findVolume Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FlushFileBuffers(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FlushViewOfFile(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) { + var _p0 *uint16 + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func FreeEnvironmentStrings(envs *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FreeLibrary(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetACP() (acp uint32) { + r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) + acp = uint32(r0) + return +} + +func GetActiveProcessorCount(groupNumber uint16) (ret uint32) { + r0, _, _ := syscall.Syscall(procGetActiveProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0) + ret = uint32(r0) + return +} + +func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { + r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCommandLine() (cmd *uint16) { + r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0) + cmd = (*uint16)(unsafe.Pointer(r0)) + return +} + +func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetComputerName(buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetConsoleMode(console Handle, mode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetCurrentProcessId() (pid uint32) { + r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) + pid = uint32(r0) + return +} + +func GetCurrentThreadId() (id uint32) { + r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0) + id = uint32(r0) + return +} + +func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) { + r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetDriveType(rootPathName *uint16) (driveType uint32) { + r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) + driveType = uint32(r0) + return +} + +func GetEnvironmentStrings() (envs *uint16, err error) { + r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0) + envs = (*uint16)(unsafe.Pointer(r0)) + if envs == nil { + err = errnoErr(e1) + } + return +} + +func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { + r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileAttributes(name *uint16) (attrs uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + attrs = uint32(r0) + if attrs == INVALID_FILE_ATTRIBUTES { + err = errnoErr(e1) + } + return +} + +func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) { + r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procGetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileType(filehandle Handle) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetLargePageMinimum() (size uintptr) { + r0, _, _ := syscall.Syscall(procGetLargePageMinimum.Addr(), 0, 0, 0, 0) + size = uintptr(r0) + return +} + +func GetLastError() (lasterr error) { + r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) + if r0 != 0 { + lasterr = syscall.Errno(r0) + } + return +} + +func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetLogicalDrives() (drivesBitMask uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) + drivesBitMask = uint32(r0) + if drivesBitMask == 0 { + err = errnoErr(e1) + } + return +} + +func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetMaximumProcessorCount(groupNumber uint16) (ret uint32) { + r0, _, _ := syscall.Syscall(procGetMaximumProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0) + ret = uint32(r0) + return +} + +func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) { + r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetPriorityClass(process Handle) (ret uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0) + ret = uint32(r0) + if ret == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcAddress(module Handle, procname string) (proc uintptr, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(procname) + if err != nil { + return + } + return _GetProcAddress(module, _p0) +} + +func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0) + proc = uintptr(r0) + if proc == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessId(process Handle) (id uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0) + id = uint32(r0) + if id == 0 { + err = errnoErr(e1) + } + return +} + +func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) { + syscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0) + return +} + +func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func getStartupInfo(startupInfo *StartupInfo) { + syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) + return +} + +func GetStdHandle(stdhandle uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + err = errnoErr(e1) + } + return +} + +func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetSystemTimeAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + +func GetSystemTimePreciseAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + +func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + err = errnoErr(e1) + } + return +} + +func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getTickCount64() (ms uint64) { + r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0) + ms = uint64(r0) + return +} + +func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0) + rc = uint32(r0) + if rc == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVersion() (ver uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0) + ver = uint32(r0) + if ver == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + err = errnoErr(e1) + } + return +} + +func initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procInitializeProcThreadAttributeList.Addr(), 4, uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func IsWow64Process(handle Handle, isWow64 *bool) (err error) { + var _p0 uint32 + if *isWow64 { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0) + *isWow64 = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) { + err = procIsWow64Process2.Find() + if err != nil { + return + } + r1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibraryEx(_p0, zero, flags) +} + +func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func LoadLibrary(libname string) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibrary(_p0) +} + +func _LoadLibrary(libname *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func LoadResource(module Handle, resInfo Handle) (resData Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0) + resData = Handle(r0) + if resData == 0 { + err = errnoErr(e1) + } + return +} + +func LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) { + r0, _, e1 := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(flags), uintptr(length), 0) + ptr = uintptr(r0) + if ptr == 0 { + err = errnoErr(e1) + } + return +} + +func LocalFree(hmem Handle) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0) + handle = Handle(r0) + if handle != 0 { + err = errnoErr(e1) + } + return +} + +func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LockResource(resData Handle) (addr uintptr, err error) { + r0, _, e1 := syscall.Syscall(procLockResource.Addr(), 1, uintptr(resData), 0, 0) + addr = uintptr(r0) + if addr == 0 { + err = errnoErr(e1) + } + return +} + +func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0) + addr = uintptr(r0) + if addr == 0 { + err = errnoErr(e1) + } + return +} + +func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procModule32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procModule32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func MoveFile(from *uint16, to *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { + r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) + nwrite = int32(r0) + if nwrite == 0 { + err = errnoErr(e1) + } + return +} + +func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procProcessIdToSessionId.Addr(), 2, uintptr(pid), uintptr(unsafe.Pointer(sessionid)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func PulseEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryFullProcessImageNameW.Addr(), 4, uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) { + r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + var _p0 uint32 + if watchSubTree { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReleaseMutex(mutex Handle) (err error) { + r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RemoveDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RemoveDllDirectory(cookie uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procRemoveDllDirectory.Addr(), 1, uintptr(cookie), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ResetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func resizePseudoConsole(pconsole Handle, size uint32) (hr error) { + r0, _, _ := syscall.Syscall(procResizePseudoConsole.Addr(), 2, uintptr(pconsole), uintptr(size), 0) + if r0 != 0 { + hr = syscall.Errno(r0) + } + return +} + +func ResumeThread(thread Handle) (ret uint32, err error) { + r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) + ret = uint32(r0) + if ret == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { + r1, _, e1 := syscall.Syscall(procSetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setConsoleCursorPosition(console Handle, position uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetConsoleMode(console Handle, mode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCurrentDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetDefaultDllDirectories(directoryFlags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetDllDirectory(path string) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(path) + if err != nil { + return + } + return _SetDllDirectory(_p0) +} + +func _SetDllDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetEndOfFile(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileValidData(handle Handle, validDataLength int64) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileValidData.Addr(), 2, uintptr(handle), uintptr(validDataLength), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetErrorMode(mode uint32) (ret uint32) { + r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0) + ret = uint32(r0) + return +} + +func SetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileAttributes(name *uint16, attrs uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { + r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0) + newlowoffset = uint32(r0) + if newlowoffset == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) { + r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0) + ret = int(r0) + if ret == 0 { + err = errnoErr(e1) + } + return +} + +func SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetNamedPipeHandleState.Addr(), 4, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetPriorityClass(process Handle, priorityClass uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetProcessPriorityBoost(process Handle, disable bool) (err error) { + var _p0 uint32 + if disable { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetProcessShutdownParameters(level uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetStdHandle(stdhandle uint32, handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SizeofResource(module Handle, resInfo Handle) (size uint32, err error) { + r0, _, e1 := syscall.Syscall(procSizeofResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0) + size = uint32(r0) + if size == 0 { + err = errnoErr(e1) + } + return +} + +func SleepEx(milliseconds uint32, alertable bool) (ret uint32) { + var _p0 uint32 + if alertable { + _p0 = 1 + } + r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0) + ret = uint32(r0) + return +} + +func TerminateJobObject(job Handle, exitCode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func TerminateProcess(handle Handle, exitcode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func UnmapViewOfFile(addr uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) { + r1, _, e1 := syscall.Syscall9(procUpdateProcThreadAttribute.Addr(), 7, uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0) + value = uintptr(r0) + if value == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualLock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualUnlock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WTSGetActiveConsoleSessionId() (sessionID uint32) { + r0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0) + sessionID = uint32(r0) + return +} + +func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + var _p0 uint32 + if waitAll { + _p0 = 1 + } + r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0) + event = uint32(r0) + if event == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) { + r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0) + event = uint32(r0) + if event == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) { + r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { + syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) + return +} + +func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func NetApiBufferFree(buf *byte) (neterr error) { + r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { + r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { + r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall12(procNtCreateFile.Addr(), 11, uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength), 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) { + r0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procNtQueryInformationProcess.Addr(), 5, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)), 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) { + r0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen)) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) { + r0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress)) + ret = r0 != 0 + return +} + +func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { + r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) { + r0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0) + ret = r0 != 0 + return +} + +func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { + r0, _, _ := syscall.Syscall6(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlGetCurrentPeb() (peb *PEB) { + r0, _, _ := syscall.Syscall(procRtlGetCurrentPeb.Addr(), 0, 0, 0, 0) + peb = (*PEB)(unsafe.Pointer(r0)) + return +} + +func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) { + syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) + return +} + +func rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) { + r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlInitString(destinationString *NTString, sourceString *byte) { + syscall.Syscall(procRtlInitString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0) + return +} + +func RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) { + syscall.Syscall(procRtlInitUnicodeString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0) + return +} + +func rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) { + r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(ntstatus), 0, 0) + ret = syscall.Errno(r0) + return +} + +func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { + r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func coCreateGuid(pguid *GUID) (ret error) { + r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) { + r0, _, _ := syscall.Syscall6(procCoGetObject.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoInitializeEx(reserved uintptr, coInit uint32) (ret error) { + r0, _, _ := syscall.Syscall(procCoInitializeEx.Addr(), 2, uintptr(reserved), uintptr(coInit), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoTaskMemFree(address unsafe.Pointer) { + syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0) + return +} + +func CoUninitialize() { + syscall.Syscall(procCoUninitialize.Addr(), 0, 0, 0, 0) + return +} + +func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { + r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) + chars = int32(r0) + return +} + +func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) { + r1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { + ret = procSubscribeServiceChangeNotifications.Find() + if ret != nil { + return + } + r0, _, _ := syscall.Syscall6(procSubscribeServiceChangeNotifications.Addr(), 5, uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) { + err = procUnsubscribeServiceChangeNotifications.Find() + if err != nil { + return + } + syscall.Syscall(procUnsubscribeServiceChangeNotifications.Addr(), 1, uintptr(subscription), 0, 0) + return +} + +func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiBuildDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiCallClassInstaller.Addr(), 3, uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiCancelDriverInfoSearch.Addr(), 1, uintptr(deviceInfoSet), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiClassGuidsFromNameExW.Addr(), 6, uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiClassNameFromGuidExW.Addr(), 6, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) { + r0, _, e1 := syscall.Syscall6(procSetupDiCreateDeviceInfoListExW.Addr(), 4, uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0) + handle = DevInfo(r0) + if handle == DevInfo(InvalidHandle) { + err = errnoErr(e1) + } + return +} + +func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.Syscall9(procSetupDiCreateDeviceInfoW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiDestroyDeviceInfoList.Addr(), 1, uintptr(deviceInfoSet), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiDestroyDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiEnumDeviceInfo.Addr(), 3, uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiEnumDriverInfoW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) { + r0, _, e1 := syscall.Syscall9(procSetupDiGetClassDevsExW.Addr(), 7, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0) + handle = DevInfo(r0) + if handle == DevInfo(InvalidHandle) { + err = errnoErr(e1) + } + return +} + +func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiGetClassInstallParamsW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInfoListDetailW.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiGetDeviceInstanceIdW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procSetupDiGetDevicePropertyW.Addr(), 8, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procSetupDiGetDeviceRegistryPropertyW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiGetDriverInfoDetailW.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) { + r0, _, e1 := syscall.Syscall6(procSetupDiOpenDevRegKey.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired)) + key = Handle(r0) + if key == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiSetClassInstallParamsW.Addr(), 4, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetupDiSetDeviceRegistryPropertyW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) { + r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procSetupUninstallOEMInfW.Addr(), 3, uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) { + r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) + argv = (**uint16)(unsafe.Pointer(r0)) + if argv == nil { + err = errnoErr(e1) + } + return +} + +func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) { + r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) { + r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) + if r1 <= 32 { + err = errnoErr(e1) + } + return +} + +func EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) { + syscall.Syscall(procEnumChildWindows.Addr(), 3, uintptr(hwnd), uintptr(enumFunc), uintptr(param)) + return +} + +func EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) { + r1, _, e1 := syscall.Syscall(procEnumWindows.Addr(), 2, uintptr(enumFunc), uintptr(param), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ExitWindowsEx(flags uint32, reason uint32) (err error) { + r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) { + r0, _, e1 := syscall.Syscall(procGetClassNameW.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount)) + copied = int32(r0) + if copied == 0 { + err = errnoErr(e1) + } + return +} + +func GetDesktopWindow() (hwnd HWND) { + r0, _, _ := syscall.Syscall(procGetDesktopWindow.Addr(), 0, 0, 0, 0) + hwnd = HWND(r0) + return +} + +func GetForegroundWindow() (hwnd HWND) { + r0, _, _ := syscall.Syscall(procGetForegroundWindow.Addr(), 0, 0, 0, 0) + hwnd = HWND(r0) + return +} + +func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetGUIThreadInfo.Addr(), 2, uintptr(thread), uintptr(unsafe.Pointer(info)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetShellWindow() (shellWindow HWND) { + r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) + shellWindow = HWND(r0) + return +} + +func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0) + tid = uint32(r0) + if tid == 0 { + err = errnoErr(e1) + } + return +} + +func IsWindow(hwnd HWND) (isWindow bool) { + r0, _, _ := syscall.Syscall(procIsWindow.Addr(), 1, uintptr(hwnd), 0, 0) + isWindow = r0 != 0 + return +} + +func IsWindowUnicode(hwnd HWND) (isUnicode bool) { + r0, _, _ := syscall.Syscall(procIsWindowUnicode.Addr(), 1, uintptr(hwnd), 0, 0) + isUnicode = r0 != 0 + return +} + +func IsWindowVisible(hwnd HWND) (isVisible bool) { + r0, _, _ := syscall.Syscall(procIsWindowVisible.Addr(), 1, uintptr(hwnd), 0, 0) + isVisible = r0 != 0 + return +} + +func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { + r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) + ret = int32(r0) + if ret == 0 { + err = errnoErr(e1) + } + return +} + +func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { + var _p0 uint32 + if inheritExisting { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DestroyEnvironmentBlock(block *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(filename) + if err != nil { + return + } + return _GetFileVersionInfoSize(_p0, zeroHandle) +} + +func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0) + bufSize = uint32(r0) + if bufSize == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(filename) + if err != nil { + return + } + return _GetFileVersionInfo(_p0, handle, bufSize, buffer) +} + +func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { + r1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(subBlock) + if err != nil { + return + } + return _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize) +} + +func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func TimeBeginPeriod(period uint32) (err error) { + r1, _, e1 := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func TimeEndPeriod(period uint32) (err error) { + r1, _, e1 := syscall.Syscall(proctimeEndPeriod.Addr(), 1, uintptr(period), 0, 0) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { + r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func FreeAddrInfoW(addrinfo *AddrinfoW) { + syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) + return +} + +func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { + r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func WSACleanup() (err error) { + r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { + r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) + n = int32(r0) + if n == -1 { + err = errnoErr(e1) + } + return +} + +func WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } + r1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) { + r1, _, e1 := syscall.Syscall(procWSALookupServiceBeginW.Addr(), 3, uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSALookupServiceEnd(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procWSALookupServiceEnd.Addr(), 1, uintptr(handle), 0, 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) { + r1, _, e1 := syscall.Syscall6(procWSALookupServiceNextW.Addr(), 4, uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)), 0, 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procWSASocketW.Addr(), 6, uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { + r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Closesocket(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func GetHostByName(name string) (h *Hostent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetHostByName(_p0) +} + +func _GetHostByName(name *byte) (h *Hostent, err error) { + r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + h = (*Hostent)(unsafe.Pointer(r0)) + if h == nil { + err = errnoErr(e1) + } + return +} + +func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func GetProtoByName(name string) (p *Protoent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetProtoByName(_p0) +} + +func _GetProtoByName(name *byte) (p *Protoent, err error) { + r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + p = (*Protoent)(unsafe.Pointer(r0)) + if p == nil { + err = errnoErr(e1) + } + return +} + +func GetServByName(name string, proto string) (s *Servent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + var _p1 *byte + _p1, err = syscall.BytePtrFromString(proto) + if err != nil { + return + } + return _GetServByName(_p0, _p1) +} + +func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { + r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) + s = (*Servent)(unsafe.Pointer(r0)) + if s == nil { + err = errnoErr(e1) + } + return +} + +func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { + r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func listen(s Handle, backlog int32) (err error) { + r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Ntohs(netshort uint16) (u uint16) { + r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) + u = uint16(r0) + return +} + +func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := syscall.Syscall6(procrecvfrom.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int32(r0) + if n == -1 { + err = errnoErr(e1) + } + return +} + +func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { + r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func shutdown(s Handle, how int32) (err error) { + r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WTSFreeMemory(ptr uintptr) { + syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0) + return +} + +func WTSQueryUserToken(session uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go index 8a7392c..784bb88 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build go1.10 -// +build go1.10 package bidirule diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go index bb0a920..8e1e943 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build !go1.10 -// +build !go1.10 package bidirule diff --git a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go index 42fa8d7..d2bd711 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.10 && !go1.13 -// +build go1.10,!go1.13 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go index 56a0e1e..f76bdca 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.13 && !go1.14 -// +build go1.13,!go1.14 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go index baacf32..3aa2c3b 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.14 && !go1.16 -// +build go1.14,!go1.16 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go index ffadb7b..a713757 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.16 && !go1.21 -// +build go1.16,!go1.21 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go index 92cce58..f15746f 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.21 -// +build go1.21 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go index f517fdb..c164d37 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build !go1.10 -// +build !go1.10 package bidi diff --git a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go index f5a0788..1af161c 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.10 && !go1.13 -// +build go1.10,!go1.13 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go index cb7239c..eb73ecc 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.13 && !go1.14 -// +build go1.13,!go1.14 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go index 11b2733..276cb8d 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.14 && !go1.16 -// +build go1.14,!go1.16 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go index f65785e..0cceffd 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.16 && !go1.21 -// +build go1.16,!go1.21 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go index e1858b8..b0819e4 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.21 -// +build go1.21 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go index 0175eae..bf65457 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go @@ -1,7 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build !go1.10 -// +build !go1.10 package norm diff --git a/vendor/golang.org/x/tools/go/analysis/diagnostic.go b/vendor/golang.org/x/tools/go/analysis/diagnostic.go index f67c972..c638f27 100644 --- a/vendor/golang.org/x/tools/go/analysis/diagnostic.go +++ b/vendor/golang.org/x/tools/go/analysis/diagnostic.go @@ -31,14 +31,14 @@ type Diagnostic struct { // see https://pkg.go.dev/net/url#URL.ResolveReference. URL string - // SuggestedFixes contains suggested fixes for a diagnostic - // which can be used to perform edits to a file that address - // the diagnostic. - // - // Diagnostics should not contain SuggestedFixes that overlap. - SuggestedFixes []SuggestedFix // optional + // SuggestedFixes is an optional list of fixes to address the + // problem described by the diagnostic, each one representing + // an alternative strategy; at most one may be applied. + SuggestedFixes []SuggestedFix - Related []RelatedInformation // optional + // Related contains optional secondary positions and messages + // related to the primary diagnostic. + Related []RelatedInformation } // RelatedInformation contains information related to a diagnostic. @@ -55,8 +55,7 @@ type RelatedInformation struct { // user can choose to apply to their code. Usually the SuggestedFix is // meant to fix the issue flagged by the diagnostic. // -// TextEdits for a SuggestedFix should not overlap, -// nor contain edits for other packages. +// The TextEdits must not overlap, nor contain edits for other packages. type SuggestedFix struct { // A description for this suggested fix to be shown to a user deciding // whether to accept it. diff --git a/vendor/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go b/vendor/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go index 9e3fde7..ff14ff5 100644 --- a/vendor/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go +++ b/vendor/golang.org/x/tools/go/analysis/internal/analysisflags/flags.go @@ -362,15 +362,24 @@ type JSONSuggestedFix struct { Edits []JSONTextEdit `json:"edits"` } -// A JSONDiagnostic can be used to encode and decode analysis.Diagnostics to and -// from JSON. -// TODO(matloob): Should the JSON diagnostics contain ranges? -// If so, how should they be formatted? +// A JSONDiagnostic describes the JSON schema of an analysis.Diagnostic. +// +// TODO(matloob): include End position if present. type JSONDiagnostic struct { - Category string `json:"category,omitempty"` - Posn string `json:"posn"` - Message string `json:"message"` - SuggestedFixes []JSONSuggestedFix `json:"suggested_fixes,omitempty"` + Category string `json:"category,omitempty"` + Posn string `json:"posn"` // e.g. "file.go:line:column" + Message string `json:"message"` + SuggestedFixes []JSONSuggestedFix `json:"suggested_fixes,omitempty"` + Related []JSONRelatedInformation `json:"related,omitempty"` +} + +// A JSONRelated describes a secondary position and message related to +// a primary diagnostic. +// +// TODO(adonovan): include End position if present. +type JSONRelatedInformation struct { + Posn string `json:"posn"` // e.g. "file.go:line:column" + Message string `json:"message"` } // Add adds the result of analysis 'name' on package 'id'. @@ -401,11 +410,19 @@ func (tree JSONTree) Add(fset *token.FileSet, id, name string, diags []analysis. Edits: edits, }) } + var related []JSONRelatedInformation + for _, r := range f.Related { + related = append(related, JSONRelatedInformation{ + Posn: fset.Position(r.Pos).String(), + Message: r.Message, + }) + } jdiag := JSONDiagnostic{ Category: f.Category, Posn: fset.Position(f.Pos).String(), Message: f.Message, SuggestedFixes: fixes, + Related: related, } diagnostics = append(diagnostics, jdiag) } diff --git a/vendor/golang.org/x/tools/go/analysis/internal/checker/checker.go b/vendor/golang.org/x/tools/go/analysis/internal/checker/checker.go index 33ca77a..3c89350 100644 --- a/vendor/golang.org/x/tools/go/analysis/internal/checker/checker.go +++ b/vendor/golang.org/x/tools/go/analysis/internal/checker/checker.go @@ -342,20 +342,28 @@ func applyFixes(roots []*action) error { for _, edit := range sf.TextEdits { // Validate the edit. // Any error here indicates a bug in the analyzer. - file := act.pkg.Fset.File(edit.Pos) + start, end := edit.Pos, edit.End + file := act.pkg.Fset.File(start) if file == nil { return fmt.Errorf("analysis %q suggests invalid fix: missing file info for pos (%v)", - act.a.Name, edit.Pos) + act.a.Name, start) } - if edit.Pos > edit.End { + if !end.IsValid() { + end = start + } + if start > end { return fmt.Errorf("analysis %q suggests invalid fix: pos (%v) > end (%v)", - act.a.Name, edit.Pos, edit.End) + act.a.Name, start, end) } - if eof := token.Pos(file.Base() + file.Size()); edit.End > eof { + if eof := token.Pos(file.Base() + file.Size()); end > eof { return fmt.Errorf("analysis %q suggests invalid fix: end (%v) past end of file (%v)", - act.a.Name, edit.End, eof) + act.a.Name, end, eof) + } + edit := diff.Edit{ + Start: file.Offset(start), + End: file.Offset(end), + New: string(edit.NewText), } - edit := diff.Edit{Start: file.Offset(edit.Pos), End: file.Offset(edit.End), New: string(edit.NewText)} editsForTokenFile[file] = append(editsForTokenFile[file], edit) } } @@ -485,11 +493,11 @@ func diff3Conflict(path string, xlabel, ylabel string, xedits, yedits []diff.Edi } oldlabel, old := "base", string(contents) - xdiff, err := diff.ToUnified(oldlabel, xlabel, old, xedits) + xdiff, err := diff.ToUnified(oldlabel, xlabel, old, xedits, diff.DefaultContextLines) if err != nil { return err } - ydiff, err := diff.ToUnified(oldlabel, ylabel, old, yedits) + ydiff, err := diff.ToUnified(oldlabel, ylabel, old, yedits, diff.DefaultContextLines) if err != nil { return err } diff --git a/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go b/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go index 53c3f4a..1fa0d1f 100644 --- a/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go +++ b/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go @@ -50,7 +50,7 @@ import ( "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/analysis/internal/analysisflags" "golang.org/x/tools/internal/facts" - "golang.org/x/tools/internal/typeparams" + "golang.org/x/tools/internal/versions" ) // A Config describes a compilation unit to be analyzed. @@ -258,10 +258,11 @@ func run(fset *token.FileSet, cfg *Config, analyzers []*analysis.Analyzer) ([]re Defs: make(map[*ast.Ident]types.Object), Uses: make(map[*ast.Ident]types.Object), Implicits: make(map[ast.Node]types.Object), + Instances: make(map[*ast.Ident]types.Instance), Scopes: make(map[ast.Node]*types.Scope), Selections: make(map[*ast.SelectorExpr]*types.Selection), } - typeparams.InitInstanceInfo(info) + versions.InitFileVersions(info) pkg, err := tc.Check(cfg.ImportPath, fset, files, info) if err != nil { @@ -319,7 +320,7 @@ func run(fset *token.FileSet, cfg *Config, analyzers []*analysis.Analyzer) ([]re analyzers = filtered // Read facts from imported packages. - facts, err := facts.NewDecoder(pkg).Decode(false, makeFactImporter(cfg)) + facts, err := facts.NewDecoder(pkg).Decode(makeFactImporter(cfg)) if err != nil { return nil, err } @@ -418,7 +419,7 @@ func run(fset *token.FileSet, cfg *Config, analyzers []*analysis.Analyzer) ([]re results[i].diagnostics = act.diagnostics } - data := facts.Encode(false) + data := facts.Encode() if err := exportFacts(cfg, data); err != nil { return nil, fmt.Errorf("failed to export analysis facts: %v", err) } diff --git a/vendor/golang.org/x/tools/go/analysis/validate.go b/vendor/golang.org/x/tools/go/analysis/validate.go index 9da5692..4f2c404 100644 --- a/vendor/golang.org/x/tools/go/analysis/validate.go +++ b/vendor/golang.org/x/tools/go/analysis/validate.go @@ -19,6 +19,8 @@ import ( // that the Requires graph is acyclic; // that analyzer fact types are unique; // that each fact type is a pointer. +// +// Analyzer names need not be unique, though this may be confusing. func Validate(analyzers []*Analyzer) error { // Map each fact type to its sole generating analyzer. factTypes := make(map[reflect.Type]*Analyzer) diff --git a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go index 0454cdd..333676b 100644 --- a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go +++ b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go @@ -13,16 +13,17 @@ import ( "golang.org/x/tools/internal/gocommand" ) -var debug = false - func GetSizesForArgsGolist(ctx context.Context, inv gocommand.Invocation, gocmdRunner *gocommand.Runner) (string, string, error) { inv.Verb = "list" inv.Args = []string{"-f", "{{context.GOARCH}} {{context.Compiler}}", "--", "unsafe"} stdout, stderr, friendlyErr, rawErr := gocmdRunner.RunRaw(ctx, inv) var goarch, compiler string if rawErr != nil { - if rawErrMsg := rawErr.Error(); strings.Contains(rawErrMsg, "cannot find main module") || strings.Contains(rawErrMsg, "go.mod file not found") { - // User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc. + rawErrMsg := rawErr.Error() + if strings.Contains(rawErrMsg, "cannot find main module") || + strings.Contains(rawErrMsg, "go.mod file not found") { + // User's running outside of a module. + // All bets are off. Get GOARCH and guess compiler is gc. // TODO(matloob): Is this a problem in practice? inv.Verb = "env" inv.Args = []string{"GOARCH"} @@ -32,8 +33,12 @@ func GetSizesForArgsGolist(ctx context.Context, inv gocommand.Invocation, gocmdR } goarch = strings.TrimSpace(envout.String()) compiler = "gc" - } else { + } else if friendlyErr != nil { return "", "", friendlyErr + } else { + // This should be unreachable, but be defensive + // in case RunRaw's error results are inconsistent. + return "", "", rawErr } } else { fields := strings.Fields(stdout.String()) diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go index a7a8f73..a8d7b06 100644 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -5,12 +5,20 @@ /* Package packages loads Go packages for inspection and analysis. -The Load function takes as input a list of patterns and return a list of Package -structs describing individual packages matched by those patterns. -The LoadMode controls the amount of detail in the loaded packages. - -Load passes most patterns directly to the underlying build tool, -but all patterns with the prefix "query=", where query is a +The [Load] function takes as input a list of patterns and returns a +list of [Package] values describing individual packages matched by those +patterns. +A [Config] specifies configuration options, the most important of which is +the [LoadMode], which controls the amount of detail in the loaded packages. + +Load passes most patterns directly to the underlying build tool. +The default build tool is the go command. +Its supported patterns are described at +https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns. +Other build systems may be supported by providing a "driver"; +see [The driver protocol]. + +All patterns with the prefix "query=", where query is a non-empty string of letters from [a-z], are reserved and may be interpreted as query operators. @@ -64,9 +72,31 @@ reported about the loaded packages. See the documentation for type LoadMode for details. Most tools should pass their command-line arguments (after any flags) -uninterpreted to the loader, so that the loader can interpret them +uninterpreted to [Load], so that it can interpret them according to the conventions of the underlying build system. + See the Example function for typical usage. + +# The driver protocol + +[Load] may be used to load Go packages even in Go projects that use +alternative build systems, by installing an appropriate "driver" +program for the build system and specifying its location in the +GOPACKAGESDRIVER environment variable. +For example, +https://github.com/bazelbuild/rules_go/wiki/Editor-and-tool-integration +explains how to use the driver for Bazel. + +The driver program is responsible for interpreting patterns in its +preferred notation and reporting information about the packages that +those patterns identify. Drivers must also support the special "file=" +and "pattern=" patterns described above. + +The patterns are provided as positional command-line arguments. A +JSON-encoded [DriverRequest] message providing additional information +is written to the driver's standard input. The driver must write a +JSON-encoded [DriverResponse] message to its standard output. (This +message differs from the JSON schema produced by 'go list'.) */ package packages // import "golang.org/x/tools/go/packages" diff --git a/vendor/golang.org/x/tools/go/packages/external.go b/vendor/golang.org/x/tools/go/packages/external.go index 7242a0a..4335c1e 100644 --- a/vendor/golang.org/x/tools/go/packages/external.go +++ b/vendor/golang.org/x/tools/go/packages/external.go @@ -2,46 +2,85 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// This file enables an external tool to intercept package requests. -// If the tool is present then its results are used in preference to -// the go list command. - package packages +// This file defines the protocol that enables an external "driver" +// tool to supply package metadata in place of 'go list'. + import ( "bytes" "encoding/json" "fmt" - exec "golang.org/x/sys/execabs" "os" + "os/exec" "strings" ) -// The Driver Protocol +// DriverRequest defines the schema of a request for package metadata +// from an external driver program. The JSON-encoded DriverRequest +// message is provided to the driver program's standard input. The +// query patterns are provided as command-line arguments. // -// The driver, given the inputs to a call to Load, returns metadata about the packages specified. -// This allows for different build systems to support go/packages by telling go/packages how the -// packages' source is organized. -// The driver is a binary, either specified by the GOPACKAGESDRIVER environment variable or in -// the path as gopackagesdriver. It's given the inputs to load in its argv. See the package -// documentation in doc.go for the full description of the patterns that need to be supported. -// A driver receives as a JSON-serialized driverRequest struct in standard input and will -// produce a JSON-serialized driverResponse (see definition in packages.go) in its standard output. - -// driverRequest is used to provide the portion of Load's Config that is needed by a driver. -type driverRequest struct { +// See the package documentation for an overview. +type DriverRequest struct { Mode LoadMode `json:"mode"` + // Env specifies the environment the underlying build system should be run in. Env []string `json:"env"` + // BuildFlags are flags that should be passed to the underlying build system. BuildFlags []string `json:"build_flags"` + // Tests specifies whether the patterns should also return test packages. Tests bool `json:"tests"` + // Overlay maps file paths (relative to the driver's working directory) to the byte contents // of overlay files. Overlay map[string][]byte `json:"overlay"` } +// DriverResponse defines the schema of a response from an external +// driver program, providing the results of a query for package +// metadata. The driver program must write a JSON-encoded +// DriverResponse message to its standard output. +// +// See the package documentation for an overview. +type DriverResponse struct { + // NotHandled is returned if the request can't be handled by the current + // driver. If an external driver returns a response with NotHandled, the + // rest of the DriverResponse is ignored, and go/packages will fallback + // to the next driver. If go/packages is extended in the future to support + // lists of multiple drivers, go/packages will fall back to the next driver. + NotHandled bool + + // Compiler and Arch are the arguments pass of types.SizesFor + // to get a types.Sizes to use when type checking. + Compiler string + Arch string + + // Roots is the set of package IDs that make up the root packages. + // We have to encode this separately because when we encode a single package + // we cannot know if it is one of the roots as that requires knowledge of the + // graph it is part of. + Roots []string `json:",omitempty"` + + // Packages is the full set of packages in the graph. + // The packages are not connected into a graph. + // The Imports if populated will be stubs that only have their ID set. + // Imports will be connected and then type and syntax information added in a + // later pass (see refine). + Packages []*Package + + // GoVersion is the minor version number used by the driver + // (e.g. the go command on the PATH) when selecting .go files. + // Zero means unknown. + GoVersion int +} + +// driver is the type for functions that query the build system for the +// packages named by the patterns. +type driver func(cfg *Config, patterns ...string) (*DriverResponse, error) + // findExternalDriver returns the file path of a tool that supplies // the build system package structure, or "" if not found." // If GOPACKAGESDRIVER is set in the environment findExternalTool returns its @@ -64,8 +103,8 @@ func findExternalDriver(cfg *Config) driver { return nil } } - return func(cfg *Config, words ...string) (*driverResponse, error) { - req, err := json.Marshal(driverRequest{ + return func(cfg *Config, words ...string) (*DriverResponse, error) { + req, err := json.Marshal(DriverRequest{ Mode: cfg.Mode, Env: cfg.Env, BuildFlags: cfg.BuildFlags, @@ -92,7 +131,7 @@ func findExternalDriver(cfg *Config) driver { fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd), stderr) } - var response driverResponse + var response DriverResponse if err := json.Unmarshal(buf.Bytes(), &response); err != nil { return nil, err } diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go index 1f1eade..22305d9 100644 --- a/vendor/golang.org/x/tools/go/packages/golist.go +++ b/vendor/golang.org/x/tools/go/packages/golist.go @@ -11,6 +11,7 @@ import ( "fmt" "log" "os" + "os/exec" "path" "path/filepath" "reflect" @@ -20,7 +21,6 @@ import ( "sync" "unicode" - exec "golang.org/x/sys/execabs" "golang.org/x/tools/go/internal/packagesdriver" "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/packagesinternal" @@ -35,23 +35,23 @@ type goTooOldError struct { error } -// responseDeduper wraps a driverResponse, deduplicating its contents. +// responseDeduper wraps a DriverResponse, deduplicating its contents. type responseDeduper struct { seenRoots map[string]bool seenPackages map[string]*Package - dr *driverResponse + dr *DriverResponse } func newDeduper() *responseDeduper { return &responseDeduper{ - dr: &driverResponse{}, + dr: &DriverResponse{}, seenRoots: map[string]bool{}, seenPackages: map[string]*Package{}, } } -// addAll fills in r with a driverResponse. -func (r *responseDeduper) addAll(dr *driverResponse) { +// addAll fills in r with a DriverResponse. +func (r *responseDeduper) addAll(dr *DriverResponse) { for _, pkg := range dr.Packages { r.addPackage(pkg) } @@ -128,7 +128,7 @@ func (state *golistState) mustGetEnv() map[string]string { // goListDriver uses the go list command to interpret the patterns and produce // the build system package structure. // See driver for more details. -func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) { +func goListDriver(cfg *Config, patterns ...string) (_ *DriverResponse, err error) { // Make sure that any asynchronous go commands are killed when we return. parentCtx := cfg.Context if parentCtx == nil { @@ -146,16 +146,18 @@ func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) { } // Fill in response.Sizes asynchronously if necessary. - var sizeserr error - var sizeswg sync.WaitGroup if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 { - sizeswg.Add(1) + errCh := make(chan error) go func() { compiler, arch, err := packagesdriver.GetSizesForArgsGolist(ctx, state.cfgInvocation(), cfg.gocmdRunner) - sizeserr = err response.dr.Compiler = compiler response.dr.Arch = arch - sizeswg.Done() + errCh <- err + }() + defer func() { + if sizesErr := <-errCh; sizesErr != nil { + err = sizesErr + } }() } @@ -208,87 +210,10 @@ extractQueries: } } - // Only use go/packages' overlay processing if we're using a Go version - // below 1.16. Otherwise, go list handles it. - if goVersion, err := state.getGoVersion(); err == nil && goVersion < 16 { - modifiedPkgs, needPkgs, err := state.processGolistOverlay(response) - if err != nil { - return nil, err - } - - var containsCandidates []string - if len(containFiles) > 0 { - containsCandidates = append(containsCandidates, modifiedPkgs...) - containsCandidates = append(containsCandidates, needPkgs...) - } - if err := state.addNeededOverlayPackages(response, needPkgs); err != nil { - return nil, err - } - // Check candidate packages for containFiles. - if len(containFiles) > 0 { - for _, id := range containsCandidates { - pkg, ok := response.seenPackages[id] - if !ok { - response.addPackage(&Package{ - ID: id, - Errors: []Error{{ - Kind: ListError, - Msg: fmt.Sprintf("package %s expected but not seen", id), - }}, - }) - continue - } - for _, f := range containFiles { - for _, g := range pkg.GoFiles { - if sameFile(f, g) { - response.addRoot(id) - } - } - } - } - } - // Add root for any package that matches a pattern. This applies only to - // packages that are modified by overlays, since they are not added as - // roots automatically. - for _, pattern := range restPatterns { - match := matchPattern(pattern) - for _, pkgID := range modifiedPkgs { - pkg, ok := response.seenPackages[pkgID] - if !ok { - continue - } - if match(pkg.PkgPath) { - response.addRoot(pkg.ID) - } - } - } - } - - sizeswg.Wait() - if sizeserr != nil { - return nil, sizeserr - } + // (We may yet return an error due to defer.) return response.dr, nil } -func (state *golistState) addNeededOverlayPackages(response *responseDeduper, pkgs []string) error { - if len(pkgs) == 0 { - return nil - } - dr, err := state.createDriverResponse(pkgs...) - if err != nil { - return err - } - for _, pkg := range dr.Packages { - response.addPackage(pkg) - } - _, needPkgs, err := state.processGolistOverlay(response) - if err != nil { - return err - } - return state.addNeededOverlayPackages(response, needPkgs) -} - func (state *golistState) runContainsQueries(response *responseDeduper, queries []string) error { for _, query := range queries { // TODO(matloob): Do only one query per directory. @@ -340,7 +265,7 @@ func (state *golistState) runContainsQueries(response *responseDeduper, queries // adhocPackage attempts to load or construct an ad-hoc package for a given // query, if the original call to the driver produced inadequate results. -func (state *golistState) adhocPackage(pattern, query string) (*driverResponse, error) { +func (state *golistState) adhocPackage(pattern, query string) (*DriverResponse, error) { response, err := state.createDriverResponse(query) if err != nil { return nil, err @@ -431,7 +356,7 @@ func otherFiles(p *jsonPackage) [][]string { // createDriverResponse uses the "go list" command to expand the pattern // words and return a response for the specified packages. -func (state *golistState) createDriverResponse(words ...string) (*driverResponse, error) { +func (state *golistState) createDriverResponse(words ...string) (*DriverResponse, error) { // go list uses the following identifiers in ImportPath and Imports: // // "p" -- importable package or main (command) @@ -458,7 +383,7 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse pkgs := make(map[string]*Package) additionalErrors := make(map[string][]Error) // Decode the JSON and convert it to Package form. - response := &driverResponse{ + response := &DriverResponse{ GoVersion: goVersion, } for dec := json.NewDecoder(buf); dec.More(); { diff --git a/vendor/golang.org/x/tools/go/packages/golist_overlay.go b/vendor/golang.org/x/tools/go/packages/golist_overlay.go index 9576b47..d823c47 100644 --- a/vendor/golang.org/x/tools/go/packages/golist_overlay.go +++ b/vendor/golang.org/x/tools/go/packages/golist_overlay.go @@ -6,314 +6,11 @@ package packages import ( "encoding/json" - "fmt" - "go/parser" - "go/token" - "os" "path/filepath" - "regexp" - "sort" - "strconv" - "strings" "golang.org/x/tools/internal/gocommand" ) -// processGolistOverlay provides rudimentary support for adding -// files that don't exist on disk to an overlay. The results can be -// sometimes incorrect. -// TODO(matloob): Handle unsupported cases, including the following: -// - determining the correct package to add given a new import path -func (state *golistState) processGolistOverlay(response *responseDeduper) (modifiedPkgs, needPkgs []string, err error) { - havePkgs := make(map[string]string) // importPath -> non-test package ID - needPkgsSet := make(map[string]bool) - modifiedPkgsSet := make(map[string]bool) - - pkgOfDir := make(map[string][]*Package) - for _, pkg := range response.dr.Packages { - // This is an approximation of import path to id. This can be - // wrong for tests, vendored packages, and a number of other cases. - havePkgs[pkg.PkgPath] = pkg.ID - dir, err := commonDir(pkg.GoFiles) - if err != nil { - return nil, nil, err - } - if dir != "" { - pkgOfDir[dir] = append(pkgOfDir[dir], pkg) - } - } - - // If no new imports are added, it is safe to avoid loading any needPkgs. - // Otherwise, it's hard to tell which package is actually being loaded - // (due to vendoring) and whether any modified package will show up - // in the transitive set of dependencies (because new imports are added, - // potentially modifying the transitive set of dependencies). - var overlayAddsImports bool - - // If both a package and its test package are created by the overlay, we - // need the real package first. Process all non-test files before test - // files, and make the whole process deterministic while we're at it. - var overlayFiles []string - for opath := range state.cfg.Overlay { - overlayFiles = append(overlayFiles, opath) - } - sort.Slice(overlayFiles, func(i, j int) bool { - iTest := strings.HasSuffix(overlayFiles[i], "_test.go") - jTest := strings.HasSuffix(overlayFiles[j], "_test.go") - if iTest != jTest { - return !iTest // non-tests are before tests. - } - return overlayFiles[i] < overlayFiles[j] - }) - for _, opath := range overlayFiles { - contents := state.cfg.Overlay[opath] - base := filepath.Base(opath) - dir := filepath.Dir(opath) - var pkg *Package // if opath belongs to both a package and its test variant, this will be the test variant - var testVariantOf *Package // if opath is a test file, this is the package it is testing - var fileExists bool - isTestFile := strings.HasSuffix(opath, "_test.go") - pkgName, ok := extractPackageName(opath, contents) - if !ok { - // Don't bother adding a file that doesn't even have a parsable package statement - // to the overlay. - continue - } - // If all the overlay files belong to a different package, change the - // package name to that package. - maybeFixPackageName(pkgName, isTestFile, pkgOfDir[dir]) - nextPackage: - for _, p := range response.dr.Packages { - if pkgName != p.Name && p.ID != "command-line-arguments" { - continue - } - for _, f := range p.GoFiles { - if !sameFile(filepath.Dir(f), dir) { - continue - } - // Make sure to capture information on the package's test variant, if needed. - if isTestFile && !hasTestFiles(p) { - // TODO(matloob): Are there packages other than the 'production' variant - // of a package that this can match? This shouldn't match the test main package - // because the file is generated in another directory. - testVariantOf = p - continue nextPackage - } else if !isTestFile && hasTestFiles(p) { - // We're examining a test variant, but the overlaid file is - // a non-test file. Because the overlay implementation - // (currently) only adds a file to one package, skip this - // package, so that we can add the file to the production - // variant of the package. (https://golang.org/issue/36857 - // tracks handling overlays on both the production and test - // variant of a package). - continue nextPackage - } - if pkg != nil && p != pkg && pkg.PkgPath == p.PkgPath { - // We have already seen the production version of the - // for which p is a test variant. - if hasTestFiles(p) { - testVariantOf = pkg - } - } - pkg = p - if filepath.Base(f) == base { - fileExists = true - } - } - } - // The overlay could have included an entirely new package or an - // ad-hoc package. An ad-hoc package is one that we have manually - // constructed from inadequate `go list` results for a file= query. - // It will have the ID command-line-arguments. - if pkg == nil || pkg.ID == "command-line-arguments" { - // Try to find the module or gopath dir the file is contained in. - // Then for modules, add the module opath to the beginning. - pkgPath, ok, err := state.getPkgPath(dir) - if err != nil { - return nil, nil, err - } - if !ok { - break - } - var forTest string // only set for x tests - isXTest := strings.HasSuffix(pkgName, "_test") - if isXTest { - forTest = pkgPath - pkgPath += "_test" - } - id := pkgPath - if isTestFile { - if isXTest { - id = fmt.Sprintf("%s [%s.test]", pkgPath, forTest) - } else { - id = fmt.Sprintf("%s [%s.test]", pkgPath, pkgPath) - } - } - if pkg != nil { - // TODO(rstambler): We should change the package's path and ID - // here. The only issue is that this messes with the roots. - } else { - // Try to reclaim a package with the same ID, if it exists in the response. - for _, p := range response.dr.Packages { - if reclaimPackage(p, id, opath, contents) { - pkg = p - break - } - } - // Otherwise, create a new package. - if pkg == nil { - pkg = &Package{ - PkgPath: pkgPath, - ID: id, - Name: pkgName, - Imports: make(map[string]*Package), - } - response.addPackage(pkg) - havePkgs[pkg.PkgPath] = id - // Add the production package's sources for a test variant. - if isTestFile && !isXTest && testVariantOf != nil { - pkg.GoFiles = append(pkg.GoFiles, testVariantOf.GoFiles...) - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, testVariantOf.CompiledGoFiles...) - // Add the package under test and its imports to the test variant. - pkg.forTest = testVariantOf.PkgPath - for k, v := range testVariantOf.Imports { - pkg.Imports[k] = &Package{ID: v.ID} - } - } - if isXTest { - pkg.forTest = forTest - } - } - } - } - if !fileExists { - pkg.GoFiles = append(pkg.GoFiles, opath) - // TODO(matloob): Adding the file to CompiledGoFiles can exhibit the wrong behavior - // if the file will be ignored due to its build tags. - pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, opath) - modifiedPkgsSet[pkg.ID] = true - } - imports, err := extractImports(opath, contents) - if err != nil { - // Let the parser or type checker report errors later. - continue - } - for _, imp := range imports { - // TODO(rstambler): If the package is an x test and the import has - // a test variant, make sure to replace it. - if _, found := pkg.Imports[imp]; found { - continue - } - overlayAddsImports = true - id, ok := havePkgs[imp] - if !ok { - var err error - id, err = state.resolveImport(dir, imp) - if err != nil { - return nil, nil, err - } - } - pkg.Imports[imp] = &Package{ID: id} - // Add dependencies to the non-test variant version of this package as well. - if testVariantOf != nil { - testVariantOf.Imports[imp] = &Package{ID: id} - } - } - } - - // toPkgPath guesses the package path given the id. - toPkgPath := func(sourceDir, id string) (string, error) { - if i := strings.IndexByte(id, ' '); i >= 0 { - return state.resolveImport(sourceDir, id[:i]) - } - return state.resolveImport(sourceDir, id) - } - - // Now that new packages have been created, do another pass to determine - // the new set of missing packages. - for _, pkg := range response.dr.Packages { - for _, imp := range pkg.Imports { - if len(pkg.GoFiles) == 0 { - return nil, nil, fmt.Errorf("cannot resolve imports for package %q with no Go files", pkg.PkgPath) - } - pkgPath, err := toPkgPath(filepath.Dir(pkg.GoFiles[0]), imp.ID) - if err != nil { - return nil, nil, err - } - if _, ok := havePkgs[pkgPath]; !ok { - needPkgsSet[pkgPath] = true - } - } - } - - if overlayAddsImports { - needPkgs = make([]string, 0, len(needPkgsSet)) - for pkg := range needPkgsSet { - needPkgs = append(needPkgs, pkg) - } - } - modifiedPkgs = make([]string, 0, len(modifiedPkgsSet)) - for pkg := range modifiedPkgsSet { - modifiedPkgs = append(modifiedPkgs, pkg) - } - return modifiedPkgs, needPkgs, err -} - -// resolveImport finds the ID of a package given its import path. -// In particular, it will find the right vendored copy when in GOPATH mode. -func (state *golistState) resolveImport(sourceDir, importPath string) (string, error) { - env, err := state.getEnv() - if err != nil { - return "", err - } - if env["GOMOD"] != "" { - return importPath, nil - } - - searchDir := sourceDir - for { - vendorDir := filepath.Join(searchDir, "vendor") - exists, ok := state.vendorDirs[vendorDir] - if !ok { - info, err := os.Stat(vendorDir) - exists = err == nil && info.IsDir() - state.vendorDirs[vendorDir] = exists - } - - if exists { - vendoredPath := filepath.Join(vendorDir, importPath) - if info, err := os.Stat(vendoredPath); err == nil && info.IsDir() { - // We should probably check for .go files here, but shame on anyone who fools us. - path, ok, err := state.getPkgPath(vendoredPath) - if err != nil { - return "", err - } - if ok { - return path, nil - } - } - } - - // We know we've hit the top of the filesystem when we Dir / and get /, - // or C:\ and get C:\, etc. - next := filepath.Dir(searchDir) - if next == searchDir { - break - } - searchDir = next - } - return importPath, nil -} - -func hasTestFiles(p *Package) bool { - for _, f := range p.GoFiles { - if strings.HasSuffix(f, "_test.go") { - return true - } - } - return false -} - // determineRootDirs returns a mapping from absolute directories that could // contain code to their corresponding import path prefixes. func (state *golistState) determineRootDirs() (map[string]string, error) { @@ -384,192 +81,3 @@ func (state *golistState) determineRootDirsGOPATH() (map[string]string, error) { } return m, nil } - -func extractImports(filename string, contents []byte) ([]string, error) { - f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.ImportsOnly) // TODO(matloob): reuse fileset? - if err != nil { - return nil, err - } - var res []string - for _, imp := range f.Imports { - quotedPath := imp.Path.Value - path, err := strconv.Unquote(quotedPath) - if err != nil { - return nil, err - } - res = append(res, path) - } - return res, nil -} - -// reclaimPackage attempts to reuse a package that failed to load in an overlay. -// -// If the package has errors and has no Name, GoFiles, or Imports, -// then it's possible that it doesn't yet exist on disk. -func reclaimPackage(pkg *Package, id string, filename string, contents []byte) bool { - // TODO(rstambler): Check the message of the actual error? - // It differs between $GOPATH and module mode. - if pkg.ID != id { - return false - } - if len(pkg.Errors) != 1 { - return false - } - if pkg.Name != "" || pkg.ExportFile != "" { - return false - } - if len(pkg.GoFiles) > 0 || len(pkg.CompiledGoFiles) > 0 || len(pkg.OtherFiles) > 0 { - return false - } - if len(pkg.Imports) > 0 { - return false - } - pkgName, ok := extractPackageName(filename, contents) - if !ok { - return false - } - pkg.Name = pkgName - pkg.Errors = nil - return true -} - -func extractPackageName(filename string, contents []byte) (string, bool) { - // TODO(rstambler): Check the message of the actual error? - // It differs between $GOPATH and module mode. - f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.PackageClauseOnly) // TODO(matloob): reuse fileset? - if err != nil { - return "", false - } - return f.Name.Name, true -} - -// commonDir returns the directory that all files are in, "" if files is empty, -// or an error if they aren't in the same directory. -func commonDir(files []string) (string, error) { - seen := make(map[string]bool) - for _, f := range files { - seen[filepath.Dir(f)] = true - } - if len(seen) > 1 { - return "", fmt.Errorf("files (%v) are in more than one directory: %v", files, seen) - } - for k := range seen { - // seen has only one element; return it. - return k, nil - } - return "", nil // no files -} - -// It is possible that the files in the disk directory dir have a different package -// name from newName, which is deduced from the overlays. If they all have a different -// package name, and they all have the same package name, then that name becomes -// the package name. -// It returns true if it changes the package name, false otherwise. -func maybeFixPackageName(newName string, isTestFile bool, pkgsOfDir []*Package) { - names := make(map[string]int) - for _, p := range pkgsOfDir { - names[p.Name]++ - } - if len(names) != 1 { - // some files are in different packages - return - } - var oldName string - for k := range names { - oldName = k - } - if newName == oldName { - return - } - // We might have a case where all of the package names in the directory are - // the same, but the overlay file is for an x test, which belongs to its - // own package. If the x test does not yet exist on disk, we may not yet - // have its package name on disk, but we should not rename the packages. - // - // We use a heuristic to determine if this file belongs to an x test: - // The test file should have a package name whose package name has a _test - // suffix or looks like "newName_test". - maybeXTest := strings.HasPrefix(oldName+"_test", newName) || strings.HasSuffix(newName, "_test") - if isTestFile && maybeXTest { - return - } - for _, p := range pkgsOfDir { - p.Name = newName - } -} - -// This function is copy-pasted from -// https://github.com/golang/go/blob/9706f510a5e2754595d716bd64be8375997311fb/src/cmd/go/internal/search/search.go#L360. -// It should be deleted when we remove support for overlays from go/packages. -// -// NOTE: This does not handle any ./... or ./ style queries, as this function -// doesn't know the working directory. -// -// matchPattern(pattern)(name) reports whether -// name matches pattern. Pattern is a limited glob -// pattern in which '...' means 'any string' and there -// is no other special syntax. -// Unfortunately, there are two special cases. Quoting "go help packages": -// -// First, /... at the end of the pattern can match an empty string, -// so that net/... matches both net and packages in its subdirectories, like net/http. -// Second, any slash-separated pattern element containing a wildcard never -// participates in a match of the "vendor" element in the path of a vendored -// package, so that ./... does not match packages in subdirectories of -// ./vendor or ./mycode/vendor, but ./vendor/... and ./mycode/vendor/... do. -// Note, however, that a directory named vendor that itself contains code -// is not a vendored package: cmd/vendor would be a command named vendor, -// and the pattern cmd/... matches it. -func matchPattern(pattern string) func(name string) bool { - // Convert pattern to regular expression. - // The strategy for the trailing /... is to nest it in an explicit ? expression. - // The strategy for the vendor exclusion is to change the unmatchable - // vendor strings to a disallowed code point (vendorChar) and to use - // "(anything but that codepoint)*" as the implementation of the ... wildcard. - // This is a bit complicated but the obvious alternative, - // namely a hand-written search like in most shell glob matchers, - // is too easy to make accidentally exponential. - // Using package regexp guarantees linear-time matching. - - const vendorChar = "\x00" - - if strings.Contains(pattern, vendorChar) { - return func(name string) bool { return false } - } - - re := regexp.QuoteMeta(pattern) - re = replaceVendor(re, vendorChar) - switch { - case strings.HasSuffix(re, `/`+vendorChar+`/\.\.\.`): - re = strings.TrimSuffix(re, `/`+vendorChar+`/\.\.\.`) + `(/vendor|/` + vendorChar + `/\.\.\.)` - case re == vendorChar+`/\.\.\.`: - re = `(/vendor|/` + vendorChar + `/\.\.\.)` - case strings.HasSuffix(re, `/\.\.\.`): - re = strings.TrimSuffix(re, `/\.\.\.`) + `(/\.\.\.)?` - } - re = strings.ReplaceAll(re, `\.\.\.`, `[^`+vendorChar+`]*`) - - reg := regexp.MustCompile(`^` + re + `$`) - - return func(name string) bool { - if strings.Contains(name, vendorChar) { - return false - } - return reg.MatchString(replaceVendor(name, vendorChar)) - } -} - -// replaceVendor returns the result of replacing -// non-trailing vendor path elements in x with repl. -func replaceVendor(x, repl string) string { - if !strings.Contains(x, "vendor") { - return x - } - elem := strings.Split(x, "/") - for i := 0; i < len(elem)-1; i++ { - if elem[i] == "vendor" { - elem[i] = repl - } - } - return strings.Join(elem, "/") -} diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go index ece0e7c..f33b0af 100644 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -27,8 +27,8 @@ import ( "golang.org/x/tools/go/gcexportdata" "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/packagesinternal" - "golang.org/x/tools/internal/typeparams" "golang.org/x/tools/internal/typesinternal" + "golang.org/x/tools/internal/versions" ) // A LoadMode controls the amount of detail to return when loading. @@ -206,43 +206,6 @@ type Config struct { Overlay map[string][]byte } -// driver is the type for functions that query the build system for the -// packages named by the patterns. -type driver func(cfg *Config, patterns ...string) (*driverResponse, error) - -// driverResponse contains the results for a driver query. -type driverResponse struct { - // NotHandled is returned if the request can't be handled by the current - // driver. If an external driver returns a response with NotHandled, the - // rest of the driverResponse is ignored, and go/packages will fallback - // to the next driver. If go/packages is extended in the future to support - // lists of multiple drivers, go/packages will fall back to the next driver. - NotHandled bool - - // Compiler and Arch are the arguments pass of types.SizesFor - // to get a types.Sizes to use when type checking. - Compiler string - Arch string - - // Roots is the set of package IDs that make up the root packages. - // We have to encode this separately because when we encode a single package - // we cannot know if it is one of the roots as that requires knowledge of the - // graph it is part of. - Roots []string `json:",omitempty"` - - // Packages is the full set of packages in the graph. - // The packages are not connected into a graph. - // The Imports if populated will be stubs that only have their ID set. - // Imports will be connected and then type and syntax information added in a - // later pass (see refine). - Packages []*Package - - // GoVersion is the minor version number used by the driver - // (e.g. the go command on the PATH) when selecting .go files. - // Zero means unknown. - GoVersion int -} - // Load loads and returns the Go packages named by the given patterns. // // Config specifies loading options; @@ -258,31 +221,55 @@ type driverResponse struct { // proceeding with further analysis. The PrintErrors function is // provided for convenient display of all errors. func Load(cfg *Config, patterns ...string) ([]*Package, error) { - l := newLoader(cfg) - response, err := defaultDriver(&l.Config, patterns...) + ld := newLoader(cfg) + response, external, err := defaultDriver(&ld.Config, patterns...) if err != nil { return nil, err } - l.sizes = types.SizesFor(response.Compiler, response.Arch) - return l.refine(response) + + ld.sizes = types.SizesFor(response.Compiler, response.Arch) + if ld.sizes == nil && ld.Config.Mode&(NeedTypes|NeedTypesSizes|NeedTypesInfo) != 0 { + // Type size information is needed but unavailable. + if external { + // An external driver may fail to populate the Compiler/GOARCH fields, + // especially since they are relatively new (see #63700). + // Provide a sensible fallback in this case. + ld.sizes = types.SizesFor("gc", runtime.GOARCH) + if ld.sizes == nil { // gccgo-only arch + ld.sizes = types.SizesFor("gc", "amd64") + } + } else { + // Go list should never fail to deliver accurate size information. + // Reject the whole Load since the error is the same for every package. + return nil, fmt.Errorf("can't determine type sizes for compiler %q on GOARCH %q", + response.Compiler, response.Arch) + } + } + + return ld.refine(response) } // defaultDriver is a driver that implements go/packages' fallback behavior. // It will try to request to an external driver, if one exists. If there's // no external driver, or the driver returns a response with NotHandled set, // defaultDriver will fall back to the go list driver. -func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, error) { - driver := findExternalDriver(cfg) - if driver == nil { - driver = goListDriver +// The boolean result indicates that an external driver handled the request. +func defaultDriver(cfg *Config, patterns ...string) (*DriverResponse, bool, error) { + if driver := findExternalDriver(cfg); driver != nil { + response, err := driver(cfg, patterns...) + if err != nil { + return nil, false, err + } else if !response.NotHandled { + return response, true, nil + } + // (fall through) } - response, err := driver(cfg, patterns...) + + response, err := goListDriver(cfg, patterns...) if err != nil { - return response, err - } else if response.NotHandled { - return goListDriver(cfg, patterns...) + return nil, false, err } - return response, nil + return response, false, nil } // A Package describes a loaded Go package. @@ -411,12 +398,6 @@ func init() { packagesinternal.GetDepsErrors = func(p interface{}) []*packagesinternal.PackageError { return p.(*Package).depsErrors } - packagesinternal.GetGoCmdRunner = func(config interface{}) *gocommand.Runner { - return config.(*Config).gocmdRunner - } - packagesinternal.SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) { - config.(*Config).gocmdRunner = runner - } packagesinternal.SetModFile = func(config interface{}, value string) { config.(*Config).modFile = value } @@ -553,7 +534,7 @@ type loaderPackage struct { type loader struct { pkgs map[string]*loaderPackage Config - sizes types.Sizes + sizes types.Sizes // non-nil if needed by mode parseCache map[string]*parseValue parseCacheMu sync.Mutex exportMu sync.Mutex // enforces mutual exclusion of exportdata operations @@ -633,7 +614,7 @@ func newLoader(cfg *Config) *loader { // refine connects the supplied packages into a graph and then adds type // and syntax information as requested by the LoadMode. -func (ld *loader) refine(response *driverResponse) ([]*Package, error) { +func (ld *loader) refine(response *DriverResponse) ([]*Package, error) { roots := response.Roots rootMap := make(map[string]int, len(roots)) for i, root := range roots { @@ -678,39 +659,38 @@ func (ld *loader) refine(response *driverResponse) ([]*Package, error) { } } - // Materialize the import graph. - - const ( - white = 0 // new - grey = 1 // in progress - black = 2 // complete - ) - - // visit traverses the import graph, depth-first, - // and materializes the graph as Packages.Imports. - // - // Valid imports are saved in the Packages.Import map. - // Invalid imports (cycles and missing nodes) are saved in the importErrors map. - // Thus, even in the presence of both kinds of errors, the Import graph remains a DAG. - // - // visit returns whether the package needs src or has a transitive - // dependency on a package that does. These are the only packages - // for which we load source code. - var stack []*loaderPackage - var visit func(lpkg *loaderPackage) bool - var srcPkgs []*loaderPackage - visit = func(lpkg *loaderPackage) bool { - switch lpkg.color { - case black: - return lpkg.needsrc - case grey: - panic("internal error: grey node") - } - lpkg.color = grey - stack = append(stack, lpkg) // push - stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports - // If NeedImports isn't set, the imports fields will all be zeroed out. - if ld.Mode&NeedImports != 0 { + if ld.Mode&NeedImports != 0 { + // Materialize the import graph. + + const ( + white = 0 // new + grey = 1 // in progress + black = 2 // complete + ) + + // visit traverses the import graph, depth-first, + // and materializes the graph as Packages.Imports. + // + // Valid imports are saved in the Packages.Import map. + // Invalid imports (cycles and missing nodes) are saved in the importErrors map. + // Thus, even in the presence of both kinds of errors, + // the Import graph remains a DAG. + // + // visit returns whether the package needs src or has a transitive + // dependency on a package that does. These are the only packages + // for which we load source code. + var stack []*loaderPackage + var visit func(lpkg *loaderPackage) bool + visit = func(lpkg *loaderPackage) bool { + switch lpkg.color { + case black: + return lpkg.needsrc + case grey: + panic("internal error: grey node") + } + lpkg.color = grey + stack = append(stack, lpkg) // push + stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports lpkg.Imports = make(map[string]*Package, len(stubs)) for importPath, ipkg := range stubs { var importErr error @@ -734,40 +714,39 @@ func (ld *loader) refine(response *driverResponse) ([]*Package, error) { } lpkg.Imports[importPath] = imp.Package } - } - if lpkg.needsrc { - srcPkgs = append(srcPkgs, lpkg) - } - if ld.Mode&NeedTypesSizes != 0 { - lpkg.TypesSizes = ld.sizes - } - stack = stack[:len(stack)-1] // pop - lpkg.color = black - return lpkg.needsrc - } + // Complete type information is required for the + // immediate dependencies of each source package. + if lpkg.needsrc && ld.Mode&NeedTypes != 0 { + for _, ipkg := range lpkg.Imports { + ld.pkgs[ipkg.ID].needtypes = true + } + } - if ld.Mode&NeedImports == 0 { - // We do this to drop the stub import packages that we are not even going to try to resolve. - for _, lpkg := range initial { - lpkg.Imports = nil + // NeedTypeSizes causes TypeSizes to be set even + // on packages for which types aren't needed. + if ld.Mode&NeedTypesSizes != 0 { + lpkg.TypesSizes = ld.sizes + } + stack = stack[:len(stack)-1] // pop + lpkg.color = black + + return lpkg.needsrc } - } else { + // For each initial package, create its import DAG. for _, lpkg := range initial { visit(lpkg) } - } - if ld.Mode&NeedImports != 0 && ld.Mode&NeedTypes != 0 { - for _, lpkg := range srcPkgs { - // Complete type information is required for the - // immediate dependencies of each source package. - for _, ipkg := range lpkg.Imports { - imp := ld.pkgs[ipkg.ID] - imp.needtypes = true - } + + } else { + // !NeedImports: drop the stub (ID-only) import packages + // that we are not even going to try to resolve. + for _, lpkg := range initial { + lpkg.Imports = nil } } + // Load type data and syntax if needed, starting at // the initial packages (roots of the import DAG). if ld.Mode&NeedTypes != 0 || ld.Mode&NeedSyntax != 0 { @@ -1001,10 +980,11 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { Defs: make(map[*ast.Ident]types.Object), Uses: make(map[*ast.Ident]types.Object), Implicits: make(map[ast.Node]types.Object), + Instances: make(map[*ast.Ident]types.Instance), Scopes: make(map[ast.Node]*types.Scope), Selections: make(map[*ast.SelectorExpr]*types.Selection), } - typeparams.InitInstanceInfo(lpkg.TypesInfo) + versions.InitFileVersions(lpkg.TypesInfo) lpkg.TypesSizes = ld.sizes importer := importerFunc(func(path string) (*types.Package, error) { @@ -1042,7 +1022,7 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { IgnoreFuncBodies: ld.Mode&NeedDeps == 0 && !lpkg.initial, Error: appendError, - Sizes: ld.sizes, + Sizes: ld.sizes, // may be nil } if lpkg.Module != nil && lpkg.Module.GoVersion != "" { typesinternal.SetGoVersion(tc, "go"+lpkg.Module.GoVersion) diff --git a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go index fa5834b..11d5c8c 100644 --- a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go +++ b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -26,13 +26,10 @@ package objectpath import ( "fmt" "go/types" - "sort" "strconv" "strings" - _ "unsafe" "golang.org/x/tools/internal/typeparams" - "golang.org/x/tools/internal/typesinternal" ) // A Path is an opaque name that identifies a types.Object @@ -123,20 +120,7 @@ func For(obj types.Object) (Path, error) { // An Encoder amortizes the cost of encoding the paths of multiple objects. // The zero value of an Encoder is ready to use. type Encoder struct { - scopeMemo map[*types.Scope][]types.Object // memoization of scopeObjects - namedMethodsMemo map[*types.Named][]*types.Func // memoization of namedMethods() - skipMethodSorting bool -} - -// Expose back doors so that gopls can avoid method sorting, which can dominate -// analysis on certain repositories. -// -// TODO(golang/go#61443): remove this. -func init() { - typesinternal.SkipEncoderMethodSorting = func(enc interface{}) { - enc.(*Encoder).skipMethodSorting = true - } - typesinternal.ObjectpathObject = object + scopeMemo map[*types.Scope][]types.Object // memoization of scopeObjects } // For returns the path to an object relative to its package, @@ -239,7 +223,7 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { // Reject obviously non-viable cases. switch obj := obj.(type) { case *types.TypeName: - if _, ok := obj.Type().(*typeparams.TypeParam); !ok { + if _, ok := obj.Type().(*types.TypeParam); !ok { // With the exception of type parameters, only package-level type names // have a path. return "", fmt.Errorf("no path for %v", obj) @@ -299,7 +283,7 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { } } else { if named, _ := T.(*types.Named); named != nil { - if r := findTypeParam(obj, typeparams.ForNamed(named), path, nil); r != nil { + if r := findTypeParam(obj, named.TypeParams(), path, nil); r != nil { // generic named type return Path(r), nil } @@ -328,31 +312,18 @@ func (enc *Encoder) For(obj types.Object) (Path, error) { // Inspect declared methods of defined types. if T, ok := o.Type().(*types.Named); ok { path = append(path, opType) - if !enc.skipMethodSorting { - // Note that method index here is always with respect - // to canonical ordering of methods, regardless of how - // they appear in the underlying type. - for i, m := range enc.namedMethods(T) { - path2 := appendOpArg(path, opMethod, i) - if m == obj { - return Path(path2), nil // found declared method - } - if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { - return Path(r), nil - } + // The method index here is always with respect + // to the underlying go/types data structures, + // which ultimately derives from source order + // and must be preserved by export data. + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + path2 := appendOpArg(path, opMethod, i) + if m == obj { + return Path(path2), nil // found declared method } - } else { - // This branch must match the logic in the branch above, using go/types - // APIs without sorting. - for i := 0; i < T.NumMethods(); i++ { - m := T.Method(i) - path2 := appendOpArg(path, opMethod, i) - if m == obj { - return Path(path2), nil // found declared method - } - if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { - return Path(r), nil - } + if r := find(obj, m.Type(), append(path2, opType), nil); r != nil { + return Path(r), nil } } } @@ -448,22 +419,13 @@ func (enc *Encoder) concreteMethod(meth *types.Func) (Path, bool) { path = append(path, name...) path = append(path, opType) - if !enc.skipMethodSorting { - for i, m := range enc.namedMethods(named) { - if m == meth { - path = appendOpArg(path, opMethod, i) - return Path(path), true - } - } - } else { - // This branch must match the logic of the branch above, using go/types - // APIs without sorting. - for i := 0; i < named.NumMethods(); i++ { - m := named.Method(i) - if m == meth { - path = appendOpArg(path, opMethod, i) - return Path(path), true - } + // Method indices are w.r.t. the go/types data structures, + // ultimately deriving from source order, + // which is preserved by export data. + for i := 0; i < named.NumMethods(); i++ { + if named.Method(i) == meth { + path = appendOpArg(path, opMethod, i) + return Path(path), true } } @@ -500,7 +462,7 @@ func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName] } return find(obj, T.Elem(), append(path, opElem), seen) case *types.Signature: - if r := findTypeParam(obj, typeparams.ForSignature(T), path, seen); r != nil { + if r := findTypeParam(obj, T.TypeParams(), path, seen); r != nil { return r } if r := find(obj, T.Params(), append(path, opParams), seen); r != nil { @@ -543,7 +505,7 @@ func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName] } } return nil - case *typeparams.TypeParam: + case *types.TypeParam: name := T.Obj() if name == obj { return append(path, opObj) @@ -563,7 +525,7 @@ func find(obj types.Object, T types.Type, path []byte, seen map[*types.TypeName] panic(T) } -func findTypeParam(obj types.Object, list *typeparams.TypeParamList, path []byte, seen map[*types.TypeName]bool) []byte { +func findTypeParam(obj types.Object, list *types.TypeParamList, path []byte, seen map[*types.TypeName]bool) []byte { for i := 0; i < list.Len(); i++ { tparam := list.At(i) path2 := appendOpArg(path, opTypeParam, i) @@ -576,12 +538,7 @@ func findTypeParam(obj types.Object, list *typeparams.TypeParamList, path []byte // Object returns the object denoted by path p within the package pkg. func Object(pkg *types.Package, p Path) (types.Object, error) { - return object(pkg, string(p), false) -} - -// Note: the skipMethodSorting parameter must match the value of -// Encoder.skipMethodSorting used during encoding. -func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.Object, error) { + pathstr := string(p) if pathstr == "" { return nil, fmt.Errorf("empty path") } @@ -605,7 +562,7 @@ func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.O } // abstraction of *types.{Named,Signature} type hasTypeParams interface { - TypeParams() *typeparams.TypeParamList + TypeParams() *types.TypeParamList } // abstraction of *types.{Named,TypeParam} type hasObj interface { @@ -707,7 +664,7 @@ func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.O t = tparams.At(index) case opConstraint: - tparam, ok := t.(*typeparams.TypeParam) + tparam, ok := t.(*types.TypeParam) if !ok { return nil, fmt.Errorf("cannot apply %q to %s (got %T, want type parameter)", code, t, t) } @@ -747,12 +704,7 @@ func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.O if index >= t.NumMethods() { return nil, fmt.Errorf("method index %d out of range [0-%d)", index, t.NumMethods()) } - if skipMethodSorting { - obj = t.Method(index) - } else { - methods := namedMethods(t) // (unmemoized) - obj = methods[index] // Id-ordered - } + obj = t.Method(index) default: return nil, fmt.Errorf("cannot apply %q to %s (got %T, want interface or named)", code, t, t) @@ -779,33 +731,6 @@ func object(pkg *types.Package, pathstr string, skipMethodSorting bool) (types.O return obj, nil // success } -// namedMethods returns the methods of a Named type in ascending Id order. -func namedMethods(named *types.Named) []*types.Func { - methods := make([]*types.Func, named.NumMethods()) - for i := range methods { - methods[i] = named.Method(i) - } - sort.Slice(methods, func(i, j int) bool { - return methods[i].Id() < methods[j].Id() - }) - return methods -} - -// namedMethods is a memoization of the namedMethods function. Callers must not modify the result. -func (enc *Encoder) namedMethods(named *types.Named) []*types.Func { - m := enc.namedMethodsMemo - if m == nil { - m = make(map[*types.Named][]*types.Func) - enc.namedMethodsMemo = m - } - methods, ok := m[named] - if !ok { - methods = namedMethods(named) // allocates and sorts - m[named] = methods - } - return methods -} - // scopeObjects is a memoization of scope objects. // Callers must not modify the result. func (enc *Encoder) scopeObjects(scope *types.Scope) []types.Object { diff --git a/vendor/golang.org/x/tools/internal/diff/lcs/git.sh b/vendor/golang.org/x/tools/internal/diff/lcs/git.sh index 6856f84..b25ba4a 100644 --- a/vendor/golang.org/x/tools/internal/diff/lcs/git.sh +++ b/vendor/golang.org/x/tools/internal/diff/lcs/git.sh @@ -14,9 +14,9 @@ set -eu # WARNING: This script will install the latest version of $file # The largest real source file in the x/tools repo. -# file=internal/lsp/source/completion/completion.go -# file=internal/lsp/source/diagnostics.go -file=internal/lsp/protocol/tsprotocol.go +# file=internal/golang/completion/completion.go +# file=internal/golang/diagnostics.go +file=internal/protocol/tsprotocol.go tmp=$(mktemp -d) git log $file | diff --git a/vendor/golang.org/x/tools/internal/diff/ndiff.go b/vendor/golang.org/x/tools/internal/diff/ndiff.go index 050b08d..fbef4d7 100644 --- a/vendor/golang.org/x/tools/internal/diff/ndiff.go +++ b/vendor/golang.org/x/tools/internal/diff/ndiff.go @@ -18,7 +18,7 @@ func Strings(before, after string) []Edit { return nil // common case } - if stringIsASCII(before) && stringIsASCII(after) { + if isASCII(before) && isASCII(after) { // TODO(adonovan): opt: specialize diffASCII for strings. return diffASCII([]byte(before), []byte(after)) } @@ -32,7 +32,7 @@ func Bytes(before, after []byte) []Edit { return nil // common case } - if bytesIsASCII(before) && bytesIsASCII(after) { + if isASCII(before) && isASCII(after) { return diffASCII(before, after) } return diffRunes(runes(before), runes(after)) @@ -88,18 +88,8 @@ func runesLen(runes []rune) (len int) { return len } -// stringIsASCII reports whether s contains only ASCII. -// TODO(adonovan): combine when x/tools allows generics. -func stringIsASCII(s string) bool { - for i := 0; i < len(s); i++ { - if s[i] >= utf8.RuneSelf { - return false - } - } - return true -} - -func bytesIsASCII(s []byte) bool { +// isASCII reports whether s contains only ASCII. +func isASCII[S string | []byte](s S) bool { for i := 0; i < len(s); i++ { if s[i] >= utf8.RuneSelf { return false diff --git a/vendor/golang.org/x/tools/internal/diff/unified.go b/vendor/golang.org/x/tools/internal/diff/unified.go index 1308503..cfbda61 100644 --- a/vendor/golang.org/x/tools/internal/diff/unified.go +++ b/vendor/golang.org/x/tools/internal/diff/unified.go @@ -10,12 +10,16 @@ import ( "strings" ) +// DefaultContextLines is the number of unchanged lines of surrounding +// context displayed by Unified. Use ToUnified to specify a different value. +const DefaultContextLines = 3 + // Unified returns a unified diff of the old and new strings. // The old and new labels are the names of the old and new files. // If the strings are equal, it returns the empty string. func Unified(oldLabel, newLabel, old, new string) string { edits := Strings(old, new) - unified, err := ToUnified(oldLabel, newLabel, old, edits) + unified, err := ToUnified(oldLabel, newLabel, old, edits, DefaultContextLines) if err != nil { // Can't happen: edits are consistent. log.Fatalf("internal error in diff.Unified: %v", err) @@ -23,11 +27,12 @@ func Unified(oldLabel, newLabel, old, new string) string { return unified } -// ToUnified applies the edits to content and returns a unified diff. +// ToUnified applies the edits to content and returns a unified diff, +// with contextLines lines of (unchanged) context around each diff hunk. // The old and new labels are the names of the content and result files. // It returns an error if the edits are inconsistent; see ApplyEdits. -func ToUnified(oldLabel, newLabel, content string, edits []Edit) (string, error) { - u, err := toUnified(oldLabel, newLabel, content, edits) +func ToUnified(oldLabel, newLabel, content string, edits []Edit, contextLines int) (string, error) { + u, err := toUnified(oldLabel, newLabel, content, edits, contextLines) if err != nil { return "", err } @@ -93,14 +98,10 @@ func (k opKind) String() string { } } -const ( - edge = 3 - gap = edge * 2 -) - // toUnified takes a file contents and a sequence of edits, and calculates // a unified diff that represents those edits. -func toUnified(fromName, toName string, content string, edits []Edit) (unified, error) { +func toUnified(fromName, toName string, content string, edits []Edit, contextLines int) (unified, error) { + gap := contextLines * 2 u := unified{ from: fromName, to: toName, @@ -136,7 +137,7 @@ func toUnified(fromName, toName string, content string, edits []Edit) (unified, //need to start a new hunk if h != nil { // add the edge to the previous hunk - addEqualLines(h, lines, last, last+edge) + addEqualLines(h, lines, last, last+contextLines) u.hunks = append(u.hunks, h) } toLine += start - last @@ -145,7 +146,7 @@ func toUnified(fromName, toName string, content string, edits []Edit) (unified, toLine: toLine + 1, } // add the edge to the new hunk - delta := addEqualLines(h, lines, start-edge, start) + delta := addEqualLines(h, lines, start-contextLines, start) h.fromLine -= delta h.toLine -= delta } @@ -163,7 +164,7 @@ func toUnified(fromName, toName string, content string, edits []Edit) (unified, } if h != nil { // add the edge to the final hunk - addEqualLines(h, lines, last, last+edge) + addEqualLines(h, lines, last, last+contextLines) u.hunks = append(u.hunks, h) } return u, nil diff --git a/vendor/golang.org/x/tools/internal/event/keys/util.go b/vendor/golang.org/x/tools/internal/event/keys/util.go new file mode 100644 index 0000000..c0e8e73 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/event/keys/util.go @@ -0,0 +1,21 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package keys + +import ( + "sort" + "strings" +) + +// Join returns a canonical join of the keys in S: +// a sorted comma-separated string list. +func Join[S ~[]T, T ~string](s S) string { + strs := make([]string, 0, len(s)) + for _, v := range s { + strs = append(strs, string(v)) + } + sort.Strings(strs) + return strings.Join(strs, ",") +} diff --git a/vendor/golang.org/x/tools/internal/facts/facts.go b/vendor/golang.org/x/tools/internal/facts/facts.go index 8480ea0..f0aa97e 100644 --- a/vendor/golang.org/x/tools/internal/facts/facts.go +++ b/vendor/golang.org/x/tools/internal/facts/facts.go @@ -48,7 +48,6 @@ import ( "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/types/objectpath" - "golang.org/x/tools/internal/typesinternal" ) const debug = false @@ -205,9 +204,7 @@ type GetPackageFunc = func(pkgPath string) *types.Package // // Concurrent calls to Decode are safe, so long as the // [GetPackageFunc] (if any) is also concurrency-safe. -// -// TODO(golang/go#61443): eliminate skipMethodSorting one way or the other. -func (d *Decoder) Decode(skipMethodSorting bool, read func(pkgPath string) ([]byte, error)) (*Set, error) { +func (d *Decoder) Decode(read func(pkgPath string) ([]byte, error)) (*Set, error) { // Read facts from imported packages. // Facts may describe indirectly imported packages, or their objects. m := make(map[key]analysis.Fact) // one big bucket @@ -247,7 +244,7 @@ func (d *Decoder) Decode(skipMethodSorting bool, read func(pkgPath string) ([]by key := key{pkg: factPkg, t: reflect.TypeOf(f.Fact)} if f.Object != "" { // object fact - obj, err := typesinternal.ObjectpathObject(factPkg, string(f.Object), skipMethodSorting) + obj, err := objectpath.Object(factPkg, f.Object) if err != nil { // (most likely due to unexported object) // TODO(adonovan): audit for other possibilities. @@ -271,11 +268,8 @@ func (d *Decoder) Decode(skipMethodSorting bool, read func(pkgPath string) ([]by // // It may fail if one of the Facts could not be gob-encoded, but this is // a sign of a bug in an Analyzer. -func (s *Set) Encode(skipMethodSorting bool) []byte { +func (s *Set) Encode() []byte { encoder := new(objectpath.Encoder) - if skipMethodSorting { - typesinternal.SkipEncoderMethodSorting(encoder) - } // TODO(adonovan): opt: use a more efficient encoding // that avoids repeating PkgPath for each fact. diff --git a/vendor/golang.org/x/tools/internal/facts/imports.go b/vendor/golang.org/x/tools/internal/facts/imports.go index f64695e..1fe63ca 100644 --- a/vendor/golang.org/x/tools/internal/facts/imports.go +++ b/vendor/golang.org/x/tools/internal/facts/imports.go @@ -6,8 +6,6 @@ package facts import ( "go/types" - - "golang.org/x/tools/internal/typeparams" ) // importMap computes the import map for a package by traversing the @@ -55,7 +53,7 @@ func importMap(imports []*types.Package) map[string]*types.Package { // infinite expansions: // type N[T any] struct { F *N[N[T]] } // importMap() is called on such types when Analyzer.RunDespiteErrors is true. - T = typeparams.NamedTypeOrigin(T) + T = T.Origin() if !typs[T] { typs[T] = true addObj(T.Obj()) @@ -63,12 +61,12 @@ func importMap(imports []*types.Package) map[string]*types.Package { for i := 0; i < T.NumMethods(); i++ { addObj(T.Method(i)) } - if tparams := typeparams.ForNamed(T); tparams != nil { + if tparams := T.TypeParams(); tparams != nil { for i := 0; i < tparams.Len(); i++ { addType(tparams.At(i)) } } - if targs := typeparams.NamedTypeArgs(T); targs != nil { + if targs := T.TypeArgs(); targs != nil { for i := 0; i < targs.Len(); i++ { addType(targs.At(i)) } @@ -88,7 +86,7 @@ func importMap(imports []*types.Package) map[string]*types.Package { case *types.Signature: addType(T.Params()) addType(T.Results()) - if tparams := typeparams.ForSignature(T); tparams != nil { + if tparams := T.TypeParams(); tparams != nil { for i := 0; i < tparams.Len(); i++ { addType(tparams.At(i)) } @@ -108,11 +106,11 @@ func importMap(imports []*types.Package) map[string]*types.Package { for i := 0; i < T.NumEmbeddeds(); i++ { addType(T.EmbeddedType(i)) // walk Embedded for implicits } - case *typeparams.Union: + case *types.Union: for i := 0; i < T.Len(); i++ { addType(T.Term(i).Type()) } - case *typeparams.TypeParam: + case *types.TypeParam: if !typs[T] { typs[T] = true addObj(T.Obj()) diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/internal/gcimporter/iexport.go index 6103dd7..2ee8c70 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/iexport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/iexport.go @@ -24,7 +24,6 @@ import ( "golang.org/x/tools/go/types/objectpath" "golang.org/x/tools/internal/tokeninternal" - "golang.org/x/tools/internal/typeparams" ) // IExportShallow encodes "shallow" export data for the specified package. @@ -481,7 +480,7 @@ func (p *iexporter) doDecl(obj types.Object) { } // Function. - if typeparams.ForSignature(sig).Len() == 0 { + if sig.TypeParams().Len() == 0 { w.tag('F') } else { w.tag('G') @@ -494,7 +493,7 @@ func (p *iexporter) doDecl(obj types.Object) { // // While importing the type parameters, tparamList computes and records // their export name, so that it can be later used when writing the index. - if tparams := typeparams.ForSignature(sig); tparams.Len() > 0 { + if tparams := sig.TypeParams(); tparams.Len() > 0 { w.tparamList(obj.Name(), tparams, obj.Pkg()) } w.signature(sig) @@ -507,14 +506,14 @@ func (p *iexporter) doDecl(obj types.Object) { case *types.TypeName: t := obj.Type() - if tparam, ok := t.(*typeparams.TypeParam); ok { + if tparam, ok := t.(*types.TypeParam); ok { w.tag('P') w.pos(obj.Pos()) constraint := tparam.Constraint() if p.version >= iexportVersionGo1_18 { implicit := false if iface, _ := constraint.(*types.Interface); iface != nil { - implicit = typeparams.IsImplicit(iface) + implicit = iface.IsImplicit() } w.bool(implicit) } @@ -535,17 +534,17 @@ func (p *iexporter) doDecl(obj types.Object) { panic(internalErrorf("%s is not a defined type", t)) } - if typeparams.ForNamed(named).Len() == 0 { + if named.TypeParams().Len() == 0 { w.tag('T') } else { w.tag('U') } w.pos(obj.Pos()) - if typeparams.ForNamed(named).Len() > 0 { + if named.TypeParams().Len() > 0 { // While importing the type parameters, tparamList computes and records // their export name, so that it can be later used when writing the index. - w.tparamList(obj.Name(), typeparams.ForNamed(named), obj.Pkg()) + w.tparamList(obj.Name(), named.TypeParams(), obj.Pkg()) } underlying := obj.Type().Underlying() @@ -565,7 +564,7 @@ func (p *iexporter) doDecl(obj types.Object) { // Receiver type parameters are type arguments of the receiver type, so // their name must be qualified before exporting recv. - if rparams := typeparams.RecvTypeParams(sig); rparams.Len() > 0 { + if rparams := sig.RecvTypeParams(); rparams.Len() > 0 { prefix := obj.Name() + "." + m.Name() for i := 0; i < rparams.Len(); i++ { rparam := rparams.At(i) @@ -740,19 +739,19 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { } switch t := t.(type) { case *types.Named: - if targs := typeparams.NamedTypeArgs(t); targs.Len() > 0 { + if targs := t.TypeArgs(); targs.Len() > 0 { w.startType(instanceType) // TODO(rfindley): investigate if this position is correct, and if it // matters. w.pos(t.Obj().Pos()) w.typeList(targs, pkg) - w.typ(typeparams.NamedTypeOrigin(t), pkg) + w.typ(t.Origin(), pkg) return } w.startType(definedType) w.qualifiedType(t.Obj()) - case *typeparams.TypeParam: + case *types.TypeParam: w.startType(typeParamType) w.qualifiedType(t.Obj()) @@ -868,7 +867,7 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { w.signature(sig) } - case *typeparams.Union: + case *types.Union: w.startType(unionType) nt := t.Len() w.uint64(uint64(nt)) @@ -948,14 +947,14 @@ func (w *exportWriter) signature(sig *types.Signature) { } } -func (w *exportWriter) typeList(ts *typeparams.TypeList, pkg *types.Package) { +func (w *exportWriter) typeList(ts *types.TypeList, pkg *types.Package) { w.uint64(uint64(ts.Len())) for i := 0; i < ts.Len(); i++ { w.typ(ts.At(i), pkg) } } -func (w *exportWriter) tparamList(prefix string, list *typeparams.TypeParamList, pkg *types.Package) { +func (w *exportWriter) tparamList(prefix string, list *types.TypeParamList, pkg *types.Package) { ll := uint64(list.Len()) w.uint64(ll) for i := 0; i < list.Len(); i++ { @@ -973,7 +972,7 @@ const blankMarker = "$" // differs from its actual object name: it is prefixed with a qualifier, and // blank type parameter names are disambiguated by their index in the type // parameter list. -func tparamExportName(prefix string, tparam *typeparams.TypeParam) string { +func tparamExportName(prefix string, tparam *types.TypeParam) string { assert(prefix != "") name := tparam.Obj().Name() if name == "_" { diff --git a/vendor/golang.org/x/tools/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/internal/gcimporter/iimport.go index 8e64cf6..9fffa9a 100644 --- a/vendor/golang.org/x/tools/internal/gcimporter/iimport.go +++ b/vendor/golang.org/x/tools/internal/gcimporter/iimport.go @@ -22,7 +22,6 @@ import ( "strings" "golang.org/x/tools/go/types/objectpath" - "golang.org/x/tools/internal/typeparams" ) type intReader struct { @@ -225,6 +224,7 @@ func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte // Gather the relevant packages from the manifest. items := make([]GetPackagesItem, r.uint64()) + uniquePkgPaths := make(map[string]bool) for i := range items { pkgPathOff := r.uint64() pkgPath := p.stringAt(pkgPathOff) @@ -249,6 +249,12 @@ func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte } items[i].nameIndex = nameIndex + + uniquePkgPaths[pkgPath] = true + } + // Debugging #63822; hypothesis: there are duplicate PkgPaths. + if len(uniquePkgPaths) != len(items) { + reportf("found duplicate PkgPaths while reading export data manifest: %v", items) } // Request packages all at once from the client, @@ -321,7 +327,7 @@ func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte // Therefore, we defer calling SetConstraint there, and call it here instead // after all types are complete. for _, d := range p.later { - typeparams.SetTypeParamConstraint(d.t, d.constraint) + d.t.SetConstraint(d.constraint) } for _, typ := range p.interfaceList { @@ -339,7 +345,7 @@ func iimportCommon(fset *token.FileSet, getPackages GetPackagesFunc, data []byte } type setConstraintArgs struct { - t *typeparams.TypeParam + t *types.TypeParam constraint types.Type } @@ -549,7 +555,7 @@ func (r *importReader) obj(name string) { r.declare(types.NewConst(pos, r.currPkg, name, typ, val)) case 'F', 'G': - var tparams []*typeparams.TypeParam + var tparams []*types.TypeParam if tag == 'G' { tparams = r.tparamList() } @@ -566,7 +572,7 @@ func (r *importReader) obj(name string) { r.declare(obj) if tag == 'U' { tparams := r.tparamList() - typeparams.SetForNamed(named, tparams) + named.SetTypeParams(tparams) } underlying := r.p.typAt(r.uint64(), named).Underlying() @@ -583,12 +589,12 @@ func (r *importReader) obj(name string) { // typeparams being used in the method sig/body). base := baseType(recv.Type()) assert(base != nil) - targs := typeparams.NamedTypeArgs(base) - var rparams []*typeparams.TypeParam + targs := base.TypeArgs() + var rparams []*types.TypeParam if targs.Len() > 0 { - rparams = make([]*typeparams.TypeParam, targs.Len()) + rparams = make([]*types.TypeParam, targs.Len()) for i := range rparams { - rparams[i] = targs.At(i).(*typeparams.TypeParam) + rparams[i] = targs.At(i).(*types.TypeParam) } } msig := r.signature(recv, rparams, nil) @@ -606,7 +612,7 @@ func (r *importReader) obj(name string) { } name0 := tparamName(name) tn := types.NewTypeName(pos, r.currPkg, name0, nil) - t := typeparams.NewTypeParam(tn, nil) + t := types.NewTypeParam(tn, nil) // To handle recursive references to the typeparam within its // bound, save the partial type in tparamIndex before reading the bounds. @@ -622,7 +628,7 @@ func (r *importReader) obj(name string) { if iface == nil { errorf("non-interface constraint marked implicit") } - typeparams.MarkImplicit(iface) + iface.MarkImplicit() } // The constraint type may not be complete, if we // are in the middle of a type recursion involving type @@ -966,7 +972,7 @@ func (r *importReader) doType(base *types.Named) (res types.Type) { // The imported instantiated type doesn't include any methods, so // we must always use the methods of the base (orig) type. // TODO provide a non-nil *Environment - t, _ := typeparams.Instantiate(nil, baseType, targs, false) + t, _ := types.Instantiate(nil, baseType, targs, false) // Workaround for golang/go#61561. See the doc for instanceList for details. r.p.instanceList = append(r.p.instanceList, t) @@ -976,11 +982,11 @@ func (r *importReader) doType(base *types.Named) (res types.Type) { if r.p.version < iexportVersionGenerics { errorf("unexpected instantiation type") } - terms := make([]*typeparams.Term, r.uint64()) + terms := make([]*types.Term, r.uint64()) for i := range terms { - terms[i] = typeparams.NewTerm(r.bool(), r.typ()) + terms[i] = types.NewTerm(r.bool(), r.typ()) } - return typeparams.NewUnion(terms) + return types.NewUnion(terms) } } @@ -1008,23 +1014,23 @@ func (r *importReader) objectPathObject() types.Object { return obj } -func (r *importReader) signature(recv *types.Var, rparams []*typeparams.TypeParam, tparams []*typeparams.TypeParam) *types.Signature { +func (r *importReader) signature(recv *types.Var, rparams []*types.TypeParam, tparams []*types.TypeParam) *types.Signature { params := r.paramList() results := r.paramList() variadic := params.Len() > 0 && r.bool() - return typeparams.NewSignatureType(recv, rparams, tparams, params, results, variadic) + return types.NewSignatureType(recv, rparams, tparams, params, results, variadic) } -func (r *importReader) tparamList() []*typeparams.TypeParam { +func (r *importReader) tparamList() []*types.TypeParam { n := r.uint64() if n == 0 { return nil } - xs := make([]*typeparams.TypeParam, n) + xs := make([]*types.TypeParam, n) for i := range xs { // Note: the standard library importer is tolerant of nil types here, // though would panic in SetTypeParams. - xs[i] = r.typ().(*typeparams.TypeParam) + xs[i] = r.typ().(*types.TypeParam) } return xs } diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go index 53cf66d..5531252 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go @@ -13,6 +13,7 @@ import ( "io" "log" "os" + "os/exec" "reflect" "regexp" "runtime" @@ -21,8 +22,6 @@ import ( "sync" "time" - exec "golang.org/x/sys/execabs" - "golang.org/x/tools/internal/event" "golang.org/x/tools/internal/event/keys" "golang.org/x/tools/internal/event/label" @@ -85,6 +84,7 @@ func (runner *Runner) RunPiped(ctx context.Context, inv Invocation, stdout, stde // RunRaw runs the invocation, serializing requests only if they fight over // go.mod changes. +// Postcondition: both error results have same nilness. func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) { ctx, done := event.Start(ctx, "gocommand.Runner.RunRaw", invLabels(inv)...) defer done() @@ -95,23 +95,24 @@ func (runner *Runner) RunRaw(ctx context.Context, inv Invocation) (*bytes.Buffer stdout, stderr, friendlyErr, err := runner.runConcurrent(ctx, inv) // If we encounter a load concurrency error, we need to retry serially. - if friendlyErr == nil || !modConcurrencyError.MatchString(friendlyErr.Error()) { - return stdout, stderr, friendlyErr, err + if friendlyErr != nil && modConcurrencyError.MatchString(friendlyErr.Error()) { + event.Error(ctx, "Load concurrency error, will retry serially", err) + + // Run serially by calling runPiped. + stdout.Reset() + stderr.Reset() + friendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr) } - event.Error(ctx, "Load concurrency error, will retry serially", err) - // Run serially by calling runPiped. - stdout.Reset() - stderr.Reset() - friendlyErr, err = runner.runPiped(ctx, inv, stdout, stderr) return stdout, stderr, friendlyErr, err } +// Postcondition: both error results have same nilness. func (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes.Buffer, *bytes.Buffer, error, error) { // Wait for 1 worker to become available. select { case <-ctx.Done(): - return nil, nil, nil, ctx.Err() + return nil, nil, ctx.Err(), ctx.Err() case runner.inFlight <- struct{}{}: defer func() { <-runner.inFlight }() } @@ -121,6 +122,7 @@ func (runner *Runner) runConcurrent(ctx context.Context, inv Invocation) (*bytes return stdout, stderr, friendlyErr, err } +// Postcondition: both error results have same nilness. func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stderr io.Writer) (error, error) { // Make sure the runner is always initialized. runner.initialize() @@ -129,7 +131,7 @@ func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stde // runPiped commands. select { case <-ctx.Done(): - return nil, ctx.Err() + return ctx.Err(), ctx.Err() case runner.serialized <- struct{}{}: defer func() { <-runner.serialized }() } @@ -139,7 +141,7 @@ func (runner *Runner) runPiped(ctx context.Context, inv Invocation, stdout, stde for i := 0; i < maxInFlight; i++ { select { case <-ctx.Done(): - return nil, ctx.Err() + return ctx.Err(), ctx.Err() case runner.inFlight <- struct{}{}: // Make sure we always "return" any workers we took. defer func() { <-runner.inFlight }() @@ -172,6 +174,7 @@ type Invocation struct { Logf func(format string, args ...interface{}) } +// Postcondition: both error results have same nilness. func (i *Invocation) runWithFriendlyError(ctx context.Context, stdout, stderr io.Writer) (friendlyError error, rawError error) { rawError = i.run(ctx, stdout, stderr) if rawError != nil { diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go index d9950b1..44719de 100644 --- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go +++ b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go @@ -5,10 +5,6 @@ // Package packagesinternal exposes internal-only fields from go/packages. package packagesinternal -import ( - "golang.org/x/tools/internal/gocommand" -) - var GetForTest = func(p interface{}) string { return "" } var GetDepsErrors = func(p interface{}) []*PackageError { return nil } @@ -18,10 +14,6 @@ type PackageError struct { Err string // the error itself } -var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil } - -var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} - var TypecheckCgo int var DepsErrors int // must be set as a LoadMode to call GetDepsErrors var ForTest int // must be set as a LoadMode to call GetForTest diff --git a/vendor/golang.org/x/tools/internal/typeparams/common.go b/vendor/golang.org/x/tools/internal/typeparams/common.go index d0d0649..cdab988 100644 --- a/vendor/golang.org/x/tools/internal/typeparams/common.go +++ b/vendor/golang.org/x/tools/internal/typeparams/common.go @@ -42,7 +42,7 @@ func UnpackIndexExpr(n ast.Node) (x ast.Expr, lbrack token.Pos, indices []ast.Ex switch e := n.(type) { case *ast.IndexExpr: return e.X, e.Lbrack, []ast.Expr{e.Index}, e.Rbrack - case *IndexListExpr: + case *ast.IndexListExpr: return e.X, e.Lbrack, e.Indices, e.Rbrack } return nil, token.NoPos, nil, token.NoPos @@ -63,7 +63,7 @@ func PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack toke Rbrack: rbrack, } default: - return &IndexListExpr{ + return &ast.IndexListExpr{ X: x, Lbrack: lbrack, Indices: indices, @@ -74,7 +74,7 @@ func PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack toke // IsTypeParam reports whether t is a type parameter. func IsTypeParam(t types.Type) bool { - _, ok := t.(*TypeParam) + _, ok := t.(*types.TypeParam) return ok } @@ -100,11 +100,11 @@ func OriginMethod(fn *types.Func) *types.Func { // Receiver is a *types.Interface. return fn } - if ForNamed(named).Len() == 0 { + if named.TypeParams().Len() == 0 { // Receiver base has no type parameters, so we can avoid the lookup below. return fn } - orig := NamedTypeOrigin(named) + orig := named.Origin() gfn, _, _ := types.LookupFieldOrMethod(orig, true, fn.Pkg(), fn.Name()) // This is a fix for a gopls crash (#60628) due to a go/types bug (#60634). In: @@ -157,7 +157,7 @@ func OriginMethod(fn *types.Func) *types.Func { // // In this case, GenericAssignableTo reports that instantiations of Container // are assignable to the corresponding instantiation of Interface. -func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { +func GenericAssignableTo(ctxt *types.Context, V, T types.Type) bool { // If V and T are not both named, or do not have matching non-empty type // parameter lists, fall back on types.AssignableTo. @@ -167,9 +167,9 @@ func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { return types.AssignableTo(V, T) } - vtparams := ForNamed(VN) - ttparams := ForNamed(TN) - if vtparams.Len() == 0 || vtparams.Len() != ttparams.Len() || NamedTypeArgs(VN).Len() != 0 || NamedTypeArgs(TN).Len() != 0 { + vtparams := VN.TypeParams() + ttparams := TN.TypeParams() + if vtparams.Len() == 0 || vtparams.Len() != ttparams.Len() || VN.TypeArgs().Len() != 0 || TN.TypeArgs().Len() != 0 { return types.AssignableTo(V, T) } @@ -182,7 +182,7 @@ func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { // Minor optimization: ensure we share a context across the two // instantiations below. if ctxt == nil { - ctxt = NewContext() + ctxt = types.NewContext() } var targs []types.Type @@ -190,12 +190,12 @@ func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { targs = append(targs, vtparams.At(i)) } - vinst, err := Instantiate(ctxt, V, targs, true) + vinst, err := types.Instantiate(ctxt, V, targs, true) if err != nil { panic("type parameters should satisfy their own constraints") } - tinst, err := Instantiate(ctxt, T, targs, true) + tinst, err := types.Instantiate(ctxt, T, targs, true) if err != nil { return false } diff --git a/vendor/golang.org/x/tools/internal/typeparams/coretype.go b/vendor/golang.org/x/tools/internal/typeparams/coretype.go index 7124820..7ea8840 100644 --- a/vendor/golang.org/x/tools/internal/typeparams/coretype.go +++ b/vendor/golang.org/x/tools/internal/typeparams/coretype.go @@ -108,15 +108,15 @@ func CoreType(T types.Type) types.Type { // // _NormalTerms makes no guarantees about the order of terms, except that it // is deterministic. -func _NormalTerms(typ types.Type) ([]*Term, error) { +func _NormalTerms(typ types.Type) ([]*types.Term, error) { switch typ := typ.(type) { - case *TypeParam: + case *types.TypeParam: return StructuralTerms(typ) - case *Union: + case *types.Union: return UnionTermSet(typ) case *types.Interface: return InterfaceTermSet(typ) default: - return []*Term{NewTerm(false, typ)}, nil + return []*types.Term{types.NewTerm(false, typ)}, nil } } diff --git a/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go b/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go deleted file mode 100644 index 1821239..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.18 -// +build !go1.18 - -package typeparams - -// Enabled reports whether type parameters are enabled in the current build -// environment. -const Enabled = false diff --git a/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go b/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go deleted file mode 100644 index d671488..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.18 -// +build go1.18 - -package typeparams - -// Note: this constant is in a separate file as this is the only acceptable -// diff between the <1.18 API of this package and the 1.18 API. - -// Enabled reports whether type parameters are enabled in the current build -// environment. -const Enabled = true diff --git a/vendor/golang.org/x/tools/internal/typeparams/normalize.go b/vendor/golang.org/x/tools/internal/typeparams/normalize.go index 9c631b6..93c80fd 100644 --- a/vendor/golang.org/x/tools/internal/typeparams/normalize.go +++ b/vendor/golang.org/x/tools/internal/typeparams/normalize.go @@ -60,7 +60,7 @@ var ErrEmptyTypeSet = errors.New("empty type set") // // StructuralTerms makes no guarantees about the order of terms, except that it // is deterministic. -func StructuralTerms(tparam *TypeParam) ([]*Term, error) { +func StructuralTerms(tparam *types.TypeParam) ([]*types.Term, error) { constraint := tparam.Constraint() if constraint == nil { return nil, fmt.Errorf("%s has nil constraint", tparam) @@ -78,7 +78,7 @@ func StructuralTerms(tparam *TypeParam) ([]*Term, error) { // // See the documentation of StructuralTerms for more information on // normalization. -func InterfaceTermSet(iface *types.Interface) ([]*Term, error) { +func InterfaceTermSet(iface *types.Interface) ([]*types.Term, error) { return computeTermSet(iface) } @@ -88,11 +88,11 @@ func InterfaceTermSet(iface *types.Interface) ([]*Term, error) { // // See the documentation of StructuralTerms for more information on // normalization. -func UnionTermSet(union *Union) ([]*Term, error) { +func UnionTermSet(union *types.Union) ([]*types.Term, error) { return computeTermSet(union) } -func computeTermSet(typ types.Type) ([]*Term, error) { +func computeTermSet(typ types.Type) ([]*types.Term, error) { tset, err := computeTermSetInternal(typ, make(map[types.Type]*termSet), 0) if err != nil { return nil, err @@ -103,9 +103,9 @@ func computeTermSet(typ types.Type) ([]*Term, error) { if tset.terms.isAll() { return nil, nil } - var terms []*Term + var terms []*types.Term for _, term := range tset.terms { - terms = append(terms, NewTerm(term.tilde, term.typ)) + terms = append(terms, types.NewTerm(term.tilde, term.typ)) } return terms, nil } @@ -162,7 +162,7 @@ func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth in tset.terms = allTermlist for i := 0; i < u.NumEmbeddeds(); i++ { embedded := u.EmbeddedType(i) - if _, ok := embedded.Underlying().(*TypeParam); ok { + if _, ok := embedded.Underlying().(*types.TypeParam); ok { return nil, fmt.Errorf("invalid embedded type %T", embedded) } tset2, err := computeTermSetInternal(embedded, seen, depth+1) @@ -171,7 +171,7 @@ func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth in } tset.terms = tset.terms.intersect(tset2.terms) } - case *Union: + case *types.Union: // The term set of a union is the union of term sets of its terms. tset.terms = nil for i := 0; i < u.Len(); i++ { @@ -184,7 +184,7 @@ func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth in return nil, err } terms = tset2.terms - case *TypeParam, *Union: + case *types.TypeParam, *types.Union: // A stand-alone type parameter or union is not permitted as union // term. return nil, fmt.Errorf("invalid union term %T", t) @@ -199,7 +199,7 @@ func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth in return nil, fmt.Errorf("exceeded max term count %d", maxTermCount) } } - case *TypeParam: + case *types.TypeParam: panic("unreachable") default: // For all other types, the term set is just a single non-tilde term diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go deleted file mode 100644 index 7ed86e1..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.18 -// +build !go1.18 - -package typeparams - -import ( - "go/ast" - "go/token" - "go/types" -) - -func unsupported() { - panic("type parameters are unsupported at this go version") -} - -// IndexListExpr is a placeholder type, as type parameters are not supported at -// this Go version. Its methods panic on use. -type IndexListExpr struct { - ast.Expr - X ast.Expr // expression - Lbrack token.Pos // position of "[" - Indices []ast.Expr // index expressions - Rbrack token.Pos // position of "]" -} - -// ForTypeSpec returns an empty field list, as type parameters on not supported -// at this Go version. -func ForTypeSpec(*ast.TypeSpec) *ast.FieldList { - return nil -} - -// ForFuncType returns an empty field list, as type parameters are not -// supported at this Go version. -func ForFuncType(*ast.FuncType) *ast.FieldList { - return nil -} - -// TypeParam is a placeholder type, as type parameters are not supported at -// this Go version. Its methods panic on use. -type TypeParam struct{ types.Type } - -func (*TypeParam) Index() int { unsupported(); return 0 } -func (*TypeParam) Constraint() types.Type { unsupported(); return nil } -func (*TypeParam) Obj() *types.TypeName { unsupported(); return nil } - -// TypeParamList is a placeholder for an empty type parameter list. -type TypeParamList struct{} - -func (*TypeParamList) Len() int { return 0 } -func (*TypeParamList) At(int) *TypeParam { unsupported(); return nil } - -// TypeList is a placeholder for an empty type list. -type TypeList struct{} - -func (*TypeList) Len() int { return 0 } -func (*TypeList) At(int) types.Type { unsupported(); return nil } - -// NewTypeParam is unsupported at this Go version, and panics. -func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam { - unsupported() - return nil -} - -// SetTypeParamConstraint is unsupported at this Go version, and panics. -func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) { - unsupported() -} - -// NewSignatureType calls types.NewSignature, panicking if recvTypeParams or -// typeParams is non-empty. -func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature { - if len(recvTypeParams) != 0 || len(typeParams) != 0 { - panic("signatures cannot have type parameters at this Go version") - } - return types.NewSignature(recv, params, results, variadic) -} - -// ForSignature returns an empty slice. -func ForSignature(*types.Signature) *TypeParamList { - return nil -} - -// RecvTypeParams returns a nil slice. -func RecvTypeParams(sig *types.Signature) *TypeParamList { - return nil -} - -// IsComparable returns false, as no interfaces are type-restricted at this Go -// version. -func IsComparable(*types.Interface) bool { - return false -} - -// IsMethodSet returns true, as no interfaces are type-restricted at this Go -// version. -func IsMethodSet(*types.Interface) bool { - return true -} - -// IsImplicit returns false, as no interfaces are implicit at this Go version. -func IsImplicit(*types.Interface) bool { - return false -} - -// MarkImplicit does nothing, because this Go version does not have implicit -// interfaces. -func MarkImplicit(*types.Interface) {} - -// ForNamed returns an empty type parameter list, as type parameters are not -// supported at this Go version. -func ForNamed(*types.Named) *TypeParamList { - return nil -} - -// SetForNamed panics if tparams is non-empty. -func SetForNamed(_ *types.Named, tparams []*TypeParam) { - if len(tparams) > 0 { - unsupported() - } -} - -// NamedTypeArgs returns nil. -func NamedTypeArgs(*types.Named) *TypeList { - return nil -} - -// NamedTypeOrigin is the identity method at this Go version. -func NamedTypeOrigin(named *types.Named) *types.Named { - return named -} - -// Term holds information about a structural type restriction. -type Term struct { - tilde bool - typ types.Type -} - -func (m *Term) Tilde() bool { return m.tilde } -func (m *Term) Type() types.Type { return m.typ } -func (m *Term) String() string { - pre := "" - if m.tilde { - pre = "~" - } - return pre + m.typ.String() -} - -// NewTerm is unsupported at this Go version, and panics. -func NewTerm(tilde bool, typ types.Type) *Term { - return &Term{tilde, typ} -} - -// Union is a placeholder type, as type parameters are not supported at this Go -// version. Its methods panic on use. -type Union struct{ types.Type } - -func (*Union) Len() int { return 0 } -func (*Union) Term(i int) *Term { unsupported(); return nil } - -// NewUnion is unsupported at this Go version, and panics. -func NewUnion(terms []*Term) *Union { - unsupported() - return nil -} - -// InitInstanceInfo is a noop at this Go version. -func InitInstanceInfo(*types.Info) {} - -// Instance is a placeholder type, as type parameters are not supported at this -// Go version. -type Instance struct { - TypeArgs *TypeList - Type types.Type -} - -// GetInstances returns a nil map, as type parameters are not supported at this -// Go version. -func GetInstances(info *types.Info) map[*ast.Ident]Instance { return nil } - -// Context is a placeholder type, as type parameters are not supported at -// this Go version. -type Context struct{} - -// NewContext returns a placeholder Context instance. -func NewContext() *Context { - return &Context{} -} - -// Instantiate is unsupported on this Go version, and panics. -func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { - unsupported() - return nil, nil -} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go deleted file mode 100644 index cf301af..0000000 --- a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2021 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.18 -// +build go1.18 - -package typeparams - -import ( - "go/ast" - "go/types" -) - -// IndexListExpr is an alias for ast.IndexListExpr. -type IndexListExpr = ast.IndexListExpr - -// ForTypeSpec returns n.TypeParams. -func ForTypeSpec(n *ast.TypeSpec) *ast.FieldList { - if n == nil { - return nil - } - return n.TypeParams -} - -// ForFuncType returns n.TypeParams. -func ForFuncType(n *ast.FuncType) *ast.FieldList { - if n == nil { - return nil - } - return n.TypeParams -} - -// TypeParam is an alias for types.TypeParam -type TypeParam = types.TypeParam - -// TypeParamList is an alias for types.TypeParamList -type TypeParamList = types.TypeParamList - -// TypeList is an alias for types.TypeList -type TypeList = types.TypeList - -// NewTypeParam calls types.NewTypeParam. -func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam { - return types.NewTypeParam(name, constraint) -} - -// SetTypeParamConstraint calls tparam.SetConstraint(constraint). -func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) { - tparam.SetConstraint(constraint) -} - -// NewSignatureType calls types.NewSignatureType. -func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature { - return types.NewSignatureType(recv, recvTypeParams, typeParams, params, results, variadic) -} - -// ForSignature returns sig.TypeParams() -func ForSignature(sig *types.Signature) *TypeParamList { - return sig.TypeParams() -} - -// RecvTypeParams returns sig.RecvTypeParams(). -func RecvTypeParams(sig *types.Signature) *TypeParamList { - return sig.RecvTypeParams() -} - -// IsComparable calls iface.IsComparable(). -func IsComparable(iface *types.Interface) bool { - return iface.IsComparable() -} - -// IsMethodSet calls iface.IsMethodSet(). -func IsMethodSet(iface *types.Interface) bool { - return iface.IsMethodSet() -} - -// IsImplicit calls iface.IsImplicit(). -func IsImplicit(iface *types.Interface) bool { - return iface.IsImplicit() -} - -// MarkImplicit calls iface.MarkImplicit(). -func MarkImplicit(iface *types.Interface) { - iface.MarkImplicit() -} - -// ForNamed extracts the (possibly empty) type parameter object list from -// named. -func ForNamed(named *types.Named) *TypeParamList { - return named.TypeParams() -} - -// SetForNamed sets the type params tparams on n. Each tparam must be of -// dynamic type *types.TypeParam. -func SetForNamed(n *types.Named, tparams []*TypeParam) { - n.SetTypeParams(tparams) -} - -// NamedTypeArgs returns named.TypeArgs(). -func NamedTypeArgs(named *types.Named) *TypeList { - return named.TypeArgs() -} - -// NamedTypeOrigin returns named.Orig(). -func NamedTypeOrigin(named *types.Named) *types.Named { - return named.Origin() -} - -// Term is an alias for types.Term. -type Term = types.Term - -// NewTerm calls types.NewTerm. -func NewTerm(tilde bool, typ types.Type) *Term { - return types.NewTerm(tilde, typ) -} - -// Union is an alias for types.Union -type Union = types.Union - -// NewUnion calls types.NewUnion. -func NewUnion(terms []*Term) *Union { - return types.NewUnion(terms) -} - -// InitInstanceInfo initializes info to record information about type and -// function instances. -func InitInstanceInfo(info *types.Info) { - info.Instances = make(map[*ast.Ident]types.Instance) -} - -// Instance is an alias for types.Instance. -type Instance = types.Instance - -// GetInstances returns info.Instances. -func GetInstances(info *types.Info) map[*ast.Ident]Instance { - return info.Instances -} - -// Context is an alias for types.Context. -type Context = types.Context - -// NewContext calls types.NewContext. -func NewContext() *Context { - return types.NewContext() -} - -// Instantiate calls types.Instantiate. -func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { - return types.Instantiate(ctxt, typ, targs, validate) -} diff --git a/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go b/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go deleted file mode 100644 index 5e96e89..0000000 --- a/vendor/golang.org/x/tools/internal/typesinternal/objectpath.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2023 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package typesinternal - -import "go/types" - -// This file contains back doors that allow gopls to avoid method sorting when -// using the objectpath package. -// -// This is performance-critical in certain repositories, but changing the -// behavior of the objectpath package is still being discussed in -// golang/go#61443. If we decide to remove the sorting in objectpath we can -// simply delete these back doors. Otherwise, we should add a new API to -// objectpath that allows controlling the sorting. - -// SkipEncoderMethodSorting marks enc (which must be an *objectpath.Encoder) as -// not requiring sorted methods. -var SkipEncoderMethodSorting func(enc interface{}) - -// ObjectpathObject is like objectpath.Object, but allows suppressing method -// sorting. -var ObjectpathObject func(pkg *types.Package, p string, skipMethodSorting bool) (types.Object, error) diff --git a/vendor/golang.org/x/tools/internal/versions/gover.go b/vendor/golang.org/x/tools/internal/versions/gover.go new file mode 100644 index 0000000..bbabcd2 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/versions/gover.go @@ -0,0 +1,172 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This is a fork of internal/gover for use by x/tools until +// go1.21 and earlier are no longer supported by x/tools. + +package versions + +import "strings" + +// A gover is a parsed Go gover: major[.Minor[.Patch]][kind[pre]] +// The numbers are the original decimal strings to avoid integer overflows +// and since there is very little actual math. (Probably overflow doesn't matter in practice, +// but at the time this code was written, there was an existing test that used +// go1.99999999999, which does not fit in an int on 32-bit platforms. +// The "big decimal" representation avoids the problem entirely.) +type gover struct { + major string // decimal + minor string // decimal or "" + patch string // decimal or "" + kind string // "", "alpha", "beta", "rc" + pre string // decimal or "" +} + +// compare returns -1, 0, or +1 depending on whether +// x < y, x == y, or x > y, interpreted as toolchain versions. +// The versions x and y must not begin with a "go" prefix: just "1.21" not "go1.21". +// Malformed versions compare less than well-formed versions and equal to each other. +// The language version "1.21" compares less than the release candidate and eventual releases "1.21rc1" and "1.21.0". +func compare(x, y string) int { + vx := parse(x) + vy := parse(y) + + if c := cmpInt(vx.major, vy.major); c != 0 { + return c + } + if c := cmpInt(vx.minor, vy.minor); c != 0 { + return c + } + if c := cmpInt(vx.patch, vy.patch); c != 0 { + return c + } + if c := strings.Compare(vx.kind, vy.kind); c != 0 { // "" < alpha < beta < rc + return c + } + if c := cmpInt(vx.pre, vy.pre); c != 0 { + return c + } + return 0 +} + +// lang returns the Go language version. For example, lang("1.2.3") == "1.2". +func lang(x string) string { + v := parse(x) + if v.minor == "" || v.major == "1" && v.minor == "0" { + return v.major + } + return v.major + "." + v.minor +} + +// isValid reports whether the version x is valid. +func isValid(x string) bool { + return parse(x) != gover{} +} + +// parse parses the Go version string x into a version. +// It returns the zero version if x is malformed. +func parse(x string) gover { + var v gover + + // Parse major version. + var ok bool + v.major, x, ok = cutInt(x) + if !ok { + return gover{} + } + if x == "" { + // Interpret "1" as "1.0.0". + v.minor = "0" + v.patch = "0" + return v + } + + // Parse . before minor version. + if x[0] != '.' { + return gover{} + } + + // Parse minor version. + v.minor, x, ok = cutInt(x[1:]) + if !ok { + return gover{} + } + if x == "" { + // Patch missing is same as "0" for older versions. + // Starting in Go 1.21, patch missing is different from explicit .0. + if cmpInt(v.minor, "21") < 0 { + v.patch = "0" + } + return v + } + + // Parse patch if present. + if x[0] == '.' { + v.patch, x, ok = cutInt(x[1:]) + if !ok || x != "" { + // Note that we are disallowing prereleases (alpha, beta, rc) for patch releases here (x != ""). + // Allowing them would be a bit confusing because we already have: + // 1.21 < 1.21rc1 + // But a prerelease of a patch would have the opposite effect: + // 1.21.3rc1 < 1.21.3 + // We've never needed them before, so let's not start now. + return gover{} + } + return v + } + + // Parse prerelease. + i := 0 + for i < len(x) && (x[i] < '0' || '9' < x[i]) { + if x[i] < 'a' || 'z' < x[i] { + return gover{} + } + i++ + } + if i == 0 { + return gover{} + } + v.kind, x = x[:i], x[i:] + if x == "" { + return v + } + v.pre, x, ok = cutInt(x) + if !ok || x != "" { + return gover{} + } + + return v +} + +// cutInt scans the leading decimal number at the start of x to an integer +// and returns that value and the rest of the string. +func cutInt(x string) (n, rest string, ok bool) { + i := 0 + for i < len(x) && '0' <= x[i] && x[i] <= '9' { + i++ + } + if i == 0 || x[0] == '0' && i != 1 { // no digits or unnecessary leading zero + return "", "", false + } + return x[:i], x[i:], true +} + +// cmpInt returns cmp.Compare(x, y) interpreting x and y as decimal numbers. +// (Copied from golang.org/x/mod/semver's compareInt.) +func cmpInt(x, y string) int { + if x == y { + return 0 + } + if len(x) < len(y) { + return -1 + } + if len(x) > len(y) { + return +1 + } + if x < y { + return -1 + } else { + return +1 + } +} diff --git a/vendor/golang.org/x/tools/internal/versions/types.go b/vendor/golang.org/x/tools/internal/versions/types.go new file mode 100644 index 0000000..562eef2 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/versions/types.go @@ -0,0 +1,19 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package versions + +import ( + "go/types" +) + +// GoVersion returns the Go version of the type package. +// It returns zero if no version can be determined. +func GoVersion(pkg *types.Package) string { + // TODO(taking): x/tools can call GoVersion() [from 1.21] after 1.25. + if pkg, ok := any(pkg).(interface{ GoVersion() string }); ok { + return pkg.GoVersion() + } + return "" +} diff --git a/vendor/golang.org/x/tools/internal/versions/types_go121.go b/vendor/golang.org/x/tools/internal/versions/types_go121.go new file mode 100644 index 0000000..a7b7920 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/versions/types_go121.go @@ -0,0 +1,20 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.22 +// +build !go1.22 + +package versions + +import ( + "go/ast" + "go/types" +) + +// FileVersions always reports the a file's Go version as the +// zero version at this Go version. +func FileVersions(info *types.Info, file *ast.File) string { return "" } + +// InitFileVersions is a noop at this Go version. +func InitFileVersions(*types.Info) {} diff --git a/vendor/golang.org/x/tools/internal/versions/types_go122.go b/vendor/golang.org/x/tools/internal/versions/types_go122.go new file mode 100644 index 0000000..7b9ba89 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/versions/types_go122.go @@ -0,0 +1,24 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.22 +// +build go1.22 + +package versions + +import ( + "go/ast" + "go/types" +) + +// FileVersions maps a file to the file's semantic Go version. +// The reported version is the zero version if a version cannot be determined. +func FileVersions(info *types.Info, file *ast.File) string { + return info.FileVersions[file] +} + +// InitFileVersions initializes info to record Go versions for Go files. +func InitFileVersions(info *types.Info) { + info.FileVersions = make(map[*ast.File]string) +} diff --git a/vendor/golang.org/x/tools/internal/versions/versions.go b/vendor/golang.org/x/tools/internal/versions/versions.go new file mode 100644 index 0000000..e16f6c3 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/versions/versions.go @@ -0,0 +1,52 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package versions + +// Note: If we use build tags to use go/versions when go >=1.22, +// we run into go.dev/issue/53737. Under some operations users would see an +// import of "go/versions" even if they would not compile the file. +// For example, during `go get -u ./...` (go.dev/issue/64490) we do not try to include +// For this reason, this library just a clone of go/versions for the moment. + +// Lang returns the Go language version for version x. +// If x is not a valid version, Lang returns the empty string. +// For example: +// +// Lang("go1.21rc2") = "go1.21" +// Lang("go1.21.2") = "go1.21" +// Lang("go1.21") = "go1.21" +// Lang("go1") = "go1" +// Lang("bad") = "" +// Lang("1.21") = "" +func Lang(x string) string { + v := lang(stripGo(x)) + if v == "" { + return "" + } + return x[:2+len(v)] // "go"+v without allocation +} + +// Compare returns -1, 0, or +1 depending on whether +// x < y, x == y, or x > y, interpreted as Go versions. +// The versions x and y must begin with a "go" prefix: "go1.21" not "1.21". +// Invalid versions, including the empty string, compare less than +// valid versions and equal to each other. +// The language version "go1.21" compares less than the +// release candidate and eventual releases "go1.21rc1" and "go1.21.0". +// Custom toolchain suffixes are ignored during comparison: +// "go1.21.0" and "go1.21.0-bigcorp" are equal. +func Compare(x, y string) int { return compare(stripGo(x), stripGo(y)) } + +// IsValid reports whether the version x is valid. +func IsValid(x string) bool { return isValid(stripGo(x)) } + +// stripGo converts from a "go1.21" version to a "1.21" version. +// If v does not start with "go", stripGo returns the empty string (a known invalid version). +func stripGo(v string) string { + if len(v) < 2 || v[:2] != "go" { + return "" + } + return v[2:] +} diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go index 83774fb..d5dccb9 100644 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/api/annotations/client.pb.go @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc v4.24.4 // source: google/api/client.proto package annotations @@ -1033,6 +1033,18 @@ type MethodSettings struct { // total_poll_timeout: // seconds: 54000 # 90 minutes LongRunning *MethodSettings_LongRunning `protobuf:"bytes,2,opt,name=long_running,json=longRunning,proto3" json:"long_running,omitempty"` + // List of top-level fields of the request message, that should be + // automatically populated by the client libraries based on their + // (google.api.field_info).format. Currently supported format: UUID4. + // + // Example of a YAML configuration: + // + // publishing: + // method_settings: + // - selector: google.example.v1.ExampleService.CreateExample + // auto_populated_fields: + // - request_id + AutoPopulatedFields []string `protobuf:"bytes,3,rep,name=auto_populated_fields,json=autoPopulatedFields,proto3" json:"auto_populated_fields,omitempty"` } func (x *MethodSettings) Reset() { @@ -1081,6 +1093,13 @@ func (x *MethodSettings) GetLongRunning() *MethodSettings_LongRunning { return nil } +func (x *MethodSettings) GetAutoPopulatedFields() []string { + if x != nil { + return x.AutoPopulatedFields + } + return nil +} + // Describes settings to use when generating API methods that use the // long-running operation pattern. // All default values below are from those used in the client library @@ -1452,69 +1471,73 @@ var file_google_api_client_proto_rawDesc = []byte{ 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x06, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x8e, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xc2, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x0c, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x1a, - 0x94, 0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, - 0x47, 0x0a, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, - 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x50, - 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x6f, 0x6c, 0x6c, - 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0e, - 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0c, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x47, 0x0a, - 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x2a, 0xa3, 0x01, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, - 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, - 0x41, 0x44, 0x53, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x4f, 0x54, 0x4f, 0x53, 0x10, - 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x45, 0x45, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57, - 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x05, - 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x4f, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x47, 0x45, 0x4e, - 0x45, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x49, 0x10, 0x07, 0x2a, 0x67, 0x0a, 0x18, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4c, 0x49, 0x45, - 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x49, - 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x10, 0x0a, - 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41, - 0x47, 0x45, 0x52, 0x10, 0x14, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x08, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x3a, 0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x6f, 0x73, - 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, 0x69, 0x0a, 0x0e, 0x63, - 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, - 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, - 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x67, 0x52, 0x0b, 0x6c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, + 0x32, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, + 0x61, 0x75, 0x74, 0x6f, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x1a, 0x94, 0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x12, 0x47, 0x0a, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, + 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x32, 0x0a, 0x15, + 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x70, 0x6f, 0x6c, + 0x6c, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, + 0x12, 0x3f, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x47, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, + 0x6f, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x2a, 0xa3, 0x01, 0x0a, 0x19, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x4c, 0x49, 0x45, + 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x01, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x53, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x48, 0x4f, + 0x54, 0x4f, 0x53, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x52, 0x45, 0x45, 0x54, 0x5f, + 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x4f, 0x50, 0x50, 0x49, + 0x4e, 0x47, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x4f, 0x10, 0x06, 0x12, 0x11, 0x0a, + 0x0d, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x49, 0x10, 0x07, + 0x2a, 0x67, 0x0a, 0x18, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, + 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x26, + 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x44, + 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x49, 0x54, 0x48, + 0x55, 0x42, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x5f, + 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x52, 0x10, 0x14, 0x3a, 0x4a, 0x0a, 0x10, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x08, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x43, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x99, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x43, 0x0a, 0x0c, 0x6f, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x42, + 0x69, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x42, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, + 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md index 1bc9224..ab0fbb7 100644 --- a/vendor/google.golang.org/grpc/README.md +++ b/vendor/google.golang.org/grpc/README.md @@ -1,8 +1,8 @@ # gRPC-Go -[![Build Status](https://travis-ci.org/grpc/grpc-go.svg)](https://travis-ci.org/grpc/grpc-go) [![GoDoc](https://pkg.go.dev/badge/google.golang.org/grpc)][API] [![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go) +[![codecov](https://codecov.io/gh/grpc/grpc-go/graph/badge.svg)](https://codecov.io/gh/grpc/grpc-go) The [Go][] implementation of [gRPC][]: A high performance, open source, general RPC framework that puts mobile and HTTP/2 first. For more information see the diff --git a/vendor/google.golang.org/grpc/attributes/attributes.go b/vendor/google.golang.org/grpc/attributes/attributes.go index 712fef4..52d530d 100644 --- a/vendor/google.golang.org/grpc/attributes/attributes.go +++ b/vendor/google.golang.org/grpc/attributes/attributes.go @@ -121,9 +121,9 @@ func (a *Attributes) String() string { return sb.String() } -func str(x any) string { +func str(x any) (s string) { if v, ok := x.(fmt.Stringer); ok { - return v.String() + return fmt.Sprint(v) } else if v, ok := x.(string); ok { return v } diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go index b6377f4..d79560a 100644 --- a/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/balancer.go @@ -30,6 +30,7 @@ import ( "google.golang.org/grpc/channelz" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal" "google.golang.org/grpc/metadata" "google.golang.org/grpc/resolver" @@ -39,6 +40,8 @@ import ( var ( // m is a map from name to balancer builder. m = make(map[string]Builder) + + logger = grpclog.Component("balancer") ) // Register registers the balancer builder to the balancer map. b.Name @@ -51,6 +54,12 @@ var ( // an init() function), and is not thread-safe. If multiple Balancers are // registered with the same name, the one registered last will take effect. func Register(b Builder) { + if strings.ToLower(b.Name()) != b.Name() { + // TODO: Skip the use of strings.ToLower() to index the map after v1.59 + // is released to switch to case sensitive balancer registry. Also, + // remove this warning and update the docstrings for Register and Get. + logger.Warningf("Balancer registered with name %q. grpc-go will be switching to case sensitive balancer registries soon", b.Name()) + } m[strings.ToLower(b.Name())] = b } @@ -70,6 +79,12 @@ func init() { // Note that the compare is done in a case-insensitive fashion. // If no builder is register with the name, nil will be returned. func Get(name string) Builder { + if strings.ToLower(name) != name { + // TODO: Skip the use of strings.ToLower() to index the map after v1.59 + // is released to switch to case sensitive balancer registry. Also, + // remove this warning and update the docstrings for Register and Get. + logger.Warningf("Balancer retrieved for name %q. grpc-go will be switching to case sensitive balancer registries soon", name) + } if b, ok := m[strings.ToLower(name)]; ok { return b } diff --git a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go b/vendor/google.golang.org/grpc/balancer_wrapper.go similarity index 57% rename from vendor/google.golang.org/grpc/balancer_conn_wrappers.go rename to vendor/google.golang.org/grpc/balancer_wrapper.go index a4411c2..b5e30cf 100644 --- a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go +++ b/vendor/google.golang.org/grpc/balancer_wrapper.go @@ -32,21 +32,13 @@ import ( "google.golang.org/grpc/resolver" ) -type ccbMode int - -const ( - ccbModeActive = iota - ccbModeIdle - ccbModeClosed - ccbModeExitingIdle -) - // ccBalancerWrapper sits between the ClientConn and the Balancer. // // ccBalancerWrapper implements methods corresponding to the ones on the // balancer.Balancer interface. The ClientConn is free to call these methods // concurrently and the ccBalancerWrapper ensures that calls from the ClientConn -// to the Balancer happen synchronously and in order. +// to the Balancer happen in order by performing them in the serializer, without +// any mutexes held. // // ccBalancerWrapper also implements the balancer.ClientConn interface and is // passed to the Balancer implementations. It invokes unexported methods on the @@ -57,87 +49,75 @@ const ( type ccBalancerWrapper struct { // The following fields are initialized when the wrapper is created and are // read-only afterwards, and therefore can be accessed without a mutex. - cc *ClientConn - opts balancer.BuildOptions + cc *ClientConn + opts balancer.BuildOptions + serializer *grpcsync.CallbackSerializer + serializerCancel context.CancelFunc - // Outgoing (gRPC --> balancer) calls are guaranteed to execute in a - // mutually exclusive manner as they are scheduled in the serializer. Fields - // accessed *only* in these serializer callbacks, can therefore be accessed - // without a mutex. - balancer *gracefulswitch.Balancer + // The following fields are only accessed within the serializer or during + // initialization. curBalancerName string + balancer *gracefulswitch.Balancer - // mu guards access to the below fields. Access to the serializer and its - // cancel function needs to be mutex protected because they are overwritten - // when the wrapper exits idle mode. - mu sync.Mutex - serializer *grpcsync.CallbackSerializer // To serialize all outoing calls. - serializerCancel context.CancelFunc // To close the seralizer at close/enterIdle time. - mode ccbMode // Tracks the current mode of the wrapper. + // The following field is protected by mu. Caller must take cc.mu before + // taking mu. + mu sync.Mutex + closed bool } -// newCCBalancerWrapper creates a new balancer wrapper. The underlying balancer -// is not created until the switchTo() method is invoked. -func newCCBalancerWrapper(cc *ClientConn, bopts balancer.BuildOptions) *ccBalancerWrapper { - ctx, cancel := context.WithCancel(context.Background()) +// newCCBalancerWrapper creates a new balancer wrapper in idle state. The +// underlying balancer is not created until the switchTo() method is invoked. +func newCCBalancerWrapper(cc *ClientConn) *ccBalancerWrapper { + ctx, cancel := context.WithCancel(cc.ctx) ccb := &ccBalancerWrapper{ - cc: cc, - opts: bopts, + cc: cc, + opts: balancer.BuildOptions{ + DialCreds: cc.dopts.copts.TransportCredentials, + CredsBundle: cc.dopts.copts.CredsBundle, + Dialer: cc.dopts.copts.Dialer, + Authority: cc.authority, + CustomUserAgent: cc.dopts.copts.UserAgent, + ChannelzParentID: cc.channelzID, + Target: cc.parsedTarget, + }, serializer: grpcsync.NewCallbackSerializer(ctx), serializerCancel: cancel, } - ccb.balancer = gracefulswitch.NewBalancer(ccb, bopts) + ccb.balancer = gracefulswitch.NewBalancer(ccb, ccb.opts) return ccb } // updateClientConnState is invoked by grpc to push a ClientConnState update to -// the underlying balancer. +// the underlying balancer. This is always executed from the serializer, so +// it is safe to call into the balancer here. func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) error { - ccb.mu.Lock() - errCh := make(chan error, 1) - // Here and everywhere else where Schedule() is called, it is done with the - // lock held. But the lock guards only the scheduling part. The actual - // callback is called asynchronously without the lock being held. - ok := ccb.serializer.Schedule(func(_ context.Context) { - errCh <- ccb.balancer.UpdateClientConnState(*ccs) + errCh := make(chan error) + ok := ccb.serializer.Schedule(func(ctx context.Context) { + defer close(errCh) + if ctx.Err() != nil || ccb.balancer == nil { + return + } + err := ccb.balancer.UpdateClientConnState(*ccs) + if logger.V(2) && err != nil { + logger.Infof("error from balancer.UpdateClientConnState: %v", err) + } + errCh <- err }) if !ok { - // If we are unable to schedule a function with the serializer, it - // indicates that it has been closed. A serializer is only closed when - // the wrapper is closed or is in idle. - ccb.mu.Unlock() - return fmt.Errorf("grpc: cannot send state update to a closed or idle balancer") - } - ccb.mu.Unlock() - - // We get here only if the above call to Schedule succeeds, in which case it - // is guaranteed that the scheduled function will run. Therefore it is safe - // to block on this channel. - err := <-errCh - if logger.V(2) && err != nil { - logger.Infof("error from balancer.UpdateClientConnState: %v", err) + return nil } - return err -} - -// updateSubConnState is invoked by grpc to push a subConn state update to the -// underlying balancer. -func (ccb *ccBalancerWrapper) updateSubConnState(sc balancer.SubConn, s connectivity.State, err error) { - ccb.mu.Lock() - ccb.serializer.Schedule(func(_ context.Context) { - // Even though it is optional for balancers, gracefulswitch ensures - // opts.StateListener is set, so this cannot ever be nil. - sc.(*acBalancerWrapper).stateListener(balancer.SubConnState{ConnectivityState: s, ConnectionError: err}) - }) - ccb.mu.Unlock() + return <-errCh } +// resolverError is invoked by grpc to push a resolver error to the underlying +// balancer. The call to the balancer is executed from the serializer. func (ccb *ccBalancerWrapper) resolverError(err error) { - ccb.mu.Lock() - ccb.serializer.Schedule(func(_ context.Context) { + ccb.serializer.Schedule(func(ctx context.Context) { + if ctx.Err() != nil || ccb.balancer == nil { + return + } ccb.balancer.ResolverError(err) }) - ccb.mu.Unlock() } // switchTo is invoked by grpc to instruct the balancer wrapper to switch to the @@ -151,8 +131,10 @@ func (ccb *ccBalancerWrapper) resolverError(err error) { // the ccBalancerWrapper keeps track of the current LB policy name, and skips // the graceful balancer switching process if the name does not change. func (ccb *ccBalancerWrapper) switchTo(name string) { - ccb.mu.Lock() - ccb.serializer.Schedule(func(_ context.Context) { + ccb.serializer.Schedule(func(ctx context.Context) { + if ctx.Err() != nil || ccb.balancer == nil { + return + } // TODO: Other languages use case-sensitive balancer registries. We should // switch as well. See: https://github.com/grpc/grpc-go/issues/5288. if strings.EqualFold(ccb.curBalancerName, name) { @@ -160,7 +142,6 @@ func (ccb *ccBalancerWrapper) switchTo(name string) { } ccb.buildLoadBalancingPolicy(name) }) - ccb.mu.Unlock() } // buildLoadBalancingPolicy performs the following: @@ -187,115 +168,49 @@ func (ccb *ccBalancerWrapper) buildLoadBalancingPolicy(name string) { ccb.curBalancerName = builder.Name() } +// close initiates async shutdown of the wrapper. cc.mu must be held when +// calling this function. To determine the wrapper has finished shutting down, +// the channel should block on ccb.serializer.Done() without cc.mu held. func (ccb *ccBalancerWrapper) close() { - channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: closing") - ccb.closeBalancer(ccbModeClosed) -} - -// enterIdleMode is invoked by grpc when the channel enters idle mode upon -// expiry of idle_timeout. This call blocks until the balancer is closed. -func (ccb *ccBalancerWrapper) enterIdleMode() { - channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: entering idle mode") - ccb.closeBalancer(ccbModeIdle) -} - -// closeBalancer is invoked when the channel is being closed or when it enters -// idle mode upon expiry of idle_timeout. -func (ccb *ccBalancerWrapper) closeBalancer(m ccbMode) { ccb.mu.Lock() - if ccb.mode == ccbModeClosed || ccb.mode == ccbModeIdle { - ccb.mu.Unlock() - return - } - - ccb.mode = m - done := ccb.serializer.Done() - b := ccb.balancer - ok := ccb.serializer.Schedule(func(_ context.Context) { - // Close the serializer to ensure that no more calls from gRPC are sent - // to the balancer. - ccb.serializerCancel() - // Empty the current balancer name because we don't have a balancer - // anymore and also so that we act on the next call to switchTo by - // creating a new balancer specified by the new resolver. - ccb.curBalancerName = "" - }) - if !ok { - ccb.mu.Unlock() - return - } + ccb.closed = true ccb.mu.Unlock() - - // Give enqueued callbacks a chance to finish before closing the balancer. - <-done - b.Close() -} - -// exitIdleMode is invoked by grpc when the channel exits idle mode either -// because of an RPC or because of an invocation of the Connect() API. This -// recreates the balancer that was closed previously when entering idle mode. -// -// If the channel is not in idle mode, we know for a fact that we are here as a -// result of the user calling the Connect() method on the ClientConn. In this -// case, we can simply forward the call to the underlying balancer, instructing -// it to reconnect to the backends. -func (ccb *ccBalancerWrapper) exitIdleMode() { - ccb.mu.Lock() - if ccb.mode == ccbModeClosed { - // Request to exit idle is a no-op when wrapper is already closed. - ccb.mu.Unlock() - return - } - - if ccb.mode == ccbModeIdle { - // Recreate the serializer which was closed when we entered idle. - ctx, cancel := context.WithCancel(context.Background()) - ccb.serializer = grpcsync.NewCallbackSerializer(ctx) - ccb.serializerCancel = cancel - } - - // The ClientConn guarantees that mutual exclusion between close() and - // exitIdleMode(), and since we just created a new serializer, we can be - // sure that the below function will be scheduled. - done := make(chan struct{}) - ccb.serializer.Schedule(func(_ context.Context) { - defer close(done) - - ccb.mu.Lock() - defer ccb.mu.Unlock() - - if ccb.mode != ccbModeIdle { - ccb.balancer.ExitIdle() + channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: closing") + ccb.serializer.Schedule(func(context.Context) { + if ccb.balancer == nil { return } - - // Gracefulswitch balancer does not support a switchTo operation after - // being closed. Hence we need to create a new one here. - ccb.balancer = gracefulswitch.NewBalancer(ccb, ccb.opts) - ccb.mode = ccbModeActive - channelz.Info(logger, ccb.cc.channelzID, "ccBalancerWrapper: exiting idle mode") - + ccb.balancer.Close() + ccb.balancer = nil }) - ccb.mu.Unlock() - - <-done + ccb.serializerCancel() } -func (ccb *ccBalancerWrapper) isIdleOrClosed() bool { - ccb.mu.Lock() - defer ccb.mu.Unlock() - return ccb.mode == ccbModeIdle || ccb.mode == ccbModeClosed +// exitIdle invokes the balancer's exitIdle method in the serializer. +func (ccb *ccBalancerWrapper) exitIdle() { + ccb.serializer.Schedule(func(ctx context.Context) { + if ctx.Err() != nil || ccb.balancer == nil { + return + } + ccb.balancer.ExitIdle() + }) } func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { - if ccb.isIdleOrClosed() { - return nil, fmt.Errorf("grpc: cannot create SubConn when balancer is closed or idle") + ccb.cc.mu.Lock() + defer ccb.cc.mu.Unlock() + + ccb.mu.Lock() + if ccb.closed { + ccb.mu.Unlock() + return nil, fmt.Errorf("balancer is being closed; no new SubConns allowed") } + ccb.mu.Unlock() if len(addrs) == 0 { return nil, fmt.Errorf("grpc: cannot create SubConn with empty address list") } - ac, err := ccb.cc.newAddrConn(addrs, opts) + ac, err := ccb.cc.newAddrConnLocked(addrs, opts) if err != nil { channelz.Warningf(logger, ccb.cc.channelzID, "acBalancerWrapper: NewSubConn: failed to newAddrConn: %v", err) return nil, err @@ -316,10 +231,6 @@ func (ccb *ccBalancerWrapper) RemoveSubConn(sc balancer.SubConn) { } func (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resolver.Address) { - if ccb.isIdleOrClosed() { - return - } - acbw, ok := sc.(*acBalancerWrapper) if !ok { return @@ -328,25 +239,39 @@ func (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resol } func (ccb *ccBalancerWrapper) UpdateState(s balancer.State) { - if ccb.isIdleOrClosed() { + ccb.cc.mu.Lock() + defer ccb.cc.mu.Unlock() + + ccb.mu.Lock() + if ccb.closed { + ccb.mu.Unlock() return } - + ccb.mu.Unlock() // Update picker before updating state. Even though the ordering here does // not matter, it can lead to multiple calls of Pick in the common start-up // case where we wait for ready and then perform an RPC. If the picker is // updated later, we could call the "connecting" picker when the state is // updated, and then call the "ready" picker after the picker gets updated. - ccb.cc.blockingpicker.updatePicker(s.Picker) + + // Note that there is no need to check if the balancer wrapper was closed, + // as we know the graceful switch LB policy will not call cc if it has been + // closed. + ccb.cc.pickerWrapper.updatePicker(s.Picker) ccb.cc.csMgr.updateState(s.ConnectivityState) } func (ccb *ccBalancerWrapper) ResolveNow(o resolver.ResolveNowOptions) { - if ccb.isIdleOrClosed() { + ccb.cc.mu.RLock() + defer ccb.cc.mu.RUnlock() + + ccb.mu.Lock() + if ccb.closed { + ccb.mu.Unlock() return } - - ccb.cc.resolveNow(o) + ccb.mu.Unlock() + ccb.cc.resolveNowLocked(o) } func (ccb *ccBalancerWrapper) Target() string { @@ -364,6 +289,20 @@ type acBalancerWrapper struct { producers map[balancer.ProducerBuilder]*refCountedProducer } +// updateState is invoked by grpc to push a subConn state update to the +// underlying balancer. +func (acbw *acBalancerWrapper) updateState(s connectivity.State, err error) { + acbw.ccb.serializer.Schedule(func(ctx context.Context) { + if ctx.Err() != nil || acbw.ccb.balancer == nil { + return + } + // Even though it is optional for balancers, gracefulswitch ensures + // opts.StateListener is set, so this cannot ever be nil. + // TODO: delete this comment when UpdateSubConnState is removed. + acbw.stateListener(balancer.SubConnState{ConnectivityState: s, ConnectionError: err}) + }) +} + func (acbw *acBalancerWrapper) String() string { return fmt.Sprintf("SubConn(id:%d)", acbw.ac.channelzID.Int()) } @@ -377,20 +316,7 @@ func (acbw *acBalancerWrapper) Connect() { } func (acbw *acBalancerWrapper) Shutdown() { - ccb := acbw.ccb - if ccb.isIdleOrClosed() { - // It it safe to ignore this call when the balancer is closed or in idle - // because the ClientConn takes care of closing the connections. - // - // Not returning early from here when the balancer is closed or in idle - // leads to a deadlock though, because of the following sequence of - // calls when holding cc.mu: - // cc.exitIdleMode --> ccb.enterIdleMode --> gsw.Close --> - // ccb.RemoveAddrConn --> cc.removeAddrConn - return - } - - ccb.cc.removeAddrConn(acbw.ac, errConnDrain) + acbw.ccb.cc.removeAddrConn(acbw.ac, errConnDrain) } // NewStream begins a streaming RPC on the addrConn. If the addrConn is not diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go index 5954801..e9e97d4 100644 --- a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go +++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go @@ -430,7 +430,7 @@ type ClientHeader struct { MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` // A single process may be used to run multiple virtual // servers with different identities. - // The authority is the name of such a server identitiy. + // The authority is the name of such a server identity. // It is typically a portion of the URI in the form of // or : . Authority string `protobuf:"bytes,3,opt,name=authority,proto3" json:"authority,omitempty"` diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index ff7fea1..f6e815e 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -33,9 +33,7 @@ import ( "google.golang.org/grpc/balancer/base" "google.golang.org/grpc/codes" "google.golang.org/grpc/connectivity" - "google.golang.org/grpc/credentials" "google.golang.org/grpc/internal" - "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/internal/idle" @@ -48,9 +46,9 @@ import ( "google.golang.org/grpc/status" _ "google.golang.org/grpc/balancer/roundrobin" // To register roundrobin. - _ "google.golang.org/grpc/internal/resolver/dns" // To register dns resolver. _ "google.golang.org/grpc/internal/resolver/passthrough" // To register passthrough resolver. _ "google.golang.org/grpc/internal/resolver/unix" // To register unix resolver. + _ "google.golang.org/grpc/resolver/dns" // To register dns resolver. ) const ( @@ -119,23 +117,8 @@ func (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*ires }, nil } -// DialContext creates a client connection to the given target. By default, it's -// a non-blocking dial (the function won't wait for connections to be -// established, and connecting happens in the background). To make it a blocking -// dial, use WithBlock() dial option. -// -// In the non-blocking case, the ctx does not act against the connection. It -// only controls the setup steps. -// -// In the blocking case, ctx can be used to cancel or expire the pending -// connection. Once this function returns, the cancellation and expiration of -// ctx will be noop. Users should call ClientConn.Close to terminate all the -// pending operations after this function returns. -// -// The target name syntax is defined in -// https://github.com/grpc/grpc/blob/master/doc/naming.md. -// e.g. to use dns resolver, a "dns:///" prefix should be applied to the target. -func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) { +// newClient returns a new client in idle mode. +func newClient(target string, opts ...DialOption) (conn *ClientConn, err error) { cc := &ClientConn{ target: target, conns: make(map[*addrConn]struct{}), @@ -143,23 +126,11 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * czData: new(channelzData), } - // We start the channel off in idle mode, but kick it out of idle at the end - // of this method, instead of waiting for the first RPC. Other gRPC - // implementations do wait for the first RPC to kick the channel out of - // idle. But doing so would be a major behavior change for our users who are - // used to seeing the channel active after Dial. - // - // Taking this approach of kicking it out of idle at the end of this method - // allows us to share the code between channel creation and exiting idle - // mode. This will also make it easy for us to switch to starting the - // channel off in idle, if at all we ever get to do that. - cc.idlenessState = ccIdlenessStateIdle - cc.retryThrottler.Store((*retryThrottler)(nil)) cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil}) cc.ctx, cc.cancel = context.WithCancel(context.Background()) - cc.exitIdleCond = sync.NewCond(&cc.mu) + // Apply dial options. disableGlobalOpts := false for _, opt := range opts { if _, ok := opt.(*disableGlobalDialOptions); ok { @@ -177,21 +148,9 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * for _, opt := range opts { opt.apply(&cc.dopts) } - chainUnaryClientInterceptors(cc) chainStreamClientInterceptors(cc) - defer func() { - if err != nil { - cc.Close() - } - }() - - // Register ClientConn with channelz. - cc.channelzRegistration(target) - - cc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelzID) - if err := cc.validateTransportCredentials(); err != nil { return nil, err } @@ -205,10 +164,80 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * } cc.mkp = cc.dopts.copts.KeepaliveParams - if cc.dopts.copts.UserAgent != "" { - cc.dopts.copts.UserAgent += " " + grpcUA - } else { - cc.dopts.copts.UserAgent = grpcUA + // Register ClientConn with channelz. + cc.channelzRegistration(target) + + // TODO: Ideally it should be impossible to error from this function after + // channelz registration. This will require removing some channelz logs + // from the following functions that can error. Errors can be returned to + // the user, and successful logs can be emitted here, after the checks have + // passed and channelz is subsequently registered. + + // Determine the resolver to use. + if err := cc.parseTargetAndFindResolver(); err != nil { + channelz.RemoveEntry(cc.channelzID) + return nil, err + } + if err = cc.determineAuthority(); err != nil { + channelz.RemoveEntry(cc.channelzID) + return nil, err + } + + cc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelzID) + cc.pickerWrapper = newPickerWrapper(cc.dopts.copts.StatsHandlers) + + cc.initIdleStateLocked() // Safe to call without the lock, since nothing else has a reference to cc. + cc.idlenessMgr = idle.NewManager((*idler)(cc), cc.dopts.idleTimeout) + return cc, nil +} + +// DialContext creates a client connection to the given target. By default, it's +// a non-blocking dial (the function won't wait for connections to be +// established, and connecting happens in the background). To make it a blocking +// dial, use WithBlock() dial option. +// +// In the non-blocking case, the ctx does not act against the connection. It +// only controls the setup steps. +// +// In the blocking case, ctx can be used to cancel or expire the pending +// connection. Once this function returns, the cancellation and expiration of +// ctx will be noop. Users should call ClientConn.Close to terminate all the +// pending operations after this function returns. +// +// The target name syntax is defined in +// https://github.com/grpc/grpc/blob/master/doc/naming.md. +// e.g. to use dns resolver, a "dns:///" prefix should be applied to the target. +func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) { + cc, err := newClient(target, opts...) + if err != nil { + return nil, err + } + + // We start the channel off in idle mode, but kick it out of idle now, + // instead of waiting for the first RPC. Other gRPC implementations do wait + // for the first RPC to kick the channel out of idle. But doing so would be + // a major behavior change for our users who are used to seeing the channel + // active after Dial. + // + // Taking this approach of kicking it out of idle at the end of this method + // allows us to share the code between channel creation and exiting idle + // mode. This will also make it easy for us to switch to starting the + // channel off in idle, i.e. by making newClient exported. + + defer func() { + if err != nil { + cc.Close() + } + }() + + // This creates the name resolver, load balancer, etc. + if err := cc.idlenessMgr.ExitIdleMode(); err != nil { + return nil, err + } + + // Return now for non-blocking dials. + if !cc.dopts.block { + return cc, nil } if cc.dopts.timeout > 0 { @@ -231,49 +260,6 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * } }() - if cc.dopts.bs == nil { - cc.dopts.bs = backoff.DefaultExponential - } - - // Determine the resolver to use. - if err := cc.parseTargetAndFindResolver(); err != nil { - return nil, err - } - if err = cc.determineAuthority(); err != nil { - return nil, err - } - - if cc.dopts.scChan != nil { - // Blocking wait for the initial service config. - select { - case sc, ok := <-cc.dopts.scChan: - if ok { - cc.sc = &sc - cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{&sc}) - } - case <-ctx.Done(): - return nil, ctx.Err() - } - } - if cc.dopts.scChan != nil { - go cc.scWatcher() - } - - // This creates the name resolver, load balancer, blocking picker etc. - if err := cc.exitIdleMode(); err != nil { - return nil, err - } - - // Configure idleness support with configured idle timeout or default idle - // timeout duration. Idleness can be explicitly disabled by the user, by - // setting the dial option to 0. - cc.idlenessMgr = idle.NewManager(idle.ManagerOptions{Enforcer: (*idler)(cc), Timeout: cc.dopts.idleTimeout, Logger: logger}) - - // Return early for non-blocking dials. - if !cc.dopts.block { - return cc, nil - } - // A blocking dial blocks until the clientConn is ready. for { s := cc.GetState() @@ -320,8 +306,8 @@ func (cc *ClientConn) addTraceEvent(msg string) { type idler ClientConn -func (i *idler) EnterIdleMode() error { - return (*ClientConn)(i).enterIdleMode() +func (i *idler) EnterIdleMode() { + (*ClientConn)(i).enterIdleMode() } func (i *idler) ExitIdleMode() error { @@ -329,117 +315,71 @@ func (i *idler) ExitIdleMode() error { } // exitIdleMode moves the channel out of idle mode by recreating the name -// resolver and load balancer. -func (cc *ClientConn) exitIdleMode() error { +// resolver and load balancer. This should never be called directly; use +// cc.idlenessMgr.ExitIdleMode instead. +func (cc *ClientConn) exitIdleMode() (err error) { cc.mu.Lock() if cc.conns == nil { cc.mu.Unlock() return errConnClosing } - if cc.idlenessState != ccIdlenessStateIdle { - cc.mu.Unlock() - channelz.Infof(logger, cc.channelzID, "ClientConn asked to exit idle mode, current mode is %v", cc.idlenessState) - return nil - } - - defer func() { - // When Close() and exitIdleMode() race against each other, one of the - // following two can happen: - // - Close() wins the race and runs first. exitIdleMode() runs after, and - // sees that the ClientConn is already closed and hence returns early. - // - exitIdleMode() wins the race and runs first and recreates the balancer - // and releases the lock before recreating the resolver. If Close() runs - // in this window, it will wait for exitIdleMode to complete. - // - // We achieve this synchronization using the below condition variable. - cc.mu.Lock() - cc.idlenessState = ccIdlenessStateActive - cc.exitIdleCond.Signal() - cc.mu.Unlock() - }() - - cc.idlenessState = ccIdlenessStateExitingIdle - exitedIdle := false - if cc.blockingpicker == nil { - cc.blockingpicker = newPickerWrapper(cc.dopts.copts.StatsHandlers) - } else { - cc.blockingpicker.exitIdleMode() - exitedIdle = true - } - - var credsClone credentials.TransportCredentials - if creds := cc.dopts.copts.TransportCredentials; creds != nil { - credsClone = creds.Clone() - } - if cc.balancerWrapper == nil { - cc.balancerWrapper = newCCBalancerWrapper(cc, balancer.BuildOptions{ - DialCreds: credsClone, - CredsBundle: cc.dopts.copts.CredsBundle, - Dialer: cc.dopts.copts.Dialer, - Authority: cc.authority, - CustomUserAgent: cc.dopts.copts.UserAgent, - ChannelzParentID: cc.channelzID, - Target: cc.parsedTarget, - }) - } else { - cc.balancerWrapper.exitIdleMode() - } - cc.firstResolveEvent = grpcsync.NewEvent() cc.mu.Unlock() // This needs to be called without cc.mu because this builds a new resolver - // which might update state or report error inline which needs to be handled - // by cc.updateResolverState() which also grabs cc.mu. - if err := cc.initResolverWrapper(credsClone); err != nil { + // which might update state or report error inline, which would then need to + // acquire cc.mu. + if err := cc.resolverWrapper.start(); err != nil { return err } - if exitedIdle { - cc.addTraceEvent("exiting idle mode") - } + cc.addTraceEvent("exiting idle mode") return nil } +// initIdleStateLocked initializes common state to how it should be while idle. +func (cc *ClientConn) initIdleStateLocked() { + cc.resolverWrapper = newCCResolverWrapper(cc) + cc.balancerWrapper = newCCBalancerWrapper(cc) + cc.firstResolveEvent = grpcsync.NewEvent() + // cc.conns == nil is a proxy for the ClientConn being closed. So, instead + // of setting it to nil here, we recreate the map. This also means that we + // don't have to do this when exiting idle mode. + cc.conns = make(map[*addrConn]struct{}) +} + // enterIdleMode puts the channel in idle mode, and as part of it shuts down the -// name resolver, load balancer and any subchannels. -func (cc *ClientConn) enterIdleMode() error { +// name resolver, load balancer, and any subchannels. This should never be +// called directly; use cc.idlenessMgr.EnterIdleMode instead. +func (cc *ClientConn) enterIdleMode() { cc.mu.Lock() + if cc.conns == nil { cc.mu.Unlock() - return ErrClientConnClosing - } - if cc.idlenessState != ccIdlenessStateActive { - channelz.Errorf(logger, cc.channelzID, "ClientConn asked to enter idle mode, current mode is %v", cc.idlenessState) - cc.mu.Unlock() - return nil + return } - // cc.conns == nil is a proxy for the ClientConn being closed. So, instead - // of setting it to nil here, we recreate the map. This also means that we - // don't have to do this when exiting idle mode. conns := cc.conns - cc.conns = make(map[*addrConn]struct{}) - // TODO: Currently, we close the resolver wrapper upon entering idle mode - // and create a new one upon exiting idle mode. This means that the - // `cc.resolverWrapper` field would be overwritten everytime we exit idle - // mode. While this means that we need to hold `cc.mu` when accessing - // `cc.resolverWrapper`, it makes the code simpler in the wrapper. We should - // try to do the same for the balancer and picker wrappers too. - cc.resolverWrapper.close() - cc.blockingpicker.enterIdleMode() - cc.balancerWrapper.enterIdleMode() + rWrapper := cc.resolverWrapper + rWrapper.close() + cc.pickerWrapper.reset() + bWrapper := cc.balancerWrapper + bWrapper.close() cc.csMgr.updateState(connectivity.Idle) - cc.idlenessState = ccIdlenessStateIdle + cc.addTraceEvent("entering idle mode") + + cc.initIdleStateLocked() + cc.mu.Unlock() - go func() { - cc.addTraceEvent("entering idle mode") - for ac := range conns { - ac.tearDown(errConnIdling) - } - }() - return nil + // Block until the name resolver and LB policy are closed. + <-rWrapper.serializer.Done() + <-bWrapper.serializer.Done() + + // Close all subchannels after the LB policy is closed. + for ac := range conns { + ac.tearDown(errConnIdling) + } } // validateTransportCredentials performs a series of checks on the configured @@ -649,66 +589,35 @@ type ClientConn struct { dopts dialOptions // Default and user specified dial options. channelzID *channelz.Identifier // Channelz identifier for the channel. resolverBuilder resolver.Builder // See parseTargetAndFindResolver(). - balancerWrapper *ccBalancerWrapper // Uses gracefulswitch.balancer underneath. - idlenessMgr idle.Manager + idlenessMgr *idle.Manager // The following provide their own synchronization, and therefore don't // require cc.mu to be held to access them. csMgr *connectivityStateManager - blockingpicker *pickerWrapper + pickerWrapper *pickerWrapper safeConfigSelector iresolver.SafeConfigSelector czData *channelzData retryThrottler atomic.Value // Updated from service config. - // firstResolveEvent is used to track whether the name resolver sent us at - // least one update. RPCs block on this event. - firstResolveEvent *grpcsync.Event - // mu protects the following fields. // TODO: split mu so the same mutex isn't used for everything. mu sync.RWMutex - resolverWrapper *ccResolverWrapper // Initialized in Dial; cleared in Close. + resolverWrapper *ccResolverWrapper // Always recreated whenever entering idle to simplify Close. + balancerWrapper *ccBalancerWrapper // Always recreated whenever entering idle to simplify Close. sc *ServiceConfig // Latest service config received from the resolver. conns map[*addrConn]struct{} // Set to nil on close. mkp keepalive.ClientParameters // May be updated upon receipt of a GoAway. - idlenessState ccIdlenessState // Tracks idleness state of the channel. - exitIdleCond *sync.Cond // Signalled when channel exits idle. + // firstResolveEvent is used to track whether the name resolver sent us at + // least one update. RPCs block on this event. May be accessed without mu + // if we know we cannot be asked to enter idle mode while accessing it (e.g. + // when the idle manager has already been closed, or if we are already + // entering idle mode). + firstResolveEvent *grpcsync.Event lceMu sync.Mutex // protects lastConnectionError lastConnectionError error } -// ccIdlenessState tracks the idleness state of the channel. -// -// Channels start off in `active` and move to `idle` after a period of -// inactivity. When moving back to `active` upon an incoming RPC, they -// transition through `exiting_idle`. This state is useful for synchronization -// with Close(). -// -// This state tracking is mostly for self-protection. The idlenessManager is -// expected to keep track of the state as well, and is expected not to call into -// the ClientConn unnecessarily. -type ccIdlenessState int8 - -const ( - ccIdlenessStateActive ccIdlenessState = iota - ccIdlenessStateIdle - ccIdlenessStateExitingIdle -) - -func (s ccIdlenessState) String() string { - switch s { - case ccIdlenessStateActive: - return "active" - case ccIdlenessStateIdle: - return "idle" - case ccIdlenessStateExitingIdle: - return "exitingIdle" - default: - return "unknown" - } -} - // WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or // ctx expires. A true value is returned in former case and false in latter. // @@ -748,29 +657,15 @@ func (cc *ClientConn) GetState() connectivity.State { // Notice: This API is EXPERIMENTAL and may be changed or removed in a later // release. func (cc *ClientConn) Connect() { - cc.exitIdleMode() + if err := cc.idlenessMgr.ExitIdleMode(); err != nil { + cc.addTraceEvent(err.Error()) + return + } // If the ClientConn was not in idle mode, we need to call ExitIdle on the // LB policy so that connections can be created. - cc.balancerWrapper.exitIdleMode() -} - -func (cc *ClientConn) scWatcher() { - for { - select { - case sc, ok := <-cc.dopts.scChan: - if !ok { - return - } - cc.mu.Lock() - // TODO: load balance policy runtime change is ignored. - // We may revisit this decision in the future. - cc.sc = &sc - cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{&sc}) - cc.mu.Unlock() - case <-cc.ctx.Done(): - return - } - } + cc.mu.Lock() + cc.balancerWrapper.exitIdle() + cc.mu.Unlock() } // waitForResolvedAddrs blocks until the resolver has provided addresses or the @@ -804,6 +699,12 @@ func init() { internal.SubscribeToConnectivityStateChanges = func(cc *ClientConn, s grpcsync.Subscriber) func() { return cc.csMgr.pubSub.Subscribe(s) } + internal.EnterIdleModeForTesting = func(cc *ClientConn) { + cc.idlenessMgr.EnterIdleModeForTesting() + } + internal.ExitIdleModeForTesting = func(cc *ClientConn) error { + return cc.idlenessMgr.ExitIdleMode() + } } func (cc *ClientConn) maybeApplyDefaultServiceConfig(addrs []resolver.Address) { @@ -818,9 +719,8 @@ func (cc *ClientConn) maybeApplyDefaultServiceConfig(addrs []resolver.Address) { } } -func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { +func (cc *ClientConn) updateResolverStateAndUnlock(s resolver.State, err error) error { defer cc.firstResolveEvent.Fire() - cc.mu.Lock() // Check if the ClientConn is already closed. Some fields (e.g. // balancerWrapper) are set to nil when closing the ClientConn, and could // cause nil pointer panic if we don't have this check. @@ -866,7 +766,7 @@ func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { if cc.sc == nil { // Apply the failing LB only if we haven't received valid service config // from the name resolver in the past. - cc.applyFailingLB(s.ServiceConfig) + cc.applyFailingLBLocked(s.ServiceConfig) cc.mu.Unlock() return ret } @@ -888,15 +788,13 @@ func (cc *ClientConn) updateResolverState(s resolver.State, err error) error { return ret } -// applyFailingLB is akin to configuring an LB policy on the channel which +// applyFailingLBLocked is akin to configuring an LB policy on the channel which // always fails RPCs. Here, an actual LB policy is not configured, but an always // erroring picker is configured, which returns errors with information about // what was invalid in the received service config. A config selector with no // service config is configured, and the connectivity state of the channel is // set to TransientFailure. -// -// Caller must hold cc.mu. -func (cc *ClientConn) applyFailingLB(sc *serviceconfig.ParseResult) { +func (cc *ClientConn) applyFailingLBLocked(sc *serviceconfig.ParseResult) { var err error if sc.Err != nil { err = status.Errorf(codes.Unavailable, "error parsing service config: %v", sc.Err) @@ -904,14 +802,10 @@ func (cc *ClientConn) applyFailingLB(sc *serviceconfig.ParseResult) { err = status.Errorf(codes.Unavailable, "illegal service config type: %T", sc.Config) } cc.safeConfigSelector.UpdateConfigSelector(&defaultConfigSelector{nil}) - cc.blockingpicker.updatePicker(base.NewErrPicker(err)) + cc.pickerWrapper.updatePicker(base.NewErrPicker(err)) cc.csMgr.updateState(connectivity.TransientFailure) } -func (cc *ClientConn) handleSubConnStateChange(sc balancer.SubConn, s connectivity.State, err error) { - cc.balancerWrapper.updateSubConnState(sc, s, err) -} - // Makes a copy of the input addresses slice and clears out the balancer // attributes field. Addresses are passed during subconn creation and address // update operations. In both cases, we will clear the balancer attributes by @@ -926,10 +820,14 @@ func copyAddressesWithoutBalancerAttributes(in []resolver.Address) []resolver.Ad return out } -// newAddrConn creates an addrConn for addrs and adds it to cc.conns. +// newAddrConnLocked creates an addrConn for addrs and adds it to cc.conns. // // Caller needs to make sure len(addrs) > 0. -func (cc *ClientConn) newAddrConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (*addrConn, error) { +func (cc *ClientConn) newAddrConnLocked(addrs []resolver.Address, opts balancer.NewSubConnOptions) (*addrConn, error) { + if cc.conns == nil { + return nil, ErrClientConnClosing + } + ac := &addrConn{ state: connectivity.Idle, cc: cc, @@ -941,12 +839,6 @@ func (cc *ClientConn) newAddrConn(addrs []resolver.Address, opts balancer.NewSub stateChan: make(chan struct{}), } ac.ctx, ac.cancel = context.WithCancel(cc.ctx) - // Track ac in cc. This needs to be done before any getTransport(...) is called. - cc.mu.Lock() - defer cc.mu.Unlock() - if cc.conns == nil { - return nil, ErrClientConnClosing - } var err error ac.channelzID, err = channelz.RegisterSubChannel(ac, cc.channelzID, "") @@ -962,6 +854,7 @@ func (cc *ClientConn) newAddrConn(addrs []resolver.Address, opts balancer.NewSub }, }) + // Track ac in cc. This needs to be done before any getTransport(...) is called. cc.conns[ac] = struct{}{} return ac, nil } @@ -1168,7 +1061,7 @@ func (cc *ClientConn) healthCheckConfig() *healthCheckConfig { } func (cc *ClientConn) getTransport(ctx context.Context, failfast bool, method string) (transport.ClientTransport, balancer.PickResult, error) { - return cc.blockingpicker.pick(ctx, failfast, balancer.PickInfo{ + return cc.pickerWrapper.pick(ctx, failfast, balancer.PickInfo{ Ctx: ctx, FullMethodName: method, }) @@ -1210,12 +1103,12 @@ func (cc *ClientConn) applyServiceConfigAndBalancer(sc *ServiceConfig, configSel func (cc *ClientConn) resolveNow(o resolver.ResolveNowOptions) { cc.mu.RLock() - r := cc.resolverWrapper + cc.resolverWrapper.resolveNow(o) cc.mu.RUnlock() - if r == nil { - return - } - go r.resolveNow(o) +} + +func (cc *ClientConn) resolveNowLocked(o resolver.ResolveNowOptions) { + cc.resolverWrapper.resolveNow(o) } // ResetConnectBackoff wakes up all subchannels in transient failure and causes @@ -1247,40 +1140,32 @@ func (cc *ClientConn) Close() error { <-cc.csMgr.pubSub.Done() }() + // Prevent calls to enter/exit idle immediately, and ensure we are not + // currently entering/exiting idle mode. + cc.idlenessMgr.Close() + cc.mu.Lock() if cc.conns == nil { cc.mu.Unlock() return ErrClientConnClosing } - for cc.idlenessState == ccIdlenessStateExitingIdle { - cc.exitIdleCond.Wait() - } - conns := cc.conns cc.conns = nil cc.csMgr.updateState(connectivity.Shutdown) - pWrapper := cc.blockingpicker - rWrapper := cc.resolverWrapper - bWrapper := cc.balancerWrapper - idlenessMgr := cc.idlenessMgr + // We can safely unlock and continue to access all fields now as + // cc.conns==nil, preventing any further operations on cc. cc.mu.Unlock() + cc.resolverWrapper.close() // The order of closing matters here since the balancer wrapper assumes the // picker is closed before it is closed. - if pWrapper != nil { - pWrapper.close() - } - if bWrapper != nil { - bWrapper.close() - } - if rWrapper != nil { - rWrapper.close() - } - if idlenessMgr != nil { - idlenessMgr.Close() - } + cc.pickerWrapper.close() + cc.balancerWrapper.close() + + <-cc.resolverWrapper.serializer.Done() + <-cc.balancerWrapper.serializer.Done() for ac := range conns { ac.tearDown(ErrClientConnClosing) @@ -1301,7 +1186,7 @@ type addrConn struct { cc *ClientConn dopts dialOptions - acbw balancer.SubConn + acbw *acBalancerWrapper scopts balancer.NewSubConnOptions // transport is set when there's a viable transport (note: ac state may not be READY as LB channel @@ -1339,7 +1224,7 @@ func (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error) } else { channelz.Infof(logger, ac.channelzID, "Subchannel Connectivity change to %v, last error: %s", s, lastErr) } - ac.cc.handleSubConnStateChange(ac.acbw, s, lastErr) + ac.acbw.updateState(s, lastErr) } // adjustParams updates parameters used to create transports upon @@ -1843,7 +1728,7 @@ func (cc *ClientConn) parseTargetAndFindResolver() error { if err != nil { channelz.Infof(logger, cc.channelzID, "dial target %q parse failed: %v", cc.target, err) } else { - channelz.Infof(logger, cc.channelzID, "parsed dial target is: %+v", parsedTarget) + channelz.Infof(logger, cc.channelzID, "parsed dial target is: %#v", parsedTarget) rb = cc.getResolver(parsedTarget.URL.Scheme) if rb != nil { cc.parsedTarget = parsedTarget @@ -1975,58 +1860,17 @@ func (cc *ClientConn) determineAuthority() error { } endpoint := cc.parsedTarget.Endpoint() - target := cc.target - switch { - case authorityFromDialOption != "": + if authorityFromDialOption != "" { cc.authority = authorityFromDialOption - case authorityFromCreds != "": + } else if authorityFromCreds != "" { cc.authority = authorityFromCreds - case strings.HasPrefix(target, "unix:") || strings.HasPrefix(target, "unix-abstract:"): - // TODO: remove when the unix resolver implements optional interface to - // return channel authority. - cc.authority = "localhost" - case strings.HasPrefix(endpoint, ":"): + } else if auth, ok := cc.resolverBuilder.(resolver.AuthorityOverrider); ok { + cc.authority = auth.OverrideAuthority(cc.parsedTarget) + } else if strings.HasPrefix(endpoint, ":") { cc.authority = "localhost" + endpoint - default: - // TODO: Define an optional interface on the resolver builder to return - // the channel authority given the user's dial target. For resolvers - // which don't implement this interface, we will use the endpoint from - // "scheme://authority/endpoint" as the default authority. - // Escape the endpoint to handle use cases where the endpoint - // might not be a valid authority by default. - // For example an endpoint which has multiple paths like - // 'a/b/c', which is not a valid authority by default. + } else { cc.authority = encodeAuthority(endpoint) } channelz.Infof(logger, cc.channelzID, "Channel authority set to %q", cc.authority) return nil } - -// initResolverWrapper creates a ccResolverWrapper, which builds the name -// resolver. This method grabs the lock to assign the newly built resolver -// wrapper to the cc.resolverWrapper field. -func (cc *ClientConn) initResolverWrapper(creds credentials.TransportCredentials) error { - rw, err := newCCResolverWrapper(cc, ccResolverWrapperOpts{ - target: cc.parsedTarget, - builder: cc.resolverBuilder, - bOpts: resolver.BuildOptions{ - DisableServiceConfig: cc.dopts.disableServiceConfig, - DialCreds: creds, - CredsBundle: cc.dopts.copts.CredsBundle, - Dialer: cc.dopts.copts.Dialer, - }, - channelzID: cc.channelzID, - }) - if err != nil { - return fmt.Errorf("failed to build resolver: %v", err) - } - // Resolver implementations may report state update or error inline when - // built (or right after), and this is handled in cc.updateResolverState. - // Also, an error from the resolver might lead to a re-resolution request - // from the balancer, which is handled in resolveNow() where - // `cc.resolverWrapper` is accessed. Hence, we need to hold the lock here. - cc.mu.Lock() - cc.resolverWrapper = rw - cc.mu.Unlock() - return nil -} diff --git a/vendor/google.golang.org/grpc/codes/codes.go b/vendor/google.golang.org/grpc/codes/codes.go index 11b1061..08476ad 100644 --- a/vendor/google.golang.org/grpc/codes/codes.go +++ b/vendor/google.golang.org/grpc/codes/codes.go @@ -25,7 +25,13 @@ import ( "strconv" ) -// A Code is an unsigned 32-bit error code as defined in the gRPC spec. +// A Code is a status code defined according to the [gRPC documentation]. +// +// Only the codes defined as consts in this package are valid codes. Do not use +// other code values. Behavior of other codes is implementation-specific and +// interoperability between implementations is not guaranteed. +// +// [gRPC documentation]: https://github.com/grpc/grpc/blob/master/doc/statuscodes.md type Code uint32 const ( diff --git a/vendor/google.golang.org/grpc/credentials/tls.go b/vendor/google.golang.org/grpc/credentials/tls.go index 877b7cd..5dafd34 100644 --- a/vendor/google.golang.org/grpc/credentials/tls.go +++ b/vendor/google.golang.org/grpc/credentials/tls.go @@ -44,10 +44,25 @@ func (t TLSInfo) AuthType() string { return "tls" } +// cipherSuiteLookup returns the string version of a TLS cipher suite ID. +func cipherSuiteLookup(cipherSuiteID uint16) string { + for _, s := range tls.CipherSuites() { + if s.ID == cipherSuiteID { + return s.Name + } + } + for _, s := range tls.InsecureCipherSuites() { + if s.ID == cipherSuiteID { + return s.Name + } + } + return fmt.Sprintf("unknown ID: %v", cipherSuiteID) +} + // GetSecurityValue returns security info requested by channelz. func (t TLSInfo) GetSecurityValue() ChannelzSecurityValue { v := &TLSChannelzSecurityValue{ - StandardName: cipherSuiteLookup[t.State.CipherSuite], + StandardName: cipherSuiteLookup(t.State.CipherSuite), } // Currently there's no way to get LocalCertificate info from tls package. if len(t.State.PeerCertificates) > 0 { @@ -138,10 +153,39 @@ func (c *tlsCreds) OverrideServerName(serverNameOverride string) error { return nil } +// The following cipher suites are forbidden for use with HTTP/2 by +// https://datatracker.ietf.org/doc/html/rfc7540#appendix-A +var tls12ForbiddenCipherSuites = map[uint16]struct{}{ + tls.TLS_RSA_WITH_AES_128_CBC_SHA: {}, + tls.TLS_RSA_WITH_AES_256_CBC_SHA: {}, + tls.TLS_RSA_WITH_AES_128_GCM_SHA256: {}, + tls.TLS_RSA_WITH_AES_256_GCM_SHA384: {}, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: {}, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: {}, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: {}, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: {}, +} + // NewTLS uses c to construct a TransportCredentials based on TLS. func NewTLS(c *tls.Config) TransportCredentials { tc := &tlsCreds{credinternal.CloneTLSConfig(c)} tc.config.NextProtos = credinternal.AppendH2ToNextProtos(tc.config.NextProtos) + // If the user did not configure a MinVersion and did not configure a + // MaxVersion < 1.2, use MinVersion=1.2, which is required by + // https://datatracker.ietf.org/doc/html/rfc7540#section-9.2 + if tc.config.MinVersion == 0 && (tc.config.MaxVersion == 0 || tc.config.MaxVersion >= tls.VersionTLS12) { + tc.config.MinVersion = tls.VersionTLS12 + } + // If the user did not configure CipherSuites, use all "secure" cipher + // suites reported by the TLS package, but remove some explicitly forbidden + // by https://datatracker.ietf.org/doc/html/rfc7540#appendix-A + if tc.config.CipherSuites == nil { + for _, cs := range tls.CipherSuites() { + if _, ok := tls12ForbiddenCipherSuites[cs.ID]; !ok { + tc.config.CipherSuites = append(tc.config.CipherSuites, cs.ID) + } + } + } return tc } @@ -205,32 +249,3 @@ type TLSChannelzSecurityValue struct { LocalCertificate []byte RemoteCertificate []byte } - -var cipherSuiteLookup = map[uint16]string{ - tls.TLS_RSA_WITH_RC4_128_SHA: "TLS_RSA_WITH_RC4_128_SHA", - tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", - tls.TLS_RSA_WITH_AES_128_CBC_SHA: "TLS_RSA_WITH_AES_128_CBC_SHA", - tls.TLS_RSA_WITH_AES_256_CBC_SHA: "TLS_RSA_WITH_AES_256_CBC_SHA", - tls.TLS_RSA_WITH_AES_128_GCM_SHA256: "TLS_RSA_WITH_AES_128_GCM_SHA256", - tls.TLS_RSA_WITH_AES_256_GCM_SHA384: "TLS_RSA_WITH_AES_256_GCM_SHA384", - tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", - tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", - tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", - tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA: "TLS_ECDHE_RSA_WITH_RC4_128_SHA", - tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", - tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", - tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", - tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", - tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", - tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", - tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", - tls.TLS_FALLBACK_SCSV: "TLS_FALLBACK_SCSV", - tls.TLS_RSA_WITH_AES_128_CBC_SHA256: "TLS_RSA_WITH_AES_128_CBC_SHA256", - tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", - tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", - tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", - tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", - tls.TLS_AES_128_GCM_SHA256: "TLS_AES_128_GCM_SHA256", - tls.TLS_AES_256_GCM_SHA384: "TLS_AES_256_GCM_SHA384", - tls.TLS_CHACHA20_POLY1305_SHA256: "TLS_CHACHA20_POLY1305_SHA256", -} diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go index 1fd0d5c..ba24261 100644 --- a/vendor/google.golang.org/grpc/dialoptions.go +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -46,6 +46,7 @@ func init() { internal.WithBinaryLogger = withBinaryLogger internal.JoinDialOptions = newJoinDialOption internal.DisableGlobalDialOptions = newDisableGlobalDialOptions + internal.WithRecvBufferPool = withRecvBufferPool } // dialOptions configure a Dial call. dialOptions are set by the DialOption @@ -63,7 +64,6 @@ type dialOptions struct { block bool returnLastError bool timeout time.Duration - scChan <-chan ServiceConfig authority string binaryLogger binarylog.Logger copts transport.ConnectOptions @@ -250,19 +250,6 @@ func WithDecompressor(dc Decompressor) DialOption { }) } -// WithServiceConfig returns a DialOption which has a channel to read the -// service configuration. -// -// Deprecated: service config should be received through name resolver or via -// WithDefaultServiceConfig, as specified at -// https://github.com/grpc/grpc/blob/master/doc/service_config.md. Will be -// removed in a future 1.x release. -func WithServiceConfig(c <-chan ServiceConfig) DialOption { - return newFuncDialOption(func(o *dialOptions) { - o.scChan = c - }) -} - // WithConnectParams configures the ClientConn to use the provided ConnectParams // for creating and maintaining connections to servers. // @@ -413,6 +400,17 @@ func WithTimeout(d time.Duration) DialOption { // connections. If FailOnNonTempDialError() is set to true, and an error is // returned by f, gRPC checks the error's Temporary() method to decide if it // should try to reconnect to the network address. +// +// Note: All supported releases of Go (as of December 2023) override the OS +// defaults for TCP keepalive time and interval to 15s. To enable TCP keepalive +// with OS defaults for keepalive time and interval, use a net.Dialer that sets +// the KeepAlive field to a negative value, and sets the SO_KEEPALIVE socket +// option to true from the Control field. For a concrete example of how to do +// this, see internal.NetDialerWithTCPKeepalive(). +// +// For more information, please see [issue 23459] in the Go github repo. +// +// [issue 23459]: https://github.com/golang/go/issues/23459 func WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption { return newFuncDialOption(func(o *dialOptions) { o.copts.Dialer = f @@ -487,7 +485,7 @@ func FailOnNonTempDialError(f bool) DialOption { // the RPCs. func WithUserAgent(s string) DialOption { return newFuncDialOption(func(o *dialOptions) { - o.copts.UserAgent = s + o.copts.UserAgent = s + " " + grpcUA }) } @@ -637,13 +635,16 @@ func withHealthCheckFunc(f internal.HealthChecker) DialOption { func defaultDialOptions() dialOptions { return dialOptions{ - healthCheckFunc: internal.HealthCheckFunc, copts: transport.ConnectOptions{ - WriteBufferSize: defaultWriteBufSize, ReadBufferSize: defaultReadBufSize, + WriteBufferSize: defaultWriteBufSize, UseProxy: true, + UserAgent: grpcUA, }, - recvBufferPool: nopBufferPool{}, + bs: internalbackoff.DefaultExponential, + healthCheckFunc: internal.HealthCheckFunc, + idleTimeout: 30 * time.Minute, + recvBufferPool: nopBufferPool{}, } } @@ -680,8 +681,8 @@ func WithResolvers(rs ...resolver.Builder) DialOption { // channel will exit idle mode when the Connect() method is called or when an // RPC is initiated. // -// By default this feature is disabled, which can also be explicitly configured -// by passing zero to this function. +// A default timeout of 30 minutes will be used if this dial option is not set +// at dial time and idleness can be disabled by passing a timeout of zero. // // # Experimental // @@ -704,11 +705,13 @@ func WithIdleTimeout(d time.Duration) DialOption { // options are used: WithStatsHandler, EnableTracing, or binary logging. In such // cases, the shared buffer pool will be ignored. // -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// Deprecated: use experimental.WithRecvBufferPool instead. Will be deleted in +// v1.60.0 or later. func WithRecvBufferPool(bufferPool SharedBufferPool) DialOption { + return withRecvBufferPool(bufferPool) +} + +func withRecvBufferPool(bufferPool SharedBufferPool) DialOption { return newFuncDialOption(func(o *dialOptions) { o.recvBufferPool = bufferPool }) diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go index 69d5580..5ebf88d 100644 --- a/vendor/google.golang.org/grpc/encoding/encoding.go +++ b/vendor/google.golang.org/grpc/encoding/encoding.go @@ -38,6 +38,10 @@ const Identity = "identity" // Compressor is used for compressing and decompressing when sending or // receiving messages. +// +// If a Compressor implements `DecompressedSize(compressedBytes []byte) int`, +// gRPC will invoke it to determine the size of the buffer allocated for the +// result of decompression. A return value of -1 indicates unknown size. type Compressor interface { // Compress writes the data written to wc to w after compressing it. If an // error occurs while initializing the compressor, that error is returned @@ -51,15 +55,6 @@ type Compressor interface { // coding header. The result must be static; the result cannot change // between calls. Name() string - // If a Compressor implements - // DecompressedSize(compressedBytes []byte) int, gRPC will call it - // to determine the size of the buffer allocated for the result of decompression. - // Return -1 to indicate unknown size. - // - // Experimental - // - // Notice: This API is EXPERIMENTAL and may be changed or removed in a - // later release. } var registeredCompressor = make(map[string]Compressor) diff --git a/vendor/google.golang.org/grpc/internal/backoff/backoff.go b/vendor/google.golang.org/grpc/internal/backoff/backoff.go index 5fc0ee3..fed1c01 100644 --- a/vendor/google.golang.org/grpc/internal/backoff/backoff.go +++ b/vendor/google.golang.org/grpc/internal/backoff/backoff.go @@ -23,6 +23,8 @@ package backoff import ( + "context" + "errors" "time" grpcbackoff "google.golang.org/grpc/backoff" @@ -71,3 +73,37 @@ func (bc Exponential) Backoff(retries int) time.Duration { } return time.Duration(backoff) } + +// ErrResetBackoff is the error to be returned by the function executed by RunF, +// to instruct the latter to reset its backoff state. +var ErrResetBackoff = errors.New("reset backoff state") + +// RunF provides a convenient way to run a function f repeatedly until the +// context expires or f returns a non-nil error that is not ErrResetBackoff. +// When f returns ErrResetBackoff, RunF continues to run f, but resets its +// backoff state before doing so. backoff accepts an integer representing the +// number of retries, and returns the amount of time to backoff. +func RunF(ctx context.Context, f func() error, backoff func(int) time.Duration) { + attempt := 0 + timer := time.NewTimer(0) + for ctx.Err() == nil { + select { + case <-timer.C: + case <-ctx.Done(): + timer.Stop() + return + } + + err := f() + if errors.Is(err, ErrResetBackoff) { + timer.Reset(0) + attempt = 0 + continue + } + if err != nil { + return + } + timer.Reset(backoff(attempt)) + attempt++ + } +} diff --git a/vendor/google.golang.org/grpc/internal/buffer/unbounded.go b/vendor/google.golang.org/grpc/internal/buffer/unbounded.go index 4399c3d..11f9166 100644 --- a/vendor/google.golang.org/grpc/internal/buffer/unbounded.go +++ b/vendor/google.golang.org/grpc/internal/buffer/unbounded.go @@ -18,7 +18,10 @@ // Package buffer provides an implementation of an unbounded buffer. package buffer -import "sync" +import ( + "errors" + "sync" +) // Unbounded is an implementation of an unbounded buffer which does not use // extra goroutines. This is typically used for passing updates from one entity @@ -36,6 +39,7 @@ import "sync" type Unbounded struct { c chan any closed bool + closing bool mu sync.Mutex backlog []any } @@ -45,32 +49,32 @@ func NewUnbounded() *Unbounded { return &Unbounded{c: make(chan any, 1)} } +var errBufferClosed = errors.New("Put called on closed buffer.Unbounded") + // Put adds t to the unbounded buffer. -func (b *Unbounded) Put(t any) { +func (b *Unbounded) Put(t any) error { b.mu.Lock() defer b.mu.Unlock() - if b.closed { - return + if b.closing { + return errBufferClosed } if len(b.backlog) == 0 { select { case b.c <- t: - return + return nil default: } } b.backlog = append(b.backlog, t) + return nil } -// Load sends the earliest buffered data, if any, onto the read channel -// returned by Get(). Users are expected to call this every time they read a +// Load sends the earliest buffered data, if any, onto the read channel returned +// by Get(). Users are expected to call this every time they successfully read a // value from the read channel. func (b *Unbounded) Load() { b.mu.Lock() defer b.mu.Unlock() - if b.closed { - return - } if len(b.backlog) > 0 { select { case b.c <- b.backlog[0]: @@ -78,6 +82,8 @@ func (b *Unbounded) Load() { b.backlog = b.backlog[1:] default: } + } else if b.closing && !b.closed { + close(b.c) } } @@ -88,18 +94,23 @@ func (b *Unbounded) Load() { // send the next buffered value onto the channel if there is any. // // If the unbounded buffer is closed, the read channel returned by this method -// is closed. +// is closed after all data is drained. func (b *Unbounded) Get() <-chan any { return b.c } -// Close closes the unbounded buffer. +// Close closes the unbounded buffer. No subsequent data may be Put(), and the +// channel returned from Get() will be closed after all the data is read and +// Load() is called for the final time. func (b *Unbounded) Close() { b.mu.Lock() defer b.mu.Unlock() - if b.closed { + if b.closing { return } - b.closed = true - close(b.c) + b.closing = true + if len(b.backlog) == 0 { + b.closed = true + close(b.c) + } } diff --git a/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/vendor/google.golang.org/grpc/internal/channelz/funcs.go index 5395e77..fc094f3 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/funcs.go +++ b/vendor/google.golang.org/grpc/internal/channelz/funcs.go @@ -31,6 +31,7 @@ import ( "time" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal" ) const ( @@ -58,6 +59,12 @@ func TurnOn() { } } +func init() { + internal.ChannelzTurnOffForTesting = func() { + atomic.StoreInt32(&curState, 0) + } +} + // IsOn returns whether channelz data collection is on. func IsOn() bool { return atomic.LoadInt32(&curState) == 1 diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 3cf10dd..685a3cb 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -36,9 +36,6 @@ var ( // "GRPC_RING_HASH_CAP". This does not override the default bounds // checking which NACKs configs specifying ring sizes > 8*1024*1024 (~8M). RingHashCap = uint64FromEnv("GRPC_RING_HASH_CAP", 4096, 1, 8*1024*1024) - // PickFirstLBConfig is set if we should support configuration of the - // pick_first LB policy. - PickFirstLBConfig = boolFromEnv("GRPC_EXPERIMENTAL_PICKFIRST_LB_CONFIG", true) // LeastRequestLB is set if we should support the least_request_experimental // LB policy, which can be enabled by setting the environment variable // "GRPC_EXPERIMENTAL_ENABLE_LEAST_REQUEST" to "true". diff --git a/vendor/google.golang.org/grpc/internal/envconfig/xds.go b/vendor/google.golang.org/grpc/internal/envconfig/xds.go index 02b4b6a..29f234a 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/xds.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/xds.go @@ -50,46 +50,7 @@ var ( // // When both bootstrap FileName and FileContent are set, FileName is used. XDSBootstrapFileContent = os.Getenv(XDSBootstrapFileContentEnv) - // XDSRingHash indicates whether ring hash support is enabled, which can be - // disabled by setting the environment variable - // "GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH" to "false". - XDSRingHash = boolFromEnv("GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH", true) - // XDSClientSideSecurity is used to control processing of security - // configuration on the client-side. - // - // Note that there is no env var protection for the server-side because we - // have a brand new API on the server-side and users explicitly need to use - // the new API to get security integration on the server. - XDSClientSideSecurity = boolFromEnv("GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT", true) - // XDSAggregateAndDNS indicates whether processing of aggregated cluster and - // DNS cluster is enabled, which can be disabled by setting the environment - // variable "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER" - // to "false". - XDSAggregateAndDNS = boolFromEnv("GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER", true) - - // XDSRBAC indicates whether xDS configured RBAC HTTP Filter is enabled, - // which can be disabled by setting the environment variable - // "GRPC_XDS_EXPERIMENTAL_RBAC" to "false". - XDSRBAC = boolFromEnv("GRPC_XDS_EXPERIMENTAL_RBAC", true) - // XDSOutlierDetection indicates whether outlier detection support is - // enabled, which can be disabled by setting the environment variable - // "GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION" to "false". - XDSOutlierDetection = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION", true) - // XDSFederation indicates whether federation support is enabled, which can - // be enabled by setting the environment variable - // "GRPC_EXPERIMENTAL_XDS_FEDERATION" to "true". - XDSFederation = boolFromEnv("GRPC_EXPERIMENTAL_XDS_FEDERATION", true) - - // XDSRLS indicates whether processing of Cluster Specifier plugins and - // support for the RLS CLuster Specifier is enabled, which can be disabled by - // setting the environment variable "GRPC_EXPERIMENTAL_XDS_RLS_LB" to - // "false". - XDSRLS = boolFromEnv("GRPC_EXPERIMENTAL_XDS_RLS_LB", true) // C2PResolverTestOnlyTrafficDirectorURI is the TD URI for testing. C2PResolverTestOnlyTrafficDirectorURI = os.Getenv("GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI") - // XDSCustomLBPolicy indicates whether Custom LB Policies are enabled, which - // can be disabled by setting the environment variable - // "GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG" to "false". - XDSCustomLBPolicy = boolFromEnv("GRPC_EXPERIMENTAL_XDS_CUSTOM_LB_CONFIG", true) ) diff --git a/vendor/google.golang.org/grpc/internal/experimental.go b/vendor/google.golang.org/grpc/internal/experimental.go new file mode 100644 index 0000000..7f7044e --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/experimental.go @@ -0,0 +1,28 @@ +/* + * Copyright 2023 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package internal + +var ( + // WithRecvBufferPool is implemented by the grpc package and returns a dial + // option to configure a shared buffer pool for a grpc.ClientConn. + WithRecvBufferPool any // func (grpc.SharedBufferPool) grpc.DialOption + + // RecvBufferPool is implemented by the grpc package and returns a server + // option to configure a shared buffer pool for a grpc.Server. + RecvBufferPool any // func (grpc.SharedBufferPool) grpc.ServerOption +) diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go index 900917d..f7f40a1 100644 --- a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go +++ b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go @@ -20,7 +20,6 @@ package grpcsync import ( "context" - "sync" "google.golang.org/grpc/internal/buffer" ) @@ -38,8 +37,6 @@ type CallbackSerializer struct { done chan struct{} callbacks *buffer.Unbounded - closedMu sync.Mutex - closed bool } // NewCallbackSerializer returns a new CallbackSerializer instance. The provided @@ -65,56 +62,34 @@ func NewCallbackSerializer(ctx context.Context) *CallbackSerializer { // callbacks to be executed by the serializer. It is not possible to add // callbacks once the context passed to NewCallbackSerializer is cancelled. func (cs *CallbackSerializer) Schedule(f func(ctx context.Context)) bool { - cs.closedMu.Lock() - defer cs.closedMu.Unlock() - - if cs.closed { - return false - } - cs.callbacks.Put(f) - return true + return cs.callbacks.Put(f) == nil } func (cs *CallbackSerializer) run(ctx context.Context) { - var backlog []func(context.Context) - defer close(cs.done) + + // TODO: when Go 1.21 is the oldest supported version, this loop and Close + // can be replaced with: + // + // context.AfterFunc(ctx, cs.callbacks.Close) for ctx.Err() == nil { select { case <-ctx.Done(): // Do nothing here. Next iteration of the for loop will not happen, // since ctx.Err() would be non-nil. - case callback, ok := <-cs.callbacks.Get(): - if !ok { - return - } + case cb := <-cs.callbacks.Get(): cs.callbacks.Load() - callback.(func(ctx context.Context))(ctx) + cb.(func(context.Context))(ctx) } } - // Fetch pending callbacks if any, and execute them before returning from - // this method and closing cs.done. - cs.closedMu.Lock() - cs.closed = true - backlog = cs.fetchPendingCallbacks() + // Close the buffer to prevent new callbacks from being added. cs.callbacks.Close() - cs.closedMu.Unlock() - for _, b := range backlog { - b(ctx) - } -} -func (cs *CallbackSerializer) fetchPendingCallbacks() []func(context.Context) { - var backlog []func(context.Context) - for { - select { - case b := <-cs.callbacks.Get(): - backlog = append(backlog, b.(func(context.Context))) - cs.callbacks.Load() - default: - return backlog - } + // Run all pending callbacks. + for cb := range cs.callbacks.Get() { + cs.callbacks.Load() + cb.(func(context.Context))(ctx) } } diff --git a/vendor/google.golang.org/grpc/internal/idle/idle.go b/vendor/google.golang.org/grpc/internal/idle/idle.go index 6c27247..fe49cb7 100644 --- a/vendor/google.golang.org/grpc/internal/idle/idle.go +++ b/vendor/google.golang.org/grpc/internal/idle/idle.go @@ -26,8 +26,6 @@ import ( "sync" "sync/atomic" "time" - - "google.golang.org/grpc/grpclog" ) // For overriding in unit tests. @@ -39,27 +37,12 @@ var timeAfterFunc = func(d time.Duration, f func()) *time.Timer { // and exit from idle mode. type Enforcer interface { ExitIdleMode() error - EnterIdleMode() error -} - -// Manager defines the functionality required to track RPC activity on a -// channel. -type Manager interface { - OnCallBegin() error - OnCallEnd() - Close() + EnterIdleMode() } -type noopManager struct{} - -func (noopManager) OnCallBegin() error { return nil } -func (noopManager) OnCallEnd() {} -func (noopManager) Close() {} - -// manager implements the Manager interface. It uses atomic operations to -// synchronize access to shared state and a mutex to guarantee mutual exclusion -// in a critical section. -type manager struct { +// Manager implements idleness detection and calls the configured Enforcer to +// enter/exit idle mode when appropriate. Must be created by NewManager. +type Manager struct { // State accessed atomically. lastCallEndTime int64 // Unix timestamp in nanos; time when the most recent RPC completed. activeCallsCount int32 // Count of active RPCs; -math.MaxInt32 means channel is idle or is trying to get there. @@ -69,8 +52,7 @@ type manager struct { // Can be accessed without atomics or mutex since these are set at creation // time and read-only after that. enforcer Enforcer // Functionality provided by grpc.ClientConn. - timeout int64 // Idle timeout duration nanos stored as an int64. - logger grpclog.LoggerV2 + timeout time.Duration // idleMu is used to guarantee mutual exclusion in two scenarios: // - Opposing intentions: @@ -88,57 +70,48 @@ type manager struct { timer *time.Timer } -// ManagerOptions is a collection of options used by -// NewManager. -type ManagerOptions struct { - Enforcer Enforcer - Timeout time.Duration - Logger grpclog.LoggerV2 +// NewManager creates a new idleness manager implementation for the +// given idle timeout. It begins in idle mode. +func NewManager(enforcer Enforcer, timeout time.Duration) *Manager { + return &Manager{ + enforcer: enforcer, + timeout: timeout, + actuallyIdle: true, + activeCallsCount: -math.MaxInt32, + } } -// NewManager creates a new idleness manager implementation for the -// given idle timeout. -func NewManager(opts ManagerOptions) Manager { - if opts.Timeout == 0 { - return noopManager{} +// resetIdleTimerLocked resets the idle timer to the given duration. Called +// when exiting idle mode or when the timer fires and we need to reset it. +func (m *Manager) resetIdleTimerLocked(d time.Duration) { + if m.isClosed() || m.timeout == 0 || m.actuallyIdle { + return } - m := &manager{ - enforcer: opts.Enforcer, - timeout: int64(opts.Timeout), - logger: opts.Logger, + // It is safe to ignore the return value from Reset() because this method is + // only ever called from the timer callback or when exiting idle mode. + if m.timer != nil { + m.timer.Stop() } - m.timer = timeAfterFunc(opts.Timeout, m.handleIdleTimeout) - return m + m.timer = timeAfterFunc(d, m.handleIdleTimeout) } -// resetIdleTimer resets the idle timer to the given duration. This method -// should only be called from the timer callback. -func (m *manager) resetIdleTimer(d time.Duration) { +func (m *Manager) resetIdleTimer(d time.Duration) { m.idleMu.Lock() defer m.idleMu.Unlock() - - if m.timer == nil { - // Only close sets timer to nil. We are done. - return - } - - // It is safe to ignore the return value from Reset() because this method is - // only ever called from the timer callback, which means the timer has - // already fired. - m.timer.Reset(d) + m.resetIdleTimerLocked(d) } // handleIdleTimeout is the timer callback that is invoked upon expiry of the // configured idle timeout. The channel is considered inactive if there are no // ongoing calls and no RPC activity since the last time the timer fired. -func (m *manager) handleIdleTimeout() { +func (m *Manager) handleIdleTimeout() { if m.isClosed() { return } if atomic.LoadInt32(&m.activeCallsCount) > 0 { - m.resetIdleTimer(time.Duration(m.timeout)) + m.resetIdleTimer(m.timeout) return } @@ -148,24 +121,12 @@ func (m *manager) handleIdleTimeout() { // Set the timer to fire after a duration of idle timeout, calculated // from the time the most recent RPC completed. atomic.StoreInt32(&m.activeSinceLastTimerCheck, 0) - m.resetIdleTimer(time.Duration(atomic.LoadInt64(&m.lastCallEndTime) + m.timeout - time.Now().UnixNano())) + m.resetIdleTimer(time.Duration(atomic.LoadInt64(&m.lastCallEndTime)-time.Now().UnixNano()) + m.timeout) return } - // This CAS operation is extremely likely to succeed given that there has - // been no activity since the last time we were here. Setting the - // activeCallsCount to -math.MaxInt32 indicates to OnCallBegin() that the - // channel is either in idle mode or is trying to get there. - if !atomic.CompareAndSwapInt32(&m.activeCallsCount, 0, -math.MaxInt32) { - // This CAS operation can fail if an RPC started after we checked for - // activity at the top of this method, or one was ongoing from before - // the last time we were here. In both case, reset the timer and return. - m.resetIdleTimer(time.Duration(m.timeout)) - return - } - - // Now that we've set the active calls count to -math.MaxInt32, it's time to - // actually move to idle mode. + // Now that we've checked that there has been no activity, attempt to enter + // idle mode, which is very likely to succeed. if m.tryEnterIdleMode() { // Successfully entered idle mode. No timer needed until we exit idle. return @@ -174,8 +135,7 @@ func (m *manager) handleIdleTimeout() { // Failed to enter idle mode due to a concurrent RPC that kept the channel // active, or because of an error from the channel. Undo the attempt to // enter idle, and reset the timer to try again later. - atomic.AddInt32(&m.activeCallsCount, math.MaxInt32) - m.resetIdleTimer(time.Duration(m.timeout)) + m.resetIdleTimer(m.timeout) } // tryEnterIdleMode instructs the channel to enter idle mode. But before @@ -185,36 +145,49 @@ func (m *manager) handleIdleTimeout() { // Return value indicates whether or not the channel moved to idle mode. // // Holds idleMu which ensures mutual exclusion with exitIdleMode. -func (m *manager) tryEnterIdleMode() bool { +func (m *Manager) tryEnterIdleMode() bool { + // Setting the activeCallsCount to -math.MaxInt32 indicates to OnCallBegin() + // that the channel is either in idle mode or is trying to get there. + if !atomic.CompareAndSwapInt32(&m.activeCallsCount, 0, -math.MaxInt32) { + // This CAS operation can fail if an RPC started after we checked for + // activity in the timer handler, or one was ongoing from before the + // last time the timer fired, or if a test is attempting to enter idle + // mode without checking. In all cases, abort going into idle mode. + return false + } + // N.B. if we fail to enter idle mode after this, we must re-add + // math.MaxInt32 to m.activeCallsCount. + m.idleMu.Lock() defer m.idleMu.Unlock() if atomic.LoadInt32(&m.activeCallsCount) != -math.MaxInt32 { // We raced and lost to a new RPC. Very rare, but stop entering idle. + atomic.AddInt32(&m.activeCallsCount, math.MaxInt32) return false } if atomic.LoadInt32(&m.activeSinceLastTimerCheck) == 1 { - // An very short RPC could have come in (and also finished) after we + // A very short RPC could have come in (and also finished) after we // checked for calls count and activity in handleIdleTimeout(), but // before the CAS operation. So, we need to check for activity again. + atomic.AddInt32(&m.activeCallsCount, math.MaxInt32) return false } - // No new RPCs have come in since we last set the active calls count value - // -math.MaxInt32 in the timer callback. And since we have the lock, it is - // safe to enter idle mode now. - if err := m.enforcer.EnterIdleMode(); err != nil { - m.logger.Errorf("Failed to enter idle mode: %v", err) - return false - } - - // Successfully entered idle mode. + // No new RPCs have come in since we set the active calls count value to + // -math.MaxInt32. And since we have the lock, it is safe to enter idle mode + // unconditionally now. + m.enforcer.EnterIdleMode() m.actuallyIdle = true return true } +func (m *Manager) EnterIdleModeForTesting() { + m.tryEnterIdleMode() +} + // OnCallBegin is invoked at the start of every RPC. -func (m *manager) OnCallBegin() error { +func (m *Manager) OnCallBegin() error { if m.isClosed() { return nil } @@ -227,7 +200,7 @@ func (m *manager) OnCallBegin() error { // Channel is either in idle mode or is in the process of moving to idle // mode. Attempt to exit idle mode to allow this RPC. - if err := m.exitIdleMode(); err != nil { + if err := m.ExitIdleMode(); err != nil { // Undo the increment to calls count, and return an error causing the // RPC to fail. atomic.AddInt32(&m.activeCallsCount, -1) @@ -238,28 +211,30 @@ func (m *manager) OnCallBegin() error { return nil } -// exitIdleMode instructs the channel to exit idle mode. -// -// Holds idleMu which ensures mutual exclusion with tryEnterIdleMode. -func (m *manager) exitIdleMode() error { +// ExitIdleMode instructs m to call the enforcer's ExitIdleMode and update m's +// internal state. +func (m *Manager) ExitIdleMode() error { + // Holds idleMu which ensures mutual exclusion with tryEnterIdleMode. m.idleMu.Lock() defer m.idleMu.Unlock() - if !m.actuallyIdle { - // This can happen in two scenarios: + if m.isClosed() || !m.actuallyIdle { + // This can happen in three scenarios: // - handleIdleTimeout() set the calls count to -math.MaxInt32 and called // tryEnterIdleMode(). But before the latter could grab the lock, an RPC // came in and OnCallBegin() noticed that the calls count is negative. // - Channel is in idle mode, and multiple new RPCs come in at the same // time, all of them notice a negative calls count in OnCallBegin and get // here. The first one to get the lock would got the channel to exit idle. + // - Channel is not in idle mode, and the user calls Connect which calls + // m.ExitIdleMode. // - // Either way, nothing to do here. + // In any case, there is nothing to do here. return nil } if err := m.enforcer.ExitIdleMode(); err != nil { - return fmt.Errorf("channel failed to exit idle mode: %v", err) + return fmt.Errorf("failed to exit idle mode: %w", err) } // Undo the idle entry process. This also respects any new RPC attempts. @@ -267,12 +242,12 @@ func (m *manager) exitIdleMode() error { m.actuallyIdle = false // Start a new timer to fire after the configured idle timeout. - m.timer = timeAfterFunc(time.Duration(m.timeout), m.handleIdleTimeout) + m.resetIdleTimerLocked(m.timeout) return nil } // OnCallEnd is invoked at the end of every RPC. -func (m *manager) OnCallEnd() { +func (m *Manager) OnCallEnd() { if m.isClosed() { return } @@ -287,15 +262,17 @@ func (m *manager) OnCallEnd() { atomic.AddInt32(&m.activeCallsCount, -1) } -func (m *manager) isClosed() bool { +func (m *Manager) isClosed() bool { return atomic.LoadInt32(&m.closed) == 1 } -func (m *manager) Close() { +func (m *Manager) Close() { atomic.StoreInt32(&m.closed, 1) m.idleMu.Lock() - m.timer.Stop() - m.timer = nil + if m.timer != nil { + m.timer.Stop() + m.timer = nil + } m.idleMu.Unlock() } diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go index c8a8c76..6c7ea6a 100644 --- a/vendor/google.golang.org/grpc/internal/internal.go +++ b/vendor/google.golang.org/grpc/internal/internal.go @@ -57,7 +57,7 @@ var ( // GetXDSHandshakeInfoForTesting returns a pointer to the xds.HandshakeInfo // stored in the passed in attributes. This is set by // credentials/xds/xds.go. - GetXDSHandshakeInfoForTesting any // func (*attributes.Attributes) *xds.HandshakeInfo + GetXDSHandshakeInfoForTesting any // func (*attributes.Attributes) *unsafe.Pointer // GetServerCredentials returns the transport credentials configured on a // gRPC server. An xDS-enabled server needs to know what type of credentials // is configured on the underlying gRPC server. This is set by server.go. @@ -68,11 +68,11 @@ var ( // This is used in the 1.0 release of gcp/observability, and thus must not be // deleted or changed. CanonicalString any // func (codes.Code) string - // DrainServerTransports initiates a graceful close of existing connections - // on a gRPC server accepted on the provided listener address. An - // xDS-enabled server invokes this method on a grpc.Server when a particular - // listener moves to "not-serving" mode. - DrainServerTransports any // func(*grpc.Server, string) + // IsRegisteredMethod returns whether the passed in method is registered as + // a method on the server. + IsRegisteredMethod any // func(*grpc.Server, string) bool + // ServerFromContext returns the server from the context. + ServerFromContext any // func(context.Context) *grpc.Server // AddGlobalServerOptions adds an array of ServerOption that will be // effective globally for newly created servers. The priority will be: 1. // user-provided; 2. this method; 3. default values. @@ -175,6 +175,27 @@ var ( // GRPCResolverSchemeExtraMetadata determines when gRPC will add extra // metadata to RPCs. GRPCResolverSchemeExtraMetadata string = "xds" + + // EnterIdleModeForTesting gets the ClientConn to enter IDLE mode. + EnterIdleModeForTesting any // func(*grpc.ClientConn) + + // ExitIdleModeForTesting gets the ClientConn to exit IDLE mode. + ExitIdleModeForTesting any // func(*grpc.ClientConn) error + + ChannelzTurnOffForTesting func() + + // TriggerXDSResourceNameNotFoundForTesting triggers the resource-not-found + // error for a given resource type and name. This is usually triggered when + // the associated watch timer fires. For testing purposes, having this + // function makes events more predictable than relying on timer events. + TriggerXDSResourceNameNotFoundForTesting any // func(func(xdsresource.Type, string), string, string) error + + // TriggerXDSResourceNotFoundClient invokes the testing xDS Client singleton + // to invoke resource not found for a resource type name and resource name. + TriggerXDSResourceNameNotFoundClient any // func(string, string) error + + // FromOutgoingContextRaw returns the un-merged, intermediary contents of metadata.rawMD. + FromOutgoingContextRaw any // func(context.Context) (metadata.MD, [][]string, bool) ) // HealthChecker defines the signature of the client-side LB channel health checking function. diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go index 99e1e5b..b66dcb2 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go +++ b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go @@ -23,7 +23,6 @@ package dns import ( "context" "encoding/json" - "errors" "fmt" "net" "os" @@ -37,6 +36,7 @@ import ( "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/envconfig" "google.golang.org/grpc/internal/grpcrand" + "google.golang.org/grpc/internal/resolver/dns/internal" "google.golang.org/grpc/resolver" "google.golang.org/grpc/serviceconfig" ) @@ -47,15 +47,11 @@ var EnableSRVLookups = false var logger = grpclog.Component("dns") -// Globals to stub out in tests. TODO: Perhaps these two can be combined into a -// single variable for testing the resolver? -var ( - newTimer = time.NewTimer - newTimerDNSResRate = time.NewTimer -) - func init() { resolver.Register(NewBuilder()) + internal.TimeAfterFunc = time.After + internal.NewNetResolver = newNetResolver + internal.AddressDialer = addressDialer } const ( @@ -70,23 +66,6 @@ const ( txtAttribute = "grpc_config=" ) -var ( - errMissingAddr = errors.New("dns resolver: missing address") - - // Addresses ending with a colon that is supposed to be the separator - // between host and port is not allowed. E.g. "::" is a valid address as - // it is an IPv6 address (host only) and "[::]:" is invalid as it ends with - // a colon as the host and port separator - errEndsWithColon = errors.New("dns resolver: missing port after port-separator colon") -) - -var ( - defaultResolver netResolver = net.DefaultResolver - // To prevent excessive re-resolution, we enforce a rate limit on DNS - // resolution requests. - minDNSResRate = 30 * time.Second -) - var addressDialer = func(address string) func(context.Context, string, string) (net.Conn, error) { return func(ctx context.Context, network, _ string) (net.Conn, error) { var dialer net.Dialer @@ -94,7 +73,11 @@ var addressDialer = func(address string) func(context.Context, string, string) ( } } -var newNetResolver = func(authority string) (netResolver, error) { +var newNetResolver = func(authority string) (internal.NetResolver, error) { + if authority == "" { + return net.DefaultResolver, nil + } + host, port, err := parseTarget(authority, defaultDNSSvrPort) if err != nil { return nil, err @@ -104,7 +87,7 @@ var newNetResolver = func(authority string) (netResolver, error) { return &net.Resolver{ PreferGo: true, - Dial: addressDialer(authorityWithPort), + Dial: internal.AddressDialer(authorityWithPort), }, nil } @@ -142,13 +125,9 @@ func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts disableServiceConfig: opts.DisableServiceConfig, } - if target.URL.Host == "" { - d.resolver = defaultResolver - } else { - d.resolver, err = newNetResolver(target.URL.Host) - if err != nil { - return nil, err - } + d.resolver, err = internal.NewNetResolver(target.URL.Host) + if err != nil { + return nil, err } d.wg.Add(1) @@ -161,12 +140,6 @@ func (b *dnsBuilder) Scheme() string { return "dns" } -type netResolver interface { - LookupHost(ctx context.Context, host string) (addrs []string, err error) - LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error) - LookupTXT(ctx context.Context, name string) (txts []string, err error) -} - // deadResolver is a resolver that does nothing. type deadResolver struct{} @@ -178,7 +151,7 @@ func (deadResolver) Close() {} type dnsResolver struct { host string port string - resolver netResolver + resolver internal.NetResolver ctx context.Context cancel context.CancelFunc cc resolver.ClientConn @@ -223,29 +196,27 @@ func (d *dnsResolver) watcher() { err = d.cc.UpdateState(*state) } - var timer *time.Timer + var waitTime time.Duration if err == nil { // Success resolving, wait for the next ResolveNow. However, also wait 30 // seconds at the very least to prevent constantly re-resolving. backoffIndex = 1 - timer = newTimerDNSResRate(minDNSResRate) + waitTime = internal.MinResolutionRate select { case <-d.ctx.Done(): - timer.Stop() return case <-d.rn: } } else { // Poll on an error found in DNS Resolver or an error received from // ClientConn. - timer = newTimer(backoff.DefaultExponential.Backoff(backoffIndex)) + waitTime = backoff.DefaultExponential.Backoff(backoffIndex) backoffIndex++ } select { case <-d.ctx.Done(): - timer.Stop() return - case <-timer.C: + case <-internal.TimeAfterFunc(waitTime): } } } @@ -387,7 +358,7 @@ func formatIP(addr string) (addrIP string, ok bool) { // target: ":80" defaultPort: "443" returns host: "localhost", port: "80" func parseTarget(target, defaultPort string) (host, port string, err error) { if target == "" { - return "", "", errMissingAddr + return "", "", internal.ErrMissingAddr } if ip := net.ParseIP(target); ip != nil { // target is an IPv4 or IPv6(without brackets) address @@ -397,7 +368,7 @@ func parseTarget(target, defaultPort string) (host, port string, err error) { if port == "" { // If the port field is empty (target ends with colon), e.g. "[::1]:", // this is an error. - return "", "", errEndsWithColon + return "", "", internal.ErrEndsWithColon } // target has port, i.e ipv4-host:port, [ipv6-host]:port, host-name:port if host == "" { diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go b/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go new file mode 100644 index 0000000..c7fc557 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go @@ -0,0 +1,70 @@ +/* + * + * Copyright 2023 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package internal contains functionality internal to the dns resolver package. +package internal + +import ( + "context" + "errors" + "net" + "time" +) + +// NetResolver groups the methods on net.Resolver that are used by the DNS +// resolver implementation. This allows the default net.Resolver instance to be +// overidden from tests. +type NetResolver interface { + LookupHost(ctx context.Context, host string) (addrs []string, err error) + LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error) + LookupTXT(ctx context.Context, name string) (txts []string, err error) +} + +var ( + // ErrMissingAddr is the error returned when building a DNS resolver when + // the provided target name is empty. + ErrMissingAddr = errors.New("dns resolver: missing address") + + // ErrEndsWithColon is the error returned when building a DNS resolver when + // the provided target name ends with a colon that is supposed to be the + // separator between host and port. E.g. "::" is a valid address as it is + // an IPv6 address (host only) and "[::]:" is invalid as it ends with a + // colon as the host and port separator + ErrEndsWithColon = errors.New("dns resolver: missing port after port-separator colon") +) + +// The following vars are overridden from tests. +var ( + // MinResolutionRate is the minimum rate at which re-resolutions are + // allowed. This helps to prevent excessive re-resolution. + MinResolutionRate = 30 * time.Second + + // TimeAfterFunc is used by the DNS resolver to wait for the given duration + // to elapse. In non-test code, this is implemented by time.After. In test + // code, this can be used to control the amount of time the resolver is + // blocked waiting for the duration to elapse. + TimeAfterFunc func(time.Duration) <-chan time.Time + + // NewNetResolver returns the net.Resolver instance for the given target. + NewNetResolver func(string) (NetResolver, error) + + // AddressDialer is the dialer used to dial the DNS server. It accepts the + // Host portion of the URL corresponding to the user's dial target and + // returns a dial function. + AddressDialer func(address string) func(context.Context, string, string) (net.Conn, error) +) diff --git a/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go b/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go index 1609116..27cd81a 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go +++ b/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go @@ -61,6 +61,10 @@ func (b *builder) Scheme() string { return b.scheme } +func (b *builder) OverrideAuthority(resolver.Target) string { + return "localhost" +} + type nopResolver struct { } diff --git a/vendor/google.golang.org/grpc/internal/status/status.go b/vendor/google.golang.org/grpc/internal/status/status.go index 4cf85ca..03ef2fe 100644 --- a/vendor/google.golang.org/grpc/internal/status/status.go +++ b/vendor/google.golang.org/grpc/internal/status/status.go @@ -43,6 +43,34 @@ type Status struct { s *spb.Status } +// NewWithProto returns a new status including details from statusProto. This +// is meant to be used by the gRPC library only. +func NewWithProto(code codes.Code, message string, statusProto []string) *Status { + if len(statusProto) != 1 { + // No grpc-status-details bin header, or multiple; just ignore. + return &Status{s: &spb.Status{Code: int32(code), Message: message}} + } + st := &spb.Status{} + if err := proto.Unmarshal([]byte(statusProto[0]), st); err != nil { + // Probably not a google.rpc.Status proto; do not provide details. + return &Status{s: &spb.Status{Code: int32(code), Message: message}} + } + if st.Code == int32(code) { + // The codes match between the grpc-status header and the + // grpc-status-details-bin header; use the full details proto. + return &Status{s: st} + } + return &Status{ + s: &spb.Status{ + Code: int32(codes.Internal), + Message: fmt.Sprintf( + "grpc-status-details-bin mismatch: grpc-status=%v, grpc-message=%q, grpc-status-details-bin=%+v", + code, message, st, + ), + }, + } +} + // New returns a Status representing c and msg. func New(c codes.Code, msg string) *Status { return &Status{s: &spb.Status{Code: int32(c), Message: msg}} diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_others.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_others.go new file mode 100644 index 0000000..4f347ed --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_others.go @@ -0,0 +1,29 @@ +//go:build !unix && !windows + +/* + * Copyright 2023 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package internal + +import ( + "net" +) + +// NetDialerWithTCPKeepalive returns a vanilla net.Dialer on non-unix platforms. +func NetDialerWithTCPKeepalive() *net.Dialer { + return &net.Dialer{} +} diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go new file mode 100644 index 0000000..078137b --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go @@ -0,0 +1,54 @@ +//go:build unix + +/* + * Copyright 2023 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package internal + +import ( + "net" + "syscall" + "time" + + "golang.org/x/sys/unix" +) + +// NetDialerWithTCPKeepalive returns a net.Dialer that enables TCP keepalives on +// the underlying connection with OS default values for keepalive parameters. +// +// TODO: Once https://github.com/golang/go/issues/62254 lands, and the +// appropriate Go version becomes less than our least supported Go version, we +// should look into using the new API to make things more straightforward. +func NetDialerWithTCPKeepalive() *net.Dialer { + return &net.Dialer{ + // Setting a negative value here prevents the Go stdlib from overriding + // the values of TCP keepalive time and interval. It also prevents the + // Go stdlib from enabling TCP keepalives by default. + KeepAlive: time.Duration(-1), + // This method is called after the underlying network socket is created, + // but before dialing the socket (or calling its connect() method). The + // combination of unconditionally enabling TCP keepalives here, and + // disabling the overriding of TCP keepalive parameters by setting the + // KeepAlive field to a negative value above, results in OS defaults for + // the TCP keealive interval and time parameters. + Control: func(_, _ string, c syscall.RawConn) error { + return c.Control(func(fd uintptr) { + unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1) + }) + }, + } +} diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go new file mode 100644 index 0000000..fd7d43a --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go @@ -0,0 +1,54 @@ +//go:build windows + +/* + * Copyright 2023 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package internal + +import ( + "net" + "syscall" + "time" + + "golang.org/x/sys/windows" +) + +// NetDialerWithTCPKeepalive returns a net.Dialer that enables TCP keepalives on +// the underlying connection with OS default values for keepalive parameters. +// +// TODO: Once https://github.com/golang/go/issues/62254 lands, and the +// appropriate Go version becomes less than our least supported Go version, we +// should look into using the new API to make things more straightforward. +func NetDialerWithTCPKeepalive() *net.Dialer { + return &net.Dialer{ + // Setting a negative value here prevents the Go stdlib from overriding + // the values of TCP keepalive time and interval. It also prevents the + // Go stdlib from enabling TCP keepalives by default. + KeepAlive: time.Duration(-1), + // This method is called after the underlying network socket is created, + // but before dialing the socket (or calling its connect() method). The + // combination of unconditionally enabling TCP keepalives here, and + // disabling the overriding of TCP keepalive parameters by setting the + // KeepAlive field to a negative value above, results in OS defaults for + // the TCP keealive interval and time parameters. + Control: func(_, _ string, c syscall.RawConn) error { + return c.Control(func(fd uintptr) { + windows.SetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_KEEPALIVE, 1) + }) + }, + } +} diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go index b330cce..83c3829 100644 --- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -535,8 +535,8 @@ const minBatchSize = 1000 // size is too low to give stream goroutines a chance to fill it up. // // Upon exiting, if the error causing the exit is not an I/O error, run() -// flushes and closes the underlying connection. Otherwise, the connection is -// left open to allow the I/O error to be encountered by the reader instead. +// flushes the underlying connection. The connection is always left open to +// allow different closing behavior on the client and server. func (l *loopyWriter) run() (err error) { defer func() { if l.logger.V(logLevel) { @@ -544,7 +544,6 @@ func (l *loopyWriter) run() (err error) { } if !isIOError(err) { l.framer.writer.Flush() - l.conn.Close() } l.cbuf.finish() }() diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go index 98f80e3..a9d70e2 100644 --- a/vendor/google.golang.org/grpc/internal/transport/handler_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go @@ -75,11 +75,25 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []s return nil, errors.New(msg) } + var localAddr net.Addr + if la := r.Context().Value(http.LocalAddrContextKey); la != nil { + localAddr, _ = la.(net.Addr) + } + var authInfo credentials.AuthInfo + if r.TLS != nil { + authInfo = credentials.TLSInfo{State: *r.TLS, CommonAuthInfo: credentials.CommonAuthInfo{SecurityLevel: credentials.PrivacyAndIntegrity}} + } + p := peer.Peer{ + Addr: strAddr(r.RemoteAddr), + LocalAddr: localAddr, + AuthInfo: authInfo, + } st := &serverHandlerTransport{ rw: w, req: r, closedCh: make(chan struct{}), writes: make(chan func()), + peer: p, contentType: contentType, contentSubtype: contentSubtype, stats: stats, @@ -134,6 +148,8 @@ type serverHandlerTransport struct { headerMD metadata.MD + peer peer.Peer + closeOnce sync.Once closedCh chan struct{} // closed on Close @@ -165,7 +181,13 @@ func (ht *serverHandlerTransport) Close(err error) { }) } -func (ht *serverHandlerTransport) RemoteAddr() net.Addr { return strAddr(ht.req.RemoteAddr) } +func (ht *serverHandlerTransport) Peer() *peer.Peer { + return &peer.Peer{ + Addr: ht.peer.Addr, + LocalAddr: ht.peer.LocalAddr, + AuthInfo: ht.peer.AuthInfo, + } +} // strAddr is a net.Addr backed by either a TCP "ip:port" string, or // the empty string if unknown. @@ -220,18 +242,20 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro h.Set("Grpc-Message", encodeGrpcMessage(m)) } + s.hdrMu.Lock() if p := st.Proto(); p != nil && len(p.Details) > 0 { + delete(s.trailer, grpcStatusDetailsBinHeader) stBytes, err := proto.Marshal(p) if err != nil { // TODO: return error instead, when callers are able to handle it. panic(err) } - h.Set("Grpc-Status-Details-Bin", encodeBinHeader(stBytes)) + h.Set(grpcStatusDetailsBinHeader, encodeBinHeader(stBytes)) } - if md := s.Trailer(); len(md) > 0 { - for k, vv := range md { + if len(s.trailer) > 0 { + for k, vv := range s.trailer { // Clients don't tolerate reading restricted headers after some non restricted ones were sent. if isReservedHeader(k) { continue @@ -243,6 +267,7 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro } } } + s.hdrMu.Unlock() }) if err == nil { // transport has not been closed @@ -287,7 +312,7 @@ func (ht *serverHandlerTransport) writeCommonHeaders(s *Stream) { } // writeCustomHeaders sets custom headers set on the stream via SetHeader -// on the first write call (Write, WriteHeader, or WriteStatus). +// on the first write call (Write, WriteHeader, or WriteStatus) func (ht *serverHandlerTransport) writeCustomHeaders(s *Stream) { h := ht.rw.Header() @@ -344,10 +369,8 @@ func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error { return err } -func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), traceCtx func(context.Context, string) context.Context) { +func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream func(*Stream)) { // With this transport type there will be exactly 1 stream: this HTTP request. - - ctx := ht.req.Context() var cancel context.CancelFunc if ht.timeoutSet { ctx, cancel = context.WithTimeout(ctx, ht.timeout) @@ -367,34 +390,19 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace ht.Close(errors.New("request is done processing")) }() + ctx = metadata.NewIncomingContext(ctx, ht.headerMD) req := ht.req - s := &Stream{ - id: 0, // irrelevant - requestRead: func(int) {}, - cancel: cancel, - buf: newRecvBuffer(), - st: ht, - method: req.URL.Path, - recvCompress: req.Header.Get("grpc-encoding"), - contentSubtype: ht.contentSubtype, - } - pr := &peer.Peer{ - Addr: ht.RemoteAddr(), - } - if req.TLS != nil { - pr.AuthInfo = credentials.TLSInfo{State: *req.TLS, CommonAuthInfo: credentials.CommonAuthInfo{SecurityLevel: credentials.PrivacyAndIntegrity}} - } - ctx = metadata.NewIncomingContext(ctx, ht.headerMD) - s.ctx = peer.NewContext(ctx, pr) - for _, sh := range ht.stats { - s.ctx = sh.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method}) - inHeader := &stats.InHeader{ - FullMethod: s.method, - RemoteAddr: ht.RemoteAddr(), - Compression: s.recvCompress, - } - sh.HandleRPC(s.ctx, inHeader) + id: 0, // irrelevant + ctx: ctx, + requestRead: func(int) {}, + cancel: cancel, + buf: newRecvBuffer(), + st: ht, + method: req.URL.Path, + recvCompress: req.Header.Get("grpc-encoding"), + contentSubtype: ht.contentSubtype, + headerWireLength: 0, // won't have access to header wire length until golang/go#18997. } s.trReader = &transportReader{ reader: &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf, freeBuffer: func(*bytes.Buffer) {}}, diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go index badab8a..eff8799 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -36,6 +36,7 @@ import ( "golang.org/x/net/http2/hpack" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/channelz" icredentials "google.golang.org/grpc/internal/credentials" "google.golang.org/grpc/internal/grpclog" @@ -43,7 +44,7 @@ import ( "google.golang.org/grpc/internal/grpcutil" imetadata "google.golang.org/grpc/internal/metadata" istatus "google.golang.org/grpc/internal/status" - "google.golang.org/grpc/internal/syscall" + isyscall "google.golang.org/grpc/internal/syscall" "google.golang.org/grpc/internal/transport/networktype" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" @@ -58,6 +59,8 @@ import ( // atomically. var clientConnectionCounter uint64 +var metadataFromOutgoingContextRaw = internal.FromOutgoingContextRaw.(func(context.Context) (metadata.MD, [][]string, bool)) + // http2Client implements the ClientTransport interface with HTTP2. type http2Client struct { lastRead int64 // Keep this field 64-bit aligned. Accessed atomically. @@ -176,7 +179,7 @@ func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error if networkType == "tcp" && useProxy { return proxyDial(ctx, address, grpcUA) } - return (&net.Dialer{}).DialContext(ctx, networkType, address) + return internal.NetDialerWithTCPKeepalive().DialContext(ctx, networkType, address) } func isTemporary(err error) bool { @@ -262,7 +265,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts } keepaliveEnabled := false if kp.Time != infinity { - if err = syscall.SetTCPUserTimeout(conn, kp.Timeout); err != nil { + if err = isyscall.SetTCPUserTimeout(conn, kp.Timeout); err != nil { return nil, connectionErrorf(false, err, "transport: failed to set TCP_USER_TIMEOUT: %v", err) } keepaliveEnabled = true @@ -448,7 +451,13 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts } go func() { t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger) - t.loopy.run() + if err := t.loopy.run(); !isIOError(err) { + // Immediately close the connection, as the loopy writer returns + // when there are no more active streams and we were draining (the + // server sent a GOAWAY). For I/O errors, the reader will hit it + // after draining any remaining incoming data. + t.conn.Close() + } close(t.writerDone) }() return t, nil @@ -493,8 +502,9 @@ func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream { func (t *http2Client) getPeer() *peer.Peer { return &peer.Peer{ - Addr: t.remoteAddr, - AuthInfo: t.authInfo, // Can be nil + Addr: t.remoteAddr, + AuthInfo: t.authInfo, // Can be nil + LocalAddr: t.localAddr, } } @@ -566,7 +576,7 @@ func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-trace-bin", Value: encodeBinHeader(b)}) } - if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok { + if md, added, ok := metadataFromOutgoingContextRaw(ctx); ok { var k string for k, vv := range md { // HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set. @@ -1321,10 +1331,8 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { for streamID, stream := range t.activeStreams { if streamID > id && streamID <= upperLimit { // The stream was unprocessed by the server. - if streamID > id && streamID <= upperLimit { - atomic.StoreUint32(&stream.unprocessed, 1) - streamsToClose = append(streamsToClose, stream) - } + atomic.StoreUint32(&stream.unprocessed, 1) + streamsToClose = append(streamsToClose, stream) } } t.mu.Unlock() @@ -1399,7 +1407,6 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { mdata = make(map[string][]string) contentTypeErr = "malformed header: missing HTTP content-type" grpcMessage string - statusGen *status.Status recvCompress string httpStatusCode *int httpStatusErr string @@ -1434,12 +1441,6 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { rawStatusCode = codes.Code(uint32(code)) case "grpc-message": grpcMessage = decodeGrpcMessage(hf.Value) - case "grpc-status-details-bin": - var err error - statusGen, err = decodeGRPCStatusDetails(hf.Value) - if err != nil { - headerError = fmt.Sprintf("transport: malformed grpc-status-details-bin: %v", err) - } case ":status": if hf.Value == "200" { httpStatusErr = "" @@ -1548,14 +1549,12 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { return } - if statusGen == nil { - statusGen = status.New(rawStatusCode, grpcMessage) - } + status := istatus.NewWithProto(rawStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader]) // If client received END_STREAM from server while stream was still active, // send RST_STREAM. rstStream := s.getState() == streamActive - t.closeStream(s, io.EOF, rstStream, http2.ErrCodeNo, statusGen, mdata, true) + t.closeStream(s, io.EOF, rstStream, http2.ErrCodeNo, status, mdata, true) } // readServerPreface reads and handles the initial settings frame from the diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go index c06db67..a206e2e 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -68,18 +68,15 @@ var serverConnectionCounter uint64 // http2Server implements the ServerTransport interface with HTTP2. type http2Server struct { - lastRead int64 // Keep this field 64-bit aligned. Accessed atomically. - ctx context.Context - done chan struct{} - conn net.Conn - loopy *loopyWriter - readerDone chan struct{} // sync point to enable testing. - writerDone chan struct{} // sync point to enable testing. - remoteAddr net.Addr - localAddr net.Addr - authInfo credentials.AuthInfo // auth info about the connection - inTapHandle tap.ServerInHandle - framer *framer + lastRead int64 // Keep this field 64-bit aligned. Accessed atomically. + done chan struct{} + conn net.Conn + loopy *loopyWriter + readerDone chan struct{} // sync point to enable testing. + loopyWriterDone chan struct{} + peer peer.Peer + inTapHandle tap.ServerInHandle + framer *framer // The max number of concurrent streams. maxStreams uint32 // controlBuf delivers all the control related tasks (e.g., window @@ -243,16 +240,18 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, } done := make(chan struct{}) + peer := peer.Peer{ + Addr: conn.RemoteAddr(), + LocalAddr: conn.LocalAddr(), + AuthInfo: authInfo, + } t := &http2Server{ - ctx: setConnection(context.Background(), rawConn), done: done, conn: conn, - remoteAddr: conn.RemoteAddr(), - localAddr: conn.LocalAddr(), - authInfo: authInfo, + peer: peer, framer: framer, readerDone: make(chan struct{}), - writerDone: make(chan struct{}), + loopyWriterDone: make(chan struct{}), maxStreams: config.MaxStreams, inTapHandle: config.InTapHandle, fc: &trInFlow{limit: uint32(icwz)}, @@ -267,8 +266,6 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, bufferPool: newBufferPool(), } t.logger = prefixLoggerForServerTransport(t) - // Add peer information to the http2server context. - t.ctx = peer.NewContext(t.ctx, t.getPeer()) t.controlBuf = newControlBuffer(t.done) if dynamicWindow { @@ -277,15 +274,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, updateFlowControl: t.updateFlowControl, } } - for _, sh := range t.stats { - t.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{ - RemoteAddr: t.remoteAddr, - LocalAddr: t.localAddr, - }) - connBegin := &stats.ConnBegin{} - sh.HandleConn(t.ctx, connBegin) - } - t.channelzID, err = channelz.RegisterNormalSocket(t, config.ChannelzParentID, fmt.Sprintf("%s -> %s", t.remoteAddr, t.localAddr)) + t.channelzID, err = channelz.RegisterNormalSocket(t, config.ChannelzParentID, fmt.Sprintf("%s -> %s", t.peer.Addr, t.peer.LocalAddr)) if err != nil { return nil, err } @@ -333,8 +322,24 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, go func() { t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger) t.loopy.ssGoAwayHandler = t.outgoingGoAwayHandler - t.loopy.run() - close(t.writerDone) + err := t.loopy.run() + close(t.loopyWriterDone) + if !isIOError(err) { + // Close the connection if a non-I/O error occurs (for I/O errors + // the reader will also encounter the error and close). Wait 1 + // second before closing the connection, or when the reader is done + // (i.e. the client already closed the connection or a connection + // error occurred). This avoids the potential problem where there + // is unread data on the receive side of the connection, which, if + // closed, would lead to a TCP RST instead of FIN, and the client + // encountering errors. For more info: + // https://github.com/grpc/grpc-go/issues/5358 + select { + case <-t.readerDone: + case <-time.After(time.Second): + } + t.conn.Close() + } }() go t.keepalive() return t, nil @@ -342,7 +347,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, // operateHeaders takes action on the decoded headers. Returns an error if fatal // error encountered and transport needs to close, otherwise returns nil. -func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) error { +func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeadersFrame, handle func(*Stream)) error { // Acquire max stream ID lock for entire duration t.maxStreamMu.Lock() defer t.maxStreamMu.Unlock() @@ -369,10 +374,11 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( buf := newRecvBuffer() s := &Stream{ - id: streamID, - st: t, - buf: buf, - fc: &inFlow{limit: uint32(t.initialWindowSize)}, + id: streamID, + st: t, + buf: buf, + fc: &inFlow{limit: uint32(t.initialWindowSize)}, + headerWireLength: int(frame.Header().Length), } var ( // if false, content-type was missing or invalid @@ -511,9 +517,9 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( s.state = streamReadDone } if timeoutSet { - s.ctx, s.cancel = context.WithTimeout(t.ctx, timeout) + s.ctx, s.cancel = context.WithTimeout(ctx, timeout) } else { - s.ctx, s.cancel = context.WithCancel(t.ctx) + s.ctx, s.cancel = context.WithCancel(ctx) } // Attach the received metadata to the context. @@ -561,7 +567,7 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( } if t.inTapHandle != nil { var err error - if s.ctx, err = t.inTapHandle(s.ctx, &tap.Info{FullMethodName: s.method}); err != nil { + if s.ctx, err = t.inTapHandle(s.ctx, &tap.Info{FullMethodName: s.method, Header: mdata}); err != nil { t.mu.Unlock() if t.logger.V(logLevel) { t.logger.Infof("Aborting the stream early due to InTapHandle failure: %v", err) @@ -592,19 +598,6 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( s.requestRead = func(n int) { t.adjustWindow(s, uint32(n)) } - s.ctx = traceCtx(s.ctx, s.method) - for _, sh := range t.stats { - s.ctx = sh.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method}) - inHeader := &stats.InHeader{ - FullMethod: s.method, - RemoteAddr: t.remoteAddr, - LocalAddr: t.localAddr, - Compression: s.recvCompress, - WireLength: int(frame.Header().Length), - Header: mdata.Copy(), - } - sh.HandleRPC(s.ctx, inHeader) - } s.ctxDone = s.ctx.Done() s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone) s.trReader = &transportReader{ @@ -630,8 +623,11 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( // HandleStreams receives incoming streams using the given handler. This is // typically run in a separate goroutine. // traceCtx attaches trace to ctx and returns the new context. -func (t *http2Server) HandleStreams(handle func(*Stream), traceCtx func(context.Context, string) context.Context) { - defer close(t.readerDone) +func (t *http2Server) HandleStreams(ctx context.Context, handle func(*Stream)) { + defer func() { + close(t.readerDone) + <-t.loopyWriterDone + }() for { t.controlBuf.throttle() frame, err := t.framer.fr.ReadFrame() @@ -665,7 +661,7 @@ func (t *http2Server) HandleStreams(handle func(*Stream), traceCtx func(context. } switch frame := frame.(type) { case *http2.MetaHeadersFrame: - if err := t.operateHeaders(frame, handle, traceCtx); err != nil { + if err := t.operateHeaders(ctx, frame, handle); err != nil { t.Close(err) break } @@ -980,7 +976,12 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { } } if err := t.writeHeaderLocked(s); err != nil { - return status.Convert(err).Err() + switch e := err.(type) { + case ConnectionError: + return status.Error(codes.Unavailable, e.Desc) + default: + return status.Convert(err).Err() + } } return nil } @@ -1053,12 +1054,15 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-message", Value: encodeGrpcMessage(st.Message())}) if p := st.Proto(); p != nil && len(p.Details) > 0 { + // Do not use the user's grpc-status-details-bin (if present) if we are + // even attempting to set our own. + delete(s.trailer, grpcStatusDetailsBinHeader) stBytes, err := proto.Marshal(p) if err != nil { // TODO: return error instead, when callers are able to handle it. t.logger.Errorf("Failed to marshal rpc status: %s, error: %v", pretty.ToJSON(p), err) } else { - headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status-details-bin", Value: encodeBinHeader(stBytes)}) + headerFields = append(headerFields, hpack.HeaderField{Name: grpcStatusDetailsBinHeader, Value: encodeBinHeader(stBytes)}) } } @@ -1240,10 +1244,6 @@ func (t *http2Server) Close(err error) { for _, s := range streams { s.cancel() } - for _, sh := range t.stats { - connEnd := &stats.ConnEnd{} - sh.HandleConn(t.ctx, connEnd) - } } // deleteStream deletes the stream s from transport's active streams. @@ -1309,10 +1309,6 @@ func (t *http2Server) closeStream(s *Stream, rst bool, rstCode http2.ErrCode, eo }) } -func (t *http2Server) RemoteAddr() net.Addr { - return t.remoteAddr -} - func (t *http2Server) Drain(debugData string) { t.mu.Lock() defer t.mu.Unlock() @@ -1349,6 +1345,7 @@ func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { if err := t.framer.fr.WriteGoAway(sid, g.code, g.debugData); err != nil { return false, err } + t.framer.writer.Flush() if retErr != nil { return false, retErr } @@ -1369,7 +1366,7 @@ func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { return false, err } go func() { - timer := time.NewTimer(time.Minute) + timer := time.NewTimer(5 * time.Second) defer timer.Stop() select { case <-t.drainEvent.Done(): @@ -1395,11 +1392,11 @@ func (t *http2Server) ChannelzMetric() *channelz.SocketInternalMetric { LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), LocalFlowControlWindow: int64(t.fc.getSize()), SocketOptions: channelz.GetSocketOption(t.conn), - LocalAddr: t.localAddr, - RemoteAddr: t.remoteAddr, + LocalAddr: t.peer.LocalAddr, + RemoteAddr: t.peer.Addr, // RemoteName : } - if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { + if au, ok := t.peer.AuthInfo.(credentials.ChannelzSecurityInfo); ok { s.Security = au.GetSecurityValue() } s.RemoteFlowControlWindow = t.getOutFlowWindow() @@ -1431,10 +1428,12 @@ func (t *http2Server) getOutFlowWindow() int64 { } } -func (t *http2Server) getPeer() *peer.Peer { +// Peer returns the peer of the transport. +func (t *http2Server) Peer() *peer.Peer { return &peer.Peer{ - Addr: t.remoteAddr, - AuthInfo: t.authInfo, // Can be nil + Addr: t.peer.Addr, + LocalAddr: t.peer.LocalAddr, + AuthInfo: t.peer.AuthInfo, // Can be nil } } @@ -1459,6 +1458,6 @@ func GetConnection(ctx context.Context) net.Conn { // SetConnection adds the connection to the context to be able to get // information about the destination ip and port for an incoming RPC. This also // allows any unary or streaming interceptors to see the connection. -func setConnection(ctx context.Context, conn net.Conn) context.Context { +func SetConnection(ctx context.Context, conn net.Conn) context.Context { return context.WithValue(ctx, connectionKey{}, conn) } diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go index 1958140..dc29d59 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http_util.go +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -34,12 +34,9 @@ import ( "time" "unicode/utf8" - "github.com/golang/protobuf/proto" "golang.org/x/net/http2" "golang.org/x/net/http2/hpack" - spb "google.golang.org/genproto/googleapis/rpc/status" "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" ) const ( @@ -88,6 +85,8 @@ var ( } ) +var grpcStatusDetailsBinHeader = "grpc-status-details-bin" + // isReservedHeader checks whether hdr belongs to HTTP2 headers // reserved by gRPC protocol. Any other headers are classified as the // user-specified metadata. @@ -103,7 +102,6 @@ func isReservedHeader(hdr string) bool { "grpc-message", "grpc-status", "grpc-timeout", - "grpc-status-details-bin", // Intentionally exclude grpc-previous-rpc-attempts and // grpc-retry-pushback-ms, which are "reserved", but their API // intentionally works via metadata. @@ -154,18 +152,6 @@ func decodeMetadataHeader(k, v string) (string, error) { return v, nil } -func decodeGRPCStatusDetails(rawDetails string) (*status.Status, error) { - v, err := decodeBinHeader(rawDetails) - if err != nil { - return nil, err - } - st := &spb.Status{} - if err = proto.Unmarshal(v, st); err != nil { - return nil, err - } - return status.FromProto(st), nil -} - type timeoutUnit uint8 const ( diff --git a/vendor/google.golang.org/grpc/internal/transport/proxy.go b/vendor/google.golang.org/grpc/internal/transport/proxy.go index 4159619..24fa103 100644 --- a/vendor/google.golang.org/grpc/internal/transport/proxy.go +++ b/vendor/google.golang.org/grpc/internal/transport/proxy.go @@ -28,6 +28,8 @@ import ( "net/http" "net/http/httputil" "net/url" + + "google.golang.org/grpc/internal" ) const proxyAuthHeaderKey = "Proxy-Authorization" @@ -112,7 +114,7 @@ func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr stri // proxyDial dials, connecting to a proxy first if necessary. Checks if a proxy // is necessary, dials, does the HTTP CONNECT handshake, and returns the // connection. -func proxyDial(ctx context.Context, addr string, grpcUA string) (conn net.Conn, err error) { +func proxyDial(ctx context.Context, addr string, grpcUA string) (net.Conn, error) { newAddr := addr proxyURL, err := mapAddress(addr) if err != nil { @@ -122,15 +124,15 @@ func proxyDial(ctx context.Context, addr string, grpcUA string) (conn net.Conn, newAddr = proxyURL.Host } - conn, err = (&net.Dialer{}).DialContext(ctx, "tcp", newAddr) + conn, err := internal.NetDialerWithTCPKeepalive().DialContext(ctx, "tcp", newAddr) if err != nil { - return + return nil, err } - if proxyURL != nil { + if proxyURL == nil { // proxy is disabled if proxyURL is nil. - conn, err = doHTTPConnectHandshake(ctx, conn, addr, proxyURL, grpcUA) + return conn, err } - return + return doHTTPConnectHandshake(ctx, conn, addr, proxyURL, grpcUA) } func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error { diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go index 74a811f..b7b8fec 100644 --- a/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -37,6 +37,7 @@ import ( "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/peer" "google.golang.org/grpc/resolver" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" @@ -265,7 +266,8 @@ type Stream struct { // headerValid indicates whether a valid header was received. Only // meaningful after headerChan is closed (always call waitOnHeader() before // reading its value). Not valid on server side. - headerValid bool + headerValid bool + headerWireLength int // Only set on server side. // hdrMu protects header and trailer metadata on the server-side. hdrMu sync.Mutex @@ -425,6 +427,12 @@ func (s *Stream) Context() context.Context { return s.ctx } +// SetContext sets the context of the stream. This will be deleted once the +// stats handler callouts all move to gRPC layer. +func (s *Stream) SetContext(ctx context.Context) { + s.ctx = ctx +} + // Method returns the method for the stream. func (s *Stream) Method() string { return s.method @@ -437,6 +445,12 @@ func (s *Stream) Status() *status.Status { return s.status } +// HeaderWireLength returns the size of the headers of the stream as received +// from the wire. Valid only on the server. +func (s *Stream) HeaderWireLength() int { + return s.headerWireLength +} + // SetHeader sets the header metadata. This can be called multiple times. // Server side only. // This should not be called in parallel to other data writes. @@ -698,7 +712,7 @@ type ClientTransport interface { // Write methods for a given Stream will be called serially. type ServerTransport interface { // HandleStreams receives incoming streams using the given handler. - HandleStreams(func(*Stream), func(context.Context, string) context.Context) + HandleStreams(context.Context, func(*Stream)) // WriteHeader sends the header metadata for the given stream. // WriteHeader may not be called on all streams. @@ -717,8 +731,8 @@ type ServerTransport interface { // handlers will be terminated asynchronously. Close(err error) - // RemoteAddr returns the remote network address. - RemoteAddr() net.Addr + // Peer returns the peer of the server transport. + Peer() *peer.Peer // Drain notifies the client this ServerTransport stops accepting new RPCs. Drain(debugData string) diff --git a/vendor/google.golang.org/grpc/metadata/metadata.go b/vendor/google.golang.org/grpc/metadata/metadata.go index a2cdcaf..1e9485f 100644 --- a/vendor/google.golang.org/grpc/metadata/metadata.go +++ b/vendor/google.golang.org/grpc/metadata/metadata.go @@ -25,8 +25,14 @@ import ( "context" "fmt" "strings" + + "google.golang.org/grpc/internal" ) +func init() { + internal.FromOutgoingContextRaw = fromOutgoingContextRaw +} + // DecodeKeyValue returns k, v, nil. // // Deprecated: use k and v directly instead. @@ -153,14 +159,16 @@ func Join(mds ...MD) MD { type mdIncomingKey struct{} type mdOutgoingKey struct{} -// NewIncomingContext creates a new context with incoming md attached. +// NewIncomingContext creates a new context with incoming md attached. md must +// not be modified after calling this function. func NewIncomingContext(ctx context.Context, md MD) context.Context { return context.WithValue(ctx, mdIncomingKey{}, md) } // NewOutgoingContext creates a new context with outgoing md attached. If used // in conjunction with AppendToOutgoingContext, NewOutgoingContext will -// overwrite any previously-appended metadata. +// overwrite any previously-appended metadata. md must not be modified after +// calling this function. func NewOutgoingContext(ctx context.Context, md MD) context.Context { return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md}) } @@ -203,7 +211,8 @@ func FromIncomingContext(ctx context.Context) (MD, bool) { } // ValueFromIncomingContext returns the metadata value corresponding to the metadata -// key from the incoming metadata if it exists. Key must be lower-case. +// key from the incoming metadata if it exists. Keys are matched in a case insensitive +// manner. // // # Experimental // @@ -219,33 +228,29 @@ func ValueFromIncomingContext(ctx context.Context, key string) []string { return copyOf(v) } for k, v := range md { - // We need to manually convert all keys to lower case, because MD is a - // map, and there's no guarantee that the MD attached to the context is - // created using our helper functions. - if strings.ToLower(k) == key { + // Case insenitive comparison: MD is a map, and there's no guarantee + // that the MD attached to the context is created using our helper + // functions. + if strings.EqualFold(k, key) { return copyOf(v) } } return nil } -// the returned slice must not be modified in place func copyOf(v []string) []string { vals := make([]string, len(v)) copy(vals, v) return vals } -// FromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD. +// fromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD. // // Remember to perform strings.ToLower on the keys, for both the returned MD (MD // is a map, there's no guarantee it's created using our helper functions) and // the extra kv pairs (AppendToOutgoingContext doesn't turn them into // lowercase). -// -// This is intended for gRPC-internal use ONLY. Users should use -// FromOutgoingContext instead. -func FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) { +func fromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) { raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD) if !ok { return nil, nil, false diff --git a/vendor/google.golang.org/grpc/peer/peer.go b/vendor/google.golang.org/grpc/peer/peer.go index e01d219..a821ff9 100644 --- a/vendor/google.golang.org/grpc/peer/peer.go +++ b/vendor/google.golang.org/grpc/peer/peer.go @@ -32,6 +32,8 @@ import ( type Peer struct { // Addr is the peer address. Addr net.Addr + // LocalAddr is the local address. + LocalAddr net.Addr // AuthInfo is the authentication information of the transport. // It is nil if there is no transport security being used. AuthInfo credentials.AuthInfo diff --git a/vendor/google.golang.org/grpc/picker_wrapper.go b/vendor/google.golang.org/grpc/picker_wrapper.go index 236837f..bf56faa 100644 --- a/vendor/google.golang.org/grpc/picker_wrapper.go +++ b/vendor/google.golang.org/grpc/picker_wrapper.go @@ -37,7 +37,6 @@ import ( type pickerWrapper struct { mu sync.Mutex done bool - idle bool blockingCh chan struct{} picker balancer.Picker statsHandlers []stats.Handler // to record blocking picker calls @@ -53,11 +52,7 @@ func newPickerWrapper(statsHandlers []stats.Handler) *pickerWrapper { // updatePicker is called by UpdateBalancerState. It unblocks all blocked pick. func (pw *pickerWrapper) updatePicker(p balancer.Picker) { pw.mu.Lock() - if pw.done || pw.idle { - // There is a small window where a picker update from the LB policy can - // race with the channel going to idle mode. If the picker is idle here, - // it is because the channel asked it to do so, and therefore it is sage - // to ignore the update from the LB policy. + if pw.done { pw.mu.Unlock() return } @@ -210,23 +205,15 @@ func (pw *pickerWrapper) close() { close(pw.blockingCh) } -func (pw *pickerWrapper) enterIdleMode() { - pw.mu.Lock() - defer pw.mu.Unlock() - if pw.done { - return - } - pw.idle = true -} - -func (pw *pickerWrapper) exitIdleMode() { +// reset clears the pickerWrapper and prepares it for being used again when idle +// mode is exited. +func (pw *pickerWrapper) reset() { pw.mu.Lock() defer pw.mu.Unlock() if pw.done { return } pw.blockingCh = make(chan struct{}) - pw.idle = false } // dropError is a wrapper error that indicates the LB policy wishes to drop the diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/pickfirst.go index 2e9cf66..5128f93 100644 --- a/vendor/google.golang.org/grpc/pickfirst.go +++ b/vendor/google.golang.org/grpc/pickfirst.go @@ -25,7 +25,6 @@ import ( "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" - "google.golang.org/grpc/internal/envconfig" internalgrpclog "google.golang.org/grpc/internal/grpclog" "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/internal/pretty" @@ -65,19 +64,6 @@ type pfConfig struct { } func (*pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) { - if !envconfig.PickFirstLBConfig { - // Prior to supporting loadbalancing configuration, the pick_first LB - // policy did not implement the balancer.ConfigParser interface. This - // meant that if a non-empty configuration was passed to it, the service - // config unmarshaling code would throw a warning log, but would - // continue using the pick_first LB policy. The code below ensures the - // same behavior is retained if the env var is not set. - if string(js) != "{}" { - logger.Warningf("Ignoring non-empty balancer configuration %q for the pick_first LB policy", string(js)) - } - return nil, nil - } - var cfg pfConfig if err := json.Unmarshal(js, &cfg); err != nil { return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err) diff --git a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go new file mode 100644 index 0000000..14aa6f2 --- /dev/null +++ b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go @@ -0,0 +1,36 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package dns implements a dns resolver to be installed as the default resolver +// in grpc. +// +// Deprecated: this package is imported by grpc and should not need to be +// imported directly by users. +package dns + +import ( + "google.golang.org/grpc/internal/resolver/dns" + "google.golang.org/grpc/resolver" +) + +// NewBuilder creates a dnsBuilder which is used to factory DNS resolvers. +// +// Deprecated: import grpc and use resolver.Get("dns") instead. +func NewBuilder() resolver.Builder { + return dns.NewBuilder() +} diff --git a/vendor/google.golang.org/grpc/resolver/map.go b/vendor/google.golang.org/grpc/resolver/map.go index 804be88..ada5b9b 100644 --- a/vendor/google.golang.org/grpc/resolver/map.go +++ b/vendor/google.golang.org/grpc/resolver/map.go @@ -136,3 +136,116 @@ func (a *AddressMap) Values() []any { } return ret } + +type endpointNode struct { + addrs map[string]struct{} +} + +// Equal returns whether the unordered set of addrs are the same between the +// endpoint nodes. +func (en *endpointNode) Equal(en2 *endpointNode) bool { + if len(en.addrs) != len(en2.addrs) { + return false + } + for addr := range en.addrs { + if _, ok := en2.addrs[addr]; !ok { + return false + } + } + return true +} + +func toEndpointNode(endpoint Endpoint) endpointNode { + en := make(map[string]struct{}) + for _, addr := range endpoint.Addresses { + en[addr.Addr] = struct{}{} + } + return endpointNode{ + addrs: en, + } +} + +// EndpointMap is a map of endpoints to arbitrary values keyed on only the +// unordered set of address strings within an endpoint. This map is not thread +// safe, thus it is unsafe to access concurrently. Must be created via +// NewEndpointMap; do not construct directly. +type EndpointMap struct { + endpoints map[*endpointNode]any +} + +// NewEndpointMap creates a new EndpointMap. +func NewEndpointMap() *EndpointMap { + return &EndpointMap{ + endpoints: make(map[*endpointNode]any), + } +} + +// Get returns the value for the address in the map, if present. +func (em *EndpointMap) Get(e Endpoint) (value any, ok bool) { + en := toEndpointNode(e) + if endpoint := em.find(en); endpoint != nil { + return em.endpoints[endpoint], true + } + return nil, false +} + +// Set updates or adds the value to the address in the map. +func (em *EndpointMap) Set(e Endpoint, value any) { + en := toEndpointNode(e) + if endpoint := em.find(en); endpoint != nil { + em.endpoints[endpoint] = value + return + } + em.endpoints[&en] = value +} + +// Len returns the number of entries in the map. +func (em *EndpointMap) Len() int { + return len(em.endpoints) +} + +// Keys returns a slice of all current map keys, as endpoints specifying the +// addresses present in the endpoint keys, in which uniqueness is determined by +// the unordered set of addresses. Thus, endpoint information returned is not +// the full endpoint data (drops duplicated addresses and attributes) but can be +// used for EndpointMap accesses. +func (em *EndpointMap) Keys() []Endpoint { + ret := make([]Endpoint, 0, len(em.endpoints)) + for en := range em.endpoints { + var endpoint Endpoint + for addr := range en.addrs { + endpoint.Addresses = append(endpoint.Addresses, Address{Addr: addr}) + } + ret = append(ret, endpoint) + } + return ret +} + +// Values returns a slice of all current map values. +func (em *EndpointMap) Values() []any { + ret := make([]any, 0, len(em.endpoints)) + for _, val := range em.endpoints { + ret = append(ret, val) + } + return ret +} + +// find returns a pointer to the endpoint node in em if the endpoint node is +// already present. If not found, nil is returned. The comparisons are done on +// the unordered set of addresses within an endpoint. +func (em EndpointMap) find(e endpointNode) *endpointNode { + for endpoint := range em.endpoints { + if e.Equal(endpoint) { + return endpoint + } + } + return nil +} + +// Delete removes the specified endpoint from the map. +func (em *EndpointMap) Delete(e Endpoint) { + en := toEndpointNode(e) + if entry := em.find(en); entry != nil { + delete(em.endpoints, entry) + } +} diff --git a/vendor/google.golang.org/grpc/resolver/resolver.go b/vendor/google.golang.org/grpc/resolver/resolver.go index 11384e2..adf89dd 100644 --- a/vendor/google.golang.org/grpc/resolver/resolver.go +++ b/vendor/google.golang.org/grpc/resolver/resolver.go @@ -240,11 +240,6 @@ type ClientConn interface { // // Deprecated: Use UpdateState instead. NewAddress(addresses []Address) - // NewServiceConfig is called by resolver to notify ClientConn a new - // service config. The service config should be provided as a json string. - // - // Deprecated: Use UpdateState instead. - NewServiceConfig(serviceConfig string) // ParseServiceConfig parses the provided service config and returns an // object that provides the parsed config. ParseServiceConfig(serviceConfigJSON string) *serviceconfig.ParseResult @@ -286,6 +281,11 @@ func (t Target) Endpoint() string { return strings.TrimPrefix(endpoint, "/") } +// String returns a string representation of Target. +func (t Target) String() string { + return t.URL.String() +} + // Builder creates a resolver that will be used to watch name resolution updates. type Builder interface { // Build creates a new resolver for the given target. @@ -314,3 +314,13 @@ type Resolver interface { // Close closes the resolver. Close() } + +// AuthorityOverrider is implemented by Builders that wish to override the +// default authority for the ClientConn. +// By default, the authority used is target.Endpoint(). +type AuthorityOverrider interface { + // OverrideAuthority returns the authority to use for a ClientConn with the + // given target. The implementation must generate it without blocking, + // typically in line, and must keep it unchanged. + OverrideAuthority(Target) string +} diff --git a/vendor/google.golang.org/grpc/resolver_conn_wrapper.go b/vendor/google.golang.org/grpc/resolver_conn_wrapper.go deleted file mode 100644 index d683305..0000000 --- a/vendor/google.golang.org/grpc/resolver_conn_wrapper.go +++ /dev/null @@ -1,247 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "context" - "strings" - "sync" - - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/internal/channelz" - "google.golang.org/grpc/internal/grpcsync" - "google.golang.org/grpc/internal/pretty" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/serviceconfig" -) - -// resolverStateUpdater wraps the single method used by ccResolverWrapper to -// report a state update from the actual resolver implementation. -type resolverStateUpdater interface { - updateResolverState(s resolver.State, err error) error -} - -// ccResolverWrapper is a wrapper on top of cc for resolvers. -// It implements resolver.ClientConn interface. -type ccResolverWrapper struct { - // The following fields are initialized when the wrapper is created and are - // read-only afterwards, and therefore can be accessed without a mutex. - cc resolverStateUpdater - channelzID *channelz.Identifier - ignoreServiceConfig bool - opts ccResolverWrapperOpts - serializer *grpcsync.CallbackSerializer // To serialize all incoming calls. - serializerCancel context.CancelFunc // To close the serializer, accessed only from close(). - - // All incoming (resolver --> gRPC) calls are guaranteed to execute in a - // mutually exclusive manner as they are scheduled on the serializer. - // Fields accessed *only* in these serializer callbacks, can therefore be - // accessed without a mutex. - curState resolver.State - - // mu guards access to the below fields. - mu sync.Mutex - closed bool - resolver resolver.Resolver // Accessed only from outgoing calls. -} - -// ccResolverWrapperOpts wraps the arguments to be passed when creating a new -// ccResolverWrapper. -type ccResolverWrapperOpts struct { - target resolver.Target // User specified dial target to resolve. - builder resolver.Builder // Resolver builder to use. - bOpts resolver.BuildOptions // Resolver build options to use. - channelzID *channelz.Identifier // Channelz identifier for the channel. -} - -// newCCResolverWrapper uses the resolver.Builder to build a Resolver and -// returns a ccResolverWrapper object which wraps the newly built resolver. -func newCCResolverWrapper(cc resolverStateUpdater, opts ccResolverWrapperOpts) (*ccResolverWrapper, error) { - ctx, cancel := context.WithCancel(context.Background()) - ccr := &ccResolverWrapper{ - cc: cc, - channelzID: opts.channelzID, - ignoreServiceConfig: opts.bOpts.DisableServiceConfig, - opts: opts, - serializer: grpcsync.NewCallbackSerializer(ctx), - serializerCancel: cancel, - } - - // Cannot hold the lock at build time because the resolver can send an - // update or error inline and these incoming calls grab the lock to schedule - // a callback in the serializer. - r, err := opts.builder.Build(opts.target, ccr, opts.bOpts) - if err != nil { - cancel() - return nil, err - } - - // Any error reported by the resolver at build time that leads to a - // re-resolution request from the balancer is dropped by grpc until we - // return from this function. So, we don't have to handle pending resolveNow - // requests here. - ccr.mu.Lock() - ccr.resolver = r - ccr.mu.Unlock() - - return ccr, nil -} - -func (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) { - ccr.mu.Lock() - defer ccr.mu.Unlock() - - // ccr.resolver field is set only after the call to Build() returns. But in - // the process of building, the resolver may send an error update which when - // propagated to the balancer may result in a re-resolution request. - if ccr.closed || ccr.resolver == nil { - return - } - ccr.resolver.ResolveNow(o) -} - -func (ccr *ccResolverWrapper) close() { - ccr.mu.Lock() - if ccr.closed { - ccr.mu.Unlock() - return - } - - channelz.Info(logger, ccr.channelzID, "Closing the name resolver") - - // Close the serializer to ensure that no more calls from the resolver are - // handled, before actually closing the resolver. - ccr.serializerCancel() - ccr.closed = true - r := ccr.resolver - ccr.mu.Unlock() - - // Give enqueued callbacks a chance to finish. - <-ccr.serializer.Done() - - // Spawn a goroutine to close the resolver (since it may block trying to - // cleanup all allocated resources) and return early. - go r.Close() -} - -// serializerScheduleLocked is a convenience method to schedule a function to be -// run on the serializer while holding ccr.mu. -func (ccr *ccResolverWrapper) serializerScheduleLocked(f func(context.Context)) { - ccr.mu.Lock() - ccr.serializer.Schedule(f) - ccr.mu.Unlock() -} - -// UpdateState is called by resolver implementations to report new state to gRPC -// which includes addresses and service config. -func (ccr *ccResolverWrapper) UpdateState(s resolver.State) error { - errCh := make(chan error, 1) - if s.Endpoints == nil { - s.Endpoints = make([]resolver.Endpoint, 0, len(s.Addresses)) - for _, a := range s.Addresses { - ep := resolver.Endpoint{Addresses: []resolver.Address{a}, Attributes: a.BalancerAttributes} - ep.Addresses[0].BalancerAttributes = nil - s.Endpoints = append(s.Endpoints, ep) - } - } - ok := ccr.serializer.Schedule(func(context.Context) { - ccr.addChannelzTraceEvent(s) - ccr.curState = s - if err := ccr.cc.updateResolverState(ccr.curState, nil); err == balancer.ErrBadResolverState { - errCh <- balancer.ErrBadResolverState - return - } - errCh <- nil - }) - if !ok { - // The only time when Schedule() fail to add the callback to the - // serializer is when the serializer is closed, and this happens only - // when the resolver wrapper is closed. - return nil - } - return <-errCh -} - -// ReportError is called by resolver implementations to report errors -// encountered during name resolution to gRPC. -func (ccr *ccResolverWrapper) ReportError(err error) { - ccr.serializerScheduleLocked(func(_ context.Context) { - channelz.Warningf(logger, ccr.channelzID, "ccResolverWrapper: reporting error to cc: %v", err) - ccr.cc.updateResolverState(resolver.State{}, err) - }) -} - -// NewAddress is called by the resolver implementation to send addresses to -// gRPC. -func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { - ccr.serializerScheduleLocked(func(_ context.Context) { - ccr.addChannelzTraceEvent(resolver.State{Addresses: addrs, ServiceConfig: ccr.curState.ServiceConfig}) - ccr.curState.Addresses = addrs - ccr.cc.updateResolverState(ccr.curState, nil) - }) -} - -// NewServiceConfig is called by the resolver implementation to send service -// configs to gRPC. -func (ccr *ccResolverWrapper) NewServiceConfig(sc string) { - ccr.serializerScheduleLocked(func(_ context.Context) { - channelz.Infof(logger, ccr.channelzID, "ccResolverWrapper: got new service config: %s", sc) - if ccr.ignoreServiceConfig { - channelz.Info(logger, ccr.channelzID, "Service config lookups disabled; ignoring config") - return - } - scpr := parseServiceConfig(sc) - if scpr.Err != nil { - channelz.Warningf(logger, ccr.channelzID, "ccResolverWrapper: error parsing service config: %v", scpr.Err) - return - } - ccr.addChannelzTraceEvent(resolver.State{Addresses: ccr.curState.Addresses, ServiceConfig: scpr}) - ccr.curState.ServiceConfig = scpr - ccr.cc.updateResolverState(ccr.curState, nil) - }) -} - -// ParseServiceConfig is called by resolver implementations to parse a JSON -// representation of the service config. -func (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult { - return parseServiceConfig(scJSON) -} - -// addChannelzTraceEvent adds a channelz trace event containing the new -// state received from resolver implementations. -func (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) { - var updates []string - var oldSC, newSC *ServiceConfig - var oldOK, newOK bool - if ccr.curState.ServiceConfig != nil { - oldSC, oldOK = ccr.curState.ServiceConfig.Config.(*ServiceConfig) - } - if s.ServiceConfig != nil { - newSC, newOK = s.ServiceConfig.Config.(*ServiceConfig) - } - if oldOK != newOK || (oldOK && newOK && oldSC.rawJSONString != newSC.rawJSONString) { - updates = append(updates, "service config updated") - } - if len(ccr.curState.Addresses) > 0 && len(s.Addresses) == 0 { - updates = append(updates, "resolver returned an empty address list") - } else if len(ccr.curState.Addresses) == 0 && len(s.Addresses) > 0 { - updates = append(updates, "resolver returned new addresses") - } - channelz.Infof(logger, ccr.channelzID, "Resolver state updated: %s (%v)", pretty.ToJSON(s), strings.Join(updates, "; ")) -} diff --git a/vendor/google.golang.org/grpc/resolver_wrapper.go b/vendor/google.golang.org/grpc/resolver_wrapper.go new file mode 100644 index 0000000..c79bab1 --- /dev/null +++ b/vendor/google.golang.org/grpc/resolver_wrapper.go @@ -0,0 +1,197 @@ +/* + * + * Copyright 2017 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package grpc + +import ( + "context" + "strings" + "sync" + + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcsync" + "google.golang.org/grpc/internal/pretty" + "google.golang.org/grpc/resolver" + "google.golang.org/grpc/serviceconfig" +) + +// ccResolverWrapper is a wrapper on top of cc for resolvers. +// It implements resolver.ClientConn interface. +type ccResolverWrapper struct { + // The following fields are initialized when the wrapper is created and are + // read-only afterwards, and therefore can be accessed without a mutex. + cc *ClientConn + ignoreServiceConfig bool + serializer *grpcsync.CallbackSerializer + serializerCancel context.CancelFunc + + resolver resolver.Resolver // only accessed within the serializer + + // The following fields are protected by mu. Caller must take cc.mu before + // taking mu. + mu sync.Mutex + curState resolver.State + closed bool +} + +// newCCResolverWrapper initializes the ccResolverWrapper. It can only be used +// after calling start, which builds the resolver. +func newCCResolverWrapper(cc *ClientConn) *ccResolverWrapper { + ctx, cancel := context.WithCancel(cc.ctx) + return &ccResolverWrapper{ + cc: cc, + ignoreServiceConfig: cc.dopts.disableServiceConfig, + serializer: grpcsync.NewCallbackSerializer(ctx), + serializerCancel: cancel, + } +} + +// start builds the name resolver using the resolver.Builder in cc and returns +// any error encountered. It must always be the first operation performed on +// any newly created ccResolverWrapper, except that close may be called instead. +func (ccr *ccResolverWrapper) start() error { + errCh := make(chan error) + ccr.serializer.Schedule(func(ctx context.Context) { + if ctx.Err() != nil { + return + } + opts := resolver.BuildOptions{ + DisableServiceConfig: ccr.cc.dopts.disableServiceConfig, + DialCreds: ccr.cc.dopts.copts.TransportCredentials, + CredsBundle: ccr.cc.dopts.copts.CredsBundle, + Dialer: ccr.cc.dopts.copts.Dialer, + } + var err error + ccr.resolver, err = ccr.cc.resolverBuilder.Build(ccr.cc.parsedTarget, ccr, opts) + errCh <- err + }) + return <-errCh +} + +func (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) { + ccr.serializer.Schedule(func(ctx context.Context) { + if ctx.Err() != nil || ccr.resolver == nil { + return + } + ccr.resolver.ResolveNow(o) + }) +} + +// close initiates async shutdown of the wrapper. To determine the wrapper has +// finished shutting down, the channel should block on ccr.serializer.Done() +// without cc.mu held. +func (ccr *ccResolverWrapper) close() { + channelz.Info(logger, ccr.cc.channelzID, "Closing the name resolver") + ccr.mu.Lock() + ccr.closed = true + ccr.mu.Unlock() + + ccr.serializer.Schedule(func(context.Context) { + if ccr.resolver == nil { + return + } + ccr.resolver.Close() + ccr.resolver = nil + }) + ccr.serializerCancel() +} + +// UpdateState is called by resolver implementations to report new state to gRPC +// which includes addresses and service config. +func (ccr *ccResolverWrapper) UpdateState(s resolver.State) error { + ccr.cc.mu.Lock() + ccr.mu.Lock() + if ccr.closed { + ccr.mu.Unlock() + ccr.cc.mu.Unlock() + return nil + } + if s.Endpoints == nil { + s.Endpoints = make([]resolver.Endpoint, 0, len(s.Addresses)) + for _, a := range s.Addresses { + ep := resolver.Endpoint{Addresses: []resolver.Address{a}, Attributes: a.BalancerAttributes} + ep.Addresses[0].BalancerAttributes = nil + s.Endpoints = append(s.Endpoints, ep) + } + } + ccr.addChannelzTraceEvent(s) + ccr.curState = s + ccr.mu.Unlock() + return ccr.cc.updateResolverStateAndUnlock(s, nil) +} + +// ReportError is called by resolver implementations to report errors +// encountered during name resolution to gRPC. +func (ccr *ccResolverWrapper) ReportError(err error) { + ccr.cc.mu.Lock() + ccr.mu.Lock() + if ccr.closed { + ccr.mu.Unlock() + ccr.cc.mu.Unlock() + return + } + ccr.mu.Unlock() + channelz.Warningf(logger, ccr.cc.channelzID, "ccResolverWrapper: reporting error to cc: %v", err) + ccr.cc.updateResolverStateAndUnlock(resolver.State{}, err) +} + +// NewAddress is called by the resolver implementation to send addresses to +// gRPC. +func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { + ccr.cc.mu.Lock() + ccr.mu.Lock() + if ccr.closed { + ccr.mu.Unlock() + ccr.cc.mu.Unlock() + return + } + s := resolver.State{Addresses: addrs, ServiceConfig: ccr.curState.ServiceConfig} + ccr.addChannelzTraceEvent(s) + ccr.curState = s + ccr.mu.Unlock() + ccr.cc.updateResolverStateAndUnlock(s, nil) +} + +// ParseServiceConfig is called by resolver implementations to parse a JSON +// representation of the service config. +func (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult { + return parseServiceConfig(scJSON) +} + +// addChannelzTraceEvent adds a channelz trace event containing the new +// state received from resolver implementations. +func (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) { + var updates []string + var oldSC, newSC *ServiceConfig + var oldOK, newOK bool + if ccr.curState.ServiceConfig != nil { + oldSC, oldOK = ccr.curState.ServiceConfig.Config.(*ServiceConfig) + } + if s.ServiceConfig != nil { + newSC, newOK = s.ServiceConfig.Config.(*ServiceConfig) + } + if oldOK != newOK || (oldOK && newOK && oldSC.rawJSONString != newSC.rawJSONString) { + updates = append(updates, "service config updated") + } + if len(ccr.curState.Addresses) > 0 && len(s.Addresses) == 0 { + updates = append(updates, "resolver returned an empty address list") + } else if len(ccr.curState.Addresses) == 0 && len(s.Addresses) > 0 { + updates = append(updates, "resolver returned new addresses") + } + channelz.Infof(logger, ccr.cc.channelzID, "Resolver state updated: %s (%v)", pretty.ToJSON(s), strings.Join(updates, "; ")) +} diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go index b7723aa..a4b6bc6 100644 --- a/vendor/google.golang.org/grpc/rpc_util.go +++ b/vendor/google.golang.org/grpc/rpc_util.go @@ -640,14 +640,18 @@ func encode(c baseCodec, msg any) ([]byte, error) { return b, nil } -// compress returns the input bytes compressed by compressor or cp. If both -// compressors are nil, returns nil. +// compress returns the input bytes compressed by compressor or cp. +// If both compressors are nil, or if the message has zero length, returns nil, +// indicating no compression was done. // // TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor. func compress(in []byte, cp Compressor, compressor encoding.Compressor) ([]byte, error) { if compressor == nil && cp == nil { return nil, nil } + if len(in) == 0 { + return nil, nil + } wrapErr := func(err error) error { return status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error()) } diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index eeae92f..e89c5ac 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -70,9 +70,10 @@ func init() { internal.GetServerCredentials = func(srv *Server) credentials.TransportCredentials { return srv.opts.creds } - internal.DrainServerTransports = func(srv *Server, addr string) { - srv.drainServerTransports(addr) + internal.IsRegisteredMethod = func(srv *Server, method string) bool { + return srv.isRegisteredMethod(method) } + internal.ServerFromContext = serverFromContext internal.AddGlobalServerOptions = func(opt ...ServerOption) { globalServerOptions = append(globalServerOptions, opt...) } @@ -81,6 +82,7 @@ func init() { } internal.BinaryLogger = binaryLogger internal.JoinServerOptions = newJoinServerOption + internal.RecvBufferPool = recvBufferPool } var statusOK = status.New(codes.OK, "") @@ -134,12 +136,14 @@ type Server struct { quit *grpcsync.Event done *grpcsync.Event channelzRemoveOnce sync.Once - serveWG sync.WaitGroup // counts active Serve goroutines for GracefulStop + serveWG sync.WaitGroup // counts active Serve goroutines for Stop/GracefulStop + handlersWG sync.WaitGroup // counts active method handler goroutines channelzID *channelz.Identifier czData *channelzData - serverWorkerChannel chan func() + serverWorkerChannel chan func() + serverWorkerChannelClose func() } type serverOptions struct { @@ -170,6 +174,7 @@ type serverOptions struct { headerTableSize *uint32 numServerWorkers uint32 recvBufferPool SharedBufferPool + waitForHandlers bool } var defaultServerOptions = serverOptions{ @@ -567,6 +572,21 @@ func NumStreamWorkers(numServerWorkers uint32) ServerOption { }) } +// WaitForHandlers cause Stop to wait until all outstanding method handlers have +// exited before returning. If false, Stop will return as soon as all +// connections have closed, but method handlers may still be running. By +// default, Stop does not wait for method handlers to return. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func WaitForHandlers(w bool) ServerOption { + return newFuncServerOption(func(o *serverOptions) { + o.waitForHandlers = w + }) +} + // RecvBufferPool returns a ServerOption that configures the server // to use the provided shared buffer pool for parsing incoming messages. Depending // on the application's workload, this could result in reduced memory allocation. @@ -578,11 +598,13 @@ func NumStreamWorkers(numServerWorkers uint32) ServerOption { // options are used: StatsHandler, EnableTracing, or binary logging. In such // cases, the shared buffer pool will be ignored. // -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// Deprecated: use experimental.WithRecvBufferPool instead. Will be deleted in +// v1.60.0 or later. func RecvBufferPool(bufferPool SharedBufferPool) ServerOption { + return recvBufferPool(bufferPool) +} + +func recvBufferPool(bufferPool SharedBufferPool) ServerOption { return newFuncServerOption(func(o *serverOptions) { o.recvBufferPool = bufferPool }) @@ -616,15 +638,14 @@ func (s *Server) serverWorker() { // connections to reduce the time spent overall on runtime.morestack. func (s *Server) initServerWorkers() { s.serverWorkerChannel = make(chan func()) + s.serverWorkerChannelClose = grpcsync.OnceFunc(func() { + close(s.serverWorkerChannel) + }) for i := uint32(0); i < s.opts.numServerWorkers; i++ { go s.serverWorker() } } -func (s *Server) stopServerWorkers() { - close(s.serverWorkerChannel) -} - // NewServer creates a gRPC server which has no service registered and has not // started to accept requests yet. func NewServer(opt ...ServerOption) *Server { @@ -806,6 +827,18 @@ func (l *listenSocket) Close() error { // Serve returns when lis.Accept fails with fatal errors. lis will be closed when // this method returns. // Serve will return a non-nil error unless Stop or GracefulStop is called. +// +// Note: All supported releases of Go (as of December 2023) override the OS +// defaults for TCP keepalive time and interval to 15s. To enable TCP keepalive +// with OS defaults for keepalive time and interval, callers need to do the +// following two things: +// - pass a net.Listener created by calling the Listen method on a +// net.ListenConfig with the `KeepAlive` field set to a negative value. This +// will result in the Go standard library not overriding OS defaults for TCP +// keepalive interval and time. But this will also result in the Go standard +// library not enabling TCP keepalives by default. +// - override the Accept method on the passed in net.Listener and set the +// SO_KEEPALIVE socket option to enable TCP keepalives, with OS defaults. func (s *Server) Serve(lis net.Listener) error { s.mu.Lock() s.printf("serving") @@ -913,24 +946,21 @@ func (s *Server) handleRawConn(lisAddr string, rawConn net.Conn) { return } + if cc, ok := rawConn.(interface { + PassServerTransport(transport.ServerTransport) + }); ok { + cc.PassServerTransport(st) + } + if !s.addConn(lisAddr, st) { return } go func() { - s.serveStreams(st) + s.serveStreams(context.Background(), st, rawConn) s.removeConn(lisAddr, st) }() } -func (s *Server) drainServerTransports(addr string) { - s.mu.Lock() - conns := s.conns[addr] - for st := range conns { - st.Drain("") - } - s.mu.Unlock() -} - // newHTTP2Transport sets up a http/2 transport (using the // gRPC http2 server transport in transport/http2_server.go). func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { @@ -971,19 +1001,32 @@ func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { return st } -func (s *Server) serveStreams(st transport.ServerTransport) { - defer st.Close(errors.New("finished serving streams for the server transport")) - var wg sync.WaitGroup +func (s *Server) serveStreams(ctx context.Context, st transport.ServerTransport, rawConn net.Conn) { + ctx = transport.SetConnection(ctx, rawConn) + ctx = peer.NewContext(ctx, st.Peer()) + for _, sh := range s.opts.statsHandlers { + ctx = sh.TagConn(ctx, &stats.ConnTagInfo{ + RemoteAddr: st.Peer().Addr, + LocalAddr: st.Peer().LocalAddr, + }) + sh.HandleConn(ctx, &stats.ConnBegin{}) + } - streamQuota := newHandlerQuota(s.opts.maxConcurrentStreams) - st.HandleStreams(func(stream *transport.Stream) { - wg.Add(1) + defer func() { + st.Close(errors.New("finished serving streams for the server transport")) + for _, sh := range s.opts.statsHandlers { + sh.HandleConn(ctx, &stats.ConnEnd{}) + } + }() + streamQuota := newHandlerQuota(s.opts.maxConcurrentStreams) + st.HandleStreams(ctx, func(stream *transport.Stream) { + s.handlersWG.Add(1) streamQuota.acquire() f := func() { defer streamQuota.release() - defer wg.Done() - s.handleStream(st, stream, s.traceInfo(st, stream)) + defer s.handlersWG.Done() + s.handleStream(st, stream) } if s.opts.numServerWorkers > 0 { @@ -995,14 +1038,7 @@ func (s *Server) serveStreams(st transport.ServerTransport) { } } go f() - }, func(ctx context.Context, method string) context.Context { - if !EnableTracing { - return ctx - } - tr := trace.New("grpc.Recv."+methodFamily(method), method) - return trace.NewContext(ctx, tr) }) - wg.Wait() } var _ http.Handler = (*Server)(nil) @@ -1046,31 +1082,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } defer s.removeConn(listenerAddressForServeHTTP, st) - s.serveStreams(st) -} - -// traceInfo returns a traceInfo and associates it with stream, if tracing is enabled. -// If tracing is not enabled, it returns nil. -func (s *Server) traceInfo(st transport.ServerTransport, stream *transport.Stream) (trInfo *traceInfo) { - if !EnableTracing { - return nil - } - tr, ok := trace.FromContext(stream.Context()) - if !ok { - return nil - } - - trInfo = &traceInfo{ - tr: tr, - firstLine: firstLine{ - client: false, - remoteAddr: st.RemoteAddr(), - }, - } - if dl, ok := stream.Context().Deadline(); ok { - trInfo.firstLine.deadline = time.Until(dl) - } - return trInfo + s.serveStreams(r.Context(), st, nil) } func (s *Server) addConn(addr string, st transport.ServerTransport) bool { @@ -1133,7 +1145,7 @@ func (s *Server) incrCallsFailed() { atomic.AddInt64(&s.czData.callsFailed, 1) } -func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg any, cp Compressor, opts *transport.Options, comp encoding.Compressor) error { +func (s *Server) sendResponse(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, msg any, cp Compressor, opts *transport.Options, comp encoding.Compressor) error { data, err := encode(s.getCodec(stream.ContentSubtype()), msg) if err != nil { channelz.Error(logger, s.channelzID, "grpc: server failed to encode response: ", err) @@ -1152,7 +1164,7 @@ func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Str err = t.Write(stream, hdr, payload, opts) if err == nil { for _, sh := range s.opts.statsHandlers { - sh.HandleRPC(stream.Context(), outPayload(false, msg, data, payload, time.Now())) + sh.HandleRPC(ctx, outPayload(false, msg, data, payload, time.Now())) } } return err @@ -1194,7 +1206,7 @@ func getChainUnaryHandler(interceptors []UnaryServerInterceptor, curr int, info } } -func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) { +func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) { shs := s.opts.statsHandlers if len(shs) != 0 || trInfo != nil || channelz.IsOn() { if channelz.IsOn() { @@ -1208,7 +1220,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. IsClientStream: false, IsServerStream: false, } - sh.HandleRPC(stream.Context(), statsBegin) + sh.HandleRPC(ctx, statsBegin) } if trInfo != nil { trInfo.tr.LazyLog(&trInfo.firstLine, false) @@ -1240,7 +1252,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. if err != nil && err != io.EOF { end.Error = toRPCErr(err) } - sh.HandleRPC(stream.Context(), end) + sh.HandleRPC(ctx, end) } if channelz.IsOn() { @@ -1262,7 +1274,6 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } } if len(binlogs) != 0 { - ctx := stream.Context() md, _ := metadata.FromIncomingContext(ctx) logEntry := &binarylog.ClientHeader{ Header: md, @@ -1348,7 +1359,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err) } for _, sh := range shs { - sh.HandleRPC(stream.Context(), &stats.InPayload{ + sh.HandleRPC(ctx, &stats.InPayload{ RecvTime: time.Now(), Payload: v, Length: len(d), @@ -1362,7 +1373,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. Message: d, } for _, binlog := range binlogs { - binlog.Log(stream.Context(), cm) + binlog.Log(ctx, cm) } } if trInfo != nil { @@ -1370,7 +1381,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } return nil } - ctx := NewContextWithServerTransportStream(stream.Context(), stream) + ctx = NewContextWithServerTransportStream(ctx, stream) reply, appErr := md.Handler(info.serviceImpl, ctx, df, s.opts.unaryInt) if appErr != nil { appStatus, ok := status.FromError(appErr) @@ -1395,7 +1406,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. Header: h, } for _, binlog := range binlogs { - binlog.Log(stream.Context(), sh) + binlog.Log(ctx, sh) } } st := &binarylog.ServerTrailer{ @@ -1403,7 +1414,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. Err: appErr, } for _, binlog := range binlogs { - binlog.Log(stream.Context(), st) + binlog.Log(ctx, st) } } return appErr @@ -1418,7 +1429,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. if stream.SendCompress() != sendCompressorName { comp = encoding.GetCompressor(stream.SendCompress()) } - if err := s.sendResponse(t, stream, reply, cp, opts, comp); err != nil { + if err := s.sendResponse(ctx, t, stream, reply, cp, opts, comp); err != nil { if err == io.EOF { // The entire stream is done (for unary RPC only). return err @@ -1445,8 +1456,8 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. Err: appErr, } for _, binlog := range binlogs { - binlog.Log(stream.Context(), sh) - binlog.Log(stream.Context(), st) + binlog.Log(ctx, sh) + binlog.Log(ctx, st) } } return err @@ -1460,8 +1471,8 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. Message: reply, } for _, binlog := range binlogs { - binlog.Log(stream.Context(), sh) - binlog.Log(stream.Context(), sm) + binlog.Log(ctx, sh) + binlog.Log(ctx, sm) } } if channelz.IsOn() { @@ -1479,7 +1490,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. Err: appErr, } for _, binlog := range binlogs { - binlog.Log(stream.Context(), st) + binlog.Log(ctx, st) } } return t.WriteStatus(stream, statusOK) @@ -1521,7 +1532,7 @@ func getChainStreamHandler(interceptors []StreamServerInterceptor, curr int, inf } } -func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) { +func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTransport, stream *transport.Stream, info *serviceInfo, sd *StreamDesc, trInfo *traceInfo) (err error) { if channelz.IsOn() { s.incrCallsStarted() } @@ -1535,10 +1546,10 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp IsServerStream: sd.ServerStreams, } for _, sh := range shs { - sh.HandleRPC(stream.Context(), statsBegin) + sh.HandleRPC(ctx, statsBegin) } } - ctx := NewContextWithServerTransportStream(stream.Context(), stream) + ctx = NewContextWithServerTransportStream(ctx, stream) ss := &serverStream{ ctx: ctx, t: t, @@ -1574,7 +1585,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp end.Error = toRPCErr(err) } for _, sh := range shs { - sh.HandleRPC(stream.Context(), end) + sh.HandleRPC(ctx, end) } } @@ -1616,7 +1627,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp logEntry.PeerAddr = peer.Addr } for _, binlog := range ss.binlogs { - binlog.Log(stream.Context(), logEntry) + binlog.Log(ctx, logEntry) } } @@ -1694,7 +1705,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp Err: appErr, } for _, binlog := range ss.binlogs { - binlog.Log(stream.Context(), st) + binlog.Log(ctx, st) } } t.WriteStatus(ss.s, appStatus) @@ -1712,53 +1723,87 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp Err: appErr, } for _, binlog := range ss.binlogs { - binlog.Log(stream.Context(), st) + binlog.Log(ctx, st) } } return t.WriteStatus(ss.s, statusOK) } -func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Stream, trInfo *traceInfo) { +func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Stream) { + ctx := stream.Context() + ctx = contextWithServer(ctx, s) + var ti *traceInfo + if EnableTracing { + tr := trace.New("grpc.Recv."+methodFamily(stream.Method()), stream.Method()) + ctx = trace.NewContext(ctx, tr) + ti = &traceInfo{ + tr: tr, + firstLine: firstLine{ + client: false, + remoteAddr: t.Peer().Addr, + }, + } + if dl, ok := ctx.Deadline(); ok { + ti.firstLine.deadline = time.Until(dl) + } + } + sm := stream.Method() if sm != "" && sm[0] == '/' { sm = sm[1:] } pos := strings.LastIndex(sm, "/") if pos == -1 { - if trInfo != nil { - trInfo.tr.LazyLog(&fmtStringer{"Malformed method name %q", []any{sm}}, true) - trInfo.tr.SetError() + if ti != nil { + ti.tr.LazyLog(&fmtStringer{"Malformed method name %q", []any{sm}}, true) + ti.tr.SetError() } errDesc := fmt.Sprintf("malformed method name: %q", stream.Method()) if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { - if trInfo != nil { - trInfo.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true) - trInfo.tr.SetError() + if ti != nil { + ti.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true) + ti.tr.SetError() } channelz.Warningf(logger, s.channelzID, "grpc: Server.handleStream failed to write status: %v", err) } - if trInfo != nil { - trInfo.tr.Finish() + if ti != nil { + ti.tr.Finish() } return } service := sm[:pos] method := sm[pos+1:] + md, _ := metadata.FromIncomingContext(ctx) + for _, sh := range s.opts.statsHandlers { + ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()}) + sh.HandleRPC(ctx, &stats.InHeader{ + FullMethod: stream.Method(), + RemoteAddr: t.Peer().Addr, + LocalAddr: t.Peer().LocalAddr, + Compression: stream.RecvCompress(), + WireLength: stream.HeaderWireLength(), + Header: md, + }) + } + // To have calls in stream callouts work. Will delete once all stats handler + // calls come from the gRPC layer. + stream.SetContext(ctx) + srv, knownService := s.services[service] if knownService { if md, ok := srv.methods[method]; ok { - s.processUnaryRPC(t, stream, srv, md, trInfo) + s.processUnaryRPC(ctx, t, stream, srv, md, ti) return } if sd, ok := srv.streams[method]; ok { - s.processStreamingRPC(t, stream, srv, sd, trInfo) + s.processStreamingRPC(ctx, t, stream, srv, sd, ti) return } } // Unknown service, or known server unknown method. if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil { - s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo) + s.processStreamingRPC(ctx, t, stream, nil, unknownDesc, ti) return } var errDesc string @@ -1767,19 +1812,19 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str } else { errDesc = fmt.Sprintf("unknown method %v for service %v", method, service) } - if trInfo != nil { - trInfo.tr.LazyPrintf("%s", errDesc) - trInfo.tr.SetError() + if ti != nil { + ti.tr.LazyPrintf("%s", errDesc) + ti.tr.SetError() } if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { - if trInfo != nil { - trInfo.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true) - trInfo.tr.SetError() + if ti != nil { + ti.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true) + ti.tr.SetError() } channelz.Warningf(logger, s.channelzID, "grpc: Server.handleStream failed to write status: %v", err) } - if trInfo != nil { - trInfo.tr.Finish() + if ti != nil { + ti.tr.Finish() } } @@ -1834,62 +1879,72 @@ func ServerTransportStreamFromContext(ctx context.Context) ServerTransportStream // pending RPCs on the client side will get notified by connection // errors. func (s *Server) Stop() { - s.quit.Fire() + s.stop(false) +} - defer func() { - s.serveWG.Wait() - s.done.Fire() - }() +// GracefulStop stops the gRPC server gracefully. It stops the server from +// accepting new connections and RPCs and blocks until all the pending RPCs are +// finished. +func (s *Server) GracefulStop() { + s.stop(true) +} + +func (s *Server) stop(graceful bool) { + s.quit.Fire() + defer s.done.Fire() s.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelzID) }) s.mu.Lock() - listeners := s.lis - s.lis = nil - conns := s.conns - s.conns = nil - // interrupt GracefulStop if Stop and GracefulStop are called concurrently. - s.cv.Broadcast() + s.closeListenersLocked() + // Wait for serving threads to be ready to exit. Only then can we be sure no + // new conns will be created. s.mu.Unlock() + s.serveWG.Wait() - for lis := range listeners { - lis.Close() + s.mu.Lock() + defer s.mu.Unlock() + + if graceful { + s.drainAllServerTransportsLocked() + } else { + s.closeServerTransportsLocked() } - for _, cs := range conns { - for st := range cs { - st.Close(errors.New("Server.Stop called")) - } + + for len(s.conns) != 0 { + s.cv.Wait() } + s.conns = nil + if s.opts.numServerWorkers > 0 { - s.stopServerWorkers() + // Closing the channel (only once, via grpcsync.OnceFunc) after all the + // connections have been closed above ensures that there are no + // goroutines executing the callback passed to st.HandleStreams (where + // the channel is written to). + s.serverWorkerChannelClose() + } + + if graceful || s.opts.waitForHandlers { + s.handlersWG.Wait() } - s.mu.Lock() if s.events != nil { s.events.Finish() s.events = nil } - s.mu.Unlock() } -// GracefulStop stops the gRPC server gracefully. It stops the server from -// accepting new connections and RPCs and blocks until all the pending RPCs are -// finished. -func (s *Server) GracefulStop() { - s.quit.Fire() - defer s.done.Fire() - - s.channelzRemoveOnce.Do(func() { channelz.RemoveEntry(s.channelzID) }) - s.mu.Lock() - if s.conns == nil { - s.mu.Unlock() - return +// s.mu must be held by the caller. +func (s *Server) closeServerTransportsLocked() { + for _, conns := range s.conns { + for st := range conns { + st.Close(errors.New("Server.Stop called")) + } } +} - for lis := range s.lis { - lis.Close() - } - s.lis = nil +// s.mu must be held by the caller. +func (s *Server) drainAllServerTransportsLocked() { if !s.drain { for _, conns := range s.conns { for st := range conns { @@ -1898,22 +1953,14 @@ func (s *Server) GracefulStop() { } s.drain = true } +} - // Wait for serving threads to be ready to exit. Only then can we be sure no - // new conns will be created. - s.mu.Unlock() - s.serveWG.Wait() - s.mu.Lock() - - for len(s.conns) != 0 { - s.cv.Wait() - } - s.conns = nil - if s.events != nil { - s.events.Finish() - s.events = nil +// s.mu must be held by the caller. +func (s *Server) closeListenersLocked() { + for lis := range s.lis { + lis.Close() } - s.mu.Unlock() + s.lis = nil } // contentSubtype must be lowercase @@ -1927,11 +1974,50 @@ func (s *Server) getCodec(contentSubtype string) baseCodec { } codec := encoding.GetCodec(contentSubtype) if codec == nil { + logger.Warningf("Unsupported codec %q. Defaulting to %q for now. This will start to fail in future releases.", contentSubtype, proto.Name) return encoding.GetCodec(proto.Name) } return codec } +type serverKey struct{} + +// serverFromContext gets the Server from the context. +func serverFromContext(ctx context.Context) *Server { + s, _ := ctx.Value(serverKey{}).(*Server) + return s +} + +// contextWithServer sets the Server in the context. +func contextWithServer(ctx context.Context, server *Server) context.Context { + return context.WithValue(ctx, serverKey{}, server) +} + +// isRegisteredMethod returns whether the passed in method is registered as a +// method on the server. /service/method and service/method will match if the +// service and method are registered on the server. +func (s *Server) isRegisteredMethod(serviceMethod string) bool { + if serviceMethod != "" && serviceMethod[0] == '/' { + serviceMethod = serviceMethod[1:] + } + pos := strings.LastIndex(serviceMethod, "/") + if pos == -1 { // Invalid method name syntax. + return false + } + service := serviceMethod[:pos] + method := serviceMethod[pos+1:] + srv, knownService := s.services[service] + if knownService { + if _, ok := srv.methods[method]; ok { + return true + } + if _, ok := srv.streams[method]; ok { + return true + } + } + return false +} + // SetHeader sets the header metadata to be sent from the server to the client. // The context provided must be the context passed to the server's handler. // diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index b14b2fb..d621f52 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -48,6 +48,8 @@ import ( "google.golang.org/grpc/status" ) +var metadataFromOutgoingContextRaw = internal.FromOutgoingContextRaw.(func(context.Context) (metadata.MD, [][]string, bool)) + // StreamHandler defines the handler called by gRPC server to complete the // execution of a streaming RPC. // @@ -184,7 +186,7 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth // when the RPC completes. opts = append([]CallOption{OnFinish(func(error) { cc.idlenessMgr.OnCallEnd() })}, opts...) - if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok { + if md, added, ok := metadataFromOutgoingContextRaw(ctx); ok { // validate md if err := imetadata.Validate(md); err != nil { return nil, status.Error(codes.Internal, err.Error()) diff --git a/vendor/google.golang.org/grpc/tap/tap.go b/vendor/google.golang.org/grpc/tap/tap.go index bfa5dfa..07f0125 100644 --- a/vendor/google.golang.org/grpc/tap/tap.go +++ b/vendor/google.golang.org/grpc/tap/tap.go @@ -27,6 +27,8 @@ package tap import ( "context" + + "google.golang.org/grpc/metadata" ) // Info defines the relevant information needed by the handles. @@ -34,6 +36,10 @@ type Info struct { // FullMethodName is the string of grpc method (in the format of // /package.service/method). FullMethodName string + + // Header contains the header metadata received. + Header metadata.MD + // TODO: More to be added. } diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index 724ad21..f1aec4c 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.58.3" +const Version = "1.61.1" diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh index bbc9e2e..5da38a4 100644 --- a/vendor/google.golang.org/grpc/vet.sh +++ b/vendor/google.golang.org/grpc/vet.sh @@ -35,7 +35,6 @@ if [[ "$1" = "-install" ]]; then # Install the pinned versions as defined in module tools. pushd ./test/tools go install \ - golang.org/x/lint/golint \ golang.org/x/tools/cmd/goimports \ honnef.co/go/tools/cmd/staticcheck \ github.com/client9/misspell/cmd/misspell @@ -77,15 +76,19 @@ fi not grep 'func Test[^(]' *_test.go not grep 'func Test[^(]' test/*.go +# - Check for typos in test function names +git grep 'func (s) ' -- "*_test.go" | not grep -v 'func (s) Test' +git grep 'func [A-Z]' -- "*_test.go" | not grep -v 'func Test\|Benchmark\|Example' + # - Do not import x/net/context. not git grep -l 'x/net/context' -- "*.go" # - Do not import math/rand for real library code. Use internal/grpcrand for # thread safety. -git grep -l '"math/rand"' -- "*.go" 2>&1 | not grep -v '^examples\|^stress\|grpcrand\|^benchmark\|wrr_test' +git grep -l '"math/rand"' -- "*.go" 2>&1 | not grep -v '^examples\|^interop/stress\|grpcrand\|^benchmark\|wrr_test' # - Do not use "interface{}"; use "any" instead. -git grep -l 'interface{}' -- "*.go" 2>&1 | not grep -v '\.pb\.go\|protoc-gen-go-grpc' +git grep -l 'interface{}' -- "*.go" 2>&1 | not grep -v '\.pb\.go\|protoc-gen-go-grpc\|grpc_testing_not_regenerate' # - Do not call grpclog directly. Use grpclog.Component instead. git grep -l -e 'grpclog.I' --or -e 'grpclog.W' --or -e 'grpclog.E' --or -e 'grpclog.F' --or -e 'grpclog.V' -- "*.go" | not grep -v '^grpclog/component.go\|^internal/grpctest/tlogger_test.go' @@ -93,13 +96,15 @@ git grep -l -e 'grpclog.I' --or -e 'grpclog.W' --or -e 'grpclog.E' --or -e 'grpc # - Ensure all ptypes proto packages are renamed when importing. not git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go" +# - Ensure all usages of grpc_testing package are renamed when importing. +not git grep "\(import \|^\s*\)\"google.golang.org/grpc/interop/grpc_testing" -- "*.go" + # - Ensure all xds proto imports are renamed to *pb or *grpc. git grep '"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb "\|grpc "' misspell -error . -# - gofmt, goimports, golint (with exceptions for generated code), go vet, -# go mod tidy. +# - gofmt, goimports, go vet, go mod tidy. # Perform these checks on each module inside gRPC. for MOD_FILE in $(find . -name 'go.mod'); do MOD_DIR=$(dirname ${MOD_FILE}) @@ -107,7 +112,6 @@ for MOD_FILE in $(find . -name 'go.mod'); do go vet -all ./... | fail_on_output gofmt -s -d -l . 2>&1 | fail_on_output goimports -l . 2>&1 | not grep -vE "\.pb\.go" - golint ./... 2>&1 | not grep -vE "/grpc_testing_not_regenerate/.*\.pb\.go:" go mod tidy -compat=1.19 git status --porcelain 2>&1 | fail_on_output || \ @@ -116,94 +120,71 @@ for MOD_FILE in $(find . -name 'go.mod'); do done # - Collection of static analysis checks -# -# TODO(dfawley): don't use deprecated functions in examples or first-party -# plugins. -# TODO(dfawley): enable ST1019 (duplicate imports) but allow for protobufs. SC_OUT="$(mktemp)" -staticcheck -go 1.19 -checks 'inherit,-ST1015,-ST1019,-SA1019' ./... > "${SC_OUT}" || true -# Error if anything other than deprecation warnings are printed. -not grep -v "is deprecated:.*SA1019" "${SC_OUT}" -# Only ignore the following deprecated types/fields/functions. -not grep -Fv '.CredsBundle -.HeaderMap -.Metadata is deprecated: use Attributes -.NewAddress -.NewServiceConfig -.Type is deprecated: use Attributes -BuildVersion is deprecated -balancer.ErrTransientFailure -balancer.Picker -extDesc.Filename is deprecated -github.com/golang/protobuf/jsonpb is deprecated -grpc.CallCustomCodec -grpc.Code -grpc.Compressor -grpc.CustomCodec -grpc.Decompressor -grpc.MaxMsgSize -grpc.MethodConfig -grpc.NewGZIPCompressor -grpc.NewGZIPDecompressor -grpc.RPCCompressor -grpc.RPCDecompressor -grpc.ServiceConfig -grpc.WithCompressor -grpc.WithDecompressor -grpc.WithDialer -grpc.WithMaxMsgSize -grpc.WithServiceConfig -grpc.WithTimeout -http.CloseNotifier -info.SecurityVersion -proto is deprecated -proto.InternalMessageInfo is deprecated -proto.EnumName is deprecated -proto.ErrInternalBadWireType is deprecated -proto.FileDescriptor is deprecated -proto.Marshaler is deprecated -proto.MessageType is deprecated -proto.RegisterEnum is deprecated -proto.RegisterFile is deprecated -proto.RegisterType is deprecated -proto.RegisterExtension is deprecated -proto.RegisteredExtension is deprecated -proto.RegisteredExtensions is deprecated -proto.RegisterMapType is deprecated -proto.Unmarshaler is deprecated +staticcheck -go 1.19 -checks 'all' ./... > "${SC_OUT}" || true + +# Error for anything other than checks that need exclusions. +grep -v "(ST1000)" "${SC_OUT}" | grep -v "(SA1019)" | grep -v "(ST1003)" | not grep -v "(ST1019)\|\(other import of\)" + +# Exclude underscore checks for generated code. +grep "(ST1003)" "${SC_OUT}" | not grep -v '\(.pb.go:\)\|\(code_string_test.go:\)\|\(grpc_testing_not_regenerate\)' + +# Error for duplicate imports not including grpc protos. +grep "(ST1019)\|\(other import of\)" "${SC_OUT}" | not grep -Fv 'XXXXX PleaseIgnoreUnused +channelz/grpc_channelz_v1" +go-control-plane/envoy +grpclb/grpc_lb_v1" +health/grpc_health_v1" +interop/grpc_testing" +orca/v3" +proto/grpc_gcp" +proto/grpc_lookup_v1" +reflection/grpc_reflection_v1" +reflection/grpc_reflection_v1alpha" +XXXXX PleaseIgnoreUnused' + +# Error for any package comments not in generated code. +grep "(ST1000)" "${SC_OUT}" | not grep -v "\.pb\.go:" + +# Only ignore the following deprecated types/fields/functions and exclude +# generated code. +grep "(SA1019)" "${SC_OUT}" | not grep -Fv 'XXXXX PleaseIgnoreUnused +XXXXX Protobuf related deprecation errors: +"github.com/golang/protobuf +.pb.go: +grpc_testing_not_regenerate +: ptypes. +proto.RegisterType +XXXXX gRPC internal usage deprecation errors: +"google.golang.org/grpc +: grpc. +: v1alpha. +: v1alphareflectionpb. +BalancerAttributes is deprecated: +CredsBundle is deprecated: +Metadata is deprecated: use Attributes instead. +NewSubConn is deprecated: +OverrideServerName is deprecated: +RemoveSubConn is deprecated: +SecurityVersion is deprecated: Target is deprecated: Use the Target field in the BuildOptions instead. -xxx_messageInfo_ -' "${SC_OUT}" - -# - special golint on package comments. -lint_package_comment_per_package() { - # Number of files in this go package. - fileCount=$(go list -f '{{len .GoFiles}}' $1) - if [ ${fileCount} -eq 0 ]; then - return 0 - fi - # Number of package errors generated by golint. - lintPackageCommentErrorsCount=$(golint --min_confidence 0 $1 | grep -c "should have a package comment") - # golint complains about every file that's missing the package comment. If the - # number of files for this package is greater than the number of errors, there's - # at least one file with package comment, good. Otherwise, fail. - if [ ${fileCount} -le ${lintPackageCommentErrorsCount} ]; then - echo "Package $1 (with ${fileCount} files) is missing package comment" - return 1 - fi -} -lint_package_comment() { - set +ex - - count=0 - for i in $(go list ./...); do - lint_package_comment_per_package "$i" - ((count += $?)) - done - - set -ex - return $count -} -lint_package_comment +UpdateAddresses is deprecated: +UpdateSubConnState is deprecated: +balancer.ErrTransientFailure is deprecated: +grpc/reflection/v1alpha/reflection.proto +XXXXX xDS deprecated fields we support +.ExactMatch +.PrefixMatch +.SafeRegexMatch +.SuffixMatch +GetContainsMatch +GetExactMatch +GetMatchSubjectAltNames +GetPrefixMatch +GetSafeRegexMatch +GetSuffixMatch +GetTlsCertificateCertificateProviderInstance +GetValidationContextCertificateProviderInstance +XXXXX PleaseIgnoreUnused' echo SUCCESS diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go index 5033906..f479023 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go @@ -11,6 +11,7 @@ import ( "strconv" "strings" + "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/encoding/json" "google.golang.org/protobuf/internal/encoding/messageset" "google.golang.org/protobuf/internal/errors" @@ -47,6 +48,10 @@ type UnmarshalOptions struct { protoregistry.MessageTypeResolver protoregistry.ExtensionTypeResolver } + + // RecursionLimit limits how deeply messages may be nested. + // If zero, a default limit is applied. + RecursionLimit int } // Unmarshal reads the given []byte and populates the given [proto.Message] @@ -67,6 +72,9 @@ func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error { if o.Resolver == nil { o.Resolver = protoregistry.GlobalTypes } + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } dec := decoder{json.NewDecoder(b), o} if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil { @@ -114,6 +122,10 @@ func (d decoder) syntaxError(pos int, f string, x ...interface{}) error { // unmarshalMessage unmarshals a message into the given protoreflect.Message. func (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) error { + d.opts.RecursionLimit-- + if d.opts.RecursionLimit < 0 { + return errors.New("exceeded max recursion depth") + } if unmarshal := wellKnownTypeUnmarshaler(m.Descriptor().FullName()); unmarshal != nil { return unmarshal(d, m) } diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go index 6c37d41..25329b7 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go @@ -176,7 +176,7 @@ func (d decoder) unmarshalAny(m protoreflect.Message) error { // Use another decoder to parse the unread bytes for @type field. This // avoids advancing a read from current decoder because the current JSON // object may contain the fields of the embedded type. - dec := decoder{d.Clone(), UnmarshalOptions{}} + dec := decoder{d.Clone(), UnmarshalOptions{RecursionLimit: d.opts.RecursionLimit}} tok, err := findTypeURL(dec) switch err { case errEmptyObject: @@ -308,48 +308,25 @@ Loop: // array) in order to advance the read to the next JSON value. It relies on // the decoder returning an error if the types are not in valid sequence. func (d decoder) skipJSONValue() error { - tok, err := d.Read() - if err != nil { - return err - } - // Only need to continue reading for objects and arrays. - switch tok.Kind() { - case json.ObjectOpen: - for { - tok, err := d.Read() - if err != nil { - return err - } - switch tok.Kind() { - case json.ObjectClose: - return nil - case json.Name: - // Skip object field value. - if err := d.skipJSONValue(); err != nil { - return err - } - } + var open int + for { + tok, err := d.Read() + if err != nil { + return err } - - case json.ArrayOpen: - for { - tok, err := d.Peek() - if err != nil { - return err - } - switch tok.Kind() { - case json.ArrayClose: - d.Read() - return nil - default: - // Skip array item. - if err := d.skipJSONValue(); err != nil { - return err - } + switch tok.Kind() { + case json.ObjectClose, json.ArrayClose: + open-- + case json.ObjectOpen, json.ArrayOpen: + open++ + if open > d.opts.RecursionLimit { + return errors.New("exceeded max recursion depth") } } + if open == 0 { + return nil + } } - return nil } // unmarshalAnyValue unmarshals the given custom-type message from the JSON diff --git a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go index db5248e..a45625c 100644 --- a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +++ b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go @@ -83,7 +83,13 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { case protoreflect.FileImports: for i := 0; i < vs.Len(); i++ { var rs records - rs.Append(reflect.ValueOf(vs.Get(i)), "Path", "Package", "IsPublic", "IsWeak") + rv := reflect.ValueOf(vs.Get(i)) + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("IsPublic"), "IsPublic"}, + {rv.MethodByName("IsWeak"), "IsWeak"}, + }...) ss = append(ss, "{"+rs.Join()+"}") } return start + joinStrings(ss, allowMulti) + end @@ -92,34 +98,26 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { for i := 0; i < vs.Len(); i++ { m := reflect.ValueOf(vs).MethodByName("Get") v := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface() - ss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue)) + ss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue, nil)) } return start + joinStrings(ss, allowMulti && isEnumValue) + end } } -// descriptorAccessors is a list of accessors to print for each descriptor. -// -// Do not print all accessors since some contain redundant information, -// while others are pointers that we do not want to follow since the descriptor -// is actually a cyclic graph. -// -// Using a list allows us to print the accessors in a sensible order. -var descriptorAccessors = map[reflect.Type][]string{ - reflect.TypeOf((*protoreflect.FileDescriptor)(nil)).Elem(): {"Path", "Package", "Imports", "Messages", "Enums", "Extensions", "Services"}, - reflect.TypeOf((*protoreflect.MessageDescriptor)(nil)).Elem(): {"IsMapEntry", "Fields", "Oneofs", "ReservedNames", "ReservedRanges", "RequiredNumbers", "ExtensionRanges", "Messages", "Enums", "Extensions"}, - reflect.TypeOf((*protoreflect.FieldDescriptor)(nil)).Elem(): {"Number", "Cardinality", "Kind", "HasJSONName", "JSONName", "HasPresence", "IsExtension", "IsPacked", "IsWeak", "IsList", "IsMap", "MapKey", "MapValue", "HasDefault", "Default", "ContainingOneof", "ContainingMessage", "Message", "Enum"}, - reflect.TypeOf((*protoreflect.OneofDescriptor)(nil)).Elem(): {"Fields"}, // not directly used; must keep in sync with formatDescOpt - reflect.TypeOf((*protoreflect.EnumDescriptor)(nil)).Elem(): {"Values", "ReservedNames", "ReservedRanges"}, - reflect.TypeOf((*protoreflect.EnumValueDescriptor)(nil)).Elem(): {"Number"}, - reflect.TypeOf((*protoreflect.ServiceDescriptor)(nil)).Elem(): {"Methods"}, - reflect.TypeOf((*protoreflect.MethodDescriptor)(nil)).Elem(): {"Input", "Output", "IsStreamingClient", "IsStreamingServer"}, +type methodAndName struct { + method reflect.Value + name string } func FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) { - io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')))) + io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')), nil)) } -func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string { + +func InternalFormatDescOptForTesting(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { + return formatDescOpt(t, isRoot, allowMulti, record) +} + +func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record func(string)) string { rv := reflect.ValueOf(t) rt := rv.MethodByName("ProtoType").Type().In(0) @@ -129,26 +127,60 @@ func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string { } _, isFile := t.(protoreflect.FileDescriptor) - rs := records{allowMulti: allowMulti} + rs := records{ + allowMulti: allowMulti, + record: record, + } if t.IsPlaceholder() { if isFile { - rs.Append(rv, "Path", "Package", "IsPlaceholder") + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + }...) } else { - rs.Append(rv, "FullName", "IsPlaceholder") + rs.Append(rv, []methodAndName{ + {rv.MethodByName("FullName"), "FullName"}, + {rv.MethodByName("IsPlaceholder"), "IsPlaceholder"}, + }...) } } else { switch { case isFile: - rs.Append(rv, "Syntax") + rs.Append(rv, methodAndName{rv.MethodByName("Syntax"), "Syntax"}) case isRoot: - rs.Append(rv, "Syntax", "FullName") + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Syntax"), "Syntax"}, + {rv.MethodByName("FullName"), "FullName"}, + }...) default: - rs.Append(rv, "Name") + rs.Append(rv, methodAndName{rv.MethodByName("Name"), "Name"}) } switch t := t.(type) { case protoreflect.FieldDescriptor: - for _, s := range descriptorAccessors[rt] { - switch s { + accessors := []methodAndName{ + {rv.MethodByName("Number"), "Number"}, + {rv.MethodByName("Cardinality"), "Cardinality"}, + {rv.MethodByName("Kind"), "Kind"}, + {rv.MethodByName("HasJSONName"), "HasJSONName"}, + {rv.MethodByName("JSONName"), "JSONName"}, + {rv.MethodByName("HasPresence"), "HasPresence"}, + {rv.MethodByName("IsExtension"), "IsExtension"}, + {rv.MethodByName("IsPacked"), "IsPacked"}, + {rv.MethodByName("IsWeak"), "IsWeak"}, + {rv.MethodByName("IsList"), "IsList"}, + {rv.MethodByName("IsMap"), "IsMap"}, + {rv.MethodByName("MapKey"), "MapKey"}, + {rv.MethodByName("MapValue"), "MapValue"}, + {rv.MethodByName("HasDefault"), "HasDefault"}, + {rv.MethodByName("Default"), "Default"}, + {rv.MethodByName("ContainingOneof"), "ContainingOneof"}, + {rv.MethodByName("ContainingMessage"), "ContainingMessage"}, + {rv.MethodByName("Message"), "Message"}, + {rv.MethodByName("Enum"), "Enum"}, + } + for _, s := range accessors { + switch s.name { case "MapKey": if k := t.MapKey(); k != nil { rs.recs = append(rs.recs, [2]string{"MapKey", k.Kind().String()}) @@ -157,20 +189,20 @@ func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string { if v := t.MapValue(); v != nil { switch v.Kind() { case protoreflect.EnumKind: - rs.recs = append(rs.recs, [2]string{"MapValue", string(v.Enum().FullName())}) + rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Enum().FullName())}) case protoreflect.MessageKind, protoreflect.GroupKind: - rs.recs = append(rs.recs, [2]string{"MapValue", string(v.Message().FullName())}) + rs.AppendRecs("MapValue", [2]string{"MapValue", string(v.Message().FullName())}) default: - rs.recs = append(rs.recs, [2]string{"MapValue", v.Kind().String()}) + rs.AppendRecs("MapValue", [2]string{"MapValue", v.Kind().String()}) } } case "ContainingOneof": if od := t.ContainingOneof(); od != nil { - rs.recs = append(rs.recs, [2]string{"Oneof", string(od.Name())}) + rs.AppendRecs("ContainingOneof", [2]string{"Oneof", string(od.Name())}) } case "ContainingMessage": if t.IsExtension() { - rs.recs = append(rs.recs, [2]string{"Extendee", string(t.ContainingMessage().FullName())}) + rs.AppendRecs("ContainingMessage", [2]string{"Extendee", string(t.ContainingMessage().FullName())}) } case "Message": if !t.IsMap() { @@ -187,13 +219,61 @@ func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string { ss = append(ss, string(fs.Get(i).Name())) } if len(ss) > 0 { - rs.recs = append(rs.recs, [2]string{"Fields", "[" + joinStrings(ss, false) + "]"}) + rs.AppendRecs("Fields", [2]string{"Fields", "[" + joinStrings(ss, false) + "]"}) } - default: - rs.Append(rv, descriptorAccessors[rt]...) + + case protoreflect.FileDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Path"), "Path"}, + {rv.MethodByName("Package"), "Package"}, + {rv.MethodByName("Imports"), "Imports"}, + {rv.MethodByName("Messages"), "Messages"}, + {rv.MethodByName("Enums"), "Enums"}, + {rv.MethodByName("Extensions"), "Extensions"}, + {rv.MethodByName("Services"), "Services"}, + }...) + + case protoreflect.MessageDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("IsMapEntry"), "IsMapEntry"}, + {rv.MethodByName("Fields"), "Fields"}, + {rv.MethodByName("Oneofs"), "Oneofs"}, + {rv.MethodByName("ReservedNames"), "ReservedNames"}, + {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + {rv.MethodByName("RequiredNumbers"), "RequiredNumbers"}, + {rv.MethodByName("ExtensionRanges"), "ExtensionRanges"}, + {rv.MethodByName("Messages"), "Messages"}, + {rv.MethodByName("Enums"), "Enums"}, + {rv.MethodByName("Extensions"), "Extensions"}, + }...) + + case protoreflect.EnumDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Values"), "Values"}, + {rv.MethodByName("ReservedNames"), "ReservedNames"}, + {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + }...) + + case protoreflect.EnumValueDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Number"), "Number"}, + }...) + + case protoreflect.ServiceDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Methods"), "Methods"}, + }...) + + case protoreflect.MethodDescriptor: + rs.Append(rv, []methodAndName{ + {rv.MethodByName("Input"), "Input"}, + {rv.MethodByName("Output"), "Output"}, + {rv.MethodByName("IsStreamingClient"), "IsStreamingClient"}, + {rv.MethodByName("IsStreamingServer"), "IsStreamingServer"}, + }...) } - if rv.MethodByName("GoType").IsValid() { - rs.Append(rv, "GoType") + if m := rv.MethodByName("GoType"); m.IsValid() { + rs.Append(rv, methodAndName{m, "GoType"}) } } return start + rs.Join() + end @@ -202,19 +282,34 @@ func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string { type records struct { recs [][2]string allowMulti bool + + // record is a function that will be called for every Append() or + // AppendRecs() call, to be used for testing with the + // InternalFormatDescOptForTesting function. + record func(string) } -func (rs *records) Append(v reflect.Value, accessors ...string) { +func (rs *records) AppendRecs(fieldName string, newRecs [2]string) { + if rs.record != nil { + rs.record(fieldName) + } + rs.recs = append(rs.recs, newRecs) +} + +func (rs *records) Append(v reflect.Value, accessors ...methodAndName) { for _, a := range accessors { + if rs.record != nil { + rs.record(a.name) + } var rv reflect.Value - if m := v.MethodByName(a); m.IsValid() { - rv = m.Call(nil)[0] + if a.method.IsValid() { + rv = a.method.Call(nil)[0] } if v.Kind() == reflect.Struct && !rv.IsValid() { - rv = v.FieldByName(a) + rv = v.FieldByName(a.name) } if !rv.IsValid() { - panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a)) + panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a.name)) } if _, ok := rv.Interface().(protoreflect.Value); ok { rv = rv.MethodByName("Interface").Call(nil)[0] @@ -261,7 +356,7 @@ func (rs *records) Append(v reflect.Value, accessors ...string) { default: s = fmt.Sprint(v) } - rs.recs = append(rs.recs, [2]string{a, s}) + rs.recs = append(rs.recs, [2]string{a.name, s}) } } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go index 7c3689b..193c68e 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -21,11 +21,26 @@ import ( "google.golang.org/protobuf/reflect/protoregistry" ) +// Edition is an Enum for proto2.Edition +type Edition int32 + +// These values align with the value of Enum in descriptor.proto which allows +// direct conversion between the proto enum and this enum. +const ( + EditionUnknown Edition = 0 + EditionProto2 Edition = 998 + EditionProto3 Edition = 999 + Edition2023 Edition = 1000 + EditionUnsupported Edition = 100000 +) + // The types in this file may have a suffix: // • L0: Contains fields common to all descriptors (except File) and // must be initialized up front. // • L1: Contains fields specific to a descriptor and -// must be initialized up front. +// must be initialized up front. If the associated proto uses Editions, the +// Editions features must always be resolved. If not explicitly set, the +// appropriate default must be resolved and set. // • L2: Contains fields that are lazily initialized when constructing // from the raw file descriptor. When constructing as a literal, the L2 // fields must be initialized up front. @@ -44,6 +59,7 @@ type ( } FileL1 struct { Syntax protoreflect.Syntax + Edition Edition // Only used if Syntax == Editions Path string Package protoreflect.FullName @@ -51,12 +67,35 @@ type ( Messages Messages Extensions Extensions Services Services + + EditionFeatures FileEditionFeatures } FileL2 struct { Options func() protoreflect.ProtoMessage Imports FileImports Locations SourceLocations } + + FileEditionFeatures struct { + // IsFieldPresence is true if field_presence is EXPLICIT + // https://protobuf.dev/editions/features/#field_presence + IsFieldPresence bool + // IsOpenEnum is true if enum_type is OPEN + // https://protobuf.dev/editions/features/#enum_type + IsOpenEnum bool + // IsPacked is true if repeated_field_encoding is PACKED + // https://protobuf.dev/editions/features/#repeated_field_encoding + IsPacked bool + // IsUTF8Validated is true if utf_validation is VERIFY + // https://protobuf.dev/editions/features/#utf8_validation + IsUTF8Validated bool + // IsDelimitedEncoded is true if message_encoding is DELIMITED + // https://protobuf.dev/editions/features/#message_encoding + IsDelimitedEncoded bool + // IsJSONCompliant is true if json_format is ALLOW + // https://protobuf.dev/editions/features/#json_format + IsJSONCompliant bool + } ) func (fd *File) ParentFile() protoreflect.FileDescriptor { return fd } @@ -210,6 +249,9 @@ type ( ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields Enum protoreflect.EnumDescriptor Message protoreflect.MessageDescriptor + + // Edition features. + Presence bool } Oneof struct { @@ -273,6 +315,9 @@ func (fd *Field) HasJSONName() bool { return fd.L1.StringNam func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } func (fd *Field) HasPresence() bool { + if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions { + return fd.L1.Presence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil + } return fd.L1.Cardinality != protoreflect.Repeated && (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil) } func (fd *Field) HasOptionalKeyword() bool { diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go index 9da41b5..8f94230 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go @@ -12,6 +12,12 @@ import ( const File_google_protobuf_descriptor_proto = "google/protobuf/descriptor.proto" +// Full and short names for google.protobuf.Edition. +const ( + Edition_enum_fullname = "google.protobuf.Edition" + Edition_enum_name = "Edition" +) + // Names for google.protobuf.FileDescriptorSet. const ( FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet" @@ -81,7 +87,7 @@ const ( FileDescriptorProto_Options_field_number protoreflect.FieldNumber = 8 FileDescriptorProto_SourceCodeInfo_field_number protoreflect.FieldNumber = 9 FileDescriptorProto_Syntax_field_number protoreflect.FieldNumber = 12 - FileDescriptorProto_Edition_field_number protoreflect.FieldNumber = 13 + FileDescriptorProto_Edition_field_number protoreflect.FieldNumber = 14 ) // Names for google.protobuf.DescriptorProto. @@ -668,7 +674,7 @@ const ( // Field numbers for google.protobuf.FieldOptions.EditionDefault. const ( - FieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 1 + FieldOptions_EditionDefault_Edition_field_number protoreflect.FieldNumber = 3 FieldOptions_EditionDefault_Value_field_number protoreflect.FieldNumber = 2 ) @@ -875,18 +881,16 @@ const ( FeatureSet_FieldPresence_field_name protoreflect.Name = "field_presence" FeatureSet_EnumType_field_name protoreflect.Name = "enum_type" FeatureSet_RepeatedFieldEncoding_field_name protoreflect.Name = "repeated_field_encoding" - FeatureSet_StringFieldValidation_field_name protoreflect.Name = "string_field_validation" + FeatureSet_Utf8Validation_field_name protoreflect.Name = "utf8_validation" FeatureSet_MessageEncoding_field_name protoreflect.Name = "message_encoding" FeatureSet_JsonFormat_field_name protoreflect.Name = "json_format" - FeatureSet_RawFeatures_field_name protoreflect.Name = "raw_features" FeatureSet_FieldPresence_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.field_presence" FeatureSet_EnumType_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.enum_type" FeatureSet_RepeatedFieldEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.repeated_field_encoding" - FeatureSet_StringFieldValidation_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.string_field_validation" + FeatureSet_Utf8Validation_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.utf8_validation" FeatureSet_MessageEncoding_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.message_encoding" FeatureSet_JsonFormat_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.json_format" - FeatureSet_RawFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSet.raw_features" ) // Field numbers for google.protobuf.FeatureSet. @@ -894,10 +898,9 @@ const ( FeatureSet_FieldPresence_field_number protoreflect.FieldNumber = 1 FeatureSet_EnumType_field_number protoreflect.FieldNumber = 2 FeatureSet_RepeatedFieldEncoding_field_number protoreflect.FieldNumber = 3 - FeatureSet_StringFieldValidation_field_number protoreflect.FieldNumber = 4 + FeatureSet_Utf8Validation_field_number protoreflect.FieldNumber = 4 FeatureSet_MessageEncoding_field_number protoreflect.FieldNumber = 5 FeatureSet_JsonFormat_field_number protoreflect.FieldNumber = 6 - FeatureSet_RawFeatures_field_number protoreflect.FieldNumber = 999 ) // Full and short names for google.protobuf.FeatureSet.FieldPresence. @@ -918,10 +921,10 @@ const ( FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding" ) -// Full and short names for google.protobuf.FeatureSet.StringFieldValidation. +// Full and short names for google.protobuf.FeatureSet.Utf8Validation. const ( - FeatureSet_StringFieldValidation_enum_fullname = "google.protobuf.FeatureSet.StringFieldValidation" - FeatureSet_StringFieldValidation_enum_name = "StringFieldValidation" + FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation" + FeatureSet_Utf8Validation_enum_name = "Utf8Validation" ) // Full and short names for google.protobuf.FeatureSet.MessageEncoding. @@ -936,6 +939,51 @@ const ( FeatureSet_JsonFormat_enum_name = "JsonFormat" ) +// Names for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults" + FeatureSetDefaults_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults" +) + +// Field names for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_Defaults_field_name protoreflect.Name = "defaults" + FeatureSetDefaults_MinimumEdition_field_name protoreflect.Name = "minimum_edition" + FeatureSetDefaults_MaximumEdition_field_name protoreflect.Name = "maximum_edition" + + FeatureSetDefaults_Defaults_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.defaults" + FeatureSetDefaults_MinimumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.minimum_edition" + FeatureSetDefaults_MaximumEdition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.maximum_edition" +) + +// Field numbers for google.protobuf.FeatureSetDefaults. +const ( + FeatureSetDefaults_Defaults_field_number protoreflect.FieldNumber = 1 + FeatureSetDefaults_MinimumEdition_field_number protoreflect.FieldNumber = 4 + FeatureSetDefaults_MaximumEdition_field_number protoreflect.FieldNumber = 5 +) + +// Names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_message_name protoreflect.Name = "FeatureSetEditionDefault" + FeatureSetDefaults_FeatureSetEditionDefault_message_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault" +) + +// Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name protoreflect.Name = "edition" + FeatureSetDefaults_FeatureSetEditionDefault_Features_field_name protoreflect.Name = "features" + + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition" + FeatureSetDefaults_FeatureSetEditionDefault_Features_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features" +) + +// Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. +const ( + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number protoreflect.FieldNumber = 3 + FeatureSetDefaults_FeatureSetEditionDefault_Features_field_number protoreflect.FieldNumber = 2 +) + // Names for google.protobuf.SourceCodeInfo. const ( SourceCodeInfo_message_name protoreflect.Name = "SourceCodeInfo" diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go b/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go index 1a509b6..f55dc01 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go @@ -162,11 +162,20 @@ func appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions func consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.BoolSlice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growBoolSlice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -732,11 +741,20 @@ func appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOption func consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Int32Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt32Slice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -1138,11 +1156,20 @@ func appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptio func consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Int32Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt32Slice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -1544,11 +1571,20 @@ func appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptio func consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Uint32Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growUint32Slice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -1950,11 +1986,20 @@ func appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOption func consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Int64Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt64Slice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -2356,11 +2401,20 @@ func appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptio func consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Int64Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growInt64Slice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -2762,11 +2816,20 @@ func appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptio func consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Uint64Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := 0 + for _, v := range b { + if v < 0x80 { + count++ + } + } + if count > 0 { + p.growUint64Slice(count) + } + s := *sp for len(b) > 0 { var v uint64 var n int @@ -3145,11 +3208,15 @@ func appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOpt func consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Int32Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growInt32Slice(count) + } + s := *sp for len(b) > 0 { v, n := protowire.ConsumeFixed32(b) if n < 0 { @@ -3461,11 +3528,15 @@ func appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOpti func consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Uint32Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growUint32Slice(count) + } + s := *sp for len(b) > 0 { v, n := protowire.ConsumeFixed32(b) if n < 0 { @@ -3777,11 +3848,15 @@ func appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOption func consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Float32Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := len(b) / protowire.SizeFixed32() + if count > 0 { + p.growFloat32Slice(count) + } + s := *sp for len(b) > 0 { v, n := protowire.ConsumeFixed32(b) if n < 0 { @@ -4093,11 +4168,15 @@ func appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOpt func consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Int64Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growInt64Slice(count) + } + s := *sp for len(b) > 0 { v, n := protowire.ConsumeFixed64(b) if n < 0 { @@ -4409,11 +4488,15 @@ func appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOpti func consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Uint64Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growUint64Slice(count) + } + s := *sp for len(b) > 0 { v, n := protowire.ConsumeFixed64(b) if n < 0 { @@ -4725,11 +4808,15 @@ func appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptio func consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { sp := p.Float64Slice() if wtyp == protowire.BytesType { - s := *sp b, n := protowire.ConsumeBytes(b) if n < 0 { return out, errDecode } + count := len(b) / protowire.SizeFixed64() + if count > 0 { + p.growFloat64Slice(count) + } + s := *sp for len(b) > 0 { v, n := protowire.ConsumeFixed64(b) if n < 0 { diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go index 61c483f..2ab2c62 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go @@ -206,13 +206,18 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName // Obtain a list of oneof wrapper types. var oneofWrappers []reflect.Type - for _, method := range []string{"XXX_OneofFuncs", "XXX_OneofWrappers"} { - if fn, ok := t.MethodByName(method); ok { - for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { - if vs, ok := v.Interface().([]interface{}); ok { - for _, v := range vs { - oneofWrappers = append(oneofWrappers, reflect.TypeOf(v)) - } + methods := make([]reflect.Method, 0, 2) + if m, ok := t.MethodByName("XXX_OneofFuncs"); ok { + methods = append(methods, m) + } + if m, ok := t.MethodByName("XXX_OneofWrappers"); ok { + methods = append(methods, m) + } + for _, fn := range methods { + for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { + if vs, ok := v.Interface().([]interface{}); ok { + for _, v := range vs { + oneofWrappers = append(oneofWrappers, reflect.TypeOf(v)) } } } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go index 4f5fb67..629bacd 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message.go @@ -192,12 +192,17 @@ fieldLoop: // Derive a mapping of oneof wrappers to fields. oneofWrappers := mi.OneofWrappers - for _, method := range []string{"XXX_OneofFuncs", "XXX_OneofWrappers"} { - if fn, ok := reflect.PtrTo(t).MethodByName(method); ok { - for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { - if vs, ok := v.Interface().([]interface{}); ok { - oneofWrappers = vs - } + methods := make([]reflect.Method, 0, 2) + if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofFuncs"); ok { + methods = append(methods, m) + } + if m, ok := reflect.PtrTo(t).MethodByName("XXX_OneofWrappers"); ok { + methods = append(methods, m) + } + for _, fn := range methods { + for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { + if vs, ok := v.Interface().([]interface{}); ok { + oneofWrappers = vs } } } diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go index 4c491bd..517e944 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go @@ -159,6 +159,42 @@ func (p pointer) SetPointer(v pointer) { p.v.Elem().Set(v.v) } +func growSlice(p pointer, addCap int) { + // TODO: Once we only support Go 1.20 and newer, use reflect.Grow. + in := p.v.Elem() + out := reflect.MakeSlice(in.Type(), in.Len(), in.Len()+addCap) + reflect.Copy(out, in) + p.v.Elem().Set(out) +} + +func (p pointer) growBoolSlice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growInt32Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growUint32Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growInt64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growUint64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growFloat64Slice(addCap int) { + growSlice(p, addCap) +} + +func (p pointer) growFloat32Slice(addCap int) { + growSlice(p, addCap) +} + func (Export) MessageStateOf(p Pointer) *messageState { panic("not supported") } func (ms *messageState) pointer() pointer { panic("not supported") } func (ms *messageState) messageInfo() *MessageInfo { panic("not supported") } diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go index ee0e057..4b020e3 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -138,6 +138,46 @@ func (p pointer) SetPointer(v pointer) { *(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p) } +func (p pointer) growBoolSlice(addCap int) { + sp := p.BoolSlice() + s := make([]bool, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growInt32Slice(addCap int) { + sp := p.Int32Slice() + s := make([]int32, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growUint32Slice(addCap int) { + p.growInt32Slice(addCap) +} + +func (p pointer) growFloat32Slice(addCap int) { + p.growInt32Slice(addCap) +} + +func (p pointer) growInt64Slice(addCap int) { + sp := p.Int64Slice() + s := make([]int64, 0, addCap+len(*sp)) + s = s[:len(*sp)] + copy(s, *sp) + *sp = s +} + +func (p pointer) growUint64Slice(addCap int) { + p.growInt64Slice(addCap) +} + +func (p pointer) growFloat64Slice(addCap int) { + p.growInt64Slice(addCap) +} + // Static check that MessageState does not exceed the size of a pointer. const _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{})) diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go similarity index 96% rename from vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go rename to vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go index 61a84d3..a008acd 100644 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine -// +build !purego,!appengine +//go:build !purego && !appengine && !go1.21 +// +build !purego,!appengine,!go1.21 package strs diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go new file mode 100644 index 0000000..60166f2 --- /dev/null +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go @@ -0,0 +1,74 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && go1.21 +// +build !purego,!appengine,go1.21 + +package strs + +import ( + "unsafe" + + "google.golang.org/protobuf/reflect/protoreflect" +) + +// UnsafeString returns an unsafe string reference of b. +// The caller must treat the input slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user +// unless the input slice is provably immutable. +func UnsafeString(b []byte) string { + return unsafe.String(unsafe.SliceData(b), len(b)) +} + +// UnsafeBytes returns an unsafe bytes slice reference of s. +// The caller must treat returned slice as immutable. +// +// WARNING: Use carefully. The returned result must not leak to the end user. +func UnsafeBytes(s string) []byte { + return unsafe.Slice(unsafe.StringData(s), len(s)) +} + +// Builder builds a set of strings with shared lifetime. +// This differs from strings.Builder, which is for building a single string. +type Builder struct { + buf []byte +} + +// AppendFullName is equivalent to protoreflect.FullName.Append, +// but optimized for large batches where each name has a shared lifetime. +func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { + n := len(prefix) + len(".") + len(name) + if len(prefix) == 0 { + n -= len(".") + } + sb.grow(n) + sb.buf = append(sb.buf, prefix...) + sb.buf = append(sb.buf, '.') + sb.buf = append(sb.buf, name...) + return protoreflect.FullName(sb.last(n)) +} + +// MakeString is equivalent to string(b), but optimized for large batches +// with a shared lifetime. +func (sb *Builder) MakeString(b []byte) string { + sb.grow(len(b)) + sb.buf = append(sb.buf, b...) + return sb.last(len(b)) +} + +func (sb *Builder) grow(n int) { + if cap(sb.buf)-len(sb.buf) >= n { + return + } + + // Unlike strings.Builder, we do not need to copy over the contents + // of the old buffer since our builder provides no API for + // retrieving previously created strings. + sb.buf = make([]byte, 0, 2*(cap(sb.buf)+n)) +} + +func (sb *Builder) last(n int) string { + return UnsafeString(sb.buf[len(sb.buf)-n:]) +} diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go index 3763d76..d8f48fa 100644 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/vendor/google.golang.org/protobuf/internal/version/version.go @@ -51,9 +51,9 @@ import ( // 10. Send out the CL for review and submit it. const ( Major = 1 - Minor = 31 + Minor = 32 Patch = 0 - PreRelease = "devel" + PreRelease = "" ) // String formats the version string for this module in semver format. diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go index 0f2908e..baa0cc6 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go @@ -93,9 +93,15 @@ func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (prot f.L1.Syntax = protoreflect.Proto2 case "proto3": f.L1.Syntax = protoreflect.Proto3 + case "editions": + f.L1.Syntax = protoreflect.Editions + f.L1.Edition = fromEditionProto(fd.GetEdition()) default: return nil, errors.New("invalid syntax: %q", fd.GetSyntax()) } + if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < SupportedEditionsMinimum || fd.GetEdition() > SupportedEditionsMaximum) { + return nil, errors.New("use of edition %v not yet supported by the Go Protobuf runtime", fd.GetEdition()) + } f.L1.Path = fd.GetName() if f.L1.Path == "" { return nil, errors.New("file path must be populated") @@ -108,6 +114,9 @@ func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (prot opts = proto.Clone(opts).(*descriptorpb.FileOptions) f.L2.Options = func() protoreflect.ProtoMessage { return opts } } + if f.L1.Syntax == protoreflect.Editions { + initFileDescFromFeatureSet(f, fd.GetOptions().GetFeatures()) + } f.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency())) for _, i := range fd.GetPublicDependency() { diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go index 37efda1..aff6fd4 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go @@ -137,6 +137,30 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc if fd.JsonName != nil { f.L1.StringName.InitJSON(fd.GetJsonName()) } + + if f.Base.L0.ParentFile.Syntax() == protoreflect.Editions { + f.L1.Presence = resolveFeatureHasFieldPresence(f.Base.L0.ParentFile, fd) + // We reuse the existing field because the old option `[packed = + // true]` is mutually exclusive with the editions feature. + if fd.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REPEATED { + f.L1.HasPacked = true + f.L1.IsPacked = resolveFeatureRepeatedFieldEncodingPacked(f.Base.L0.ParentFile, fd) + } + + // We pretend this option is always explicitly set because the only + // use of HasEnforceUTF8 is to determine whether to use EnforceUTF8 + // or to return the appropriate default. + // When using editions we either parse the option or resolve the + // appropriate default here (instead of later when this option is + // requested from the descriptor). + // In proto2/proto3 syntax HasEnforceUTF8 might be false. + f.L1.HasEnforceUTF8 = true + f.L1.EnforceUTF8 = resolveFeatureEnforceUTF8(f.Base.L0.ParentFile, fd) + + if f.L1.Kind == protoreflect.MessageKind && resolveFeatureDelimitedEncoding(f.Base.L0.ParentFile, fd) { + f.L1.Kind = protoreflect.GroupKind + } + } } return fs, nil } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go new file mode 100644 index 0000000..7352926 --- /dev/null +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go @@ -0,0 +1,177 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package protodesc + +import ( + _ "embed" + "fmt" + "os" + "sync" + + "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/descriptorpb" +) + +const ( + SupportedEditionsMinimum = descriptorpb.Edition_EDITION_PROTO2 + SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2023 +) + +//go:embed editions_defaults.binpb +var binaryEditionDefaults []byte +var defaults = &descriptorpb.FeatureSetDefaults{} +var defaultsCacheMu sync.Mutex +var defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet) + +func init() { + err := proto.Unmarshal(binaryEditionDefaults, defaults) + if err != nil { + fmt.Fprintf(os.Stderr, "unmarshal editions defaults: %v\n", err) + os.Exit(1) + } +} + +func fromEditionProto(epb descriptorpb.Edition) filedesc.Edition { + return filedesc.Edition(epb) +} + +func toEditionProto(ed filedesc.Edition) descriptorpb.Edition { + switch ed { + case filedesc.EditionUnknown: + return descriptorpb.Edition_EDITION_UNKNOWN + case filedesc.EditionProto2: + return descriptorpb.Edition_EDITION_PROTO2 + case filedesc.EditionProto3: + return descriptorpb.Edition_EDITION_PROTO3 + case filedesc.Edition2023: + return descriptorpb.Edition_EDITION_2023 + default: + panic(fmt.Sprintf("unknown value for edition: %v", ed)) + } +} + +func getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet { + defaultsCacheMu.Lock() + defer defaultsCacheMu.Unlock() + if def, ok := defaultsCache[ed]; ok { + return def + } + edpb := toEditionProto(ed) + if defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb { + // This should never happen protodesc.(FileOptions).New would fail when + // initializing the file descriptor. + // This most likely means the embedded defaults were not updated. + fmt.Fprintf(os.Stderr, "internal error: unsupported edition %v (did you forget to update the embedded defaults (i.e. the bootstrap descriptor proto)?)\n", edpb) + os.Exit(1) + } + fs := defaults.GetDefaults()[0].GetFeatures() + // Using a linear search for now. + // Editions are guaranteed to be sorted and thus we could use a binary search. + // Given that there are only a handful of editions (with one more per year) + // there is not much reason to use a binary search. + for _, def := range defaults.GetDefaults() { + if def.GetEdition() <= edpb { + fs = def.GetFeatures() + } else { + break + } + } + defaultsCache[ed] = fs + return fs +} + +func resolveFeatureHasFieldPresence(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { + fs := fieldDesc.GetOptions().GetFeatures() + if fs == nil || fs.FieldPresence == nil { + return fileDesc.L1.EditionFeatures.IsFieldPresence + } + return fs.GetFieldPresence() == descriptorpb.FeatureSet_LEGACY_REQUIRED || + fs.GetFieldPresence() == descriptorpb.FeatureSet_EXPLICIT +} + +func resolveFeatureRepeatedFieldEncodingPacked(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { + fs := fieldDesc.GetOptions().GetFeatures() + if fs == nil || fs.RepeatedFieldEncoding == nil { + return fileDesc.L1.EditionFeatures.IsPacked + } + return fs.GetRepeatedFieldEncoding() == descriptorpb.FeatureSet_PACKED +} + +func resolveFeatureEnforceUTF8(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { + fs := fieldDesc.GetOptions().GetFeatures() + if fs == nil || fs.Utf8Validation == nil { + return fileDesc.L1.EditionFeatures.IsUTF8Validated + } + return fs.GetUtf8Validation() == descriptorpb.FeatureSet_VERIFY +} + +func resolveFeatureDelimitedEncoding(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool { + fs := fieldDesc.GetOptions().GetFeatures() + if fs == nil || fs.MessageEncoding == nil { + return fileDesc.L1.EditionFeatures.IsDelimitedEncoded + } + return fs.GetMessageEncoding() == descriptorpb.FeatureSet_DELIMITED +} + +// initFileDescFromFeatureSet initializes editions related fields in fd based +// on fs. If fs is nil it is assumed to be an empty featureset and all fields +// will be initialized with the appropriate default. fd.L1.Edition must be set +// before calling this function. +func initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) { + dfs := getFeatureSetFor(fd.L1.Edition) + if fs == nil { + fs = &descriptorpb.FeatureSet{} + } + + var fieldPresence descriptorpb.FeatureSet_FieldPresence + if fp := fs.FieldPresence; fp != nil { + fieldPresence = *fp + } else { + fieldPresence = *dfs.FieldPresence + } + fd.L1.EditionFeatures.IsFieldPresence = fieldPresence == descriptorpb.FeatureSet_LEGACY_REQUIRED || + fieldPresence == descriptorpb.FeatureSet_EXPLICIT + + var enumType descriptorpb.FeatureSet_EnumType + if et := fs.EnumType; et != nil { + enumType = *et + } else { + enumType = *dfs.EnumType + } + fd.L1.EditionFeatures.IsOpenEnum = enumType == descriptorpb.FeatureSet_OPEN + + var respeatedFieldEncoding descriptorpb.FeatureSet_RepeatedFieldEncoding + if rfe := fs.RepeatedFieldEncoding; rfe != nil { + respeatedFieldEncoding = *rfe + } else { + respeatedFieldEncoding = *dfs.RepeatedFieldEncoding + } + fd.L1.EditionFeatures.IsPacked = respeatedFieldEncoding == descriptorpb.FeatureSet_PACKED + + var isUTF8Validated descriptorpb.FeatureSet_Utf8Validation + if utf8val := fs.Utf8Validation; utf8val != nil { + isUTF8Validated = *utf8val + } else { + isUTF8Validated = *dfs.Utf8Validation + } + fd.L1.EditionFeatures.IsUTF8Validated = isUTF8Validated == descriptorpb.FeatureSet_VERIFY + + var messageEncoding descriptorpb.FeatureSet_MessageEncoding + if me := fs.MessageEncoding; me != nil { + messageEncoding = *me + } else { + messageEncoding = *dfs.MessageEncoding + } + fd.L1.EditionFeatures.IsDelimitedEncoded = messageEncoding == descriptorpb.FeatureSet_DELIMITED + + var jsonFormat descriptorpb.FeatureSet_JsonFormat + if jf := fs.JsonFormat; jf != nil { + jsonFormat = *jf + } else { + jsonFormat = *dfs.JsonFormat + } + fd.L1.EditionFeatures.IsJSONCompliant = jsonFormat == descriptorpb.FeatureSet_ALLOW +} diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb b/vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb new file mode 100644 index 0000000..1a8610a --- /dev/null +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions_defaults.binpb @@ -0,0 +1,4 @@ + +  (0 +  (0 +  (0 ( \ No newline at end of file diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go b/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go index c515149..9d6e054 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go @@ -70,7 +70,7 @@ func ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileD for i, exts := 0, file.Extensions(); i < exts.Len(); i++ { p.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i))) } - if syntax := file.Syntax(); syntax != protoreflect.Proto2 { + if syntax := file.Syntax(); syntax != protoreflect.Proto2 && syntax.IsValid() { p.Syntax = proto.String(file.Syntax().String()) } return p diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go index 7bb1042..ec6572d 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go @@ -153,8 +153,9 @@ type Syntax syntax type syntax int8 // keep exact type opaque as the int type may change const ( - Proto2 Syntax = 2 - Proto3 Syntax = 3 + Proto2 Syntax = 2 + Proto3 Syntax = 3 + Editions Syntax = 4 ) // IsValid reports whether the syntax is valid. diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go index 233b573..0c045db 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go @@ -35,7 +35,7 @@ func (p *SourcePath) appendFileDescriptorProto(b []byte) []byte { b = p.appendSingularField(b, "source_code_info", (*SourcePath).appendSourceCodeInfo) case 12: b = p.appendSingularField(b, "syntax", nil) - case 13: + case 14: b = p.appendSingularField(b, "edition", nil) } return b @@ -393,13 +393,11 @@ func (p *SourcePath) appendFeatureSet(b []byte) []byte { case 3: b = p.appendSingularField(b, "repeated_field_encoding", nil) case 4: - b = p.appendSingularField(b, "string_field_validation", nil) + b = p.appendSingularField(b, "utf8_validation", nil) case 5: b = p.appendSingularField(b, "message_encoding", nil) case 6: b = p.appendSingularField(b, "json_format", nil) - case 999: - b = p.appendSingularField(b, "raw_features", (*SourcePath).appendFeatureSet) } return b } @@ -515,7 +513,7 @@ func (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte { return b } switch (*p)[0] { - case 1: + case 3: b = p.appendSingularField(b, "edition", nil) case 2: b = p.appendSingularField(b, "value", nil) diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go similarity index 97% rename from vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go rename to vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go index 702ddf2..b1fdbe3 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine -// +build !purego,!appengine +//go:build !purego && !appengine && !go1.21 +// +build !purego,!appengine,!go1.21 package protoreflect diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go new file mode 100644 index 0000000..4354701 --- /dev/null +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go @@ -0,0 +1,87 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego && !appengine && go1.21 +// +build !purego,!appengine,go1.21 + +package protoreflect + +import ( + "unsafe" + + "google.golang.org/protobuf/internal/pragma" +) + +type ( + ifaceHeader struct { + _ [0]interface{} // if interfaces have greater alignment than unsafe.Pointer, this will enforce it. + Type unsafe.Pointer + Data unsafe.Pointer + } +) + +var ( + nilType = typeOf(nil) + boolType = typeOf(*new(bool)) + int32Type = typeOf(*new(int32)) + int64Type = typeOf(*new(int64)) + uint32Type = typeOf(*new(uint32)) + uint64Type = typeOf(*new(uint64)) + float32Type = typeOf(*new(float32)) + float64Type = typeOf(*new(float64)) + stringType = typeOf(*new(string)) + bytesType = typeOf(*new([]byte)) + enumType = typeOf(*new(EnumNumber)) +) + +// typeOf returns a pointer to the Go type information. +// The pointer is comparable and equal if and only if the types are identical. +func typeOf(t interface{}) unsafe.Pointer { + return (*ifaceHeader)(unsafe.Pointer(&t)).Type +} + +// value is a union where only one type can be represented at a time. +// The struct is 24B large on 64-bit systems and requires the minimum storage +// necessary to represent each possible type. +// +// The Go GC needs to be able to scan variables containing pointers. +// As such, pointers and non-pointers cannot be intermixed. +type value struct { + pragma.DoNotCompare // 0B + + // typ stores the type of the value as a pointer to the Go type. + typ unsafe.Pointer // 8B + + // ptr stores the data pointer for a String, Bytes, or interface value. + ptr unsafe.Pointer // 8B + + // num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or + // Enum value as a raw uint64. + // + // It is also used to store the length of a String or Bytes value; + // the capacity is ignored. + num uint64 // 8B +} + +func valueOfString(v string) Value { + return Value{typ: stringType, ptr: unsafe.Pointer(unsafe.StringData(v)), num: uint64(len(v))} +} +func valueOfBytes(v []byte) Value { + return Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))} +} +func valueOfIface(v interface{}) Value { + p := (*ifaceHeader)(unsafe.Pointer(&v)) + return Value{typ: p.Type, ptr: p.Data} +} + +func (v Value) getString() string { + return unsafe.String((*byte)(v.ptr), v.num) +} +func (v Value) getBytes() []byte { + return unsafe.Slice((*byte)(v.ptr), v.num) +} +func (v Value) getIface() (x interface{}) { + *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} + return x +} diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go index 1db5b2b..38daa85 100644 --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go @@ -48,6 +48,94 @@ import ( sync "sync" ) +// The full set of known editions. +type Edition int32 + +const ( + // A placeholder for an unknown edition value. + Edition_EDITION_UNKNOWN Edition = 0 + // Legacy syntax "editions". These pre-date editions, but behave much like + // distinct editions. These can't be used to specify the edition of proto + // files, but feature definitions must supply proto2/proto3 defaults for + // backwards compatibility. + Edition_EDITION_PROTO2 Edition = 998 + Edition_EDITION_PROTO3 Edition = 999 + // Editions that have been released. The specific values are arbitrary and + // should not be depended on, but they will always be time-ordered for easy + // comparison. + Edition_EDITION_2023 Edition = 1000 + // Placeholder editions for testing feature resolution. These should not be + // used or relyed on outside of tests. + Edition_EDITION_1_TEST_ONLY Edition = 1 + Edition_EDITION_2_TEST_ONLY Edition = 2 + Edition_EDITION_99997_TEST_ONLY Edition = 99997 + Edition_EDITION_99998_TEST_ONLY Edition = 99998 + Edition_EDITION_99999_TEST_ONLY Edition = 99999 +) + +// Enum value maps for Edition. +var ( + Edition_name = map[int32]string{ + 0: "EDITION_UNKNOWN", + 998: "EDITION_PROTO2", + 999: "EDITION_PROTO3", + 1000: "EDITION_2023", + 1: "EDITION_1_TEST_ONLY", + 2: "EDITION_2_TEST_ONLY", + 99997: "EDITION_99997_TEST_ONLY", + 99998: "EDITION_99998_TEST_ONLY", + 99999: "EDITION_99999_TEST_ONLY", + } + Edition_value = map[string]int32{ + "EDITION_UNKNOWN": 0, + "EDITION_PROTO2": 998, + "EDITION_PROTO3": 999, + "EDITION_2023": 1000, + "EDITION_1_TEST_ONLY": 1, + "EDITION_2_TEST_ONLY": 2, + "EDITION_99997_TEST_ONLY": 99997, + "EDITION_99998_TEST_ONLY": 99998, + "EDITION_99999_TEST_ONLY": 99999, + } +) + +func (x Edition) Enum() *Edition { + p := new(Edition) + *p = x + return p +} + +func (x Edition) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Edition) Descriptor() protoreflect.EnumDescriptor { + return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor() +} + +func (Edition) Type() protoreflect.EnumType { + return &file_google_protobuf_descriptor_proto_enumTypes[0] +} + +func (x Edition) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *Edition) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = Edition(num) + return nil +} + +// Deprecated: Use Edition.Descriptor instead. +func (Edition) EnumDescriptor() ([]byte, []int) { + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0} +} + // The verification state of the extension range. type ExtensionRangeOptions_VerificationState int32 @@ -80,11 +168,11 @@ func (x ExtensionRangeOptions_VerificationState) String() string { } func (ExtensionRangeOptions_VerificationState) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor() } func (ExtensionRangeOptions_VerificationState) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[0] + return &file_google_protobuf_descriptor_proto_enumTypes[1] } func (x ExtensionRangeOptions_VerificationState) Number() protoreflect.EnumNumber { @@ -125,9 +213,10 @@ const ( FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8 FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9 // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 + // Group type is deprecated and not supported after google.protobuf. However, Proto3 // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. + // treat group fields as unknown fields. In Editions, the group wire format + // can be enabled via the `message_encoding` feature. FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10 FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // Length-delimited aggregate. // New in version 2. @@ -195,11 +284,11 @@ func (x FieldDescriptorProto_Type) String() string { } func (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor() } func (FieldDescriptorProto_Type) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[1] + return &file_google_protobuf_descriptor_proto_enumTypes[2] } func (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber { @@ -226,21 +315,24 @@ type FieldDescriptorProto_Label int32 const ( // 0 is reserved for errors FieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1 - FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2 FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3 + // The required label is only allowed in google.protobuf. In proto3 and Editions + // it's explicitly prohibited. In Editions, the `field_presence` feature + // can be used to get this behavior. + FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2 ) // Enum value maps for FieldDescriptorProto_Label. var ( FieldDescriptorProto_Label_name = map[int32]string{ 1: "LABEL_OPTIONAL", - 2: "LABEL_REQUIRED", 3: "LABEL_REPEATED", + 2: "LABEL_REQUIRED", } FieldDescriptorProto_Label_value = map[string]int32{ "LABEL_OPTIONAL": 1, - "LABEL_REQUIRED": 2, "LABEL_REPEATED": 3, + "LABEL_REQUIRED": 2, } ) @@ -255,11 +347,11 @@ func (x FieldDescriptorProto_Label) String() string { } func (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor() } func (FieldDescriptorProto_Label) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[2] + return &file_google_protobuf_descriptor_proto_enumTypes[3] } func (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber { @@ -316,11 +408,11 @@ func (x FileOptions_OptimizeMode) String() string { } func (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor() } func (FileOptions_OptimizeMode) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[3] + return &file_google_protobuf_descriptor_proto_enumTypes[4] } func (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber { @@ -382,11 +474,11 @@ func (x FieldOptions_CType) String() string { } func (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor() } func (FieldOptions_CType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[4] + return &file_google_protobuf_descriptor_proto_enumTypes[5] } func (x FieldOptions_CType) Number() protoreflect.EnumNumber { @@ -444,11 +536,11 @@ func (x FieldOptions_JSType) String() string { } func (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor() } func (FieldOptions_JSType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[5] + return &file_google_protobuf_descriptor_proto_enumTypes[6] } func (x FieldOptions_JSType) Number() protoreflect.EnumNumber { @@ -506,11 +598,11 @@ func (x FieldOptions_OptionRetention) String() string { } func (FieldOptions_OptionRetention) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[6].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor() } func (FieldOptions_OptionRetention) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[6] + return &file_google_protobuf_descriptor_proto_enumTypes[7] } func (x FieldOptions_OptionRetention) Number() protoreflect.EnumNumber { @@ -590,11 +682,11 @@ func (x FieldOptions_OptionTargetType) String() string { } func (FieldOptions_OptionTargetType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[7].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor() } func (FieldOptions_OptionTargetType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[7] + return &file_google_protobuf_descriptor_proto_enumTypes[8] } func (x FieldOptions_OptionTargetType) Number() protoreflect.EnumNumber { @@ -652,11 +744,11 @@ func (x MethodOptions_IdempotencyLevel) String() string { } func (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[8].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor() } func (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[8] + return &file_google_protobuf_descriptor_proto_enumTypes[9] } func (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber { @@ -714,11 +806,11 @@ func (x FeatureSet_FieldPresence) String() string { } func (FeatureSet_FieldPresence) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[9].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor() } func (FeatureSet_FieldPresence) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[9] + return &file_google_protobuf_descriptor_proto_enumTypes[10] } func (x FeatureSet_FieldPresence) Number() protoreflect.EnumNumber { @@ -773,11 +865,11 @@ func (x FeatureSet_EnumType) String() string { } func (FeatureSet_EnumType) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[10].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor() } func (FeatureSet_EnumType) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[10] + return &file_google_protobuf_descriptor_proto_enumTypes[11] } func (x FeatureSet_EnumType) Number() protoreflect.EnumNumber { @@ -832,11 +924,11 @@ func (x FeatureSet_RepeatedFieldEncoding) String() string { } func (FeatureSet_RepeatedFieldEncoding) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[11].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor() } func (FeatureSet_RepeatedFieldEncoding) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[11] + return &file_google_protobuf_descriptor_proto_enumTypes[12] } func (x FeatureSet_RepeatedFieldEncoding) Number() protoreflect.EnumNumber { @@ -858,65 +950,62 @@ func (FeatureSet_RepeatedFieldEncoding) EnumDescriptor() ([]byte, []int) { return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 2} } -type FeatureSet_StringFieldValidation int32 +type FeatureSet_Utf8Validation int32 const ( - FeatureSet_STRING_FIELD_VALIDATION_UNKNOWN FeatureSet_StringFieldValidation = 0 - FeatureSet_MANDATORY FeatureSet_StringFieldValidation = 1 - FeatureSet_HINT FeatureSet_StringFieldValidation = 2 - FeatureSet_NONE FeatureSet_StringFieldValidation = 3 + FeatureSet_UTF8_VALIDATION_UNKNOWN FeatureSet_Utf8Validation = 0 + FeatureSet_NONE FeatureSet_Utf8Validation = 1 + FeatureSet_VERIFY FeatureSet_Utf8Validation = 2 ) -// Enum value maps for FeatureSet_StringFieldValidation. +// Enum value maps for FeatureSet_Utf8Validation. var ( - FeatureSet_StringFieldValidation_name = map[int32]string{ - 0: "STRING_FIELD_VALIDATION_UNKNOWN", - 1: "MANDATORY", - 2: "HINT", - 3: "NONE", - } - FeatureSet_StringFieldValidation_value = map[string]int32{ - "STRING_FIELD_VALIDATION_UNKNOWN": 0, - "MANDATORY": 1, - "HINT": 2, - "NONE": 3, + FeatureSet_Utf8Validation_name = map[int32]string{ + 0: "UTF8_VALIDATION_UNKNOWN", + 1: "NONE", + 2: "VERIFY", + } + FeatureSet_Utf8Validation_value = map[string]int32{ + "UTF8_VALIDATION_UNKNOWN": 0, + "NONE": 1, + "VERIFY": 2, } ) -func (x FeatureSet_StringFieldValidation) Enum() *FeatureSet_StringFieldValidation { - p := new(FeatureSet_StringFieldValidation) +func (x FeatureSet_Utf8Validation) Enum() *FeatureSet_Utf8Validation { + p := new(FeatureSet_Utf8Validation) *p = x return p } -func (x FeatureSet_StringFieldValidation) String() string { +func (x FeatureSet_Utf8Validation) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FeatureSet_StringFieldValidation) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[12].Descriptor() +func (FeatureSet_Utf8Validation) Descriptor() protoreflect.EnumDescriptor { + return file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor() } -func (FeatureSet_StringFieldValidation) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[12] +func (FeatureSet_Utf8Validation) Type() protoreflect.EnumType { + return &file_google_protobuf_descriptor_proto_enumTypes[13] } -func (x FeatureSet_StringFieldValidation) Number() protoreflect.EnumNumber { +func (x FeatureSet_Utf8Validation) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. -func (x *FeatureSet_StringFieldValidation) UnmarshalJSON(b []byte) error { +func (x *FeatureSet_Utf8Validation) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } - *x = FeatureSet_StringFieldValidation(num) + *x = FeatureSet_Utf8Validation(num) return nil } -// Deprecated: Use FeatureSet_StringFieldValidation.Descriptor instead. -func (FeatureSet_StringFieldValidation) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use FeatureSet_Utf8Validation.Descriptor instead. +func (FeatureSet_Utf8Validation) EnumDescriptor() ([]byte, []int) { return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 3} } @@ -953,11 +1042,11 @@ func (x FeatureSet_MessageEncoding) String() string { } func (FeatureSet_MessageEncoding) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[13].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor() } func (FeatureSet_MessageEncoding) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[13] + return &file_google_protobuf_descriptor_proto_enumTypes[14] } func (x FeatureSet_MessageEncoding) Number() protoreflect.EnumNumber { @@ -1012,11 +1101,11 @@ func (x FeatureSet_JsonFormat) String() string { } func (FeatureSet_JsonFormat) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[14].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor() } func (FeatureSet_JsonFormat) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[14] + return &file_google_protobuf_descriptor_proto_enumTypes[15] } func (x FeatureSet_JsonFormat) Number() protoreflect.EnumNumber { @@ -1076,11 +1165,11 @@ func (x GeneratedCodeInfo_Annotation_Semantic) String() string { } func (GeneratedCodeInfo_Annotation_Semantic) Descriptor() protoreflect.EnumDescriptor { - return file_google_protobuf_descriptor_proto_enumTypes[15].Descriptor() + return file_google_protobuf_descriptor_proto_enumTypes[16].Descriptor() } func (GeneratedCodeInfo_Annotation_Semantic) Type() protoreflect.EnumType { - return &file_google_protobuf_descriptor_proto_enumTypes[15] + return &file_google_protobuf_descriptor_proto_enumTypes[16] } func (x GeneratedCodeInfo_Annotation_Semantic) Number() protoreflect.EnumNumber { @@ -1099,7 +1188,7 @@ func (x *GeneratedCodeInfo_Annotation_Semantic) UnmarshalJSON(b []byte) error { // Deprecated: Use GeneratedCodeInfo_Annotation_Semantic.Descriptor instead. func (GeneratedCodeInfo_Annotation_Semantic) EnumDescriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21, 0, 0} + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0, 0} } // The protocol compiler can output a FileDescriptorSet containing the .proto @@ -1182,8 +1271,8 @@ type FileDescriptorProto struct { // // If `edition` is present, this value must be "editions". Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"` - // The edition of the proto file, which is an opaque string. - Edition *string `protobuf:"bytes,13,opt,name=edition" json:"edition,omitempty"` + // The edition of the proto file. + Edition *Edition `protobuf:"varint,14,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` } func (x *FileDescriptorProto) Reset() { @@ -1302,11 +1391,11 @@ func (x *FileDescriptorProto) GetSyntax() string { return "" } -func (x *FileDescriptorProto) GetEdition() string { +func (x *FileDescriptorProto) GetEdition() Edition { if x != nil && x.Edition != nil { return *x.Edition } - return "" + return Edition_EDITION_UNKNOWN } // Describes a message type. @@ -1446,7 +1535,7 @@ type ExtensionRangeOptions struct { // Any features defined in the specific edition. Features *FeatureSet `protobuf:"bytes,50,opt,name=features" json:"features,omitempty"` // The verification state of the range. - // TODO(b/278783756): flip the default to DECLARATION once all empty ranges + // TODO: flip the default to DECLARATION once all empty ranges // are marked as UNVERIFIED. Verification *ExtensionRangeOptions_VerificationState `protobuf:"varint,3,opt,name=verification,enum=google.protobuf.ExtensionRangeOptions_VerificationState,def=1" json:"verification,omitempty"` } @@ -2416,7 +2505,7 @@ type MessageOptions struct { // This should only be used as a temporary measure against broken builds due // to the change in behavior for JSON field name conflicts. // - // TODO(b/261750190) This is legacy behavior we plan to remove once downstream + // TODO This is legacy behavior we plan to remove once downstream // teams have had time to migrate. // // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. @@ -2533,7 +2622,9 @@ type FieldOptions struct { // a more efficient representation on the wire. Rather than repeatedly // writing the tag and type for each element, the entire array is encoded as // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. + // false will avoid using packed encoding. This option is prohibited in + // Editions, but the `repeated_field_encoding` feature can be used to control + // the behavior. Packed *bool `protobuf:"varint,2,opt,name=packed" json:"packed,omitempty"` // The jstype option determines the JavaScript type used for values of the // field. The option is permitted only for 64 bit integral and fixed types @@ -2811,7 +2902,7 @@ type EnumOptions struct { // and strips underscored from the fields before comparison in proto3 only. // The new behavior takes `json_name` into account and applies to proto2 as // well. - // TODO(b/261750190) Remove this legacy behavior once downstream teams have + // TODO Remove this legacy behavior once downstream teams have // had time to migrate. // // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. @@ -3244,7 +3335,7 @@ func (x *UninterpretedOption) GetAggregateValue() string { return "" } -// TODO(b/274655146) Enums in C++ gencode (and potentially other languages) are +// TODO Enums in C++ gencode (and potentially other languages) are // not well scoped. This means that each of the feature enums below can clash // with each other. The short names we've chosen maximize call-site // readability, but leave us very open to this scenario. A future feature will @@ -3259,10 +3350,9 @@ type FeatureSet struct { FieldPresence *FeatureSet_FieldPresence `protobuf:"varint,1,opt,name=field_presence,json=fieldPresence,enum=google.protobuf.FeatureSet_FieldPresence" json:"field_presence,omitempty"` EnumType *FeatureSet_EnumType `protobuf:"varint,2,opt,name=enum_type,json=enumType,enum=google.protobuf.FeatureSet_EnumType" json:"enum_type,omitempty"` RepeatedFieldEncoding *FeatureSet_RepeatedFieldEncoding `protobuf:"varint,3,opt,name=repeated_field_encoding,json=repeatedFieldEncoding,enum=google.protobuf.FeatureSet_RepeatedFieldEncoding" json:"repeated_field_encoding,omitempty"` - StringFieldValidation *FeatureSet_StringFieldValidation `protobuf:"varint,4,opt,name=string_field_validation,json=stringFieldValidation,enum=google.protobuf.FeatureSet_StringFieldValidation" json:"string_field_validation,omitempty"` + Utf8Validation *FeatureSet_Utf8Validation `protobuf:"varint,4,opt,name=utf8_validation,json=utf8Validation,enum=google.protobuf.FeatureSet_Utf8Validation" json:"utf8_validation,omitempty"` MessageEncoding *FeatureSet_MessageEncoding `protobuf:"varint,5,opt,name=message_encoding,json=messageEncoding,enum=google.protobuf.FeatureSet_MessageEncoding" json:"message_encoding,omitempty"` JsonFormat *FeatureSet_JsonFormat `protobuf:"varint,6,opt,name=json_format,json=jsonFormat,enum=google.protobuf.FeatureSet_JsonFormat" json:"json_format,omitempty"` - RawFeatures *FeatureSet `protobuf:"bytes,999,opt,name=raw_features,json=rawFeatures" json:"raw_features,omitempty"` } func (x *FeatureSet) Reset() { @@ -3318,11 +3408,11 @@ func (x *FeatureSet) GetRepeatedFieldEncoding() FeatureSet_RepeatedFieldEncoding return FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN } -func (x *FeatureSet) GetStringFieldValidation() FeatureSet_StringFieldValidation { - if x != nil && x.StringFieldValidation != nil { - return *x.StringFieldValidation +func (x *FeatureSet) GetUtf8Validation() FeatureSet_Utf8Validation { + if x != nil && x.Utf8Validation != nil { + return *x.Utf8Validation } - return FeatureSet_STRING_FIELD_VALIDATION_UNKNOWN + return FeatureSet_UTF8_VALIDATION_UNKNOWN } func (x *FeatureSet) GetMessageEncoding() FeatureSet_MessageEncoding { @@ -3339,13 +3429,77 @@ func (x *FeatureSet) GetJsonFormat() FeatureSet_JsonFormat { return FeatureSet_JSON_FORMAT_UNKNOWN } -func (x *FeatureSet) GetRawFeatures() *FeatureSet { +// A compiled specification for the defaults of a set of features. These +// messages are generated from FeatureSet extensions and can be used to seed +// feature resolution. The resolution with this object becomes a simple search +// for the closest matching edition, followed by proto merges. +type FeatureSetDefaults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Defaults []*FeatureSetDefaults_FeatureSetEditionDefault `protobuf:"bytes,1,rep,name=defaults" json:"defaults,omitempty"` + // The minimum supported edition (inclusive) when this was constructed. + // Editions before this will not have defaults. + MinimumEdition *Edition `protobuf:"varint,4,opt,name=minimum_edition,json=minimumEdition,enum=google.protobuf.Edition" json:"minimum_edition,omitempty"` + // The maximum known edition (inclusive) when this was constructed. Editions + // after this will not have reliable defaults. + MaximumEdition *Edition `protobuf:"varint,5,opt,name=maximum_edition,json=maximumEdition,enum=google.protobuf.Edition" json:"maximum_edition,omitempty"` +} + +func (x *FeatureSetDefaults) Reset() { + *x = FeatureSetDefaults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_protobuf_descriptor_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeatureSetDefaults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeatureSetDefaults) ProtoMessage() {} + +func (x *FeatureSetDefaults) ProtoReflect() protoreflect.Message { + mi := &file_google_protobuf_descriptor_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeatureSetDefaults.ProtoReflect.Descriptor instead. +func (*FeatureSetDefaults) Descriptor() ([]byte, []int) { + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20} +} + +func (x *FeatureSetDefaults) GetDefaults() []*FeatureSetDefaults_FeatureSetEditionDefault { if x != nil { - return x.RawFeatures + return x.Defaults } return nil } +func (x *FeatureSetDefaults) GetMinimumEdition() Edition { + if x != nil && x.MinimumEdition != nil { + return *x.MinimumEdition + } + return Edition_EDITION_UNKNOWN +} + +func (x *FeatureSetDefaults) GetMaximumEdition() Edition { + if x != nil && x.MaximumEdition != nil { + return *x.MaximumEdition + } + return Edition_EDITION_UNKNOWN +} + // Encapsulates information about the original source file from which a // FileDescriptorProto was generated. type SourceCodeInfo struct { @@ -3407,7 +3561,7 @@ type SourceCodeInfo struct { func (x *SourceCodeInfo) Reset() { *x = SourceCodeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[20] + mi := &file_google_protobuf_descriptor_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3420,7 +3574,7 @@ func (x *SourceCodeInfo) String() string { func (*SourceCodeInfo) ProtoMessage() {} func (x *SourceCodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[20] + mi := &file_google_protobuf_descriptor_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3433,7 +3587,7 @@ func (x *SourceCodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SourceCodeInfo.ProtoReflect.Descriptor instead. func (*SourceCodeInfo) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20} + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21} } func (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location { @@ -3459,7 +3613,7 @@ type GeneratedCodeInfo struct { func (x *GeneratedCodeInfo) Reset() { *x = GeneratedCodeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[21] + mi := &file_google_protobuf_descriptor_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3472,7 +3626,7 @@ func (x *GeneratedCodeInfo) String() string { func (*GeneratedCodeInfo) ProtoMessage() {} func (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[21] + mi := &file_google_protobuf_descriptor_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3485,7 +3639,7 @@ func (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GeneratedCodeInfo.ProtoReflect.Descriptor instead. func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21} + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22} } func (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation { @@ -3508,7 +3662,7 @@ type DescriptorProto_ExtensionRange struct { func (x *DescriptorProto_ExtensionRange) Reset() { *x = DescriptorProto_ExtensionRange{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[22] + mi := &file_google_protobuf_descriptor_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3521,7 +3675,7 @@ func (x *DescriptorProto_ExtensionRange) String() string { func (*DescriptorProto_ExtensionRange) ProtoMessage() {} func (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[22] + mi := &file_google_protobuf_descriptor_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3573,7 +3727,7 @@ type DescriptorProto_ReservedRange struct { func (x *DescriptorProto_ReservedRange) Reset() { *x = DescriptorProto_ReservedRange{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[23] + mi := &file_google_protobuf_descriptor_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3586,7 +3740,7 @@ func (x *DescriptorProto_ReservedRange) String() string { func (*DescriptorProto_ReservedRange) ProtoMessage() {} func (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[23] + mi := &file_google_protobuf_descriptor_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3642,7 +3796,7 @@ type ExtensionRangeOptions_Declaration struct { func (x *ExtensionRangeOptions_Declaration) Reset() { *x = ExtensionRangeOptions_Declaration{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[24] + mi := &file_google_protobuf_descriptor_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3655,7 +3809,7 @@ func (x *ExtensionRangeOptions_Declaration) String() string { func (*ExtensionRangeOptions_Declaration) ProtoMessage() {} func (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[24] + mi := &file_google_protobuf_descriptor_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3724,7 +3878,7 @@ type EnumDescriptorProto_EnumReservedRange struct { func (x *EnumDescriptorProto_EnumReservedRange) Reset() { *x = EnumDescriptorProto_EnumReservedRange{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[25] + mi := &file_google_protobuf_descriptor_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3737,7 +3891,7 @@ func (x *EnumDescriptorProto_EnumReservedRange) String() string { func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} func (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[25] + mi := &file_google_protobuf_descriptor_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3772,14 +3926,14 @@ type FieldOptions_EditionDefault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Edition *string `protobuf:"bytes,1,opt,name=edition" json:"edition,omitempty"` - Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value. + Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` + Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` // Textproto value. } func (x *FieldOptions_EditionDefault) Reset() { *x = FieldOptions_EditionDefault{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[26] + mi := &file_google_protobuf_descriptor_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3792,7 +3946,7 @@ func (x *FieldOptions_EditionDefault) String() string { func (*FieldOptions_EditionDefault) ProtoMessage() {} func (x *FieldOptions_EditionDefault) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[26] + mi := &file_google_protobuf_descriptor_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3808,11 +3962,11 @@ func (*FieldOptions_EditionDefault) Descriptor() ([]byte, []int) { return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0} } -func (x *FieldOptions_EditionDefault) GetEdition() string { +func (x *FieldOptions_EditionDefault) GetEdition() Edition { if x != nil && x.Edition != nil { return *x.Edition } - return "" + return Edition_EDITION_UNKNOWN } func (x *FieldOptions_EditionDefault) GetValue() string { @@ -3839,7 +3993,7 @@ type UninterpretedOption_NamePart struct { func (x *UninterpretedOption_NamePart) Reset() { *x = UninterpretedOption_NamePart{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[27] + mi := &file_google_protobuf_descriptor_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3852,7 +4006,7 @@ func (x *UninterpretedOption_NamePart) String() string { func (*UninterpretedOption_NamePart) ProtoMessage() {} func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[27] + mi := &file_google_protobuf_descriptor_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3882,6 +4036,65 @@ func (x *UninterpretedOption_NamePart) GetIsExtension() bool { return false } +// A map from every known edition with a unique set of defaults to its +// defaults. Not all editions may be contained here. For a given edition, +// the defaults at the closest matching edition ordered at or before it should +// be used. This field must be in strict ascending order by edition. +type FeatureSetDefaults_FeatureSetEditionDefault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` + Features *FeatureSet `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"` +} + +func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() { + *x = FeatureSetDefaults_FeatureSetEditionDefault{} + if protoimpl.UnsafeEnabled { + mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {} + +func (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message { + mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeatureSetDefaults_FeatureSetEditionDefault.ProtoReflect.Descriptor instead. +func (*FeatureSetDefaults_FeatureSetEditionDefault) Descriptor() ([]byte, []int) { + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetEdition() Edition { + if x != nil && x.Edition != nil { + return *x.Edition + } + return Edition_EDITION_UNKNOWN +} + +func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFeatures() *FeatureSet { + if x != nil { + return x.Features + } + return nil +} + type SourceCodeInfo_Location struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3983,7 +4196,7 @@ type SourceCodeInfo_Location struct { func (x *SourceCodeInfo_Location) Reset() { *x = SourceCodeInfo_Location{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + mi := &file_google_protobuf_descriptor_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3996,7 +4209,7 @@ func (x *SourceCodeInfo_Location) String() string { func (*SourceCodeInfo_Location) ProtoMessage() {} func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + mi := &file_google_protobuf_descriptor_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4009,7 +4222,7 @@ func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message { // Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Descriptor instead. func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0} + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21, 0} } func (x *SourceCodeInfo_Location) GetPath() []int32 { @@ -4070,7 +4283,7 @@ type GeneratedCodeInfo_Annotation struct { func (x *GeneratedCodeInfo_Annotation) Reset() { *x = GeneratedCodeInfo_Annotation{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + mi := &file_google_protobuf_descriptor_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4083,7 +4296,7 @@ func (x *GeneratedCodeInfo_Annotation) String() string { func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + mi := &file_google_protobuf_descriptor_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4096,7 +4309,7 @@ func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { // Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Descriptor instead. func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) { - return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{21, 0} + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{22, 0} } func (x *GeneratedCodeInfo_Annotation) GetPath() []int32 { @@ -4145,7 +4358,7 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x66, 0x69, - 0x6c, 0x65, 0x22, 0xfe, 0x04, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x6c, 0x65, 0x22, 0x98, 0x05, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, @@ -4183,277 +4396,429 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06, 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, - 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x06, + 0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, - 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, - 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, - 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, - 0xc7, 0x04, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, - 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01, - 0x02, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, - 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, + 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, + 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x94, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, - 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, - 0x0b, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, - 0x0a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, - 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, - 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, + 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, + 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, + 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, - 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, - 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, - 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, - 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, - 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, - 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, - 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, - 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, - 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, - 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, - 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, - 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x22, 0x63, 0x0a, - 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, - 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, - 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, - 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, - 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, - 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, + 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xc7, 0x04, 0x0a, 0x15, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, + 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0x88, 0x01, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x63, + 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x3a, 0x0a, 0x55, 0x4e, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x52, 0x0c, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x94, 0x01, 0x0a, 0x0b, + 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x04, + 0x10, 0x05, 0x22, 0x34, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x43, 0x4c, 0x41, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x56, 0x45, + 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, + 0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, + 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, + 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, + 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, + 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, + 0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, + 0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, + 0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, + 0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, + 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, + 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, + 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, + 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, + 0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c, + 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, + 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, + 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a, + 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, + 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, + 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xca, + 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61, + 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61, + 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, + 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c, + 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53, + 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f, + 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, + 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, + 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, + 0x70, 0x68, 0x70, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, + 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, + 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, + 0x68, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x68, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x72, 0x75, 0x62, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, + 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, + 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, + 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, + 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xf4, 0x03, 0x0a, 0x0e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, + 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, + 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, + 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, + 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, + 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, + 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, + 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, + 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, + 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, - 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xca, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, - 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, - 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, - 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, - 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, - 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, - 0x61, 0x76, 0x61, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, - 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, - 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, - 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, - 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, 0x70, 0x68, 0x70, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, - 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, - 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, - 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, - 0x69, 0x66, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x68, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x68, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x62, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x32, 0x20, + 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, + 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, + 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, + 0x10, 0x0a, 0x22, 0xad, 0x0a, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, + 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, + 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, + 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, + 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, + 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, + 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, + 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, + 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, + 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, + 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, + 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x07, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0f, 0x65, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, + 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, + 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2f, 0x0a, + 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, + 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, + 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, + 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, + 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, + 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, + 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, + 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, + 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, + 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, + 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, + 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, + 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, + 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, + 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, + 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, + 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, + 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x12, + 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, + 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, + 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, + 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, + 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, + 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, @@ -4462,147 +4827,49 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, - 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, - 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, - 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26, 0x10, - 0x27, 0x22, 0xf4, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, - 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, - 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, + 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, + 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, + 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, + 0x64, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, + 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, - 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, - 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08, - 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x93, 0x0a, 0x0a, 0x0c, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, - 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, - 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, - 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, - 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, - 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, - 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, - 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x40, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, - 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, - 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, - 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, - 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, - 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, - 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, - 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, - 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, - 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, - 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, - 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, - 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, - 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, - 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, - 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, - 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x22, 0xac, - 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, - 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, - 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, - 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, - 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, + 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, + 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, + 0x02, 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, 0x69, 0x64, + 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, + 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, + 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, 0x64, 0x65, + 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, + 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, @@ -4611,219 +4878,205 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, - 0x06, 0x22, 0x81, 0x02, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, - 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, - 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, - 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, - 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, + 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, + 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, + 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, + 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, + 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, + 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, + 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, + 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfc, 0x09, 0x0a, 0x0a, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x8b, 0x01, 0x0a, 0x0e, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x39, 0x88, + 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, + 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, 0x4d, 0x50, + 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, + 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, - 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, - 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x99, 0x03, - 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, - 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, - 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, - 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, - 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, - 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, - 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, - 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, - 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9d, 0x0a, 0x0a, 0x0a, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x6e, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, + 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x23, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0b, 0x12, 0x06, + 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4f, 0x50, + 0x45, 0x4e, 0x18, 0xe7, 0x07, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x92, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x52, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x42, 0x27, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, + 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, + 0x01, 0x0b, 0x12, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0x52, 0x15, 0x72, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x12, 0x78, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x1c, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, - 0x98, 0x01, 0x01, 0xa2, 0x01, 0x10, 0x0a, 0x04, 0x32, 0x30, 0x32, 0x33, 0x12, 0x08, 0x45, 0x58, - 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, 0x38, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x88, 0x01, 0x01, 0x98, 0x01, + 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, 0xe6, 0x07, + 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, 0x52, 0x0e, + 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x78, + 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, + 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x18, - 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0c, 0x0a, 0x04, 0x32, 0x30, - 0x32, 0x33, 0x12, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, - 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x1a, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, - 0x01, 0x01, 0xa2, 0x01, 0x0e, 0x0a, 0x04, 0x32, 0x30, 0x32, 0x33, 0x12, 0x06, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x44, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x88, 0x01, 0x0a, 0x17, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x1d, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x11, 0x0a, 0x04, 0x32, - 0x30, 0x32, 0x33, 0x12, 0x09, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x52, 0x15, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x23, 0x88, 0x01, - 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x17, 0x0a, 0x04, 0x32, 0x30, 0x32, 0x33, - 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, - 0x44, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x65, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, - 0x1c, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, - 0x0a, 0x04, 0x32, 0x30, 0x32, 0x33, 0x12, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x52, 0x0a, 0x6a, - 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x44, 0x0a, 0x0c, 0x72, 0x61, 0x77, - 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x42, 0x03, 0x98, - 0x01, 0x00, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, - 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, - 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, - 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, - 0x43, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, - 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, - 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, - 0x4f, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, 0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, - 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x5f, - 0x0a, 0x15, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x54, 0x52, 0x49, 0x4e, - 0x47, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, - 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, - 0x53, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x4e, - 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, - 0x58, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, - 0x45, 0x44, 0x10, 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, - 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, - 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x2a, 0x06, - 0x08, 0xe8, 0x07, 0x10, 0xe9, 0x07, 0x2a, 0x06, 0x08, 0xe9, 0x07, 0x10, 0xea, 0x07, 0x2a, 0x06, - 0x08, 0x8b, 0x4e, 0x10, 0x90, 0x4e, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0xce, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, - 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, - 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, - 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, - 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, - 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, - 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, - 0x61, 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, - 0x53, 0x10, 0x02, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, - 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, - 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, + 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x20, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, + 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, + 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7c, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x33, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x06, + 0x98, 0x01, 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, + 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, + 0x12, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0x52, 0x0a, 0x6a, 0x73, 0x6f, 0x6e, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x02, 0x12, + 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, + 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, + 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, 0x56, 0x0a, + 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x50, 0x45, 0x41, 0x54, + 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, + 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x0e, 0x55, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x54, 0x46, 0x38, 0x5f, + 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0a, + 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x10, 0x02, 0x22, 0x53, 0x0a, 0x0f, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, + 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, + 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, + 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x17, 0x0a, + 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, + 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xe9, + 0x07, 0x2a, 0x06, 0x08, 0xe9, 0x07, 0x10, 0xea, 0x07, 0x2a, 0x06, 0x08, 0x8b, 0x4e, 0x10, 0x90, + 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, 0x10, 0xe8, 0x07, 0x22, 0xfe, 0x02, 0x0a, 0x12, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, + 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0x87, 0x01, 0x0a, 0x18, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, + 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, + 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, + 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, + 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, + 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, + 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, + 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, + 0x74, 0x69, 0x63, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, + 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, + 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, + 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x02, 0x2a, 0xea, 0x01, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, 0x13, 0x0a, + 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, + 0xe7, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x30, + 0x32, 0x33, 0x10, 0xe8, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x17, + 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x5f, 0x54, 0x45, 0x53, 0x54, + 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, + 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, + 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, + 0x10, 0x9f, 0x8d, 0x06, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, + 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, + 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, + 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, } var ( @@ -4838,127 +5091,136 @@ func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte { return file_google_protobuf_descriptor_proto_rawDescData } -var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 16) -var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 17) +var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 32) var file_google_protobuf_descriptor_proto_goTypes = []interface{}{ - (ExtensionRangeOptions_VerificationState)(0), // 0: google.protobuf.ExtensionRangeOptions.VerificationState - (FieldDescriptorProto_Type)(0), // 1: google.protobuf.FieldDescriptorProto.Type - (FieldDescriptorProto_Label)(0), // 2: google.protobuf.FieldDescriptorProto.Label - (FileOptions_OptimizeMode)(0), // 3: google.protobuf.FileOptions.OptimizeMode - (FieldOptions_CType)(0), // 4: google.protobuf.FieldOptions.CType - (FieldOptions_JSType)(0), // 5: google.protobuf.FieldOptions.JSType - (FieldOptions_OptionRetention)(0), // 6: google.protobuf.FieldOptions.OptionRetention - (FieldOptions_OptionTargetType)(0), // 7: google.protobuf.FieldOptions.OptionTargetType - (MethodOptions_IdempotencyLevel)(0), // 8: google.protobuf.MethodOptions.IdempotencyLevel - (FeatureSet_FieldPresence)(0), // 9: google.protobuf.FeatureSet.FieldPresence - (FeatureSet_EnumType)(0), // 10: google.protobuf.FeatureSet.EnumType - (FeatureSet_RepeatedFieldEncoding)(0), // 11: google.protobuf.FeatureSet.RepeatedFieldEncoding - (FeatureSet_StringFieldValidation)(0), // 12: google.protobuf.FeatureSet.StringFieldValidation - (FeatureSet_MessageEncoding)(0), // 13: google.protobuf.FeatureSet.MessageEncoding - (FeatureSet_JsonFormat)(0), // 14: google.protobuf.FeatureSet.JsonFormat - (GeneratedCodeInfo_Annotation_Semantic)(0), // 15: google.protobuf.GeneratedCodeInfo.Annotation.Semantic - (*FileDescriptorSet)(nil), // 16: google.protobuf.FileDescriptorSet - (*FileDescriptorProto)(nil), // 17: google.protobuf.FileDescriptorProto - (*DescriptorProto)(nil), // 18: google.protobuf.DescriptorProto - (*ExtensionRangeOptions)(nil), // 19: google.protobuf.ExtensionRangeOptions - (*FieldDescriptorProto)(nil), // 20: google.protobuf.FieldDescriptorProto - (*OneofDescriptorProto)(nil), // 21: google.protobuf.OneofDescriptorProto - (*EnumDescriptorProto)(nil), // 22: google.protobuf.EnumDescriptorProto - (*EnumValueDescriptorProto)(nil), // 23: google.protobuf.EnumValueDescriptorProto - (*ServiceDescriptorProto)(nil), // 24: google.protobuf.ServiceDescriptorProto - (*MethodDescriptorProto)(nil), // 25: google.protobuf.MethodDescriptorProto - (*FileOptions)(nil), // 26: google.protobuf.FileOptions - (*MessageOptions)(nil), // 27: google.protobuf.MessageOptions - (*FieldOptions)(nil), // 28: google.protobuf.FieldOptions - (*OneofOptions)(nil), // 29: google.protobuf.OneofOptions - (*EnumOptions)(nil), // 30: google.protobuf.EnumOptions - (*EnumValueOptions)(nil), // 31: google.protobuf.EnumValueOptions - (*ServiceOptions)(nil), // 32: google.protobuf.ServiceOptions - (*MethodOptions)(nil), // 33: google.protobuf.MethodOptions - (*UninterpretedOption)(nil), // 34: google.protobuf.UninterpretedOption - (*FeatureSet)(nil), // 35: google.protobuf.FeatureSet - (*SourceCodeInfo)(nil), // 36: google.protobuf.SourceCodeInfo - (*GeneratedCodeInfo)(nil), // 37: google.protobuf.GeneratedCodeInfo - (*DescriptorProto_ExtensionRange)(nil), // 38: google.protobuf.DescriptorProto.ExtensionRange - (*DescriptorProto_ReservedRange)(nil), // 39: google.protobuf.DescriptorProto.ReservedRange - (*ExtensionRangeOptions_Declaration)(nil), // 40: google.protobuf.ExtensionRangeOptions.Declaration - (*EnumDescriptorProto_EnumReservedRange)(nil), // 41: google.protobuf.EnumDescriptorProto.EnumReservedRange - (*FieldOptions_EditionDefault)(nil), // 42: google.protobuf.FieldOptions.EditionDefault - (*UninterpretedOption_NamePart)(nil), // 43: google.protobuf.UninterpretedOption.NamePart - (*SourceCodeInfo_Location)(nil), // 44: google.protobuf.SourceCodeInfo.Location - (*GeneratedCodeInfo_Annotation)(nil), // 45: google.protobuf.GeneratedCodeInfo.Annotation + (Edition)(0), // 0: google.protobuf.Edition + (ExtensionRangeOptions_VerificationState)(0), // 1: google.protobuf.ExtensionRangeOptions.VerificationState + (FieldDescriptorProto_Type)(0), // 2: google.protobuf.FieldDescriptorProto.Type + (FieldDescriptorProto_Label)(0), // 3: google.protobuf.FieldDescriptorProto.Label + (FileOptions_OptimizeMode)(0), // 4: google.protobuf.FileOptions.OptimizeMode + (FieldOptions_CType)(0), // 5: google.protobuf.FieldOptions.CType + (FieldOptions_JSType)(0), // 6: google.protobuf.FieldOptions.JSType + (FieldOptions_OptionRetention)(0), // 7: google.protobuf.FieldOptions.OptionRetention + (FieldOptions_OptionTargetType)(0), // 8: google.protobuf.FieldOptions.OptionTargetType + (MethodOptions_IdempotencyLevel)(0), // 9: google.protobuf.MethodOptions.IdempotencyLevel + (FeatureSet_FieldPresence)(0), // 10: google.protobuf.FeatureSet.FieldPresence + (FeatureSet_EnumType)(0), // 11: google.protobuf.FeatureSet.EnumType + (FeatureSet_RepeatedFieldEncoding)(0), // 12: google.protobuf.FeatureSet.RepeatedFieldEncoding + (FeatureSet_Utf8Validation)(0), // 13: google.protobuf.FeatureSet.Utf8Validation + (FeatureSet_MessageEncoding)(0), // 14: google.protobuf.FeatureSet.MessageEncoding + (FeatureSet_JsonFormat)(0), // 15: google.protobuf.FeatureSet.JsonFormat + (GeneratedCodeInfo_Annotation_Semantic)(0), // 16: google.protobuf.GeneratedCodeInfo.Annotation.Semantic + (*FileDescriptorSet)(nil), // 17: google.protobuf.FileDescriptorSet + (*FileDescriptorProto)(nil), // 18: google.protobuf.FileDescriptorProto + (*DescriptorProto)(nil), // 19: google.protobuf.DescriptorProto + (*ExtensionRangeOptions)(nil), // 20: google.protobuf.ExtensionRangeOptions + (*FieldDescriptorProto)(nil), // 21: google.protobuf.FieldDescriptorProto + (*OneofDescriptorProto)(nil), // 22: google.protobuf.OneofDescriptorProto + (*EnumDescriptorProto)(nil), // 23: google.protobuf.EnumDescriptorProto + (*EnumValueDescriptorProto)(nil), // 24: google.protobuf.EnumValueDescriptorProto + (*ServiceDescriptorProto)(nil), // 25: google.protobuf.ServiceDescriptorProto + (*MethodDescriptorProto)(nil), // 26: google.protobuf.MethodDescriptorProto + (*FileOptions)(nil), // 27: google.protobuf.FileOptions + (*MessageOptions)(nil), // 28: google.protobuf.MessageOptions + (*FieldOptions)(nil), // 29: google.protobuf.FieldOptions + (*OneofOptions)(nil), // 30: google.protobuf.OneofOptions + (*EnumOptions)(nil), // 31: google.protobuf.EnumOptions + (*EnumValueOptions)(nil), // 32: google.protobuf.EnumValueOptions + (*ServiceOptions)(nil), // 33: google.protobuf.ServiceOptions + (*MethodOptions)(nil), // 34: google.protobuf.MethodOptions + (*UninterpretedOption)(nil), // 35: google.protobuf.UninterpretedOption + (*FeatureSet)(nil), // 36: google.protobuf.FeatureSet + (*FeatureSetDefaults)(nil), // 37: google.protobuf.FeatureSetDefaults + (*SourceCodeInfo)(nil), // 38: google.protobuf.SourceCodeInfo + (*GeneratedCodeInfo)(nil), // 39: google.protobuf.GeneratedCodeInfo + (*DescriptorProto_ExtensionRange)(nil), // 40: google.protobuf.DescriptorProto.ExtensionRange + (*DescriptorProto_ReservedRange)(nil), // 41: google.protobuf.DescriptorProto.ReservedRange + (*ExtensionRangeOptions_Declaration)(nil), // 42: google.protobuf.ExtensionRangeOptions.Declaration + (*EnumDescriptorProto_EnumReservedRange)(nil), // 43: google.protobuf.EnumDescriptorProto.EnumReservedRange + (*FieldOptions_EditionDefault)(nil), // 44: google.protobuf.FieldOptions.EditionDefault + (*UninterpretedOption_NamePart)(nil), // 45: google.protobuf.UninterpretedOption.NamePart + (*FeatureSetDefaults_FeatureSetEditionDefault)(nil), // 46: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + (*SourceCodeInfo_Location)(nil), // 47: google.protobuf.SourceCodeInfo.Location + (*GeneratedCodeInfo_Annotation)(nil), // 48: google.protobuf.GeneratedCodeInfo.Annotation } var file_google_protobuf_descriptor_proto_depIdxs = []int32{ - 17, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto - 18, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto - 22, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto - 24, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto - 20, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto - 26, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions - 36, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo - 20, // 7: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto - 20, // 8: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto - 18, // 9: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto - 22, // 10: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto - 38, // 11: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange - 21, // 12: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto - 27, // 13: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions - 39, // 14: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange - 34, // 15: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 40, // 16: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration - 35, // 17: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet - 0, // 18: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState - 2, // 19: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label - 1, // 20: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type - 28, // 21: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions - 29, // 22: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions - 23, // 23: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto - 30, // 24: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions - 41, // 25: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange - 31, // 26: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions - 25, // 27: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto - 32, // 28: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions - 33, // 29: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions - 3, // 30: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode - 35, // 31: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 32: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 35, // 33: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 34: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 4, // 35: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType - 5, // 36: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType - 6, // 37: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention - 7, // 38: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType - 42, // 39: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault - 35, // 40: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 41: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 35, // 42: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 43: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 35, // 44: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 45: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 35, // 46: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 47: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 35, // 48: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 49: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 8, // 50: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel - 35, // 51: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet - 34, // 52: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 43, // 53: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart - 9, // 54: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence - 10, // 55: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType - 11, // 56: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding - 12, // 57: google.protobuf.FeatureSet.string_field_validation:type_name -> google.protobuf.FeatureSet.StringFieldValidation - 13, // 58: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding - 14, // 59: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat - 35, // 60: google.protobuf.FeatureSet.raw_features:type_name -> google.protobuf.FeatureSet - 44, // 61: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location - 45, // 62: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation - 19, // 63: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions - 15, // 64: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic - 65, // [65:65] is the sub-list for method output_type - 65, // [65:65] is the sub-list for method input_type - 65, // [65:65] is the sub-list for extension type_name - 65, // [65:65] is the sub-list for extension extendee - 0, // [0:65] is the sub-list for field type_name + 18, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto + 19, // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto + 23, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto + 25, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto + 21, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto + 27, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions + 38, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo + 0, // 7: google.protobuf.FileDescriptorProto.edition:type_name -> google.protobuf.Edition + 21, // 8: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto + 21, // 9: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto + 19, // 10: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto + 23, // 11: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto + 40, // 12: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange + 22, // 13: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto + 28, // 14: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions + 41, // 15: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange + 35, // 16: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 42, // 17: google.protobuf.ExtensionRangeOptions.declaration:type_name -> google.protobuf.ExtensionRangeOptions.Declaration + 36, // 18: google.protobuf.ExtensionRangeOptions.features:type_name -> google.protobuf.FeatureSet + 1, // 19: google.protobuf.ExtensionRangeOptions.verification:type_name -> google.protobuf.ExtensionRangeOptions.VerificationState + 3, // 20: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label + 2, // 21: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type + 29, // 22: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions + 30, // 23: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions + 24, // 24: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto + 31, // 25: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions + 43, // 26: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange + 32, // 27: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions + 26, // 28: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto + 33, // 29: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions + 34, // 30: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions + 4, // 31: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode + 36, // 32: google.protobuf.FileOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 33: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 34: google.protobuf.MessageOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 35: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 5, // 36: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType + 6, // 37: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType + 7, // 38: google.protobuf.FieldOptions.retention:type_name -> google.protobuf.FieldOptions.OptionRetention + 8, // 39: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType + 44, // 40: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault + 36, // 41: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 42: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 43: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 44: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 45: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 46: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 47: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 48: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 49: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 50: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 9, // 51: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel + 36, // 52: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 53: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 45, // 54: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart + 10, // 55: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence + 11, // 56: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType + 12, // 57: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding + 13, // 58: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation + 14, // 59: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding + 15, // 60: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat + 46, // 61: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + 0, // 62: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition + 0, // 63: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition + 47, // 64: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location + 48, // 65: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation + 20, // 66: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions + 0, // 67: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition + 0, // 68: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition + 36, // 69: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features:type_name -> google.protobuf.FeatureSet + 16, // 70: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic + 71, // [71:71] is the sub-list for method output_type + 71, // [71:71] is the sub-list for method input_type + 71, // [71:71] is the sub-list for extension type_name + 71, // [71:71] is the sub-list for extension extendee + 0, // [0:71] is the sub-list for field type_name } func init() { file_google_protobuf_descriptor_proto_init() } @@ -5228,7 +5490,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceCodeInfo); i { + switch v := v.(*FeatureSetDefaults); i { case 0: return &v.state case 1: @@ -5240,7 +5502,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeneratedCodeInfo); i { + switch v := v.(*SourceCodeInfo); i { case 0: return &v.state case 1: @@ -5252,7 +5514,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DescriptorProto_ExtensionRange); i { + switch v := v.(*GeneratedCodeInfo); i { case 0: return &v.state case 1: @@ -5264,7 +5526,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DescriptorProto_ReservedRange); i { + switch v := v.(*DescriptorProto_ExtensionRange); i { case 0: return &v.state case 1: @@ -5276,7 +5538,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtensionRangeOptions_Declaration); i { + switch v := v.(*DescriptorProto_ReservedRange); i { case 0: return &v.state case 1: @@ -5288,7 +5550,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EnumDescriptorProto_EnumReservedRange); i { + switch v := v.(*ExtensionRangeOptions_Declaration); i { case 0: return &v.state case 1: @@ -5300,7 +5562,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FieldOptions_EditionDefault); i { + switch v := v.(*EnumDescriptorProto_EnumReservedRange); i { case 0: return &v.state case 1: @@ -5312,7 +5574,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UninterpretedOption_NamePart); i { + switch v := v.(*FieldOptions_EditionDefault); i { case 0: return &v.state case 1: @@ -5324,7 +5586,7 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SourceCodeInfo_Location); i { + switch v := v.(*UninterpretedOption_NamePart); i { case 0: return &v.state case 1: @@ -5336,6 +5598,30 @@ func file_google_protobuf_descriptor_proto_init() { } } file_google_protobuf_descriptor_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FeatureSetDefaults_FeatureSetEditionDefault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_protobuf_descriptor_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SourceCodeInfo_Location); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_protobuf_descriptor_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GeneratedCodeInfo_Annotation); i { case 0: return &v.state @@ -5353,8 +5639,8 @@ func file_google_protobuf_descriptor_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_protobuf_descriptor_proto_rawDesc, - NumEnums: 16, - NumMessages: 30, + NumEnums: 17, + NumMessages: 32, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/modules.txt b/vendor/modules.txt index a77d51e..9dfe5c3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -12,7 +12,7 @@ github.com/golang/protobuf/ptypes github.com/golang/protobuf/ptypes/any github.com/golang/protobuf/ptypes/duration github.com/golang/protobuf/ptypes/timestamp -# github.com/google/go-cmp v0.5.9 +# github.com/google/go-cmp v0.6.0 ## explicit; go 1.13 github.com/google/go-cmp/cmp github.com/google/go-cmp/cmp/cmpopts @@ -26,8 +26,8 @@ github.com/jbenet/go-context/io # github.com/julienschmidt/httprouter v1.3.0 ## explicit; go 1.7 github.com/julienschmidt/httprouter -# github.com/klauspost/compress v1.17.0 -## explicit; go 1.18 +# github.com/klauspost/compress v1.17.6 +## explicit; go 1.19 github.com/klauspost/compress/flate github.com/klauspost/compress/gzip # github.com/kr/text v0.2.0 @@ -35,9 +35,11 @@ github.com/klauspost/compress/gzip # github.com/mattn/go-colorable v0.1.13 ## explicit; go 1.15 github.com/mattn/go-colorable -# github.com/mattn/go-isatty v0.0.19 +# github.com/mattn/go-isatty v0.0.20 ## explicit; go 1.15 github.com/mattn/go-isatty +# github.com/rogpeppe/go-internal v1.12.0 +## explicit; go 1.20 # github.com/spf13/pflag v1.0.5 ## explicit; go 1.12 github.com/spf13/pflag @@ -47,7 +49,7 @@ github.com/src-d/gcfg github.com/src-d/gcfg/scanner github.com/src-d/gcfg/token github.com/src-d/gcfg/types -# go.chromium.org/luci v0.0.0-20231012044737-639b0ba8e396 +# go.chromium.org/luci v0.0.0-20240215232704-315be9a6c8b0 ## explicit; go 1.21 go.chromium.org/luci/common/clock go.chromium.org/luci/common/data/stringset @@ -71,7 +73,7 @@ go.chromium.org/luci/starlark/docgen go.chromium.org/luci/starlark/docgen/ast go.chromium.org/luci/starlark/docgen/docstring go.chromium.org/luci/starlark/docgen/symbols -# go.starlark.net v0.0.0-20230925163745-10651d5192ab +# go.starlark.net v0.0.0-20240123142251-f86470692795 ## explicit; go 1.18 go.starlark.net/internal/compile go.starlark.net/internal/spell @@ -80,14 +82,14 @@ go.starlark.net/resolve go.starlark.net/starlark go.starlark.net/starlarkstruct go.starlark.net/syntax -# golang.org/x/mod v0.13.0 +# golang.org/x/mod v0.15.0 ## explicit; go 1.18 golang.org/x/mod/internal/lazyregexp golang.org/x/mod/module golang.org/x/mod/semver golang.org/x/mod/sumdb/dirhash -# golang.org/x/net v0.17.0 -## explicit; go 1.17 +# golang.org/x/net v0.21.0 +## explicit; go 1.18 golang.org/x/net/context golang.org/x/net/http/httpguts golang.org/x/net/http2 @@ -95,21 +97,21 @@ golang.org/x/net/http2/hpack golang.org/x/net/idna golang.org/x/net/internal/timeseries golang.org/x/net/trace -# golang.org/x/sync v0.4.0 -## explicit; go 1.17 +# golang.org/x/sync v0.6.0 +## explicit; go 1.18 golang.org/x/sync/errgroup golang.org/x/sync/semaphore -# golang.org/x/sys v0.13.0 -## explicit; go 1.17 -golang.org/x/sys/execabs +# golang.org/x/sys v0.17.0 +## explicit; go 1.18 golang.org/x/sys/unix -# golang.org/x/text v0.13.0 -## explicit; go 1.17 +golang.org/x/sys/windows +# golang.org/x/text v0.14.0 +## explicit; go 1.18 golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm -# golang.org/x/tools v0.14.0 +# golang.org/x/tools v0.18.0 ## explicit; go 1.18 golang.org/x/tools/go/analysis golang.org/x/tools/go/analysis/internal/analysisflags @@ -136,17 +138,18 @@ golang.org/x/tools/internal/robustio golang.org/x/tools/internal/tokeninternal golang.org/x/tools/internal/typeparams golang.org/x/tools/internal/typesinternal -# google.golang.org/genproto v0.0.0-20231009173412-8bfb1ae86b6c +golang.org/x/tools/internal/versions +# google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 ## explicit; go 1.19 google.golang.org/genproto/internal -# google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c +# google.golang.org/genproto/googleapis/api v0.0.0-20240213162025-012b6fc9bca9 ## explicit; go 1.19 google.golang.org/genproto/googleapis/api google.golang.org/genproto/googleapis/api/annotations -# google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c +# google.golang.org/genproto/googleapis/rpc v0.0.0-20240213162025-012b6fc9bca9 ## explicit; go 1.19 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.58.3 +# google.golang.org/grpc v1.61.1 ## explicit; go 1.19 google.golang.org/grpc google.golang.org/grpc/attributes @@ -182,6 +185,7 @@ google.golang.org/grpc/internal/metadata google.golang.org/grpc/internal/pretty google.golang.org/grpc/internal/resolver google.golang.org/grpc/internal/resolver/dns +google.golang.org/grpc/internal/resolver/dns/internal google.golang.org/grpc/internal/resolver/passthrough google.golang.org/grpc/internal/resolver/unix google.golang.org/grpc/internal/serviceconfig @@ -193,12 +197,13 @@ google.golang.org/grpc/keepalive google.golang.org/grpc/metadata google.golang.org/grpc/peer google.golang.org/grpc/resolver +google.golang.org/grpc/resolver/dns google.golang.org/grpc/serviceconfig google.golang.org/grpc/stats google.golang.org/grpc/status google.golang.org/grpc/tap -# google.golang.org/protobuf v1.31.1-0.20230927161544-6352deccdb59 -## explicit; go 1.11 +# google.golang.org/protobuf v1.32.0 +## explicit; go 1.17 google.golang.org/protobuf/encoding/protojson google.golang.org/protobuf/encoding/prototext google.golang.org/protobuf/encoding/protowire