From f3905011d6c9ffdf00b45253a2fca063b9e91a18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Dec 2023 20:02:59 +0000 Subject: [PATCH] Bump github.com/ncruces/go-sqlite3 from 0.7.2 to 0.11.0 Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.7.2 to 0.11.0. - [Release notes](https://github.com/ncruces/go-sqlite3/releases) - [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.7.2...v0.11.0) --- updated-dependencies: - dependency-name: github.com/ncruces/go-sqlite3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 10 +- go.sum | 20 +- .../github.com/ncruces/go-sqlite3/README.md | 114 ++-- .../github.com/ncruces/go-sqlite3/backup.go | 32 +- vendor/github.com/ncruces/go-sqlite3/blob.go | 57 +- vendor/github.com/ncruces/go-sqlite3/conn.go | 178 ++---- vendor/github.com/ncruces/go-sqlite3/const.go | 54 +- .../github.com/ncruces/go-sqlite3/context.go | 220 +++++++ .../ncruces/go-sqlite3/driver/driver.go | 323 +++++++--- .../ncruces/go-sqlite3/driver/savepoint.go | 27 + .../ncruces/go-sqlite3/embed/README.md | 13 +- .../ncruces/go-sqlite3/embed/build.sh | 11 +- .../ncruces/go-sqlite3/embed/exports.txt | 124 ++-- .../ncruces/go-sqlite3/embed/sqlite3.wasm | Bin 1444429 -> 1470092 bytes vendor/github.com/ncruces/go-sqlite3/error.go | 57 +- vendor/github.com/ncruces/go-sqlite3/func.go | 175 +++++ vendor/github.com/ncruces/go-sqlite3/go.work | 6 + .../github.com/ncruces/go-sqlite3/go.work.sum | 4 + .../ncruces/go-sqlite3/internal/util/const.go | 1 + .../ncruces/go-sqlite3/internal/util/error.go | 15 +- .../ncruces/go-sqlite3/internal/util/func.go | 26 + .../go-sqlite3/internal/util/handle.go | 75 +++ .../ncruces/go-sqlite3/internal/util/mem.go | 24 + vendor/github.com/ncruces/go-sqlite3/json.go | 46 ++ .../github.com/ncruces/go-sqlite3/module.go | 352 ---------- .../github.com/ncruces/go-sqlite3/pointer.go | 14 + vendor/github.com/ncruces/go-sqlite3/quote.go | 112 ++++ .../github.com/ncruces/go-sqlite3/sqlite.go | 301 +++++++++ vendor/github.com/ncruces/go-sqlite3/stmt.go | 317 ++++++--- vendor/github.com/ncruces/go-sqlite3/time.go | 66 +- vendor/github.com/ncruces/go-sqlite3/tx.go | 61 +- vendor/github.com/ncruces/go-sqlite3/value.go | 188 ++++++ .../ncruces/go-sqlite3/vfs/README.md | 6 +- .../github.com/ncruces/go-sqlite3/vfs/api.go | 29 +- .../ncruces/go-sqlite3/vfs/clear.go | 9 + .../ncruces/go-sqlite3/vfs/const.go | 16 +- .../github.com/ncruces/go-sqlite3/vfs/file.go | 10 +- .../github.com/ncruces/go-sqlite3/vfs/lock.go | 28 +- .../ncruces/go-sqlite3/vfs/os_bsd.go | 6 +- .../ncruces/go-sqlite3/vfs/os_darwin.go | 2 +- .../ncruces/go-sqlite3/vfs/os_linux.go | 2 + .../ncruces/go-sqlite3/vfs/os_nolock.go | 33 + .../ncruces/go-sqlite3/vfs/os_ofd.go | 6 +- .../ncruces/go-sqlite3/vfs/os_std_access.go | 36 ++ .../vfs/{os_other.go => os_std_alloc.go} | 6 +- .../ncruces/go-sqlite3/vfs/os_std_mode.go | 14 + .../ncruces/go-sqlite3/vfs/os_std_open.go | 12 + .../ncruces/go-sqlite3/vfs/os_std_sync.go | 9 + .../ncruces/go-sqlite3/vfs/os_unix.go | 69 +- .../ncruces/go-sqlite3/vfs/os_unix2.go | 82 +++ .../ncruces/go-sqlite3/vfs/os_windows.go | 68 +- .../ncruces/go-sqlite3/vfs/registry.go | 6 +- .../github.com/ncruces/go-sqlite3/vfs/vfs.go | 98 +-- vendor/github.com/ncruces/go-sqlite3/vtab.go | 605 ++++++++++++++++++ .../github.com/ncruces/julianday/julianday.go | 4 +- vendor/github.com/tetratelabs/wazero/Makefile | 6 + .../tetratelabs/wazero/RATIONALE.md | 179 +++++- .../github.com/tetratelabs/wazero/config.go | 4 +- .../fsapi => experimental/sys}/dir.go | 47 +- .../wazero/experimental/sys/errno.go | 3 + .../wazero/experimental/sys/file.go | 317 +++++++++ .../fsapi => experimental/sys}/fs.go | 131 ++-- .../fsapi => experimental/sys}/oflag.go | 2 +- .../wazero/experimental/sys/syscall_errno.go | 52 +- .../sys/syscall_errno_notwindows.go | 15 +- .../experimental/sys/syscall_errno_plan9.go | 5 + .../experimental/sys/syscall_errno_windows.go | 3 +- .../wazero/experimental/sys/time.go | 10 + .../wazero/experimental/sys/unimplemented.go | 160 +++++ .../github.com/tetratelabs/wazero/fsconfig.go | 27 +- .../imports/wasi_snapshot_preview1/fs.go | 104 +-- .../imports/wasi_snapshot_preview1/poll.go | 99 ++- .../imports/wasi_snapshot_preview1/sock.go | 7 +- .../testdata/tinygo/wasi.go | 2 + .../wazero/internal/engine/compiler/engine.go | 104 +-- .../internal/engine/compiler/engine_cache.go | 9 +- .../internal/engine/compiler/impl_amd64.go | 6 +- .../engine/interpreter/interpreter.go | 22 +- .../tetratelabs/wazero/internal/fsapi/file.go | 348 +--------- .../tetratelabs/wazero/internal/fsapi/poll.go | 20 + .../wazero/internal/fsapi/unimplemented.go | 188 +----- .../wazero/internal/platform/fdset.go | 25 - .../wazero/internal/platform/fdset_darwin.go | 8 - .../wazero/internal/platform/fdset_linux.go | 8 - .../internal/platform/fdset_unsupported.go | 10 - .../wazero/internal/platform/fdset_windows.go | 239 ------- .../tetratelabs/wazero/internal/sock/sock.go | 9 +- .../wazero/internal/sock/sock_supported.go | 11 + .../wazero/internal/sock/sock_unsupported.go | 10 + .../tetratelabs/wazero/internal/sys/fs.go | 64 +- .../tetratelabs/wazero/internal/sys/lazy.go | 103 +-- .../tetratelabs/wazero/internal/sys/stdio.go | 39 +- .../tetratelabs/wazero/internal/sys/sys.go | 10 +- .../wazero/internal/sysfs/adapter.go | 104 +-- .../tetratelabs/wazero/internal/sysfs/dir.go | 5 +- .../wazero/internal/sysfs/dirfs.go | 44 +- .../tetratelabs/wazero/internal/sysfs/file.go | 133 ++-- .../wazero/internal/sysfs/file_test.go | 199 +++--- .../wazero/internal/sysfs/file_unix.go | 7 +- .../wazero/internal/sysfs/file_unsupported.go | 12 +- .../wazero/internal/sysfs/file_windows.go | 5 + .../wazero/internal/sysfs/futimens.go | 116 +--- .../wazero/internal/sysfs/futimens_darwin.go | 24 +- .../wazero/internal/sysfs/futimens_linux.go | 28 +- .../internal/sysfs/futimens_unsupported.go | 14 +- .../wazero/internal/sysfs/futimens_windows.go | 46 +- .../tetratelabs/wazero/internal/sysfs/ino.go | 22 + .../wazero/internal/sysfs/ino_plan9.go | 15 + .../wazero/internal/sysfs/ino_windows.go | 28 + .../wazero/internal/sysfs/nonblock_plan9.go | 11 + .../wazero/internal/sysfs/nonblock_unix.go | 10 +- .../wazero/internal/sysfs/nonblock_windows.go | 10 +- .../wazero/internal/sysfs/oflag.go | 22 +- .../wazero/internal/sysfs/open_file_darwin.go | 14 +- .../internal/sysfs/open_file_freebsd.go | 12 +- .../wazero/internal/sysfs/open_file_linux.go | 16 +- .../internal/sysfs/open_file_notwindows.go | 7 +- .../wazero/internal/sysfs/open_file_sun.go | 16 +- .../internal/sysfs/open_file_unsupported.go | 8 +- .../internal/sysfs/open_file_windows.go | 11 +- .../wazero/internal/sysfs/osfile.go | 80 +-- .../tetratelabs/wazero/internal/sysfs/poll.go | 18 + .../wazero/internal/sysfs/poll_darwin.go | 55 ++ .../wazero/internal/sysfs/poll_darwin.s | 8 + .../wazero/internal/sysfs/poll_linux.go | 57 ++ .../wazero/internal/sysfs/poll_unsupported.go | 13 + .../wazero/internal/sysfs/poll_windows.go | 224 +++++++ .../wazero/internal/sysfs/readfs.go | 106 ++- .../wazero/internal/sysfs/rename.go | 2 +- .../wazero/internal/sysfs/rename_plan9.go | 14 + .../wazero/internal/sysfs/select.go | 36 -- .../wazero/internal/sysfs/select_darwin.go | 45 -- .../wazero/internal/sysfs/select_darwin.s | 8 - .../wazero/internal/sysfs/select_linux.go | 18 - .../internal/sysfs/select_unsupported.go | 14 - .../wazero/internal/sysfs/select_windows.go | 173 ----- .../tetratelabs/wazero/internal/sysfs/sock.go | 5 +- .../wazero/internal/sysfs/sock_unix.go | 61 +- .../wazero/internal/sysfs/sock_windows.go | 108 ++-- .../wazero/internal/sysfs/stat_bsd.go | 12 - .../wazero/internal/sysfs/stat_linux.go | 12 - .../wazero/internal/sysfs/stat_unsupported.go | 8 - .../wazero/internal/sysfs/stat_windows.go | 17 - .../wazero/internal/sysfs/sync_windows.go | 2 +- .../wazero/internal/sysfs/unlink.go | 2 +- .../wazero/internal/sysfs/unlink_plan9.go | 12 + .../wazero/internal/sysfs/unlink_windows.go | 2 - .../wazero/internal/wasip1/errno.go | 2 + .../wazero/internal/wasm/engine.go | 10 +- .../wazero/internal/wasm/instruction.go | 1 - .../wazero/internal/wasm/module_instance.go | 10 +- .../internal/wasm/module_instance_lookup.go | 73 +++ .../tetratelabs/wazero/internal/wasm/store.go | 34 +- .../github.com/tetratelabs/wazero/runtime.go | 8 +- vendor/golang.org/x/sync/errgroup/go120.go | 1 - .../golang.org/x/sync/errgroup/pre_go120.go | 1 - vendor/golang.org/x/sys/unix/fcntl.go | 2 +- vendor/golang.org/x/sys/unix/ioctl_linux.go | 5 + vendor/golang.org/x/sys/unix/mkerrors.sh | 3 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 2 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 28 +- .../golang.org/x/sys/unix/syscall_openbsd.go | 14 + .../golang.org/x/sys/unix/syscall_solaris.go | 2 +- .../x/sys/unix/syscall_zos_s390x.go | 2 +- vendor/golang.org/x/sys/unix/zerrors_linux.go | 2 +- .../golang.org/x/sys/unix/zsyscall_linux.go | 15 + .../x/sys/unix/zsyscall_openbsd_386.go | 26 + .../x/sys/unix/zsyscall_openbsd_386.s | 5 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 26 + .../x/sys/unix/zsyscall_openbsd_amd64.s | 5 + .../x/sys/unix/zsyscall_openbsd_arm.go | 26 + .../x/sys/unix/zsyscall_openbsd_arm.s | 5 + .../x/sys/unix/zsyscall_openbsd_arm64.go | 26 + .../x/sys/unix/zsyscall_openbsd_arm64.s | 5 + .../x/sys/unix/zsyscall_openbsd_mips64.go | 26 + .../x/sys/unix/zsyscall_openbsd_mips64.s | 5 + .../x/sys/unix/zsyscall_openbsd_ppc64.go | 26 + .../x/sys/unix/zsyscall_openbsd_ppc64.s | 6 + .../x/sys/unix/zsyscall_openbsd_riscv64.go | 26 + .../x/sys/unix/zsyscall_openbsd_riscv64.s | 5 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 32 + .../x/sys/windows/syscall_windows.go | 2 + .../x/sys/windows/zsyscall_windows.go | 19 + vendor/modules.txt | 16 +- 184 files changed, 5778 insertions(+), 3360 deletions(-) create mode 100644 vendor/github.com/ncruces/go-sqlite3/context.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/func.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/go.work create mode 100644 vendor/github.com/ncruces/go-sqlite3/go.work.sum create mode 100644 vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/json.go delete mode 100644 vendor/github.com/ncruces/go-sqlite3/module.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/pointer.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/quote.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/sqlite.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/value.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/clear.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go rename vendor/github.com/ncruces/go-sqlite3/vfs/{os_other.go => os_std_alloc.go} (63%) create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vtab.go rename vendor/github.com/tetratelabs/wazero/{internal/fsapi => experimental/sys}/dir.go (62%) create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/file.go rename vendor/github.com/tetratelabs/wazero/{internal/fsapi => experimental/sys}/fs.go (67%) rename vendor/github.com/tetratelabs/wazero/{internal/fsapi => experimental/sys}/oflag.go (99%) create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/time.go create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go diff --git a/go.mod b/go.mod index c102ccbad3..8aa19b22bd 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/miekg/dns v1.1.57 github.com/moloch--/asciicast v0.1.0 github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945 - github.com/ncruces/go-sqlite3 v0.7.2 + github.com/ncruces/go-sqlite3 v0.11.0 github.com/reeflective/console v0.1.6 github.com/reeflective/readline v1.0.11 github.com/rsteube/carapace v0.36.3 @@ -41,14 +41,14 @@ require ( github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - github.com/tetratelabs/wazero v1.3.1 + github.com/tetratelabs/wazero v1.5.0 github.com/things-go/go-socks5 v0.0.3 github.com/xlab/treeprint v1.2.0 github.com/yiya1989/sshkrb5 v0.0.1 golang.org/x/crypto v0.15.0 golang.org/x/exp v0.0.0-20230905200255-921286631fa9 golang.org/x/net v0.17.0 - golang.org/x/sys v0.14.0 + golang.org/x/sys v0.15.0 golang.org/x/term v0.14.0 golang.org/x/text v0.14.0 golang.zx2c4.com/wireguard v0.0.0-20231022001213-2e0774f246fb @@ -143,7 +143,7 @@ require ( github.com/mdlayher/socket v0.5.0 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mitchellh/go-ps v1.0.0 // indirect - github.com/ncruces/julianday v0.1.5 // indirect + github.com/ncruces/julianday v1.0.0 // indirect github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -167,7 +167,7 @@ require ( go4.org/mem v0.0.0-20220726221520-4f986261bf13 // indirect go4.org/netipx v0.0.0-20230824141953-6213f710f925 // indirect golang.org/x/mod v0.13.0 // indirect - golang.org/x/sync v0.4.0 // indirect + golang.org/x/sync v0.5.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.14.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect diff --git a/go.sum b/go.sum index bf1c8bd268..64fb45a23d 100644 --- a/go.sum +++ b/go.sum @@ -329,10 +329,10 @@ github.com/moloch--/asciicast v0.1.0 h1:eBOJwuFKSk447s/kPs9MWsc4kAl5HmuKIDLDYD6/ github.com/moloch--/asciicast v0.1.0/go.mod h1:OckO16UDLgxVLclrCnbocL1ix15Br/8Xv/caBoYq98o= github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945 h1:m3yCfV8Vqp4MF1B+gPPjbjINdufl0UXqyYplE0aGhx8= github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945/go.mod h1:1grVt4HaTofvhFUZYtofeRbGXfczNwCie9MYoM4lP/o= -github.com/ncruces/go-sqlite3 v0.7.2 h1:K7jU4rnUxFdUsbEL+B0Xc+VexLTEwGSO6Qh91Qh4hYc= -github.com/ncruces/go-sqlite3 v0.7.2/go.mod h1:t3dP4AP9rJddU+ffFv0h6fWyeOCEhjxrYc1nsYG7aQI= -github.com/ncruces/julianday v0.1.5 h1:hDJ9ejiMp3DHsoZ5KW4c1lwfMjbARS7u/gbYcd0FBZk= -github.com/ncruces/julianday v0.1.5/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g= +github.com/ncruces/go-sqlite3 v0.11.0 h1:PDjs8Ve2Z0GWmHyKQHGUyG78grCXKhiHCUZQI8CqXO8= +github.com/ncruces/go-sqlite3 v0.11.0/go.mod h1:zaYJ6xP+EQiWJCa3nd3h28cD8DuSIcIqh+LrJMrBN9k= +github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M= +github.com/ncruces/julianday v1.0.0/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhAVbbWWBzr41ElhJx5tXPWkIHA2HWPRuw= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= @@ -404,8 +404,8 @@ github.com/tailscale/wireguard-go v0.0.0-20231101022006-db7604d1aa90 h1:lMGYrokO github.com/tailscale/wireguard-go v0.0.0-20231101022006-db7604d1aa90/go.mod h1:BOm5fXUBFM+m9woLNBoxI9TaBXXhGNP50LX/TGIvGb4= github.com/tcnksm/go-httpstat v0.2.0 h1:rP7T5e5U2HfmOBmZzGgGZjBQ5/GluWUylujl0tJ04I0= github.com/tcnksm/go-httpstat v0.2.0/go.mod h1:s3JVJFtQxtBEBC9dwcdTTXS9xFnM3SXAZwPG41aurT8= -github.com/tetratelabs/wazero v1.3.1 h1:rnb9FgOEQRLLR8tgoD1mfjNjMhFeWRUk+a4b4j/GpUM= -github.com/tetratelabs/wazero v1.3.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= +github.com/tetratelabs/wazero v1.5.0 h1:Yz3fZHivfDiZFUXnWMPUoiW7s8tC1sjdBtlJn08qYa0= +github.com/tetratelabs/wazero v1.5.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A= github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0= github.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs= github.com/things-go/go-socks5 v0.0.3 h1:QtlIhkwDuLNCwW3wnt2uTjn1mQzpyjnwct2xdPuqroI= @@ -490,8 +490,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/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.0.0-20220722155255-886fb9371eb4/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.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -528,8 +528,8 @@ golang.org/x/sys v0.0.0-20220817070843-5a390386f1f2/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.1-0.20230131160137-e7d7f63158de/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= diff --git a/vendor/github.com/ncruces/go-sqlite3/README.md b/vendor/github.com/ncruces/go-sqlite3/README.md index 8a06a28516..1da5d16b9c 100644 --- a/vendor/github.com/ncruces/go-sqlite3/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/README.md @@ -7,81 +7,107 @@ Go module `github.com/ncruces/go-sqlite3` wraps a [WASM](https://webassembly.org/) build of [SQLite](https://sqlite.org/), and uses [wazero](https://wazero.io/) to provide `cgo`-free SQLite bindings. -- Package [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3) -wraps the [C SQLite API](https://www.sqlite.org/cintro.html) -([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3#example-package)). -- Package [`github.com/ncruces/go-sqlite3/driver`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver) -provides a [`database/sql`](https://pkg.go.dev/database/sql) driver -([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver#example-package)). -- Package [`github.com/ncruces/go-sqlite3/embed`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/embed) -embeds a build of SQLite into your application. -- Package [`github.com/ncruces/go-sqlite3/vfs`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs) -wraps the [C SQLite VFS API](https://www.sqlite.org/vfs.html) and provides a pure Go implementation. -- Package [`github.com/ncruces/go-sqlite3/gormlite`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/gormlite) -provides a [GORM](https://gorm.io) driver. +- [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3) + wraps the [C SQLite API](https://sqlite.org/cintro.html) + ([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3#example-package)). +- [`github.com/ncruces/go-sqlite3/driver`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver) + provides a [`database/sql`](https://pkg.go.dev/database/sql) driver + ([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver#example-package)). +- [`github.com/ncruces/go-sqlite3/embed`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/embed) + embeds a build of SQLite into your application. +- [`github.com/ncruces/go-sqlite3/vfs`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs) + wraps the [C SQLite VFS API](https://sqlite.org/vfs.html) and provides a pure Go implementation. +- [`github.com/ncruces/go-sqlite3/gormlite`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/gormlite) + provides a [GORM](https://gorm.io) driver. + +### Loadable extensions + +- [`github.com/ncruces/go-sqlite3/ext/array`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/blob) + provides the [`array`](https://sqlite.org/carray.html) table-valued function. +- [`github.com/ncruces/go-sqlite3/ext/blob`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/blob) + simplifies [incremental BLOB I/O](https://sqlite.org/c3ref/blob_open.html). +- [`github.com/ncruces/go-sqlite3/ext/csv`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/csv) + reads [comma-separated values](https://sqlite.org/csv.html). +- [`github.com/ncruces/go-sqlite3/ext/lines`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/lines) + reads files [line-by-line](https://github.com/asg017/sqlite-lines). +- [`github.com/ncruces/go-sqlite3/ext/pivot`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/pivot) + creates [pivot tables](https://github.com/jakethaw/pivot_vtab). +- [`github.com/ncruces/go-sqlite3/ext/statement`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/statement) + creates [table-valued functions with SQL](https://github.com/0x09/sqlite-statement-vtab). +- [`github.com/ncruces/go-sqlite3/ext/stats`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/stats) + provides [statistics functions](https://www.oreilly.com/library/view/sql-in-a/9780596155322/ch04s02.html). +- [`github.com/ncruces/go-sqlite3/ext/unicode`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/unicode) + provides [Unicode aware](https://sqlite.org/src/dir/ext/icu) functions. +- [`github.com/ncruces/go-sqlite3/vfs/memdb`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs/memdb) + implements an in-memory VFS. +- [`github.com/ncruces/go-sqlite3/vfs/readervfs`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs/readervfs) + implements a VFS for immutable databases. + +### Advanced features + +- [x] [incremental BLOB I/O](https://sqlite.org/c3ref/blob_open.html) +- [x] [nested transactions](https://sqlite.org/lang_savepoint.html) +- [x] [custom functions](https://sqlite.org/c3ref/create_function.html) +- [x] [virtual tables](https://sqlite.org/vtab.html) +- [x] [custom VFSes](https://sqlite.org/vfs.html) +- [x] [online backup](https://sqlite.org/backup.html) +- [x] [JSON support](https://sqlite.org/json1.html) +- [x] [Unicode support](https://sqlite.org/src/dir/ext/icu) ### Caveats -This module replaces the SQLite [OS Interface](https://www.sqlite.org/vfs.html) +This module replaces the SQLite [OS Interface](https://sqlite.org/vfs.html) (aka VFS) with a [pure Go](vfs/) implementation. This has benefits, but also comes with some drawbacks. #### Write-Ahead Logging Because WASM does not support shared memory, -[WAL](https://www.sqlite.org/wal.html) support is [limited](https://www.sqlite.org/wal.html#noshm). +[WAL](https://sqlite.org/wal.html) support is [limited](https://sqlite.org/wal.html#noshm). -To work around this limitation, SQLite is compiled with -[`SQLITE_DEFAULT_LOCKING_MODE=1`](https://www.sqlite.org/compile.html#default_locking_mode), -making `EXCLUSIVE` the default locking mode. -For non-WAL databases, `NORMAL` locking mode can be activated with -[`PRAGMA locking_mode=NORMAL`](https://www.sqlite.org/pragma.html#pragma_locking_mode). +To work around this limitation, SQLite is [patched](sqlite3/locking_mode.patch) +to always use `EXCLUSIVE` locking mode for WAL databases. Because connection pooling is incompatible with `EXCLUSIVE` locking mode, -the `database/sql` driver defaults to `NORMAL` locking mode. -To open WAL databases, or use `EXCLUSIVE` locking mode, -disable connection pooling by calling +to use the [`database/sql`](https://pkg.go.dev/database/sql) driver +with WAL mode databases you should disable connection pooling by calling [`db.SetMaxOpenConns(1)`](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns). -#### POSIX Advisory Locks +#### File Locking -POSIX advisory locks, which SQLite uses, are -[broken by design](https://www.sqlite.org/src/artifact/90c4fa?ln=1073-1161). +POSIX advisory locks, which SQLite uses on Unix, are +[broken by design](https://sqlite.org/src/artifact/2e8b12?ln=1073-1161). On Linux, macOS and illumos, this module uses [OFD locks](https://www.gnu.org/software/libc/manual/html_node/Open-File-Description-Locks.html) to synchronize access to database files. -OFD locks are fully compatible with process-associated POSIX advisory locks. +OFD locks are fully compatible with POSIX advisory locks. On BSD Unixes, this module uses [BSD locks](https://man.freebsd.org/cgi/man.cgi?query=flock&sektion=2). -BSD locks may _not_ be compatible with process-associated POSIX advisory locks. +On BSD Unixes, BSD locks are fully compatible with POSIX advisory locks. + +On Windows, this module uses `LockFile`, `LockFileEx`, and `UnlockFile`, +like SQLite. + +On all other platforms, file locking is not supported, and you must use +[`nolock=1`](https://sqlite.org/uri.html#urinolock) +to open database files. +To use the [`database/sql`](https://pkg.go.dev/database/sql) driver +with `nolock=1` you must disable connection pooling by calling +[`db.SetMaxOpenConns(1)`](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns). #### Testing -The pure Go VFS is tested by running an unmodified build of SQLite's +The pure Go VFS is tested by running SQLite's [mptest](https://github.com/sqlite/sqlite/blob/master/mptest/mptest.c) -on Linux, macOS and Windows. +on Linux, macOS, Windows and FreeBSD. Performance is tested by running [speedtest1](https://github.com/sqlite/sqlite/blob/master/test/speedtest1.c). -### Roadmap - -- [ ] advanced SQLite features - - [x] nested transactions - - [x] incremental BLOB I/O - - [x] online backup - - [ ] session extension -- [ ] custom VFSes - - [x] custom VFS API - - [x] in-memory VFS - - [x] read-only VFS, wrapping an [`io.ReaderAt`](https://pkg.go.dev/io#ReaderAt) - - [ ] cloud-based VFS, based on [Cloud Backed SQLite](https://sqlite.org/cloudsqlite/doc/trunk/www/index.wiki) -- [ ] custom SQL functions - ### Alternatives - [`modernc.org/sqlite`](https://pkg.go.dev/modernc.org/sqlite) - [`crawshaw.io/sqlite`](https://pkg.go.dev/crawshaw.io/sqlite) - [`github.com/mattn/go-sqlite3`](https://pkg.go.dev/github.com/mattn/go-sqlite3) -- [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) \ No newline at end of file +- [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) diff --git a/vendor/github.com/ncruces/go-sqlite3/backup.go b/vendor/github.com/ncruces/go-sqlite3/backup.go index 27a71a9707..5fc5cf1aea 100644 --- a/vendor/github.com/ncruces/go-sqlite3/backup.go +++ b/vendor/github.com/ncruces/go-sqlite3/backup.go @@ -2,7 +2,7 @@ package sqlite3 // Backup is an handle to an ongoing online backup operation. // -// https://www.sqlite.org/c3ref/backup.html +// https://sqlite.org/c3ref/backup.html type Backup struct { c *Conn handle uint32 @@ -15,7 +15,7 @@ type Backup struct { // and blocks until the entire backup is complete. // Use [Conn.BackupInit] for incremental backup. // -// https://www.sqlite.org/backup.html +// https://sqlite.org/backup.html func (src *Conn) Backup(srcDB, dstURI string) error { b, err := src.BackupInit(srcDB, dstURI) if err != nil { @@ -31,7 +31,7 @@ func (src *Conn) Backup(srcDB, dstURI string) error { // Restore opens the SQLite database file srcURI, // and blocks until the entire restore is complete. // -// https://www.sqlite.org/backup.html +// https://sqlite.org/backup.html func (dst *Conn) Restore(dstDB, srcURI string) error { src, err := dst.openDB(srcURI, OPEN_READONLY|OPEN_URI) if err != nil { @@ -52,7 +52,7 @@ func (dst *Conn) Restore(dstDB, srcURI string) error { // then initializes a backup that copies the contents of srcDB on the src connection // to the "main" database in dstURI. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupinit +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupinit func (src *Conn) BackupInit(srcDB, dstURI string) (*Backup, error) { dst, err := src.openDB(dstURI, OPEN_READWRITE|OPEN_CREATE|OPEN_URI) if err != nil { @@ -62,7 +62,7 @@ func (src *Conn) BackupInit(srcDB, dstURI string) (*Backup, error) { } func (c *Conn) backupInit(dst uint32, dstName string, src uint32, srcName string) (*Backup, error) { - defer c.arena.reset() + defer c.arena.mark()() dstPtr := c.arena.string(dstName) srcPtr := c.arena.string(srcName) @@ -71,13 +71,13 @@ func (c *Conn) backupInit(dst uint32, dstName string, src uint32, srcName string other = src } - r := c.call(c.api.backupInit, + r := c.call("sqlite3_backup_init", uint64(dst), uint64(dstPtr), uint64(src), uint64(srcPtr)) if r == 0 { defer c.closeDB(other) - r = c.call(c.api.errcode, uint64(dst)) - return nil, c.module.error(r, dst) + r = c.call("sqlite3_errcode", uint64(dst)) + return nil, c.sqlite.error(r, dst) } return &Backup{ @@ -91,13 +91,13 @@ func (c *Conn) backupInit(dst uint32, dstName string, src uint32, srcName string // // It is safe to close a nil, zero or closed Backup. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish func (b *Backup) Close() error { if b == nil || b.handle == 0 { return nil } - r := b.c.call(b.c.api.backupFinish, uint64(b.handle)) + r := b.c.call("sqlite3_backup_finish", uint64(b.handle)) b.c.closeDB(b.otherc) b.handle = 0 return b.c.error(r) @@ -106,9 +106,9 @@ func (b *Backup) Close() error { // Step copies up to nPage pages between the source and destination databases. // If nPage is negative, all remaining source pages are copied. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupstep +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupstep func (b *Backup) Step(nPage int) (done bool, err error) { - r := b.c.call(b.c.api.backupStep, uint64(b.handle), uint64(nPage)) + r := b.c.call("sqlite3_backup_step", uint64(b.handle), uint64(nPage)) if r == _DONE { return true, nil } @@ -118,17 +118,17 @@ func (b *Backup) Step(nPage int) (done bool, err error) { // Remaining returns the number of pages still to be backed up // at the conclusion of the most recent [Backup.Step]. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupremaining +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupremaining func (b *Backup) Remaining() int { - r := b.c.call(b.c.api.backupRemaining, uint64(b.handle)) + r := b.c.call("sqlite3_backup_remaining", uint64(b.handle)) return int(r) } // PageCount returns the total number of pages in the source database // at the conclusion of the most recent [Backup.Step]. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backuppagecount +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backuppagecount func (b *Backup) PageCount() int { - r := b.c.call(b.c.api.backupPageCount, uint64(b.handle)) + r := b.c.call("sqlite3_backup_pagecount", uint64(b.handle)) return int(r) } diff --git a/vendor/github.com/ncruces/go-sqlite3/blob.go b/vendor/github.com/ncruces/go-sqlite3/blob.go index a30abf6507..bb10c5fa2e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/blob.go +++ b/vendor/github.com/ncruces/go-sqlite3/blob.go @@ -15,7 +15,7 @@ type ZeroBlob int64 // // It implements [io.ReadWriteSeeker] for incremental BLOB I/O. // -// https://www.sqlite.org/c3ref/blob.html +// https://sqlite.org/c3ref/blob.html type Blob struct { c *Conn bytes int64 @@ -27,10 +27,10 @@ var _ io.ReadWriteSeeker = &Blob{} // OpenBlob opens a BLOB for incremental I/O. // -// https://www.sqlite.org/c3ref/blob_open.html +// https://sqlite.org/c3ref/blob_open.html func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, error) { c.checkInterrupt() - defer c.arena.reset() + defer c.arena.mark()() blobPtr := c.arena.new(ptrlen) dbPtr := c.arena.string(db) tablePtr := c.arena.string(table) @@ -41,7 +41,7 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, flags = 1 } - r := c.call(c.api.blobOpen, uint64(c.handle), + r := c.call("sqlite3_blob_open", uint64(c.handle), uint64(dbPtr), uint64(tablePtr), uint64(columnPtr), uint64(row), flags, uint64(blobPtr)) @@ -51,7 +51,7 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, blob := Blob{c: c} blob.handle = util.ReadUint32(c.mod, blobPtr) - blob.bytes = int64(c.call(c.api.blobBytes, uint64(blob.handle))) + blob.bytes = int64(c.call("sqlite3_blob_bytes", uint64(blob.handle))) return &blob, nil } @@ -59,13 +59,13 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, // // It is safe to close a nil, zero or closed Blob. // -// https://www.sqlite.org/c3ref/blob_close.html +// https://sqlite.org/c3ref/blob_close.html func (b *Blob) Close() error { if b == nil || b.handle == 0 { return nil } - r := b.c.call(b.c.api.blobClose, uint64(b.handle)) + r := b.c.call("sqlite3_blob_close", uint64(b.handle)) b.handle = 0 return b.c.error(r) @@ -73,14 +73,14 @@ func (b *Blob) Close() error { // Size returns the size of the BLOB in bytes. // -// https://www.sqlite.org/c3ref/blob_bytes.html +// https://sqlite.org/c3ref/blob_bytes.html func (b *Blob) Size() int64 { return b.bytes } // Read implements the [io.Reader] interface. // -// https://www.sqlite.org/c3ref/blob_read.html +// https://sqlite.org/c3ref/blob_read.html func (b *Blob) Read(p []byte) (n int, err error) { if b.offset >= b.bytes { return 0, io.EOF @@ -92,10 +92,10 @@ func (b *Blob) Read(p []byte) (n int, err error) { want = avail } - defer b.c.arena.reset() + defer b.c.arena.mark()() ptr := b.c.arena.new(uint64(want)) - r := b.c.call(b.c.api.blobRead, uint64(b.handle), + r := b.c.call("sqlite3_blob_read", uint64(b.handle), uint64(ptr), uint64(want), uint64(b.offset)) err = b.c.error(r) if err != nil { @@ -112,23 +112,23 @@ func (b *Blob) Read(p []byte) (n int, err error) { // WriteTo implements the [io.WriterTo] interface. // -// https://www.sqlite.org/c3ref/blob_read.html +// https://sqlite.org/c3ref/blob_read.html func (b *Blob) WriteTo(w io.Writer) (n int64, err error) { if b.offset >= b.bytes { return 0, nil } + want := int64(1024 * 1024) avail := b.bytes - b.offset - want := int64(65536) if want > avail { want = avail } - ptr := b.c.new(uint64(want)) - defer b.c.free(ptr) + defer b.c.arena.mark()() + ptr := b.c.arena.new(uint64(want)) for want > 0 { - r := b.c.call(b.c.api.blobRead, uint64(b.handle), + r := b.c.call("sqlite3_blob_read", uint64(b.handle), uint64(ptr), uint64(want), uint64(b.offset)) err = b.c.error(r) if err != nil { @@ -156,12 +156,12 @@ func (b *Blob) WriteTo(w io.Writer) (n int64, err error) { // Write implements the [io.Writer] interface. // -// https://www.sqlite.org/c3ref/blob_write.html +// https://sqlite.org/c3ref/blob_write.html func (b *Blob) Write(p []byte) (n int, err error) { - defer b.c.arena.reset() + defer b.c.arena.mark()() ptr := b.c.arena.bytes(p) - r := b.c.call(b.c.api.blobWrite, uint64(b.handle), + r := b.c.call("sqlite3_blob_write", uint64(b.handle), uint64(ptr), uint64(len(p)), uint64(b.offset)) err = b.c.error(r) if err != nil { @@ -173,10 +173,13 @@ func (b *Blob) Write(p []byte) (n int, err error) { // ReadFrom implements the [io.ReaderFrom] interface. // -// https://www.sqlite.org/c3ref/blob_write.html +// https://sqlite.org/c3ref/blob_write.html func (b *Blob) ReadFrom(r io.Reader) (n int64, err error) { + want := int64(1024 * 1024) avail := b.bytes - b.offset - want := int64(65536) + if l, ok := r.(*io.LimitedReader); ok && want > l.N { + want = l.N + } if want > avail { want = avail } @@ -184,14 +187,14 @@ func (b *Blob) ReadFrom(r io.Reader) (n int64, err error) { want = 1 } - ptr := b.c.new(uint64(want)) - defer b.c.free(ptr) + defer b.c.arena.mark()() + ptr := b.c.arena.new(uint64(want)) for { mem := util.View(b.c.mod, ptr, uint64(want)) m, err := r.Read(mem[:want]) if m > 0 { - r := b.c.call(b.c.api.blobWrite, uint64(b.handle), + r := b.c.call("sqlite3_blob_write", uint64(b.handle), uint64(ptr), uint64(m), uint64(b.offset)) err := b.c.error(r) if err != nil { @@ -238,10 +241,10 @@ func (b *Blob) Seek(offset int64, whence int) (int64, error) { // Reopen moves a BLOB handle to a new row of the same database table. // -// https://www.sqlite.org/c3ref/blob_reopen.html +// https://sqlite.org/c3ref/blob_reopen.html func (b *Blob) Reopen(row int64) error { - err := b.c.error(b.c.call(b.c.api.blobReopen, uint64(b.handle), uint64(row))) - b.bytes = int64(b.c.call(b.c.api.blobBytes, uint64(b.handle))) + err := b.c.error(b.c.call("sqlite3_blob_reopen", uint64(b.handle), uint64(row))) + b.bytes = int64(b.c.call("sqlite3_blob_bytes", uint64(b.handle))) b.offset = 0 return err } diff --git a/vendor/github.com/ncruces/go-sqlite3/conn.go b/vendor/github.com/ncruces/go-sqlite3/conn.go index be10c719fa..2e339ac4dc 100644 --- a/vendor/github.com/ncruces/go-sqlite3/conn.go +++ b/vendor/github.com/ncruces/go-sqlite3/conn.go @@ -2,27 +2,23 @@ package sqlite3 import ( "context" - "database/sql/driver" "errors" "fmt" "net/url" - "runtime" "strings" - "sync/atomic" - "unsafe" "github.com/ncruces/go-sqlite3/internal/util" + "github.com/tetratelabs/wazero/api" ) // Conn is a database connection handle. // A Conn is not safe for concurrent use by multiple goroutines. // -// https://www.sqlite.org/c3ref/sqlite3.html +// https://sqlite.org/c3ref/sqlite3.html type Conn struct { - *module + *sqlite interrupt context.Context - waiter chan struct{} pending *Stmt arena arena @@ -39,9 +35,9 @@ func Open(filename string) (*Conn, error) { // If none of the required flags is used, a combination of [OPEN_READWRITE] and [OPEN_CREATE] is used. // If a URI filename is used, PRAGMA statements to execute can be specified using "_pragma": // -// sqlite3.Open("file:demo.db?_pragma=busy_timeout(10000)&_pragma=locking_mode(normal)") +// sqlite3.Open("file:demo.db?_pragma=busy_timeout(10000)") // -// https://www.sqlite.org/c3ref/open.html +// https://sqlite.org/c3ref/open.html func OpenFlags(filename string, flags OpenFlag) (*Conn, error) { if flags&(OPEN_READONLY|OPEN_READWRITE|OPEN_CREATE) == 0 { flags |= OPEN_READWRITE | OPEN_CREATE @@ -49,21 +45,22 @@ func OpenFlags(filename string, flags OpenFlag) (*Conn, error) { return newConn(filename, flags) } +type connKey struct{} + func newConn(filename string, flags OpenFlag) (conn *Conn, err error) { - mod, err := instantiateModule() + sqlite, err := instantiateSQLite() if err != nil { return nil, err } defer func() { if conn == nil { - mod.close() - } else { - runtime.SetFinalizer(conn, util.Finalizer[Conn](3)) + sqlite.close() } }() - c := &Conn{module: mod} + c := &Conn{sqlite: sqlite} c.arena = c.newArena(1024) + c.ctx = context.WithValue(c.ctx, connKey{}, c) c.handle, err = c.openDB(filename, flags) if err != nil { return nil, err @@ -72,15 +69,15 @@ func newConn(filename string, flags OpenFlag) (conn *Conn, err error) { } func (c *Conn) openDB(filename string, flags OpenFlag) (uint32, error) { - defer c.arena.reset() + defer c.arena.mark()() connPtr := c.arena.new(ptrlen) namePtr := c.arena.string(filename) flags |= OPEN_EXRESCODE - r := c.call(c.api.open, uint64(namePtr), uint64(connPtr), uint64(flags), 0) + r := c.call("sqlite3_open_v2", uint64(namePtr), uint64(connPtr), uint64(flags), 0) handle := util.ReadUint32(c.mod, connPtr) - if err := c.module.error(r, handle); err != nil { + if err := c.sqlite.error(r, handle); err != nil { c.closeDB(handle) return 0, err } @@ -92,14 +89,13 @@ func (c *Conn) openDB(filename string, flags OpenFlag) (uint32, error) { for _, p := range query["_pragma"] { pragmas.WriteString(`PRAGMA `) pragmas.WriteString(p) - pragmas.WriteByte(';') + pragmas.WriteString(`;`) } } - c.arena.reset() pragmaPtr := c.arena.string(pragmas.String()) - r := c.call(c.api.exec, uint64(handle), uint64(pragmaPtr), 0, 0, 0) - if err := c.module.error(r, handle, pragmas.String()); err != nil { + r := c.call("sqlite3_exec", uint64(handle), uint64(pragmaPtr), 0, 0, 0) + if err := c.sqlite.error(r, handle, pragmas.String()); err != nil { if errors.Is(err, ERROR) { err = fmt.Errorf("sqlite3: invalid _pragma: %w", err) } @@ -112,8 +108,8 @@ func (c *Conn) openDB(filename string, flags OpenFlag) (uint32, error) { } func (c *Conn) closeDB(handle uint32) { - r := c.call(c.api.closeZombie, uint64(handle)) - if err := c.module.error(r, handle); err != nil { + r := c.call("sqlite3_close_v2", uint64(handle)) + if err := c.sqlite.error(r, handle); err != nil { panic(err) } } @@ -126,37 +122,35 @@ func (c *Conn) closeDB(handle uint32) { // // It is safe to close a nil, zero or closed Conn. // -// https://www.sqlite.org/c3ref/close.html +// https://sqlite.org/c3ref/close.html func (c *Conn) Close() error { if c == nil || c.handle == 0 { return nil } - c.SetInterrupt(context.Background()) c.pending.Close() c.pending = nil - r := c.call(c.api.close, uint64(c.handle)) + r := c.call("sqlite3_close", uint64(c.handle)) if err := c.error(r); err != nil { return err } c.handle = 0 - runtime.SetFinalizer(c, nil) - return c.module.close() + return c.close() } // Exec is a convenience function that allows an application to run // multiple statements of SQL without having to use a lot of code. // -// https://www.sqlite.org/c3ref/exec.html +// https://sqlite.org/c3ref/exec.html func (c *Conn) Exec(sql string) error { c.checkInterrupt() - defer c.arena.reset() + defer c.arena.mark()() sqlPtr := c.arena.string(sql) - r := c.call(c.api.exec, uint64(c.handle), uint64(sqlPtr), 0, 0, 0) - return c.error(r) + r := c.call("sqlite3_exec", uint64(c.handle), uint64(sqlPtr), 0, 0, 0) + return c.error(r, sql) } // Prepare calls [Conn.PrepareFlags] with no flags. @@ -169,25 +163,26 @@ func (c *Conn) Prepare(sql string) (stmt *Stmt, tail string, err error) { // If the input text contains no SQL (if the input is an empty string or a comment), // both stmt and err will be nil. // -// https://www.sqlite.org/c3ref/prepare.html +// https://sqlite.org/c3ref/prepare.html func (c *Conn) PrepareFlags(sql string, flags PrepareFlag) (stmt *Stmt, tail string, err error) { - if emptyStatement(sql) { - return nil, "", nil + if len(sql) > _MAX_LENGTH { + return nil, "", TOOBIG } - defer c.arena.reset() + defer c.arena.mark()() stmtPtr := c.arena.new(ptrlen) tailPtr := c.arena.new(ptrlen) sqlPtr := c.arena.string(sql) - r := c.call(c.api.prepare, uint64(c.handle), + r := c.call("sqlite3_prepare_v3", uint64(c.handle), uint64(sqlPtr), uint64(len(sql)+1), uint64(flags), uint64(stmtPtr), uint64(tailPtr)) stmt = &Stmt{c: c} stmt.handle = util.ReadUint32(c.mod, stmtPtr) - i := util.ReadUint32(c.mod, tailPtr) - tail = sql[i-sqlPtr:] + if sql := sql[util.ReadUint32(c.mod, tailPtr)-sqlPtr:]; sql != "" { + tail = sql + } if err := c.error(r, sql); err != nil { return nil, "", err @@ -195,23 +190,23 @@ func (c *Conn) PrepareFlags(sql string, flags PrepareFlag) (stmt *Stmt, tail str if stmt.handle == 0 { return nil, "", nil } - return + return stmt, tail, nil } // GetAutocommit tests the connection for auto-commit mode. // -// https://www.sqlite.org/c3ref/get_autocommit.html +// https://sqlite.org/c3ref/get_autocommit.html func (c *Conn) GetAutocommit() bool { - r := c.call(c.api.autocommit, uint64(c.handle)) + r := c.call("sqlite3_get_autocommit", uint64(c.handle)) return r != 0 } // LastInsertRowID returns the rowid of the most recent successful INSERT // on the database connection. // -// https://www.sqlite.org/c3ref/last_insert_rowid.html +// https://sqlite.org/c3ref/last_insert_rowid.html func (c *Conn) LastInsertRowID() int64 { - r := c.call(c.api.lastRowid, uint64(c.handle)) + r := c.call("sqlite3_last_insert_rowid", uint64(c.handle)) return int64(r) } @@ -219,9 +214,9 @@ func (c *Conn) LastInsertRowID() int64 { // by the most recently completed INSERT, UPDATE or DELETE statement // on the database connection. // -// https://www.sqlite.org/c3ref/changes.html +// https://sqlite.org/c3ref/changes.html func (c *Conn) Changes() int64 { - r := c.call(c.api.changes, uint64(c.handle)) + r := c.call("sqlite3_changes64", uint64(c.handle)) return int64(r) } @@ -238,72 +233,52 @@ func (c *Conn) Changes() int64 { // // SetInterrupt returns the old context assigned to the connection. // -// https://www.sqlite.org/c3ref/interrupt.html +// https://sqlite.org/c3ref/interrupt.html func (c *Conn) SetInterrupt(ctx context.Context) (old context.Context) { - // Is a waiter running? - if c.waiter != nil { - c.waiter <- struct{}{} // Cancel the waiter. - <-c.waiter // Wait for it to finish. - c.waiter = nil + // Is it the same context? + if ctx == c.interrupt { + return ctx } - // Reset the pending statement. - if c.pending != nil { + + // An uncompleted SQL statement prevents SQLite from ignoring + // an interrupt that comes before any other statements are started. + if c.pending == nil { + c.pending, _, _ = c.Prepare(`SELECT 1 UNION ALL SELECT 2`) + } else { c.pending.Reset() } old = c.interrupt c.interrupt = ctx + // Remove the handler if the context can't be canceled. if ctx == nil || ctx.Done() == nil { + c.call("sqlite3_progress_handler_go", uint64(c.handle), 0) return old } - // Creating an uncompleted SQL statement prevents SQLite from ignoring - // an interrupt that comes before any other statements are started. - if c.pending == nil { - c.pending, _, _ = c.Prepare(`SELECT 1 UNION ALL SELECT 2`) - } c.pending.Step() + c.call("sqlite3_progress_handler_go", uint64(c.handle), 100) + return old +} - // Don't create the goroutine if we're already interrupted. - // This happens frequently while restoring to a previously interrupted state. - if c.checkInterrupt() { - return old - } - - waiter := make(chan struct{}) - c.waiter = waiter - go func() { - select { - case <-waiter: // Waiter was cancelled. - break - - case <-ctx.Done(): // Done was closed. - const isInterruptedOffset = 280 - buf := util.View(c.mod, c.handle+isInterruptedOffset, 4) - (*atomic.Uint32)(unsafe.Pointer(&buf[0])).Store(1) - // Wait for the next call to SetInterrupt. - <-waiter +func progressCallback(ctx context.Context, mod api.Module, _ uint32) uint32 { + if c, ok := ctx.Value(connKey{}).(*Conn); ok { + if c.interrupt != nil && c.interrupt.Err() != nil { + return 1 } - - // Signal that the waiter has finished. - waiter <- struct{}{} - }() - return old + } + return 0 } -func (c *Conn) checkInterrupt() bool { - if c.interrupt == nil || c.interrupt.Err() == nil { - return false +func (c *Conn) checkInterrupt() { + if c.interrupt != nil && c.interrupt.Err() != nil { + c.call("sqlite3_interrupt", uint64(c.handle)) } - const isInterruptedOffset = 280 - buf := util.View(c.mod, c.handle+isInterruptedOffset, 4) - (*atomic.Uint32)(unsafe.Pointer(&buf[0])).Store(1) - return true } // Pragma executes a PRAGMA statement and returns any results. // -// https://www.sqlite.org/pragma.html +// https://sqlite.org/pragma.html func (c *Conn) Pragma(str string) ([]string, error) { stmt, _, err := c.Prepare(`PRAGMA ` + str) if err != nil { @@ -319,27 +294,14 @@ func (c *Conn) Pragma(str string) ([]string, error) { } func (c *Conn) error(rc uint64, sql ...string) error { - return c.module.error(rc, c.handle, sql...) + return c.sqlite.error(rc, c.handle, sql...) } // DriverConn is implemented by the SQLite [database/sql] driver connection. // -// It can be used to access advanced SQLite features like -// [savepoints], [online backup] and [incremental BLOB I/O]. +// It can be used to access SQLite features like [online backup]. // -// [savepoints]: https://www.sqlite.org/lang_savepoint.html -// [online backup]: https://www.sqlite.org/backup.html -// [incremental BLOB I/O]: https://www.sqlite.org/c3ref/blob_open.html +// [online backup]: https://sqlite.org/backup.html type DriverConn interface { - driver.Conn - driver.ConnBeginTx - driver.ExecerContext - driver.ConnPrepareContext - - SetInterrupt(ctx context.Context) (old context.Context) - - Savepoint() Savepoint - Backup(srcDB, dstURI string) error - Restore(dstDB, srcURI string) error - OpenBlob(db, table, column string, row int64, write bool) (*Blob, error) + Raw() *Conn } diff --git a/vendor/github.com/ncruces/go-sqlite3/const.go b/vendor/github.com/ncruces/go-sqlite3/const.go index a1d6145c3e..5c46934f85 100644 --- a/vendor/github.com/ncruces/go-sqlite3/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/const.go @@ -9,8 +9,9 @@ const ( _UTF8 = 1 - _MAX_STRING = 512 // Used for short strings: names, error messages… - + _MAX_NAME = 512 // Used for short strings: names, error messages… + _MAX_LENGTH = 1e9 + _MAX_SQL_LENGTH = 1e9 _MAX_ALLOCATION_SIZE = 0x7ffffeff ptrlen = 4 @@ -18,7 +19,7 @@ const ( // ErrorCode is a result code that [Error.Code] might return. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html type ErrorCode uint8 const ( @@ -54,7 +55,7 @@ const ( // ExtendedErrorCode is a result code that [Error.ExtendedCode] might return. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html type ( ExtendedErrorCode uint16 xErrorCode = ExtendedErrorCode @@ -97,6 +98,7 @@ const ( IOERR_ROLLBACK_ATOMIC ExtendedErrorCode = xErrorCode(IOERR) | (31 << 8) IOERR_DATA ExtendedErrorCode = xErrorCode(IOERR) | (32 << 8) IOERR_CORRUPTFS ExtendedErrorCode = xErrorCode(IOERR) | (33 << 8) + IOERR_IN_PAGE ExtendedErrorCode = xErrorCode(IOERR) | (34 << 8) LOCKED_SHAREDCACHE ExtendedErrorCode = xErrorCode(LOCKED) | (1 << 8) LOCKED_VTAB ExtendedErrorCode = xErrorCode(LOCKED) | (2 << 8) BUSY_RECOVERY ExtendedErrorCode = xErrorCode(BUSY) | (1 << 8) @@ -139,7 +141,7 @@ const ( // OpenFlag is a flag for the [OpenFlags] function. // -// https://www.sqlite.org/c3ref/c_open_autoproxy.html +// https://sqlite.org/c3ref/c_open_autoproxy.html type OpenFlag uint32 const ( @@ -158,7 +160,7 @@ const ( // PrepareFlag is a flag that can be passed to [Conn.PrepareFlags]. // -// https://www.sqlite.org/c3ref/c_prepare_normalize.html +// https://sqlite.org/c3ref/c_prepare_normalize.html type PrepareFlag uint32 const ( @@ -167,9 +169,39 @@ const ( PREPARE_NO_VTAB PrepareFlag = 0x04 ) +// FunctionFlag is a flag that can be passed to +// [Conn.CreateFunction] and [Conn.CreateWindowFunction]. +// +// https://sqlite.org/c3ref/c_deterministic.html +type FunctionFlag uint32 + +const ( + DETERMINISTIC FunctionFlag = 0x000000800 + DIRECTONLY FunctionFlag = 0x000080000 + SUBTYPE FunctionFlag = 0x000100000 + INNOCUOUS FunctionFlag = 0x000200000 +) + +// StmtStatus name counter values associated with the [Stmt.Status] method. +// +// https://sqlite.org/c3ref/c_stmtstatus_counter.html +type StmtStatus uint32 + +const ( + STMTSTATUS_FULLSCAN_STEP StmtStatus = 1 + STMTSTATUS_SORT StmtStatus = 2 + STMTSTATUS_AUTOINDEX StmtStatus = 3 + STMTSTATUS_VM_STEP StmtStatus = 4 + STMTSTATUS_REPREPARE StmtStatus = 5 + STMTSTATUS_RUN StmtStatus = 6 + STMTSTATUS_FILTER_MISS StmtStatus = 7 + STMTSTATUS_FILTER_HIT StmtStatus = 8 + STMTSTATUS_MEMUSED StmtStatus = 99 +) + // Datatype is a fundamental datatype of SQLite. // -// https://www.sqlite.org/c3ref/c_blob.html +// https://sqlite.org/c3ref/c_blob.html type Datatype uint32 const ( @@ -182,18 +214,18 @@ const ( // String implements the [fmt.Stringer] interface. func (t Datatype) String() string { - const name = "INTEGERFLOATTEXTBLOBNULL" + const name = "INTEGERFLOATEXTBLOBNULL" switch t { case INTEGER: return name[0:7] case FLOAT: return name[7:12] case TEXT: - return name[12:16] + return name[11:15] case BLOB: - return name[16:20] + return name[15:19] case NULL: - return name[20:24] + return name[19:23] } return strconv.FormatUint(uint64(t), 10) } diff --git a/vendor/github.com/ncruces/go-sqlite3/context.go b/vendor/github.com/ncruces/go-sqlite3/context.go new file mode 100644 index 0000000000..6ea97addcd --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/context.go @@ -0,0 +1,220 @@ +package sqlite3 + +import ( + "encoding/json" + "errors" + "math" + "time" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// Context is the context in which an SQL function executes. +// An SQLite [Context] is in no way related to a Go [context.Context]. +// +// https://sqlite.org/c3ref/context.html +type Context struct { + c *Conn + handle uint32 +} + +// Conn returns the database connection of the +// [Conn.CreateFunction] or [Conn.CreateWindowFunction] +// routines that originally registered the application defined function. +// +// https://sqlite.org/c3ref/context_db_handle.html +func (ctx Context) Conn() *Conn { + return ctx.c +} + +// SetAuxData saves metadata for argument n of the function. +// +// https://sqlite.org/c3ref/get_auxdata.html +func (ctx Context) SetAuxData(n int, data any) { + ptr := util.AddHandle(ctx.c.ctx, data) + ctx.c.call("sqlite3_set_auxdata_go", uint64(ctx.handle), uint64(n), uint64(ptr)) +} + +// GetAuxData returns metadata for argument n of the function. +// +// https://sqlite.org/c3ref/get_auxdata.html +func (ctx Context) GetAuxData(n int) any { + ptr := uint32(ctx.c.call("sqlite3_get_auxdata", uint64(ctx.handle), uint64(n))) + return util.GetHandle(ctx.c.ctx, ptr) +} + +// ResultBool sets the result of the function to a bool. +// SQLite does not have a separate boolean storage class. +// Instead, boolean values are stored as integers 0 (false) and 1 (true). +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultBool(value bool) { + var i int64 + if value { + i = 1 + } + ctx.ResultInt64(i) +} + +// ResultInt sets the result of the function to an int. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultInt(value int) { + ctx.ResultInt64(int64(value)) +} + +// ResultInt64 sets the result of the function to an int64. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultInt64(value int64) { + ctx.c.call("sqlite3_result_int64", + uint64(ctx.handle), uint64(value)) +} + +// ResultFloat sets the result of the function to a float64. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultFloat(value float64) { + ctx.c.call("sqlite3_result_double", + uint64(ctx.handle), math.Float64bits(value)) +} + +// ResultText sets the result of the function to a string. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultText(value string) { + ptr := ctx.c.newString(value) + ctx.c.call("sqlite3_result_text64", + uint64(ctx.handle), uint64(ptr), uint64(len(value)), + uint64(ctx.c.freer), _UTF8) +} + +// ResultRawText sets the text result of the function to a []byte. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultRawText(value []byte) { + ptr := ctx.c.newBytes(value) + ctx.c.call("sqlite3_result_text64", + uint64(ctx.handle), uint64(ptr), uint64(len(value)), + uint64(ctx.c.freer), _UTF8) +} + +// ResultBlob sets the result of the function to a []byte. +// Returning a nil slice is the same as calling [Context.ResultNull]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultBlob(value []byte) { + ptr := ctx.c.newBytes(value) + ctx.c.call("sqlite3_result_blob64", + uint64(ctx.handle), uint64(ptr), uint64(len(value)), + uint64(ctx.c.freer)) +} + +// ResultZeroBlob sets the result of the function to a zero-filled, length n BLOB. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultZeroBlob(n int64) { + ctx.c.call("sqlite3_result_zeroblob64", + uint64(ctx.handle), uint64(n)) +} + +// ResultNull sets the result of the function to NULL. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultNull() { + ctx.c.call("sqlite3_result_null", + uint64(ctx.handle)) +} + +// ResultTime sets the result of the function to a [time.Time]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultTime(value time.Time, format TimeFormat) { + if format == TimeFormatDefault { + ctx.resultRFC3339Nano(value) + return + } + switch v := format.Encode(value).(type) { + case string: + ctx.ResultText(v) + case int64: + ctx.ResultInt64(v) + case float64: + ctx.ResultFloat(v) + default: + panic(util.AssertErr()) + } +} + +func (ctx Context) resultRFC3339Nano(value time.Time) { + const maxlen = uint64(len(time.RFC3339Nano)) + 5 + + ptr := ctx.c.new(maxlen) + buf := util.View(ctx.c.mod, ptr, maxlen) + buf = value.AppendFormat(buf[:0], time.RFC3339Nano) + + ctx.c.call("sqlite3_result_text64", + uint64(ctx.handle), uint64(ptr), uint64(len(buf)), + uint64(ctx.c.freer), _UTF8) +} + +// ResultPointer sets the result of the function to NULL, just like [Context.ResultNull], +// except that it also associates ptr with that NULL value such that it can be retrieved +// within an application-defined SQL function using [Value.Pointer]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultPointer(ptr any) { + valPtr := util.AddHandle(ctx.c.ctx, ptr) + ctx.c.call("sqlite3_result_pointer_go", uint64(valPtr)) +} + +// ResultJSON sets the result of the function to the JSON encoding of value. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultJSON(value any) { + data, err := json.Marshal(value) + if err != nil { + ctx.ResultError(err) + return + } + ctx.ResultRawText(data) +} + +// ResultValue sets the result of the function to a copy of [Value]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultValue(value Value) { + if value.sqlite != ctx.c.sqlite { + ctx.ResultError(MISUSE) + return + } + ctx.c.call("sqlite3_result_value", + uint64(ctx.handle), uint64(value.handle)) +} + +// ResultError sets the result of the function an error. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultError(err error) { + if errors.Is(err, NOMEM) { + ctx.c.call("sqlite3_result_error_nomem", uint64(ctx.handle)) + return + } + + if errors.Is(err, TOOBIG) { + ctx.c.call("sqlite3_result_error_toobig", uint64(ctx.handle)) + return + } + + msg, code := errorCode(err, _OK) + if msg != "" { + defer ctx.c.arena.mark()() + ptr := ctx.c.arena.string(msg) + ctx.c.call("sqlite3_result_error", + uint64(ctx.handle), uint64(ptr), uint64(len(msg))) + } + if code != _OK { + ctx.c.call("sqlite3_result_error_code", + uint64(ctx.handle), uint64(code)) + } +} diff --git a/vendor/github.com/ncruces/go-sqlite3/driver/driver.go b/vendor/github.com/ncruces/go-sqlite3/driver/driver.go index f027c4ee9c..b8bf3f80b6 100644 --- a/vendor/github.com/ncruces/go-sqlite3/driver/driver.go +++ b/vendor/github.com/ncruces/go-sqlite3/driver/driver.go @@ -12,25 +12,39 @@ // // sql.Open("sqlite3", "file:demo.db?_txlock=immediate") // +// Possible values are: "deferred", "immediate", "exclusive". +// A [read-only] transaction is always "deferred", regardless of "_txlock". +// +// The time encoding/decoding format can be specified using "_timefmt": +// +// sql.Open("sqlite3", "file:demo.db?_timefmt=sqlite") +// +// Possible values are: "auto" (the default), "sqlite", "rfc3339"; +// "auto" encodes as RFC 3339 and decodes any [format] supported by SQLite; +// "sqlite" encodes as SQLite and decodes any [format] supported by SQLite; +// "rfc3339" encodes and decodes RFC 3339 only. +// // [PRAGMA] statements can be specified using "_pragma": // -// sql.Open("sqlite3", "file:demo.db?_pragma=busy_timeout(10000)&_pragma=locking_mode(normal)") +// sql.Open("sqlite3", "file:demo.db?_pragma=busy_timeout(10000)") // -// If no PRAGMAs are specified, a busy timeout of 1 minute -// and normal locking mode are used. +// If no PRAGMAs are specified, a busy timeout of 1 minute is set. // // Order matters: // busy timeout and locking mode should be the first PRAGMAs set, in that order. // -// [URI]: https://www.sqlite.org/uri.html -// [PRAGMA]: https://www.sqlite.org/pragma.html -// [TRANSACTION]: https://www.sqlite.org/lang_transaction.html#deferred_immediate_and_exclusive_transactions +// [URI]: https://sqlite.org/uri.html +// [PRAGMA]: https://sqlite.org/pragma.html +// [format]: https://sqlite.org/lang_datefunc.html#time_values +// [TRANSACTION]: https://sqlite.org/lang_transaction.html#deferred_immediate_and_exclusive_transactions +// [read-only]: https://pkg.go.dev/database/sql#TxOptions package driver import ( "context" "database/sql" "database/sql/driver" + "errors" "fmt" "io" "net/url" @@ -41,69 +55,147 @@ import ( "github.com/ncruces/go-sqlite3/internal/util" ) +// This variable can be replaced with -ldflags: +// +// go build -ldflags="-X github.com/ncruces/go-sqlite3/driver.driverName=sqlite" +var driverName = "sqlite3" + func init() { - sql.Register("sqlite3", sqlite{}) + if driverName != "" { + sql.Register(driverName, sqlite{}) + } +} + +// Open opens the SQLite database specified by dataSourceName as a [database/sql.DB]. +// +// The init function is called by the driver on new connections. +// The conn can be used to execute queries, register functions, etc. +// Any error return closes the conn and passes the error to [database/sql]. +func Open(dataSourceName string, init func(*sqlite3.Conn) error) (*sql.DB, error) { + c, err := newConnector(dataSourceName, init) + if err != nil { + return nil, err + } + return sql.OpenDB(c), nil } type sqlite struct{} -func (sqlite) Open(name string) (_ driver.Conn, err error) { - var c conn - c.Conn, err = sqlite3.Open(name) +func (sqlite) Open(name string) (driver.Conn, error) { + c, err := newConnector(name, nil) if err != nil { return nil, err } + return c.Connect(context.Background()) +} + +func (sqlite) OpenConnector(name string) (driver.Connector, error) { + return newConnector(name, nil) +} + +func newConnector(name string, init func(*sqlite3.Conn) error) (*connector, error) { + c := connector{name: name, init: init} - c.txBegin = "BEGIN" - var pragmas []string + var txlock, timefmt string if strings.HasPrefix(name, "file:") { if _, after, ok := strings.Cut(name, "?"); ok { - query, _ := url.ParseQuery(after) - - switch s := query.Get("_txlock"); s { - case "": - c.txBegin = "BEGIN" - case "deferred", "immediate", "exclusive": - c.txBegin = "BEGIN " + s - default: - c.Close() - return nil, fmt.Errorf("sqlite3: invalid _txlock: %s", s) + query, err := url.ParseQuery(after) + if err != nil { + return nil, err } - - pragmas = query["_pragma"] + txlock = query.Get("_txlock") + timefmt = query.Get("_timefmt") + c.pragmas = query.Has("_pragma") } } - if len(pragmas) == 0 { - err := c.Conn.Exec(` - PRAGMA busy_timeout=60000; - PRAGMA locking_mode=normal; - `) + + switch txlock { + case "": + c.txBegin = "BEGIN" + case "deferred", "immediate", "exclusive": + c.txBegin = "BEGIN " + txlock + default: + return nil, fmt.Errorf("sqlite3: invalid _txlock: %s", txlock) + } + + switch timefmt { + case "": + c.tmRead = sqlite3.TimeFormatAuto + c.tmWrite = sqlite3.TimeFormatDefault + case "sqlite": + c.tmRead = sqlite3.TimeFormatAuto + c.tmWrite = sqlite3.TimeFormat3 + case "rfc3339": + c.tmRead = sqlite3.TimeFormatDefault + c.tmWrite = sqlite3.TimeFormatDefault + default: + c.tmRead = sqlite3.TimeFormat(timefmt) + c.tmWrite = sqlite3.TimeFormat(timefmt) + } + return &c, nil +} + +type connector struct { + init func(*sqlite3.Conn) error + name string + txBegin string + tmRead sqlite3.TimeFormat + tmWrite sqlite3.TimeFormat + pragmas bool +} + +func (n *connector) Driver() driver.Driver { + return sqlite{} +} + +func (n *connector) Connect(ctx context.Context) (_ driver.Conn, err error) { + c := &conn{ + txBegin: n.txBegin, + tmRead: n.tmRead, + tmWrite: n.tmWrite, + } + + c.Conn, err = sqlite3.Open(n.name) + if err != nil { + return nil, err + } + defer func() { if err != nil { c.Close() + } + }() + + old := c.Conn.SetInterrupt(ctx) + defer c.Conn.SetInterrupt(old) + + if !n.pragmas { + err = c.Conn.Exec(`PRAGMA busy_timeout=60000`) + if err != nil { return nil, err } - c.reusable = true - } else { - s, _, err := c.Conn.Prepare(` - SELECT * FROM - PRAGMA_locking_mode, - PRAGMA_query_only; - `) + } + if n.init != nil { + err = n.init(c.Conn) + if err != nil { + return nil, err + } + } + if n.pragmas || n.init != nil { + s, _, err := c.Conn.Prepare(`PRAGMA query_only`) if err != nil { - c.Close() return nil, err } - if s.Step() { - c.reusable = s.ColumnText(0) == "normal" - c.readOnly = s.ColumnRawText(1)[0] // 0 or 1 + if s.Step() && s.ColumnBool(0) { + c.readOnly = '1' + } else { + c.readOnly = '0' } err = s.Close() if err != nil { - c.Close() return nil, err } } - return &c, nil + return c, nil } type conn struct { @@ -111,20 +203,21 @@ type conn struct { txBegin string txCommit string txRollback string - reusable bool + tmRead sqlite3.TimeFormat + tmWrite sqlite3.TimeFormat readOnly byte } var ( // Ensure these interfaces are implemented: - _ driver.ExecerContext = &conn{} - _ driver.ConnBeginTx = &conn{} - _ driver.Validator = &conn{} - _ sqlite3.DriverConn = &conn{} + _ driver.ConnPrepareContext = &conn{} + _ driver.ExecerContext = &conn{} + _ driver.ConnBeginTx = &conn{} + _ sqlite3.DriverConn = &conn{} ) -func (c *conn) IsValid() bool { - return c.reusable +func (c *conn) Raw() *sqlite3.Conn { + return c.Conn } func (c *conn) Begin() (driver.Tx, error) { @@ -140,10 +233,10 @@ func (c *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, e txBegin = ` BEGIN deferred; PRAGMA query_only=on` - c.txCommit = ` + c.txRollback = ` ROLLBACK; PRAGMA query_only=` + string(c.readOnly) - c.txRollback = c.txCommit + c.txCommit = c.txRollback } switch opts.Isolation { @@ -167,14 +260,20 @@ func (c *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, e func (c *conn) Commit() error { err := c.Conn.Exec(c.txCommit) - if err != nil && !c.GetAutocommit() { + if err != nil && !c.Conn.GetAutocommit() { c.Rollback() } return err } func (c *conn) Rollback() error { - return c.Conn.Exec(c.txRollback) + err := c.Conn.Exec(c.txRollback) + if errors.Is(err, sqlite3.INTERRUPT) { + old := c.Conn.SetInterrupt(context.Background()) + defer c.Conn.SetInterrupt(old) + err = c.Conn.Exec(c.txRollback) + } + return err } func (c *conn) Prepare(query string) (driver.Stmt, error) { @@ -190,19 +289,10 @@ func (c *conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, e return nil, err } if tail != "" { - // Check if the tail contains any SQL. - st, _, err := c.Conn.Prepare(tail) - if err != nil { - s.Close() - return nil, err - } - if st != nil { - s.Close() - st.Close() - return nil, util.TailErr - } + s.Close() + return nil, util.TailErr } - return &stmt{s, c.Conn}, nil + return &stmt{Stmt: s, tmRead: c.tmRead, tmWrite: c.tmWrite}, nil } func (c *conn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) { @@ -211,6 +301,12 @@ func (c *conn) ExecContext(ctx context.Context, query string, args []driver.Name return nil, driver.ErrSkip } + if savept, ok := ctx.(*saveptCtx); ok { + // Called from driver.Savepoint. + savept.Savepoint = c.Conn.Savepoint() + return resultRowsAffected(0), nil + } + old := c.Conn.SetInterrupt(ctx) defer c.Conn.SetInterrupt(old) @@ -222,9 +318,14 @@ func (c *conn) ExecContext(ctx context.Context, query string, args []driver.Name return newResult(c.Conn), nil } +func (*conn) CheckNamedValue(arg *driver.NamedValue) error { + return nil +} + type stmt struct { - Stmt *sqlite3.Stmt - Conn *sqlite3.Conn + *sqlite3.Stmt + tmWrite sqlite3.TimeFormat + tmRead sqlite3.TimeFormat } var ( @@ -234,10 +335,6 @@ var ( _ driver.NamedValueChecker = &stmt{} ) -func (s *stmt) Close() error { - return s.Stmt.Close() -} - func (s *stmt) NumInput() int { n := s.Stmt.BindCount() for i := 1; i <= n; i++ { @@ -259,26 +356,35 @@ func (s *stmt) Query(args []driver.Value) (driver.Rows, error) { } func (s *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { - // Use QueryContext to setup bindings. - // No need to close rows: that simply resets the statement, exec does the same. - _, err := s.QueryContext(ctx, args) + err := s.setupBindings(args) if err != nil { return nil, err } + old := s.Stmt.Conn().SetInterrupt(ctx) + defer s.Stmt.Conn().SetInterrupt(old) + err = s.Stmt.Exec() if err != nil { return nil, err } - return newResult(s.Conn), nil + return newResult(s.Stmt.Conn()), nil } func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { - err := s.Stmt.ClearBindings() + err := s.setupBindings(args) if err != nil { return nil, err } + return &rows{s, ctx}, nil +} + +func (s *stmt) setupBindings(args []driver.NamedValue) error { + err := s.Stmt.ClearBindings() + if err != nil { + return err + } var ids [3]int for _, arg := range args { @@ -310,7 +416,11 @@ func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driv case sqlite3.ZeroBlob: err = s.Stmt.BindZeroBlob(id, int64(a)) case time.Time: - err = s.Stmt.BindTime(id, a, sqlite3.TimeFormatDefault) + err = s.Stmt.BindTime(id, a, s.tmWrite) + case interface{ Pointer() any }: + err = s.Stmt.BindPointer(id, a.Pointer()) + case interface{ JSON() any }: + err = s.Stmt.BindJSON(id, a.JSON()) case nil: err = s.Stmt.BindNull(id) default: @@ -318,17 +428,19 @@ func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driv } } if err != nil { - return nil, err + return err } } - - return &rows{ctx, s.Stmt, s.Conn}, nil + return nil } func (s *stmt) CheckNamedValue(arg *driver.NamedValue) error { switch arg.Value.(type) { case bool, int, int64, float64, string, []byte, - sqlite3.ZeroBlob, time.Time, nil: + sqlite3.ZeroBlob, time.Time, + interface{ Pointer() any }, + interface{ JSON() any }, + nil: return nil default: return driver.ErrSkip @@ -367,12 +479,12 @@ func (r resultRowsAffected) RowsAffected() (int64, error) { } type rows struct { - ctx context.Context - Stmt *sqlite3.Stmt - Conn *sqlite3.Conn + *stmt + ctx context.Context } func (r *rows) Close() error { + r.Stmt.ClearBindings() return r.Stmt.Reset() } @@ -385,9 +497,19 @@ func (r *rows) Columns() []string { return columns } +func (r *rows) ColumnTypeDatabaseTypeName(index int) string { + decltype := r.Stmt.ColumnDeclType(index) + if len := len(decltype); len > 0 && decltype[len-1] == ')' { + if i := strings.LastIndexByte(decltype, '('); i >= 0 { + decltype = decltype[:i] + } + } + return strings.ToUpper(strings.TrimSpace(decltype)) +} + func (r *rows) Next(dest []driver.Value) error { - old := r.Conn.SetInterrupt(r.ctx) - defer r.Conn.SetInterrupt(old) + old := r.Stmt.Conn().SetInterrupt(r.ctx) + defer r.Stmt.Conn().SetInterrupt(old) if !r.Stmt.Step() { if err := r.Stmt.Err(); err != nil { @@ -397,6 +519,10 @@ func (r *rows) Next(dest []driver.Value) error { } for i := range dest { + if t, ok := r.decodeTime(i); ok { + dest[i] = t + continue + } switch r.Stmt.ColumnType(i) { case sqlite3.INTEGER: dest[i] = r.Stmt.ColumnInt64(i) @@ -407,11 +533,7 @@ func (r *rows) Next(dest []driver.Value) error { case sqlite3.TEXT: dest[i] = stringOrTime(r.Stmt.ColumnRawText(i)) case sqlite3.NULL: - if buf, ok := dest[i].([]byte); ok { - dest[i] = buf[0:0] - } else { - dest[i] = nil - } + dest[i] = nil default: panic(util.AssertErr()) } @@ -419,3 +541,22 @@ func (r *rows) Next(dest []driver.Value) error { return r.Stmt.Err() } + +func (s *stmt) decodeTime(i int) (_ time.Time, _ bool) { + if s.tmRead == "" { + return + } + switch s.Stmt.ColumnType(i) { + case sqlite3.INTEGER, sqlite3.FLOAT, sqlite3.TEXT: + // maybe + default: + return + } + switch strings.ToUpper(s.Stmt.ColumnDeclType(i)) { + case "DATE", "TIME", "DATETIME", "TIMESTAMP": + // maybe + default: + return + } + return s.Stmt.ColumnTime(i, s.tmRead), s.Stmt.Err() == nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go b/vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go new file mode 100644 index 0000000000..60aa6b9914 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go @@ -0,0 +1,27 @@ +package driver + +import ( + "database/sql" + "time" + + "github.com/ncruces/go-sqlite3" +) + +// Savepoint establishes a new transaction savepoint. +// +// https://sqlite.org/lang_savepoint.html +func Savepoint(tx *sql.Tx) sqlite3.Savepoint { + var ctx saveptCtx + tx.ExecContext(&ctx, "") + return ctx.Savepoint +} + +type saveptCtx struct{ sqlite3.Savepoint } + +func (*saveptCtx) Deadline() (deadline time.Time, ok bool) { return } + +func (*saveptCtx) Done() <-chan struct{} { return nil } + +func (*saveptCtx) Err() error { return nil } + +func (*saveptCtx) Value(key any) any { return nil } diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/README.md b/vendor/github.com/ncruces/go-sqlite3/embed/README.md index 06c488696b..46b349850d 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/embed/README.md @@ -1,14 +1,15 @@ # Embeddable WASM build of SQLite -This folder includes an embeddable WASM build of SQLite 3.42.0 for use with +This folder includes an embeddable WASM build of SQLite 3.44.2 for use with [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3). The following optional features are compiled in: -- [math functions](https://www.sqlite.org/lang_mathfunc.html) -- [FTS3/4](https://www.sqlite.org/fts3.html)/[5](https://www.sqlite.org/fts5.html) -- [JSON](https://www.sqlite.org/json1.html) -- [R*Tree](https://www.sqlite.org/rtree.html) -- [GeoPoly](https://www.sqlite.org/geopoly.html) +- [math functions](https://sqlite.org/lang_mathfunc.html) +- [FTS3/4](https://sqlite.org/fts3.html)/[5](https://sqlite.org/fts5.html) +- [JSON](https://sqlite.org/json1.html) +- [R*Tree](https://sqlite.org/rtree.html) +- [GeoPoly](https://sqlite.org/geopoly.html) +- [soundex](https://sqlite.org/lang_corefunc.html#soundex) - [base64](https://github.com/sqlite/sqlite/blob/master/ext/misc/base64.c) - [decimal](https://github.com/sqlite/sqlite/blob/master/ext/misc/decimal.c) - [regexp](https://github.com/sqlite/sqlite/blob/master/ext/misc/regexp.c) diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/build.sh b/vendor/github.com/ncruces/go-sqlite3/embed/build.sh index f461b2664f..a0ece88ccf 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/build.sh +++ b/vendor/github.com/ncruces/go-sqlite3/embed/build.sh @@ -4,24 +4,27 @@ set -euo pipefail cd -P -- "$(dirname -- "$0")" ROOT=../ -BINARYEN="$ROOT/tools/binaryen-version_113/bin" +BINARYEN="$ROOT/tools/binaryen-version_116/bin" WASI_SDK="$ROOT/tools/wasi-sdk-20.0/bin" "$WASI_SDK/clang" --target=wasm32-wasi -flto -g0 -O2 \ -o sqlite3.wasm "$ROOT/sqlite3/main.c" \ -I"$ROOT/sqlite3" \ -mexec-model=reactor \ - -mmutable-globals \ + -msimd128 -mmutable-globals \ -mbulk-memory -mreference-types \ -mnontrapping-fptoint -msign-ext \ + -fno-stack-protector -fno-stack-clash-protection \ -Wl,--initial-memory=327680 \ -Wl,--stack-first \ -Wl,--import-undefined \ + -D_HAVE_SQLITE_CONFIG_H \ $(awk '{print "-Wl,--export="$0}' exports.txt) trap 'rm -f sqlite3.tmp' EXIT "$BINARYEN/wasm-ctor-eval" -g -c _initialize sqlite3.wasm -o sqlite3.tmp -"$BINARYEN/wasm-opt" -g -O2 sqlite3.tmp -o sqlite3.wasm \ - --enable-multivalue --enable-mutable-globals \ +"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ + sqlite3.tmp -o sqlite3.wasm \ + --enable-simd --enable-mutable-globals --enable-multivalue \ --enable-bulk-memory --enable-reference-types \ --enable-nontrapping-float-to-int --enable-sign-ext \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt index 2a07fc0c14..0fefb373db 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt +++ b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt @@ -1,49 +1,101 @@ free malloc malloc_destructor -sqlite3_errcode -sqlite3_errstr -sqlite3_errmsg -sqlite3_error_offset -sqlite3_open_v2 -sqlite3_close -sqlite3_close_v2 -sqlite3_prepare_v3 -sqlite3_finalize -sqlite3_reset -sqlite3_step -sqlite3_exec -sqlite3_clear_bindings +sqlite3_aggregate_context +sqlite3_anycollseq_init +sqlite3_backup_finish +sqlite3_backup_init +sqlite3_backup_pagecount +sqlite3_backup_remaining +sqlite3_backup_step +sqlite3_bind_blob64 +sqlite3_bind_double +sqlite3_bind_int64 +sqlite3_bind_null sqlite3_bind_parameter_count sqlite3_bind_parameter_index sqlite3_bind_parameter_name -sqlite3_bind_null -sqlite3_bind_int64 -sqlite3_bind_double +sqlite3_bind_pointer_go sqlite3_bind_text64 -sqlite3_bind_blob64 +sqlite3_bind_value sqlite3_bind_zeroblob64 -sqlite3_column_count -sqlite3_column_name -sqlite3_column_type -sqlite3_column_int64 -sqlite3_column_double -sqlite3_column_text -sqlite3_column_blob -sqlite3_column_bytes -sqlite3_blob_open -sqlite3_blob_close sqlite3_blob_bytes +sqlite3_blob_close +sqlite3_blob_open sqlite3_blob_read -sqlite3_blob_write sqlite3_blob_reopen -sqlite3_backup_init -sqlite3_backup_step -sqlite3_backup_finish -sqlite3_backup_remaining -sqlite3_backup_pagecount -sqlite3_uri_parameter -sqlite3_uri_key +sqlite3_blob_write sqlite3_changes64 +sqlite3_clear_bindings +sqlite3_close +sqlite3_close_v2 +sqlite3_column_blob +sqlite3_column_bytes +sqlite3_column_count +sqlite3_column_decltype +sqlite3_column_double +sqlite3_column_int64 +sqlite3_column_name +sqlite3_column_text +sqlite3_column_type +sqlite3_column_value +sqlite3_create_aggregate_function_go +sqlite3_create_collation_go +sqlite3_create_function_go +sqlite3_create_module_go +sqlite3_create_window_function_go +sqlite3_declare_vtab +sqlite3_errcode +sqlite3_errmsg +sqlite3_error_offset +sqlite3_errstr +sqlite3_exec +sqlite3_finalize +sqlite3_get_autocommit +sqlite3_get_auxdata +sqlite3_interrupt sqlite3_last_insert_rowid -sqlite3_get_autocommit \ No newline at end of file +sqlite3_open_v2 +sqlite3_overload_function +sqlite3_prepare_v3 +sqlite3_progress_handler_go +sqlite3_reset +sqlite3_result_blob64 +sqlite3_result_double +sqlite3_result_error +sqlite3_result_error_code +sqlite3_result_error_nomem +sqlite3_result_error_toobig +sqlite3_result_int64 +sqlite3_result_null +sqlite3_result_pointer_go +sqlite3_result_text64 +sqlite3_result_value +sqlite3_result_zeroblob64 +sqlite3_set_auxdata_go +sqlite3_step +sqlite3_stmt_busy +sqlite3_stmt_readonly +sqlite3_stmt_status +sqlite3_uri_key +sqlite3_uri_parameter +sqlite3_user_data +sqlite3_value_blob +sqlite3_value_bytes +sqlite3_value_double +sqlite3_value_dup +sqlite3_value_free +sqlite3_value_int64 +sqlite3_value_nochange +sqlite3_value_pointer_go +sqlite3_value_text +sqlite3_value_type +sqlite3_vtab_collation +sqlite3_vtab_config_go +sqlite3_vtab_distinct +sqlite3_vtab_in +sqlite3_vtab_in_first +sqlite3_vtab_in_next +sqlite3_vtab_nochange +sqlite3_vtab_on_conflict +sqlite3_vtab_rhs_value \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm b/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm index be6574a138252050b4ef34ee58179f1cc05b1e20..b65fcd172e7e8cd9659429359f194553fd36d329 100644 GIT binary patch literal 1470092 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
    NHwX7i?R7ceSDN_L> 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ⅅPq0jTXtCNs=8fW3G|S84k41PU7GfvwZPSV#s=e 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

    kh))_eZcy*VfJ>A6%Zx6+S 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%0DVvKV;inkAoqPM9(fi_x#o#4it>K(D!$ z7wt^1L^ISjt$$o_()3t({*yZ3F8(psAGPu}tS|aIq^E5gotd@heFconoD*X>`PeZ17Jz7M$sZgBb} z&yIJ=v)8R~8NnKCP8dxTJ!4+OU0vW{pOrj|C<>ytFxz~*O>K6YYO1Uuh6zWKP=m>- z6>5enp@!SXmQHUOu7n!o6$>@PdR?d)wnB{zWGj(om_(Xk5@`_nlr4};q{$I!HY!9K zogA?NH$nYlOGxS;-5;%HNS6cQX-F=^YKG)uyl=(LVaPW|Y~~f@(u$NI#_u`5O1L6x zi9}4AmT+REOhIHwj>XNGOT-QY7q+{hEPN1cvhcxdWeg1qAB-0wYJzdHxHXXR4-;a< zOCMOn^#hN0-41luP0X4RxgS+Guw8pF{U=3JWlxGYYPtr6mC7O;PeaZ#r^x{DuIQF0 z(M@g(HmRyOg25n9LYzbKh)iy0Ndg91EYr@HK8yat>U2_DD-GPIVV$BBY`MYxA$ zJ>d-phE%<07H;lNImmE->}ZU(1Z3*vP7GzTiL)fXjLB!sNa0^j1dAArA=wyI*^l-J z@B@z6TGYy+yY0Ftuny9Tkz4<0Ih53L+)*Kzh~ux`K%4+x%l>AW6MZLmfOKBI5A$i$ zOgcPJTzHX}yz6i%TrQj%L*s1R{rMkHEF70g*7VBXgDn(G>nZg?$t152YCad|e=?y7 z8R)@s{1n~AE<^xJEB%gPFVf=QnqjATPM05dHT$B=ruH(|cH|z$p{)n|N9^e_I-xBq zqifrh4){Zx{?tTZB$tX=%=o}a?gR;AtMy0Ssf?RQn=lMARTKa~&|9MsVIn_=tQM;k%>`5X#(jgHH zg7O~s#qUslLedDDbea^ang~Vf54+eWtuWZjHknPA6VZw`?AeM|CM~U`UK(>A`E@Nd`JN~xk`@sbP2xDem9n3cj?!pPO4^Wf5A%G&U(bXv9)oFq=wM)T1- z5fRGT3(Lh}62bJ9yG>L|VZ)u=i8>#Rf6(e70mrP8fYph>a^#BMu8PevD{^EyVgu;= zs+VbtvG8(V@oSj)SPvy+mot9Qf9HN+R^LzT_LnVFql~0Z72rW>~Ua zxKlK}1k?ek$PCLF7(BUaSXpOSgXSH*QKmQAVPW3s02NJ?wTH1Ant=^EKND#(oI-ys z;FIj`HMm^$E-RN;D4?1^ar5#ydpw7)uf``8hVWTEoW1@HQ|*FY8ZcCc6WKN*Kbo;L zpZ@Sxv_uCmiWi7bcIJ{|HS7S*&4Q|~by7_z7prDCO2 zbrsQhSMZtdp`Wd3whU9Uu6%l-gZ9Loy&-An+QHBz{sXCH>KHh&q3GM_>tPI-iSB2o z9lZt;rYx&9Wa;lXgk;s@L996Td0lfpRF?p^oSJcg19v`+!m?x2g1Y?7q@8?#7QVa- zf->I(pg-FHI>a#!*OE0@;y{SY*h^>oH9-D8B7qz;oD1{z9-1#CCk`t%r+FYLcC=AzE~Eo$*csW@$Fkx zBv_!=W)XZC#SslXhRHw}R}72q3x;pxRb-O&Keo8zI+$01Vl0KnOKGGZU={_xyth|k%`H#uON^%zKF4w2l!iz$4V8UyN z75X#M^neANgoey13UP{B7zIfuKzoX~Hw9-~XV}1V{au#~VoDmP+7G3jpehL`IlRgw&l z#2Ic)ZkmeWy9frPC*ctR=D0UWTtbPh@e2PP-7GR>PhDehszH?X05<;r=b+X&)yY9I zm4K?oRcoJQ)3$kg#41TC!hD)Qiqde7dFy2YOeXc1+NV1`Fcrs}yoicY1y;YLsvg$p}RfJ*wjJ$;a~7 zTU5iKP*`?BWR=7aKL}@To-LdGzv`V8Z>*zCwxs3NTn^m4Rn^5;saB zb-BjIi0*~t-W3$OwO02Pu-mQ3OUq4x4=|ji;=+8V`8I04Rl0tB=Qc!&;?l{dys66n zcF{ZeHE%k1E;g3p-2BfcDG5?Cm*#Wxbo##DdfFp-M+0;hO-~jPak8&u9Hv^N8nj@D zvVaHGyoHO@coSQdOoX>driYoN7;I}6Wtm#Q9oNORQG^uFGp^_~z_ zG7t+@BH@AAA=Ry9w{8sezM>=7<4G;)ir>ai^@%fvpz^9GeGZMyLeFt&whV+FlhRDV zN~G_UOrU7!39S-?p2Y@HV8cozI3nL?y`sZ1}4 zBCOZRC~N=-sL}^j;KJK%iJE~{_i$qk<$CfK z(azJeZ)0&WV%-afcTfj4@MY8AbZB*Uczfl!g)RBfhGZWxmxX2e*ns6=cY9Lt8r(-0CPYcNyl zdEY+KP+P?cqtb2X~Z?B<`8f^O_E*PoL=)JCzg z%c#qayJcTzHm(IU_gY5n@+lIN8%C}2H^H)d;Ck;%GisOuxC)pMY_$>w7|bS3(z;_y znIA26n3*k1K~-N#mTgwYN{h~AF)L0mB&bPb%g44fXbp@EUbwb!02bnKf zQ|VlX*}=s1s14CNLc4r_Uxv*!zHeS5m6I+-N6p0qPEaC}E9B0TTu89Ja>tF#i9bSDjq1zfuXI0Z+mwf0I8X&f)H95|;~ zr6o?%^cD{EbWMSJ!{;7ZPHKD9;e2-~l=Ci1N}nP$nUV4qr+d*Q>MP{z2s^<|oIg}U zE3rtxP2+fH?pe-IV5JucDQ`muoxKFhEBL}(;guPlANE~Afw@)%8mm^tr!N_r`%#+xbPh$?@5)ug7DSR#$K~RZjN%I-HkIaVf zo_xnf=S(ctvA+HmqT`Z+q62G11fnUy6HNUdyey3v19?JZ3#$9Zf!Ou3t`-!N?;Vn()8G<4%=2FxHwp5raL^K z5r8#P_%OhWDXUgh)3$bZ6fE+if`K3AH^78KcrY9qICgkE*&~0dD`%MPNaN06+vwA1 zWMUg_&ad|_mR#%-LYsd~n+$7Y_Q`9_E&14OTM}lJHM1p?o{|=p#K1pX18NyvPYWxm z)K6+-eH@*f$NTdS)3QvbPz}N)s8*tRb7%-WQGwF7(upgn7AT;U%Yp5a);L^^O;o{H zF5ff6jRd@ild*G)^<;DQc+~`xK+&rI3su!QyRf@Ab(M(yxLGw+8h>wuL*)jPc05dd zPIw1R^;7E=zwLAZ09cR2Zuu+`9F^^YR4cGCFIh$ns1si16JXx-p?llbSK7vm0C=4IlD-AS_zAfcXK>K78y4si|H-2AnHRHfiR(c z1IwKx3cg7RgYN9#m9tK=H|w z0qGvQ9ob9n5g=je7}<=pII$Y7z4|Q*ar{1EY~goihwn3UEtnrETn?Kl5lBd znfNUVt&4gHf?zeKq$UW$kUP6FRlwQAkk_isXM#uRhzRU|L@C(l_w$3UzY9#LB)WSg zwE?h#GRr340AaxL3W9K5EPrDA^Hq6%HX^H&yxU3FySX1yf&;WfTGC5^2uL;<7xgllUnZwCoPnC8)g>C_UNtOgQ0t@O^Rg z7^2SA5l2sBv#=F+B$n8!ve}Le)qb<#=oY!s6JdSa?2M}wz4S)n=-RJ6FqDn%s3`YI z#KxpJ!7w)JN4K5_*f-PX22uMU=(3bhFl8?T4z3x9d{LDOAx0lox*kpm2{Ht8N~FSD zAx@0gHcet1(o1vzr_h0x3l)9Gc2JhuJr2FV4w{3?5dh$5@Yit_NR3vOD6L=-5V_8w z&Opw>C(m4EiQD^o8m^a?_9JMi;U(hp<{ zS+bAWSs&&Zh3s2yW86U14*OVLZTDW?t#+KnSwj3J4S+{>*srbbR%dnFJzj5=>5X=L zi1i(u!!4qPC8^?hy$4z7K8a7Hg%w)RoShc!j^?JwHq*-R2S+TV%GW4)Qi0-xfTUzNJ&&4ui3#v#|TSU^z2EbRZC+MLCG%zAK1aXwNlA%yyq)P zpqF~WK)T~s7s4&nQz^tfrLd+%e#IIrM_4e5h$!Qb_=E6{xip$N@#8ba+a4i-Z^0dM zMNcCD9;^;yu1Qbmw(dC?gB0+cCD|E&2UT9|jwa^MhRbDlpIPP->_rM>>`4+Q4H63E zuQnC*V~0o}+A}gj?{Oq6^d1b9&_gOFOkRoye9SW9uq*U*ay*C;>cqwGRoS3ZS<3x% zDjQg108w`dJ=2aMa9=`C_w+H6h@>Y?T*Dht1m$$QqHe&HoLY`KxPEoa!S(Gi2i(yy z2ZvVZDz8PY`Vhoe1=zwlgnlL1J;LZyp725L*-rja^S@LIoZ`q^BbB32S1Oa*nkilJn}7*nJb~pM z(`q+YVP7=U$yKn#Dm1|o#1aeYl_%;0qa@Zvj1-^GWgJ9Uw9I1kRb&?GXHRCq7*|x% z4T9enm2`sO1xw_-dt=&?-319g?_K6*e=M$9`XDkm^68_;pWNyNj!IekwSHw~kcn@h zJK!ujfbJm6l{#EbWvznK$lw6SRrD^T^laTEtncnKKA8rzkt~U{A_`P7S_%_97c1HX zF1IbGPn>N!#_GUns(OHGxLFg8LLZ_2^Dl;3+j)Ir=M03T0D%N#ED-En7@hbOt4C=_(!fEvU<#9#X2U6?*8TR zN@YcK4CV%5UpO*7M;WS^jL3Yp%5ic|!fch^Bm{oa$5InmEMHidzCytt1qzN zxA1%<&jTr?H;t9nGA6BsN~f0>H&MO5FrO|UrRe3chW#rHA4ajP`WzpR4%+G?X+ytPIYm2 z+NrLwc{FLKJ*S=OqC8iiN|Vq^=}TCB(1`a70Ju0@J9~A-5ESNVksLsaJ z<*Fasy^aq7Bl9z}A8T$qzA9w|WK#p{zJHr=R!9fnbO3XsUs5Hdl z1Z`06RVbJ5h%ALS#;Q|L1Zsz$6oSG%gg(snX_$M#+WLka)eGgE2J~%?BB1PwAV2f5 za!!|JkCcKV;DYx=3ef*_roLrlfSUp`oO|B#aBsvKmUyWssq5GLq9^5dHh>0V%C?54k!j2{^7n^!pz5ryJ ztPWGFreBJCye)U_4c0}H353W6^N%0#w*O8J)G0mZYUo+}z`A$Jz;b)>&RqR8OuFGD z1_Oon1r3<6{D=);6=$pzGOiM*iS@=o#z?Q&Ft{#V4hG?L<5-0#Gvl0PHYPaG=WG|z zx6dGR_#qIedF8XXFPx!VV-a9%`VjBozZ82itCgwzDvf*QMCDgaDLGKR5LT~_7YlZ- zJ9nsIAwIPrTk+E3YrwFZ8Qk(IwY8D5ddkjXDJs!UAf2k&dX`&erUN}bs-7Ygeu^2P zQ#HJa3oNiv^$#D0iALVN5%0-?)U4wH586_DR{zYe4XOi@!yGxUJC+Affq+O%4tOB5 zzY*!Qda?y}_-O~dLgxKO#2FK=%`H7N&{8-9d9aZ4Fs9#5GV$b4m5$z?t{L% zXKPGAvtKp7V6xNM8eAZFLwpG+#*rL)EvWZvfDIf!=kRU`2?7i;$0`cX2Liq?@$Jmb zT4Pn^VLMwq6|``r%HRXp{1?Vc?w{cXAOGXxhc|t{^W-IHI2?G|9F!s9n{<{&I!;r)8S9V=Q9h|UVzggw^JSZ( z&qJuiB}be;bKP>t`;D6Y^&0i{`gWZ@2)0NrD_5R|p>VOcxCvnB#W7nv&)ahq4^Xiw zw*3@mNj?x6HOO7b&?s|VdcrR-(v{JnlTpJSklvsWQG_r}WdChE#h`_iqhWQE7!vi0 zcNPa(8X#&79!iM6(9f{CE=^)$V+uH-F~Zg$tA30=?x-|^@14Lj(RkhtpQR{Icl_xI zzru5?@gHv9(Hmc4{Ma(Yrl$+_iJuTvGro}B#TT{@9RBzgD7p1K&iH|-nVkzhTvz#& zN(?LrPP*tRMj3K#8}KP5sY#fTcf#3XW04Up%7`}>)*eOJq-jnTRh4eOi8Ectm%}@1 zfQ`+bOAbT9Qd8Zex;_U5MjN}Q1|!WI2^fQrz{c(XBeb&{38oz+u(5j$h+QO@u7KDg z0jGfMfdth}mG+3G6PPx!1!)_F4kpz>5F+$b*{|0zKu3KtXzKsSb{5`PG7VzTtvyzl zD>EHIeJ*%tw`+RH@4&oQi{C+By;L?YwL>4S;V;iHZm;OHIttg6I(>AFd0xK~?x3KK zy=kw~W!JCVh19UID$@_qT7+Jiz+uo9V@A@WwA6^E?}(; z^8gD_b;x`TQeB&T2U5W4i<3F%hn@6=$j)RDzr^RiHmi&<<8|$zaB0 zhOxRUx&|dh*QP0>GEk6Tnj$$(Bmq`F?3UTlz4ymI5}dda?p zCAE-XD>e#A7avm?&y^ND(1<{iNU1sthg5U%nhI$< zOy;c+3=w|yH&(-xpsnx=nA%}#R&__}L&!T4B?u!H2dK6zAqJg58}Luf$SknoeZk?x z`y_0cjU?Xpr8dAgEd23ofbm9)Xw*$y+W^yWLqF_5@SZ+fpf zN~SZ9kW;CBOv{WGj~=9zGK{UHEr7f9d(Ifw9lec^g88O;s$>!Dw~{@PJdE~k#kj9s z%| zqT4%2{TtYsWRBeZP*@Ih`c?}pAVf7uz@jpNG9yBL)XEdZ7!c$8h^a(%iK}4N)fS5G zhPPKmkB+t=Dg_pSXV=}Du{9vaoLyeW0jS7MZ6NNvvo1Gv`?$%Tp^yLbu?idk%Mg%QtZb>=#) zo@6UIWdnuXHk>VoOjq%9e2U0S5{xXZGggBYx$@l#vG5nt+&Hx|j#h@LmEo$DXk?5eDNYbANurZorod;x7ul@oO4;(PmWQJ{S4zoM{;I~9 z@>hq-U-fpup{jR?IeIvtfO42|$oTF0pV$-xZppxsx%P*oR~~|KskihTQ&z`LbOjM+ zs!$as_9?6E)RN!NBOW@^{)s*;uy+U_dz?2;sHOuq`x0XutZ6@7U(!Jz>43VFmu=h| zE(fYCqge2<&DDAs6nO>5OE63r^g)pHonVm7 z2V83}UX*`5!=`ULay{gX`1~wE;}I{-Tl4Rqayo*WhIE_=>55;|x0Fq2VmrgevcgR9 z2k7)QjcD25sc%Mv(hu^-+8H~hqNf@6m@!$>mlqQj4Z78g*?y|YYQ{rm?CfJa%Q53& zJ7dIU&los#W}IDX#$4>o7+CL~F%Njgw8hX#F;hq}U)fB_{XsVBGdTh@?_XxXO>@CC z54^+J-*@UB9~(Ny~Ws$tj2+*Pl}W6dQzE#GrdC+1>2tPa%LTtyK~=aDrGb* z(nZ!^8K4>N!4TIS6If`~4>v_AfGD9wV;%}WOeqlQ{S+vyp{fLv9c5DH=El&o0i zRG?}Bgy}+#s+RJR?JqC3po30LsVxJBSyS6ul)-}N!d_|x|&Ruo%LY=KxIg0 zl(zl>iLso>bCd&ig|3{$bx~;{7y-m6vAK|Auqcp$`gAWVKVAaKL+~DEL7fb_M8Zxv ztH`&0zS(*ip>O$fmK$P7k`nTQHIGd*tjM&H^O$W8XmI61OQoal;NfuJ*oBB)x7E=g z(l-`e_HR&tb0}H28H8>iX#J(7={kk6CK>ZGQdHXB5o8?A&ZRV2SYjz#2g{&+Ju2kD zoRp8N{a!(C8n!GwXl&m0N6ie{M2~887TINCFkP~W7 z$oV3H6y(&H#X^Ciu!E0d9RykN5P>@29~3kb?XNfocO$|?UQoBjkw=Vt$;h>YLLL&! z`O3-la{MqoBq>L%D489AbFEUQBXYuN1%e4pcpi5NS*W?;pw={d!G(u~7GP{OJk5G4 zw+Sl;p?I{#8nZce7LS!i=`z+<7r!tBU9|8zeMk!9{FIPf_Vd|=b zVW}H1QMx{&cl<~QJwTcDJ3%%V5A)1zkw1!$`bF?$T_9>jpQjLDg=u?~NEshl;#vUI zDv?6anP1R{I$ib^MMkg0BT6hI(Tx1Jty?q28c7=`o2`UZS5@SH$lA;6YYnV(&n%@&b9O_;CT(_pLdxhBns!Auy;pgR~)@9M#D@#1pc3}zyK%Sr&W+Sm*Rh%?!5 zuKKqAs@RY0Vhjwi256g7d#F4P2-!VA(!4dm!8yR)Aj2@`g|>jgZjHkHcet9F4D-#4 zdS=Q*U3yJ#jFp`v*ZBhcWhtCTD%-J96op$171x4fVj&3c<`E+#lfcRn(M{dhmwCT) zbfEy$WK|`i_)i49uEey}Hxmjx_`(o(60(}?Td}p-p-6bY*?m>icf1lVb;piNiE~X% ztW78%?I1rQGhU{_@q0~KW zq;9+c2LDpt(Uy_3?7K(Z4)oSBg#9D=d$9(!gS+P`F z9sPp~1fUX3OuK@=z8vCdVr>Q>3ME!=hUMv^$dC3aW|~O>^Sbse3#``FOImf76c*QA z((2kv3c`9xu~%z7r!~upIO*6T)^fmXnl%79Ky0;%sR8VgHiH95OFYGHMj#Yo=oNS< z>Ktt2@?s7gHe-D`nW>t4eR+*jm~5}$g`jK|eIDnTUt zLohxIP|Y7k&&TGXe-1&e3Q}qSr~7N*3NrA(DNw}SfK)$_9|6^~LOS497gAwM2;^tE zJnf?v2Y7`ExB;0d`g9Ej>3zsc6=%Q2OVx~c#BdQJG+zGUoG_2qtBhd-f)X|m9g_zB zA{~y0u)iWt+z^MaM3bXb(BtK3T3y33xHPl+oB}3pXtkzWSf(UOxRo^!7ABCVKln-Ca{ZR?6CbDRBfg* z%ct+kQ{l2u^m>GMpO7$c8}fW3C1VAa;3n}u=SW+{L+5(tPA;Gq5!j_1Z~9eYIM=D> zB)Oaau+^&=HrFWOWQ0Wk5KnVZ5Hg>2ZSOq~kb>$#(o7WmwEF+2!$~U`g<5LWG)60l z$o9j`uL{Q7LXX`sdhrgiYczA?SG&++Efi^E|T}XcQd#pCbWwpgf!~kW@?brQN z3kpAo6V^19uQg@Yotxs@s;LHrP$r#apT@#w6WpGtM!u>}Qv(CBS7+xlCE&;av`u-d z$|=i-_P`_@Lau4~tZgV1*%w=+%RWakBNV}^*umr4RB=^B4s66}Gb$AxW9iv-snT6P z%q*`N7ZXo=uVVC$vTjW~eF;_Yt*CvD?2*z%T^11FH8y3B%Sob<8K)9g9#`3zk}7H? zgH5Y`)#x|8SFr~ri$AID*&mW z$w>^jFD&_5HegFbvwk6V9J6J|m&XEFFows)Nl4r^V^esp-e+mV4n=-^9Eaz=5CkIb zTaF}cTre#~eCQgbF~M4ljX^4RF&zt)Wn)QZ@J$i^u|!LGFrx@RL!mlOSdu|NS(5MK zWBknGn}l+wbSfx9A2NE{I83;wz&)}bl3GaF(Y@GQ*7dPwn3%40fXq6Z)9hSLqS0`2 z(`mGRXV1~{lGw8bGHC`4=CB{O6eLshK+kw12csH76N<~CY5~z4jM?#^W+r2B zDQeSOtb=suKn926!m>-))rzI^h}D~yY(oFiCj0qID1J`ra{ zt}2CU!N4JWh+5WGwZzz#8?u2XD1rhBM34=X3fyfh;F$)}o1G_`C9XD!`9BV$Y94MO zE%iu=?Bfn*5J(l3VEj_5>rN<6;#IPYcVJD!0-Uf_+7zRX!;(D@YDF?zW3t(PFw#=! z!c>A;@}uGHO>(i09^S=iLF$&%dKcJ}({>QM<+NbOUYyo!=(twIi=dhGH522#0+i5^ zLb4`R1uPL}c-i67J_Ab5xka2z8(UwOKXprs>?>)mQ(6SvYuS?^4EwJ@9my? zBi=7s1Qh^w>^LyRcE@2#q8CUCvntoqu4894UEGD>6Q&I9I&xQ&^A>Kp*>b8~XNKw$ zZaO{A8G?3KL(kgbwChZ}yN)oFF_#wbd5Fyjy40=%D`@tH)y{zQP&7v9^74{`BuGXH zEpoc2cRKK?DT=u^B~S6WxTpb;5|0a6#~g}hP5&bFD0u*{f&H1+yJkRK#mv;a+eC~@ z06AGKIK&AhNzpIqiKuU|mjH6IOmFN(7FC}uTx5+F371qwKP^=%;>kA^@oe|O?{6#3 z*+3pU9|f_Pge6$ySuN}$j|-=k&M4^XCjYS>S^adgXCo=`l{$k275(#b?XMHe<+MK%@k9+O6c|_dizBT)v-x9 z-yFu^Xi~obzOIrm_@N{WJ;1jQ!LNg?xA}-f3=87N_}L_4+;V*u_ z3kO7jV*XyrT4-g8`Ol2;m%|yL1n3ajnUN%ajfJ{<<9Z}<*sF!X*t*y~$aKEFc;)Pn zFMtE`5$faXbB@QWzq@ya|1l=3HXgB<{?_j3V661Ig5;*RQ-UQ-lS*rqHA)w5QKk_){_i>8kgEu96;ZFJ3XbuARcccBt7@ak&~%GiRJK9$l|?H31Gd zNu1xM1d6XKv-$sQlUC0a1YpfHuOPC53IfyR=%RU|LL(Er4!ARdC16YcYKy(7$Hxnf zke)u1pRk_m8@}}fyj>##B#(1Mte;1ub!yLFegU=up2n!(W? z+`!Vd`wO|SP(1wfFNgCr3)D(24SN(DbZpPlZJ|Hgii0p)S7CiV?0_x=ekDgP4>BuKlX!2O`7m3{d|NmPQ5||D7)O#Lb52cB^iII zzN4H6l!1tZ?O6)V&Ed_M@077!5%7Q+6XCcL#XDDk*j359GX%#Grhmdl*map<7LjGT zJCa485S$X`2U^*9hQ*1YTej2Ik98z|*2lC1L$Vl&q6n27SoDp0GS-ex!j(RTM3=Bu z7~aS74n=cp7HGVD2XT|;<#xexUswEqto10GsWo)%mIi8HtpMBP;nSkO5#JsmP|Y6SfM z2Qo8BhCooh7px?8rO7hSVbI&CrL`_n6N%Nyx*P9dyy{d`fn$Ky>{ru}`i9egU99Ro zL*`-~7|TRQIWeWmvE|0D<%8b7I17uFLc*{p{7K1KiZ@ zBX~88+c>(6)z!#)8Ag4kBplB!JNIrazPAmU9$s8Im_<4WD0r}_d?b?#d^ix9rsk)a zVw`nUXV1t{;R5LZgdv+v|Iwfc=d)sy6ZZo(B~D*nA~IA*bDY$$&ll$wlamCb;(<1` zh>GT?Ark0$wUJ8Cz{u#3v1?Ke6Bb@eXIgPjPmCy9+Jy!NOb5uph~cVtW(uMv z@c|l3k!YY3liEtZ)PAqNA^n0g0+lB{lt2gj7*uz)pItbQbP+Zg8j==4NX`R`h>T9;s);~H<6 zS7}7-Lugt}2sa}I&2CpvHKr>K9HtpRIVy`wuKmx1!75~jPFF@?g6H61{z?W+4*!M?yvGCDY@7Q<vupe4`#UVg3lI{`y}(*hz*5=8T9L!c2@z-)5kd!-Ucw0(x{FT@x@Aoz z5{GHLICI27c9)bpiQiQ-pIk(G7E6P8!2!4p@H;Su6Ho$4+iI6JclqYyKH#hn%D}+n z3}Jj=k)^8eE0`xhM4j|sE0mzJu*D~R39U)o>pKBB`6I5)(;s&z2Hnd$LgEII1H@M{ zyahsm254LPJeWQ(sfL0twgM>~L=6g%V+mAa2Ydf^C-)%&q?7H@yu~1pY7q-~FQ*f; z7ZS(BHNqC;P1epI3Q3!MLwMU|muwpoOomk-MX;JWj7<-xFt(6fwKJn#DG3b_-^&oy zn}P}PMUeWq!|tE4%!WKuD^qHcLc*co|Je&{TpXQm1q})*CE*pOc^@3xu52^df-z6&Pv!!-Jqr{=6kCo5P_=?7w+yzL5p!|UqKy4* z>AoL_@K=uHS?ez3c{5}-QPwsXayO?2^14hGRW&`wDP8@`=fLP5Wc(6QMLJNYQnmn_ zznOKo-T0adY^P!l5UONn-niN)Bo@>rFv5+9b7iSIiCYok3bb@U&u)(pnOhNupzU5Y zZ$LJc9_V+yLh=o+d4+I>KC{4lUk&XA(o!IZZ-X~{yM-N;5B!C~e3P>9!9FkZ@@hT! zgj?3lz&5#w9effCgzg^;v~r;1`ytgMn7o5e)|RO2>+b}ga3*AWV~<5*UjW?Z*thVF z(JRM9US6iu7uOw9PY|%OXfj#F^yH6}>$k1x00{t+aD5FsXGQsdC`}!Ta{>Qgf^eMJ zaxd&YU?b#{2}sWLFu??1N3}wpBR?#hV-hTS1`#l{1;tS&xhIf7I6Jq}^Fb~u_^az&gV zQ>ZhpHcGHuN~6v0bB~J)PB3jR_nIy6`-um104bWFrXJG2RbQC56!=BUw)~>_-}u zYecDQ_G`(8Y=T5X;; zNpuzFO4b@O2=i{LWr_7O`8`&Wu`=<;w~}595yhUcW6fNNB^Fk2(t-?QK_)>V?`XZP z-WGyBvf#ywP$MP^1G@ za}{9}II=`-LnAUG!2gW7D?rnoHrkeCz|wUg z*b(;3wf5plYKEt-X9V$z!=5EiDrgyhzR(;D7n*AiU_wY6u`r2seI$vjNnDlQ5Q~GY z9q0$cV|n<(fA_Ha(dZmQ3?CeoA<-9K2&AmFVr$e41dBw(NM7bR+Wr`yiM5Z+q8A`{ z?T(^Lz^eu+9-Sieut$m;wEH3qyh-eLDFY)I1qZU<}Z7R_yefQ#5`of0Lj4Pu6=UnS7YdrN3cuV zATVb4(8HWMeXQ45IFcwU^#dz3OULJ2hYezH&>3Pnvhf*Np}E9-Zq1%9ws~vzjdDUV zJ>nhGygY3p9GJh?sleo9ywXx3X3lpl6>{t4#fbGEEc+6FC4`SG{_0@@CcIQc0@)TU zKr45Hdxyfv$>w2$1W$x-f+P<4wsOMJ)i2Ip2~r+J!|&$ER%q~G<(F6tq`W-_XFO^L zXDvc_#NZMh*_EK+;wtKTSkBZFwd>iuNMgG@%R-RT+LIsM*V9C+GVXxej-LTb82 z=3PkYme3`!7_p#FD{v8J^`HK3Ds$gs#wI(aiZ)wieo8ouf*i$FVYd-Fvod4a`-wo; z38v|4zxzrc>{tyw0!be9>!1NTPeoPXruV_*xdZ|W=QH@pK)V?8PR*h9YRAW___(qLYw?}E!o4M(xr5GkwYK>2f zs~g5sq%a&7 zxA6qb<3e89hXW?Fx?ECC0F6+Qrg)~?%3>XF_+np1{I270h{b0({XbUxrP;cg&nlDX zSl0hCJH0v0d(9uYa?AQZ=wenje{z{mtle;D!7j)n|HBzxMLVlMCq|5~N=Al1z~cJb zzWV8Om4YR{`cYlgW98Zf*~$Tg6oV%Aj1sb8LZ`|4YwzAbqcR@CaY4AS?6cP%Kkb($ z_!*%Pz5lhRH&5h)z5ZnWv)A3hAl=ut32rLXh%JVZ;cZay5gc(x7;9O7EwOPx11Lno zYK;BsPH&c3PV$nmeNi}Wwa%xDygWfL9>^$TIm?*4X-2G049KU)L_U{4kEim5Y%#vB zDg8|W4Iv||(^G#TziPZ)(6XAb8NRtsEA~M!fQsktCejDY1j%wEU>cp5OGBe0Ti=1R zhS(jO25k5XV>McKTP<>~_U&xWr@xO#8q6weR?dU6C7ly9pH?F1q^)SSu;f~tXtBG# zl668*@+Ji3S;$C^K+&l{-3XL%9D0DjatT|o+~^1e%ki}iJs9cG17ZyxsKz?;6^a-a) zu)?I-q=ahrE7{<$zzFJyaBFg^xpNUrPiFs|=2r@g9~Z9p#fnF5l4p_3!!<8O4ak$r#~CufvF6BF zrqScDN2D{h=pW<}6b?jY@0HsSDD!POX!!)9gXwPi{fCdXR@rqtzt*p`ZTk&bZ7-nz zmW@*Ad{?+V!lG7Uwy-T$+A*8O{69~k7+6+stKNkdOA;V5%bc?oV%HuxMA(1r}lj5}P9j5~j8|z^~WJ*_n71Pf7Jw zw50SEb;izDzNY>HmXrL96gc@+YB278oiU+Bvc~kd-=gX`Y9}~|AR#*+HT*1+fK8f0 z8c5DS;At@s(04Tu>pL1qo(96nktEVohm0-t%NAnSb2|3?t}Ra{LX?Ufe8@AjdBc zl6Xp!{i1Y>wB4wyRki|t9UYai1(?MBLMo&xe^Ax@k-nF%LPF)DyD%2SfJxxROfMur z>;SU>qO}W;Ro72a}jQLmVJ!AO!d4yVgGE?B5;iDj@=_y^}p$_vmr%J|&z1h%bSnx#%c~6``XAUN?}^>Tj_}QUL>{ zwqt93+$ZQGVQQ9Za4P zVK`Mq(>XGGBTeU_TpR+E!bY*4rc)rWCT8fd$rB)Ws#)L<9qf(&*z!?%gL!38Oa}2xCCm14~CN5Cg4DUgULOgCK=fxMV|~uB>7RmL>4o z5>r2kUC4bd!?lfUFD`>@qcXg3oBM6%x6s?Fa|2#RZRaN^Neg?v9xM^3}&mW7_E{y2XTWJ%5GOMytG(Z72U6=P-)C} zi45Cv6(zGUCaVv+!{H}^?jREun(bYbK;xUBR0w)@u02%CD0z`VCoIRV1^3Y=WYPKu zF&%;iL9FWldif)x=>|{b)Kq6kD0H%sgCfaxvaN$gqvOeo%tU^*Gn7asrJCJ+?cf40 zwO%HyitMBmU-N+0Ubl%2xlGxwH=y<`1^|FbUJ-55{`7El{04hF#4?fvEP}MbKN$eO zX1_!hpyVxxp0=w`lCdBMVF+cmJa-cWnlI$d=*AKRNKKUCrHG|ULZ!4NOZFGtj_n3c z!&fFS$&p{a`~0xNED^S}Ildmhk&&jS+eZ@)KW+L6<>kMpXk=nB5{y-T{3nJ3G@^_p z3vh^O&m90XVgrEKB`4uPvMLkVRf_WD_AR!jwpCp^GXr4Dr`p}L+Ozra5E5NWC!2BGQ5L zN(X*ar2`iduT}h`bLN!hDlph^dfKT~;MQg;a91iYCa-IX)`oNc7)*T-pA6lm`$n2l zt@|n}p*r_ZI-=>mmPluv?yG04)=Kv^E!blkkVcBQIWwKq#(toMj|P6j%2l0|1zV;f zA|R3n?_wW2CQ+B$r|Rdi$z%Oa7Vp%lgiOCWYA9ItPov0?$+rvolgrO{Q{XO@d7qS5 z&=F;%H0wUXtTG%IQa!`2meuV0Q)g8(hvSMuS`=4E zy>W+H?ioRL*5x{T2#2e(=@yJuWQ4FbL!TZ>ciA|x(t&wS`iH&CaZ@Hbz!Pfj>X;;n`|Rv zD?9*_X_u2;%6U62FPvFL`!`udaKAnnyx}|thP1z0Md}-?Xg@!!q6^ix1JNpqw(HsI z1XT{iYz&GY81duM!}|1?{sDQ=2R`?6%j*oLGe*(qUA~=EP zGfBx)>}fjPdocbUKBZy}jWDG>im{+WDPUy>lFTE1ahUc^b{xqRMU>-&fCm+o@ci+8 z{fb4{xAxs3%u^3p!*R`~Y&vH7~w@pf)(h*K)yw*OvG3w z0i3EiV%c5G#7+3J9(7CS%1JbZ@}B-RQ$4w&E5=P8Z_Yk^PrZH}S32bj1En^m4XYsl zGM`4@i`$rLE<15utLHb;?Q|%62~K_3u_Y6-?JQdfPb=3qybyUtt+m}l=LyK6)`&hO zAHwymc0$w_A)DI}xGbBg1Sfg8eq|{!St9^_)PO~db=r2=07Q)fAYRS#Uk_wt;D;KH zr-rK2Z*3TkQDPeoR%i{_Gd{(heCvkeU(~~417LPI(5TRPo2F4noL=MvRCM5<`pdK| zDD-D1N~jrwlxB@_4vPiG8e}o80#My$xq}2L&LK#gc0T}l8s|D9f%39~X^AODV!B5T zKhs5viIl7y-YYC}+Ed~!A`MS6x%g#qsl5Ia@(U3~GT#`Fr#x{7=C=y5XGHi+TBi-WbwYaxH&4wr5sfWndeJ)P$5;clK25LtLK)S(UD!OOD|PxRRxyCeo!5*H4{7 z&s%1H$M$3rj7!3>vc=|BB+SP_gWD43cEs@UrAB;)<5=TojhC+ctnGvogHb49A22UXAVK7%D?e-hqJk4r;4Gk^*+XWH zQ{6d@oxByOS(?IDvD0jAW&{Cp#>i>L+`VkNdt}^mZL^Lq;PsjvILC-=lTF^tQ+$tP zy)j(Hj4OvsPVvMwPSm$A)Ek%A9z*bSxkwrp5G&@Ssajty5DkJ3K!ZT+2|j3;m<^?P zlPV=WZYYt0JE`I~hM&965aFoTKv@K2&F07TCB9w%oZQ2_Rtm@IJxff}Qs=OmVU zsP9DlztpXEc!zqw_bbOGM~n4kF{12OBig!Ws9y@>G1I)p;wrI zL3p~xJp^q*P_VdIFg}fbxqwCi;vue?l@7Yh^m}B&JQL07A1oXkE}k>Z>m8H4mYI20 z?U>{bw_}ory&4W&kTfpmeREa^t8o_y;*KPTsnT1p(^^QlC?r&HLn&Cnm8O4cl__Hx zKP_GIzXa2tN;1RPjL295jXnbg*h8ti96blaifN7{c$=3wrYOvd$*k~o6GBWdX@kwv z?ipLrJU3y(a=bYOB{_&M_U3fMaH@G#GDEB}a^Ms+KF}Hqc(sMog&g=7H943SODsSK zRD!aHT%O(mF+MfG{8|1^j1W*MtxjvSA?!#?BJ547(NMxZm?7+ucp<{>U)0?~)QzYV zsnSvj0<;L2<$Hv(B%E%oj^D!W2;l@M?B?5JDfux|F4 zL;;Z+Sj-SBf*Pq@BuxH@gf%{KW!hf@BqkY37~?clcC)1X8oMYufYouJ?p*)$_^sA8 zD4g|nR6RiFqe>eD2L5`HaE!8+2JI6)#IBeTK#YxGm1>|U!XTZq=QzW#(9~|R!(hj9 z(IgSGsUC!g5fkKb6H>(aE~TZItQ6hT(?#VffEXSvUT6`@<7+01`4PTeoa`xxeuAj& zz-IUB;&WWD*lDWfJ&V@Vn#|V*X_Tbql-X^Ox~!p|Mef}Q{o7M_1**}K*BsN!5Jf5q zogzuHlav(s2u^HEJfDGIa_($AOGi2{t)F2P1mVs)Q0dD*@Ip47) zYagdkG-Fw8<=rX+;;5N1XqnikWFHAShSi3Xdtv3)Nwi9aKo}SZyr8~vqHEJvQvpQq z>EQxlT0Sc}(^oTN`=zF#IdxH~E@_8{W&D9!oJfD|_9I~TL0FkSD8`YYa9M-Ck zz6g128!c^Ct$`fkE#p>rkU>r&#)jLIc~gU-H)g1;7#DaHuMB-2QrbhxVArr7uT!7$D@rdSy_ z-&DUCc`)OQK@rS2H8#m%7&63phsb|y@>s;uG5PSKXxNsap&sS0nvRdP*v!WV8*`&4 zOJEsjr1Q$rQU!q2NqDTBZ96jlpo-S*VhDnYqT^ctF*{7sP{ji9j6~&2f4EVZNgK1*`cXkxgGpPX>esgHel3^t ztg>bIAI_HDH&3Q8u9;B@>j;eLD-lPI|ERW0;Wa`)F*A8HIFd2j+M(&P{LIFRqZl*% zTme9PT)6&#lGg|qu$p3&E#|LU5f*d-|^OJ$cDS`)^h0&_U}MH6dtD2LVmTB<*HIa+59whNk1K zC)9hT6V_>RAg`MZz2cNM2nZ8eu>;_|ksa``Vh6fh#}0Vpdoc)R43}An#suZ%z`Q!R zz(L*>$TiU(NmwP)7zg2BgVP=whqOQ3;Ou}A^Wc~r9GsDEtx8smuoXVI5nFi}<%dxK z%)0SWz_7I$o)O4~%9P!K38f^D!TcwLMb?px%H$*{np~W@SwI9!IO#S`f>-+lsM?K!phXbB562FK^0GD9PE z<^*Ao=Nlp8*)3Qib=0V~0#lb*5-lc4lbP(0ct8ecMJicBz%r8=;c0{%GPIr~3ETWZ zZOqGOA2$$ZzR`xS{aSUkTwm?4uZXjPhtN=YX?^wKq`v%Yb9p!DLjB0{Xzg~w7Bq#H zJB$O;B0y(MZPTubhd6)jskKx>RwFAVVuZHP0I5^E15R^6MA91`F9@9G5r_=I_ukhS z3SDcLTH9({fbPVz8r#*kMF3*kp4zeK7nZ$`1rAl@<{H^xZ0wD{EyRhu@wF#{9_zuB z8ld@AL8_IYgTaKXT1=ukpj>;HIMgk7&$LtqNg#^oUnUt~MYLa05MU_elNM-Yg>x|Y zL+)=Wl#_Kti^L(Dz=3=TrS9Hl8>nKk3?Wb;fkh;xe zE=&;`SboS=FjK3-288^LIc~1x0Ng@$wrlevfTbnflatp(_pw&ub-HF4&xcA~Yf6R= zwH#>vX&g0Ex~fc<)Wf!>Y%Ba6pJ+8t0zGh;C73!~k`q`b(%V7K>)7al`mweXuEFgj6S;Jx1a!j-h2DNbqoMny;YG zN|DG{2Gl6e7i?GLZ{ZE<0hPEkz<3zGBw4TC&G-J^(l@oO0SYL8H)0>hLjEeL#YAtzVh;HGU0Z@I-u#Kr4bV46SSe z^u7D-I+{VoAlnpDu|-K5yrg`{(hK-Jie_;4XrcB~keXZlzm9GTiM4{{ z%Y?`zN>wj;u_U!Cz=GoboXD8<4Yl_YW&(2olYAHF- zJUb)L*V?mF5Uo5r&nBm~dv@w;jH4Q4<4FoNMjkQ;1+6vy2aUv}v`n;s5|#||>q#!% zf^_l(m&%NZJ&CL3t52Men<2Y&+IY|j)KDfdGgk*$-IBA-+RZb6sLIU)h>7R2l0#di zX>oiaIhzUz{5AsZmCB*Xzh`;W!aL9Ehn4WIuaWfiOqC12e@*`5d?r->qw4B6qc-ZhrzpAEfd*8JIKW3 zL&~Kn3ry_}v@Qz_`W3bU^Hb{F?0acg-F5t1rP#3bQ^TgVbIBVgxLoOS18jm~gBSpb zqgxY$nd60eCru1Gvk(seh)P*wKSl7}M&BUcU|=sbLLn<$0!_>)8_I>v5**v`CRmP>1a z4{6c+gXCymbWNK8au})k3lMF#X|^S`#^DTu+oK$wfvdUswvG7~Nkd+XW&lMg!OK|4 z;Bu2O;Y5-bE@5UK6!-2;;l)c+WGu;6eTf*9pUkm5NTey@AOz0JO}9&)BzZBjhLx#a zekd-LONX)7Zr114*-*><-3}i5-ZT=xS#G+EhDF zi?U){2zohUVs_SH=L_P92bc!uacbCqq_+E}1E?~NRA0%(dkQ$oyinQy~2;d{` zh(qTH^IFD~tTqgB=++t>FpB@)VLM_ad@;m-GqpDIv;GWO9e)Q{4_gL07YUkT$fW&n z1|eutXD39WdsjMfS1LWL=!C8~wide$U(2Uay?td_XQamQK+?1PnOxo(*0Ja<){T&o zBD}p?HZk2{A@f*tK~7?bAWpaBBC-=B*Bii3)wo#f)Q{wA_@fX@>n6+vn$g5xun|xe= zgZu>|y8-h3$*LTM4Ugvo9)ra!;b#C)0Ct7(?u=@YtjzJPBPU`+3F$R*A!d!ye5dsN z`^g-&Xo0Wkx+oWN$P4S!Nkgtk8eP->DPrtW-r1e5UJP5jo5^~6=S8{qM3Y6+?nP5p_ zbxGmaQ*YAjspWT`Rhu+>Ze}6X0S6o0h*x?ix zY$u4~p~s|SRTM-~j|nt!)H7c4xRj9E& zTrIhyP%U4==pSw_+2GV%LW5@K(w)U&NeG#|SCdAEmSt=(hkQ0j%=FVNj)|n3rgM8A zu5)|Ov2y{@2xdIV{yz|LAsALzOU68_A2!&wNq9@gC1Y4igl;}HLcD5{%o-%x{kAIi zxS2&He@!>9_^_XfB*FW zS+SYo1yzGeo?pr@3+#ff8C?X{1gpG&5E*z>6{E=zAwTeh+Gi&|>tYL=&XlCNm;8 zAu}ReNSP7MRZt;B@a4xQui`yYLVkeTDl=lM$&6_4MB5Q|aRm^3(<(D!iqis~)8MPf z8Qqc;C)vlOKbw9@0@I|}&87lha)+e_cD-9d4WQq>#)WZ46B!@_9OEXzVuuP5>)JvL zk{HX4+#SZA7C^!gau)B$#d44^RM@%o5*`kw2f$##Nb{0UVb%gZ{RjHWx?qw*%VK?W zTHO?$%|wJ)APsXU*~wfXTOr&=+_o5cM$_p96jn^mBCamaneLGnoT{L9q%XV`{agsH zd*n6hnTO)Mc_>D@;4sn!x8<@oZ1$ymtYo;5G8Jm}XH1I{!zc)=NJ*HASN9gA4_77_ ztdfW$tXTHPit_a3#pzk{$TcG2r#Bf>!#Ya`s=fnHeb zKV((g{s_g)RN-%G6t&J9iuPwvRGr@nMSZ13C@NSoT|FV`X%f(o(Ck^Or=N4Q)rft3 zQ;V{7>?{u>Q*@v2)){iulEglIZDWYgRU3C}%EAL0q-|r&h9;vLZ9$Y>LKKU|S=cZ$ zTPZz`yX$5KL;-;}pf9ilF))va=-Rx9$S1`GN7L&N!cU7K?~$XWydxX7doGkxd z3JGISWDzJoW0H&GPPUcSZ6@wyN3mNR%jFszI^}%1Gv24(8BzIdRll>L@;DBOFS!?( z+PDlp$I8PbVQEd?6Qx0y%?fLlYzaD$il1Zd_60M3}-w`5Z6Prd-Q;I2OdP^_GPRjv7biHHf^=#Z)jD*8F~rA8BVickLpur3}mFOHgG?6 zFgTO0%VD1HPYO#e9MY8mG`gcu3pb#a=_C;WrA(F53=q{NBG-Jd6d&-aaGljGr8HIo zP^5{GYrOOIQ64^GYs{mhKsQa9*tX99F!WcBDs^>mMJj|3x<4h2U_$A5q8)`;zfEvPjaK7W~!Fa8$2T&qbR;u-&m4ULN z&DI}tJ=h7&k+PDr9!%jw$K5ZcU`~qP3NvpO|9Iv#k4$t@9;_$+prsF=o%?sZakIJC zAiFI383nUW0@UCDYl)eU70h_%x8)=k&Aj0r78U`Tr4Itsb8pk0&*b>YF+Dp8%U!$V zK|Jj>g$>`vGoBl~xC-PjVn`Mzxu6@Zw`dcr_@?D!Ay#8k?)-X$Z{VsFS z(ifid3;j`^A#4Pkp3c{vA;Zl)Ll*E10bP&@i}`Dcp}a$IC))hrb#@cY6Acld-bg%W z?~vIO*BNQ#9pcc0slLmz79Txx>eQ+6CE0c9EPT$Ko#V_|f+qsaOjhvNaR$B9K@$a5 zooCQ6$Qm>X{~>4d#o4K}eA(?Brp0n(rN)HJyc3Upcw%GL>eM8Fz+yi;Y_N6)(TMV6Z53X+ELskWFrM?4M5 zi!fw(lrdLm<@pr4Y6$}@Qe625$isc@UUAG{`9^N$%A5?!bjoyoM}2CBRZlzf{X7eQ zQZw=tL^`qMK}a;h3?5ndnu*Zi5Bk{Tm4+2wf&ML&EfhKKgB(k+oba&{(tO*Ef{#8jZG;U&MH03X>%|Efb_+$P_K()oimVMpk-_D}>BM9IXO8iL!7nNiIPJ8a7W`2(E$^tNs!s-97?hmYAq0ehGuB` zg{a5`l4B7=nx}?Jw9@d$o8+t)Ds}Pz#p@V_0!P|1m&retYVNo_xD4pHu6|j_K*fI5 zD*LJZ@=?b{9I2lpzWZhS>VjBdOxV)pi9ctvc13jSK}x6($(1Wa`l0GURG%a-TTZSS z=pEKOz=%7q?c8JXk%JDcTYe!~k1~;K1SO@O6f~i{#IK&jK~TakrUK+5S_rgQpBnWR zskG`vS4F|U{RXGtbF#%LK5CX~&s9_#xYTvb*6^i2SYHDWZ0LSe0~%cD#cT~X{QgdSK@hX)=^@38qFBy^$PLd+S;;v_egQ6N}%mD)^zCh|TyLfi^&m2+c^+Z_s z+~ehs9?Ze8^4}g*rUrxRsZ=>$;|I^A%3E{zba*N`;S3Jwj4YqnYG-L+E)o9gfw?^h zi64CMm!2d|lm*Kj=iUDZotsX+{%?DBrXD~nZwlA#CnHSgll(Yw{nwh?7`gQob^uSi znnf{W;nL$f{DUV<`zuP6K#@Kk#Z0sebGo(@O|4D##8{tvh#SsHCIbp#?Y2b#xUIUe z`YR^LJPP@w{8=DW5t2LZEC8em*xQsGsP2e69>LR`&ys9W_=>ZN6Qlw7b6M>+_0fF&|0hh2NyvpUxt?(dZka$PguV=N^0U; z<97^TFSfhHosg9oXMwEYOgMD0T3sEmmIgu=V=49PnmtR=5IeH{S!0G&BZocf#`}}C za_4X#$P~vOZ^Lsse@XQDMYG^%W_P>c|QeAekyy-`_#*a-GR!~T2 zVU3m-R$%r@ng@m8x<_n`3>qUoV9CFMPqeZ-)yGpjM=cvzr+mG?v-*3_I&Q9a6#Nl` zxb?T^L`{ISQ!NFQ7dxdBktOhC**$@0*}tj7_`vf2XkCA`Z=9Yi@3_utc|z1*RCoGF zx2yinslT{f+BVCmyyJy)t01C?8>$nse_acM$*<NoEX+JWY{E`^SiN_`iH-d{?4eD|yii7ZDN~F#GlR&w+IQx4PA6{MF z9g6$MQEk!=b=KX?XI=@dR0ZpLst4YW9al5B@`0)=EMZI8;*uc~5D^$WhT-T_9IcEz+F;IX#Qes9dM+1 zCp0K*5lLZ%7*`cFfMsqg2&)WJi35qBPdv_3+!1A7ez`35~ z^%|DfbCxIc3g2mg&{eIAzGV>YNmJ(1whjPAw-~PBqd^XgwW7V)HM@dvNbBh92}jp0 zBA{vIOLvs)58?5QFs0JGBm?~=S;63rY~9J3tVfQulMs?{QOO^zTK>=ysN|29NZ*^b9MvJretiko2IDFH++e!9Prnb*T z)5qncQuAyGMilSXtqw9UDr08NQ|ru{b8gloCGF|yur_OMdYa$J&6?QAis5D_`gI#y z+SHWGT&7zbL@>Je%)&W1>GHr>(M5?*^Jx#XyOhw=1;}{VACBA_Z~g`%1aX#2Kx2EC&?E>n|yj>dw#>tK_sWLcXR~L{QZcYrRbp4h7jI7#uW?6X6OcC!wMZ*#B_mJk_(7y zWzLvU_@5{*R~BLcKM*$nM8-0CHr3=;_s9mAKrlR$M-q7$%ZJ*`j#$NAtGH7k1G19S zbhx-%ZKulQ#tr1j@{&Sl)&|5Z;P+DuNE?Q-NLNYoC+%tL^KG}qU!(JF(ano~;O^9# z?*&QHljhOHl_^_fa9OpJ+{nIF%)vW(L4b)eQgPCT@)?oHado;ANKLmARCfRyfyOl^SYT9$DK@uLrNLok6P5XPsq9Zm%w{`9|?VnF!jo<)`1@v7OvxAjjC4AKVc0 zgLcIaey`rYniik#+S_cKYvB9<5l1Jy_BNdGie;fb-ljgQ6w3ru0Lt}9 z?RGKXs97utoWF{8LyPkFz=p^i$`QMZb1Nnb)SBL68@$jQ>udz}%%QRXHeItHMN7Ak zuBbpCz{W#yRxQRY$et?a%c)W~Q4BA$#ncvgL}|!V`W-`vlo4z(c|+%w$GHj)WOVysx3rQOP z$x_omDAiWgI$s=O+*+$@k}Wuo?mDhVVcoG!FmCOeQ05zn9WhPgPz9twb;18yAL$60 zy=0MK@vhDH(2~d-sskLfJ4u zJ?XaT)hBGfu3PrCB~27lN#{?NubMM!R?58)5J^GwTv2X>u+f$$)&^Sn5h&SEfSL}h za+K1OOiNsOhss$O2&-1{$|yy2ka^(yI+#GclT1U)l>dJIu^1G-__AFRkW z+<9+O7O&fa07O6P2C?cVDIa%3W3+Dg_*T@Rx+7PdSP>Oh&BU5%QmGfIW{z80W~SHd zXi%k-tl+qL8yNa(7(&jg&iaYBsugjgUw-|gDcPT?S5mzc9!_)Q4(ltR=#cQf{Q8G2 zSkh;hR~b1`H9gl<3CtcqigyZ$y@ii6}f+m;PP}V{&$;SphKbM4a>@(C>R-DO;0^L3LVHrnu zWbVq(-X$?s293P@^j&RU19!7Z=mTJ`5B~N}nbQ4(-@Cv0;HCFhA3%Ps1&p}*;2YoN z0~vH_;cvd&eDIYohYwU-_zdcTn_>hNtwA`@BFu%L`3!>Q6@p?_VgaszkDc;y$qT_P8I~q4WM2T$0w&;r|@XLz@ha zRekH{v6#c|w-Q9k9UiHLSW%a(D1Y2Y>#OGc}* zE%7Y$ZU|Y^^n}H2(4qn-U`!oUf)BwC^noOF78DJgbzpA35@%LBRpcxIOF%2aBN%$O zv{|Cv4GrWQrukI#xB4ySVi$+zsXE0>nvsqhG;+Gl$wcZI)gngwgWa93wW;W?)%iW~N7EhI=r=Tj8EdU+ z|DTx?Gt{JV{o*j29mxw2rVg{&CB}-)N98SfF9|ZZ?UmpC^n1V4A*`jyWfl`XZXX+U z7=+a;7T-TW-@pEqm;QCfx#D@o2N>80MEPmJhwdYQ54{K<*xKoV^yiEZOfa1KD=&SU zOtuNsRyM4BEgDuSj3v`1UjN6MX{^xk%4e<+!D3!MC~IC`^dz%| zxomARm-qk8>x2!h|8LJ_>k*hsR>pasOXkYv@+Egxa@nB#ojZeE##|ySYA)F~%lDR_ z{+u&o6eh^GDNNctN+%CTeQS*gJetv%oEx(kB8^F`!>I3O8q@jV#uA@`#?)!Ju?bbS zCZ)ru#Fd~a zZml{)Krs}EfU1*w%h%oE$VMk6!>W_pBcNxg&cNw^TEy4v5x_Rqc#Un{^CZ49;|Qcq z>Nvt?t(rJI$e6h2{eDa(&^K-3Oi*=swnBrif3+ezdHJ=kR%FMJ6(iC2|D$E%-0I`M z{8aPtdp@=9W02^ds?U|yw~?i}F%)b_US2jN&)OC}bu3KwmVew(Z)4-z#=^5?;{gkQ z8rXRH2(WRc{Jdi!)M6G3p=_@-KIxM*LwcBZBajWw^&^}!BSS}Sy=51k4Z@Uv7$zR| z8}gHz`mGnWR>qBCQX@s=u@u3w7+@@zG2`q_Wx$#FljQ_v$f9E=dKreh=^>@Q~A$;6dR6LaHEh9+maRV_}+Iv!L!gjBR2 zj$Aw+DjqGbPP{p?@<~`UFXEzOHbsrWo=%uhsa|^TMn(-0ky0*tm|rl{$^f$ssg{v$ zQ1eu?8{h>x_@&{atXo0VBkOr>Up%5*X(e!$|y510J;Ho8vxYc zW>j@E($(|GE_|%2%c^ho!eFG6z2E1tQ_UmeugrAbiOnJGhSji}BYds9Vahr#QZutC zs4}T$qdbdQ#P1|P@bM$WYVWFVS7;W^=HIE-AUh~`+$DylwZW#|d6YzeXFX?lu?Z1> zVvY#T2<{&RBcZtevCmYsy?i)ii6`cH2ZE*#!5qvhQmT_gwZbeDljX>!yFr z8n}R!-PRuU=HzH+BFmdAeh}JbZjn?a;x-S~e};6!O0DLf9e>0Nn}1aKyxOi(le}7| z&TrE9vs|~R^W=oAO>F;9uUlYIVZb@8TQlTJ1L)&(!FEd`RTin#wuUp6t zYp9wxB*-s(wO+T(8$v;tb6%bId1LMVG|ii_(sX)~(jud8E44+?`*l%iPs6xKrKQ zc2?QY;$O%poWR&9p~1GHHoq7D!cj&TYCamZM(qw)-QHZEp8+B5_yZgp!5nS(U7P8| zVnM+Fl6ON+zr}sx7^PG#vK83UHS2@+O5|%17qvIG=W>O8VU_e1@@#Fe+o3kTelKk( zpwnK@Y3I&f!~bo2{&rpyh~lq%+O@MTDA;1Q3%9*vrVCcoy6_FXxniU*tc|X0g?!8I zUilBdE6k@sAB$Wg#HgZ@f+htz^2vE;D2-f#Yc2E*v5l?4Y20;U!I-1aIZ{?K#BYA| z&);Cj=GJA^1z8-$IJL`IHP}H;w&q&eUVh2P>dw)eIRHT)h@PqZlRPwsBT+2$#Jdqj z2cMP`l0f*6{{RRbxTH^0ktR*{?4QO*9sbu*U*uIYi zFI2C=vQ%AnOBn1P5$pu3nLkg zWRtq~vFJXGj|GYcOu`t(=p${u`H;m4G-tITQ3PTMafj^KG;BfJf z1Vt|jQuyAvCu0lOJ3MS~RXHh)Tios^iqJ)9WIEyk(l?(qP>@Yghvf)S7FfO0w z^_aQOjt3k^Q3J5@Dy-ZRg+x&U@&{{ySMmsT6M*7x|LMyf&TS_hD=A3-BDC_BZTcRR zUljK#KZ-6mc)1)dB`wG|@)$t@P5bDMm8XBVx>}z+L|*22i&u{Lu>z+r8Q&(y8)Wveh~zVRAyZNPA%2!$+Mnv&=poY4qvMx zFo|sv4}2%dG+*s`yK} z{nqi9j+f>adr+9(B4^=lG z5}jf^(q6rin=nx2Y^Rjt(M*_(@W_q_QbK%45M~<%R0kR)M3TT;A(Fb&Akq`2AX1<~ z0g*iEi;&8rs<)&;b42PWCUlkt&25fINYsW%NW&V0Xb@LIB#afSHq3xXD$vZA?iw;A z_mogpBLykq(wW^gm=wN^DhrsTlYdw+z`UYHbStijkSK4r`nImRdVnWBC1x;*1Y)EP zAO+4E3DXhYfi!-Vy0xI)9g>!%P8O@M$sL2Ybq1UBQuw*@u7Z$SrU|H3YF}Uz$JSQ0 z_mN{cYDIe=IT)aWLuG%poeuc2iO*fDinIDoGHtOlo2oJ&f3HTN2CQuG8INDCCAWj{ zZjQup*6rb$YfrWkQiWlG3}@F2{l+u3aaaQ_khp26pzCSeb?f*h_Qy?Zr*UURIOsa& zQVSAR-I!+40W3h5)|C@Sv{?}IQ7IPzodWJiB!c`lY)gzCHX6W{Xa=doR+22>f5|mUwl{v5iJ{GiHgL7+WLOCNEvBw$F$BhoX9KYjG6I^@tzLVS z9JY~YdXxzk89K&-c7+9PcWIPELP7|ub_Xh_Lf@59BHE0AXdfQB3~I807K>T|xU<~9 zRMs5>BDsQ2f{}4+X=U~%KZBdSH7$l|mWh;(XC}?H2mg|J##j?XRVq8OVS#Ld9C@`s zfL7tb0p5L04AmD(&2dTOs)g_a0? z&x>lAxDWm|R^#K*IXd#^KcTQyLEcwLK&?d0ui31telV-18e4%~0I9&vK?_2rME%4t zBaj0g*$D=J)M=E`NC}{oM~p;m8z?}c4ocuUUiHPplc;Ss1E6#mUWNWEt)C2ul8~WU zT}PfEO}yx^s@QxNs%~Qy8`fzjxJFmaA5$!SM06H}gh0&+gjl^HP%JNyh;?t|!mYHM z*j&~JhEWrKEijClJXspNDq~Y1Ph@Ng0l=-2j~e!%$hSkGZ?)1$vZbNb~or~1(6-1dW+J0 z3ajoMLF`AeBegN0EFvRMzlsTdRAuBTW{o@x9udr;5T~b0wUK9GvxwkbRpQ%S#nLs! z!iI?8eq`j?A=2;JOwGWvW0QzrJ67$^kJ#A)T?IIC?MJ51B*kKO%`#EmZ$+Psj?9%6 z6qPLERzX!yDOcz)y#zVQ&r!Fl@oM#~7p`E{7iaf}OmGbVzZ)mVt+Q-=M^dNR$-XNS zQe-HrVMvyZZNRYD0)BCZ4Q!pB9e41E0gh2NMme{|N(4n{;q=Tz=@>aA{o?FOWCYpC zgk%1&qZa`!vVYqOc=HT4oQD5b(9ceOw-d4b;$^cBz5VszGiusv%VkgQMvs z*@bkUity%uP7TJl57am6D|)Jt1=!_IM}3+S5x&q!dot{0qMk18h&tSH#++X~-)|2( z1+h~%I^}Gp>?wb{vd+}xKlR0G-r6ky;aRWBH@ZpmjTH0qb8EeT4~ z-egEtkOvYS1y$ZfQstc-A%XHO7r8h7h!rv}|KvwVu4(ygmEoHd5uAeMr@h#?e3QTb zdU&6O_aCa>-|X-IF1*jf``fGcZ}#`!2=80r{YR?zZ}Iov3-8& zdLLj^C8>$=@E9KlIwWv7;wajN{{3)M`uDFj{rjO7=y{=kpj4AMJ*Iy;l+zeTbe4?n zSq{z*#4NZe&W3R;HH>3vP%_Gf{s95#hE~@;BN%f!^z;6FxJMc{3u9aeD?l4Cz|CBb@lhFeepGeA0`}mml%>|24d?aN@74_aF8570y&R5pZU{{A+*z zt?+$?6Q8KQ|Cqn8aHhhEfHU*u$Nl{e?0ZLyfHq&Ms`$ig7rNnn-Gxuud(g_L;X|O6 z$mjT1B<^%?nJyg7UN~KXIFEx+VChx_+A)iH>1N{<3uKU+E>LLE3Tc(gGEQ%E1;2xetm|FWfvGayjOk>CTaYkPc)A zIO>b-aR_!!Ar`PvM7k>yZlnk$#;Al#hW{;uQhxRpE(c2--+Q_cp2-#s9 z!>4Uy6>L4zQR{q$SyLHvI2Xzcwk!iX11oHJb*1Ln>yWgH>^*Cflm=)FII7bDkOg!5 z9Oj6f5kbdJS(BCF)K|#b(y&hET2r%MC(_LspmpH9Gl`u6^h{MkhAJb|c1$s{hn;j+ zGg+Fi$s4@P*{u({=V|w;b$L3X`|?iUd^-d4wIr{f4q4S7w6$PUKQ2G}VpjH0Kk!N? z^rOilB!ERu>LsK3tncXsVh+Rdb1IjXtk8KC&Zdi2BCOD1`FVd2{jm3WcpnJKu>69* zhXUC9R(Kzl->|%Mw*L0|`o9?0A6B?`p>E)~}Pyf#qt`mM8-x5I0jNnXD#t~>yGw*J#z z;x4P-fvq}(Tzr3vzx}qqb!t+hrhlzydH+vw}r3YX|KT%qY1Xd3a!*m*(Nx0z;NV!e-z`0D2=$N zbAk0jzHO$9?wM$BQ{RQCxFD{x0Kp!RbohDx{-4A9eCqE%SG|9}zyD@<-wN+PUcLWqf6t1x`rF}s&2z8w_usMi z0TH~3&s0^sz>C0^sUl#47pXb(3%v-OSw$QjyhzQNU*ts~4c3vl(2<%mUvKaE+AP9y zfYIJ2WPSadX-=Fr%anRhUSQm(#*EmaYDn^MmnNcH{ttL6TsX5p_t*l33f?PGVkd`f znQ%NVKlf=Pm;8tfR)S0lGuG0p$=K)py@^paY5u;ZQD5-)_XI%)YGL2M-=QA+VZ;>O= zbsYpmnn!~GD}W|)qUcn&{N}v|jc?s6Xc&-DB-BwBG39m|wMB+vjT;N&sxF#^qF!ZH zRP_$a2kKH4Is;iM990!U)Ix>-6pEtOGw0QNUQ6&8^5}AC?6nibFi8w47btj^1Zs_3 z(0?Z#xe|M&FPVBm$G`t68yP?K$htN%))gJ;Rt^0#6?mV2U`5HPLyf>O3lxVbq5OO( z??wN$uC=1so0a-uD7AiM+C}$~VG|r3A7v#XqeMw17&9g>-x6o?jO3-SV`E|@XlnoRFpUGV-;@b~J1c_`?xsSEydD0o9C=mQC5p+CT-F8j?; z_GNXY?NHG1qb~TZQ1In-!A>X$If`riPAK?_s&x|wd>)$h0D_p`5muUCMlLj#&tc6o zyt){%)b+@er-L;Yzrd&m$51Q!>jndjj6!sggh!2m#)Lw|?No-0#s*Uhg(6I$1`wtB{w3dW-!1>% zlf7>8Iew{?OzFa;_4{u1`%h&ED(|lQZJ}yNyIm`&MnNG#;Ex(!$&%~gLJN+<6bTKD z$L4-z8rw&{JKHx2T}%3hWco_x%IcjlIMstS-`2+91dvfH?oem{;?LCCJF3o_VTUQS zO5xY(s)e+3e`ljQ|!DryD8UL%6Gj}_1sHel4lz<8KSfs*Mm zO6ZuBw`j)7_mf9}qiA`+e=D^NahXdF(NT@##+=G7Zj`aMyTxG)jMY8usl`Woa zWs6N^H8hzz%rjUc%;KtK=KD0nzHOnPORd?FC7P2d%o1#O!<}g;z4F4#i@r`d?V4`a zhm!+PscKW6umH@+XSB;We6M`0dm;a`QiOsCuaA}^sxecJZd5+XlNzHg!UEk^*DHTf znclk-J94OB{(V;muY_AQ*?-0=C&b8-$Dvkq!g}ngJ=w3Gpsn4@`jbf zv7zf$5O>+`wq!`IvpTxB{e5VTP z$Cmw_Hqi=7Y(^Q>B>|NgvQ2{T<)~9?#vp$;kcW8Yn82&O0qN$?Gu`}dp#OI1*qTcZ zxa10ogvbjj(Rwhw*!xWS0x1ZMGiYxDrcLc($3e9|_zGj+R;%caF^xNB%lyNSjQdy_ z4N!+n01F-EgP zI3w4(#V2YL%;H1i1iUd@$A!3{(;@=R#+vNsDQZlIYDV|Jtkw-X`pf#38= zdtl-X*VmO?r%IsPr{rDn`FH5^Q+#ehWAt@HcjJTOw{_mp%)#+J1mLa4`arr`{_$%> ze<<>`Pjhjm7XlNRG8T zey!=T#u9b5o2=E{@oj^EW%AwK0U2QBvKU1%aBTW8n=?Jz$ki@y-z@n^xU3Z7C5k?* zs3$2089{lb;qd}lpBH?{vJQw9h!I~~#nbNTqy6U|EuO>XfViLGx0!bP&%hZHPo`e^ z)!&gYabF6WSYPbq4t5|a`UUvF-7`3-6y3D~hPPUN+lbH^z<3`8d9oP|nwfDHNrm0F zGUF9?Yhq4os^EebXKxPkeG`q$%=b;}=UW@Ij@!X*`s%upSE>>yABWmi^L@j*`PSDB zZby`6lE*?yz6~LzsU|+EY+KTCbX1v%AsWwxVi7S_h~RcAf?N5$8(AsOp)69v#o4oc zojh|L*d9pMEt3Xp0uqSyTU8BD=bpKES`D+i`8Hl7Tf=Ny^k7D?lhC#0Fz-krg7AUo zF}f=$`}Qw#amp-_T;btFO~IBN@V0CSfO_N8e62V<4alOvnX^1AP9K>#9w9 z-z|XR7qNg~!n&aL3KKI5Nsf4pn7AM=A)w-`ArZlF1CIb5Ffy+DcHV9HeInk*DyUf>u{~$**Xbk!6m}MbCG1#q{aKDi$c*Li8LLxiG}W=6 z@^Ee8{Aee>ajGYVE;AXSBL1>gHm`N&Pq6UPrDHgm;O3~;42s6--(}bx*5wi7)=>LrBbmkIez%Ei@5k_$@h zHR~%Q!VbWFsz}$kyO)n_sMa5O37f~R9RZ`hZq?H?L2dSam0Qn3lk}tgk89d>NFu_ zf{zI{)`81c22`ex3v+CM16!l@c&AkO*rZj! z;H!aefMcSyoAJM_S-A3pcC-R6I6{Z#QVPM^vNaJYW$jo{vpXWt9!-EhgqUmnFkwC= zAd7?xjUr%hCj23Fpw6FIK3SeRb*dnO%nza9^ywr|@;pxgNynh0gCXclr@U0~?AbHr zALLoD{GSF>JBrqZn{S+3TbC2I3Q7@C?cVGLu7P5Cql>!P;C8 zr#iirq9Ox)BqLujMZU&NDx|#@6lK*4ZHz7yG{$L)06b@5uS~{T6PZNF^s>bM{Kk=R zu^&FQ@{2j_1}x_^-XID4u= z_QLVK=KnATSAkb=~>Z>Ns;;TcG%MP7p` z7R0x8uv#pL=Xk+_HOz>T5CjTZU@VlFqU2N52g z<79|^KN8(Kr{yvDR2r?reLmlyJaZVX_ea+UqU#Hz>x0qtq3HT>bbV=beMBTa)PGx2 zy=W%v+=g^pw^fA|RIB~4AP=Ep0bI&F=+rA+Kg5J=>*%W(PgGxT>k0m`>VtDst4&*d z8LNv{#ziWS=@hR9WbwhX+rsha;8|5_%S$JUL5zZs6jqs9JkR6Wcb@Be`gyMJx6X5Y z`_FTI2hMYSht6Yt4N9KdD*ivSh-(ubbcAgm6gi=)$y17sWCbILrR5i%dR}*Hm$lV@db`@UNoi z0PF!G;#xoqtw9#bR+&65-KQT}6k11bM{YiK=A9pZoW^HQ34!CHzIsJc6g~OY&u&@`D4C$#sr`t-)tv zJO++bv`k%7+|&}$bCZ|k(1P3qKQh%FHEF>VVSuZr`S^O!?a}#F|Fh#L!mD7uUFnq` zsVNC&({{`>&Zh*6mWWy6JWH^7kYHJA`zNNy%a)c7UYh34;wuK9@HQEL%=Fgf^1>jp zPmu)^c&KqTP!E+1sZmoPO0oIM+m@IeuRJu2n|l$hQuUyKe$F=^Ie8xGw4>rd!$Uhb zP>4ywFEEj-ePwdR1XGZfH;VuPzubp%&d9WoT*NQZN9Wh4N0VRUNzRJ?02_1Z_%_9@ zBdyp($#U?jw4e~GAWxtFqx^B{%k|)SP@iXBA{&_AQKh~(NT+oEsubT}w_O@CNsW)A zB}0svF)6F51}F^r)H5Sm8KpvCF|ixEk(+0tBp4ON|lt#-BCxT9Pi*v=(ax z+oIaBiq=$fPMuaqO$PE+J{0c~Kg@lu-~e{cYt3om#VOxd3xMoS(nq*jPpU%R{S^p9RTwLF^S7U;nkR zP0D7)u5hgQrEBw-v|F9(Po|43t!^LcH!WrasG$K%YB|xxb2E%K+nqr2U*TJC$t4$uJNlz<2R4$h?7YE4Wu(&qgB2p^BTuFoli4YjBTElft9=jG|fp8Vp6{GtY%e@@jlcK|p4Dz7G@n}9Fh|-%PLpGB z4eHGh+rtt0@cDYSgCDWec|&t?2XEV?R^g^3s&Q2%c2}|{h?Cehdr@3a{^c8WIua7Q zZHAUG8>MyC1Oo!zpbA_t{={I~CUxu27JUf#_>%*}fXQydAWY*82FXAw4C)AjdJzV7 zY7FYs7=%sNFo-=F!=Qy4gF2euGlc&J4BG7& z=^kPWkEYk*8ZZPykeJ)@r~L&YZ9tH}N-m$aS0+DK{!;n#1sD5)`G|-(2F~51jw;QS zo7tCgTbAq=?vc3oD0XNTY)#@9PT}I`{Aa&@ci_+;`k#lA8> zZf*w!bz>#QdVB4&R;NE-=E?&0GmL9r`JCg^VzN^JFvP49e{lf04>^8dh!{UG1gswf z)T7#+O7XkXjC}YT7K*nkR-rf>o3U?1jI@Y2zr()il(`a#4U47Kaw;ulN#hi1G6aop zA5%%aI?=TF8Ro^ykPV5A85JGb({g$_v!g;)E%_=_Iha78eqK_6fr$gRfLs894qgxS zY05=JxK%}vsk$Pv67dQj6t!;zV-!9zNqFd<1a zO8D3rznr(~&Dw*v%H;=g|^FBpGXl7l=(p`)hrYJl`jDn0UUF;4{my_g?=aLy=$ZV*|D@tHZ_UxUnYe?a$) zWc(SQX*vun#^o0YR_V)#XdR|2;D@`9m}o9KHFc7}@T73EwCQ53aK>Id=E5D^wu{~t z#4z^tYG`UFvbb%_Kd#fzROX?Wpdg4`o7J&Bxbf$f*6Av-4ija1GTY?c*d}|jO*(iX z%?4${FIN>B1Hkd9fK%90Jt3M#7J#e7Vd^oI@4=h5axsT7koOyamj7k0a-)CG92Kz2 zDnI&>Cy3(M@zc|tb%LnTW(lH}JV8`iEEPMiDMlL-M0FykWt}jCxF!b^%>~kE9cB^c z2HQ0~sa)#Q%B5Zp*Spl~8LMN~rCtxAt{U)7)qtl1xOxa$VR=6;wV6JVPe6X;C^oQLu0gsXTwj~oAar^WQt3RWpTi3FJc$}{(>z(e;?${@5qir@ zy;zKnruvNiadcfeGAR2*d*Wx}9Dl2Si}^EDOSXsKoEzxRDCx9YUAqkba2s{weAt-uywfy*<;O_WFRR$SZT$A**P|i`U7^zHH zz*vcG(H!^<2{yPkbUx^n{K@x`t)W2Fqnd?AQIJHzA+_@28Qs-g1lgI^|!=+SKjs#D9?(LBUOHv)~ z*U@1ngS~r)qxpsL;*On5yLRtcz5q7B=^JKpUK$cgiXmW4Ps-jJ;2ZxjQF4irQFO|s zwd$!JkyA$gokAN%^LmQ4h8A|(L(Pd_O#52nJc18;ZHT9;Ud1dPs;MFw5~#YNS|T6S zx>XDFqg&QtF#8SGyB*Pcd=@vnUyR=4mA>IUQI^&p*ju9XL)=}sHpO=olL{Ux;HwBX zS_45lV9s3m7oY9;vO@TsQ_wRgcPAduZ)DkFZ8Y6!E1ozPD+qJj;EDLysbhjUdqC@_ zVLtR-y+y9kMB)xefAJ*4!xk3Z*FP4ok_;)`WrPAjX#qxD?MIZ5wZ}Xu@aD4COo-8k z77D0{Qf<3gD2vsCXkw;z(v30tu{MZis8-8>!f*)qK23j3zKDV~cX6?eef>8~lLmYWhA= zvK<+6h({-bnj&=-l27U0D%W}n7USi}2oFGTKk+*+c)4Qop_`I~m-u1DGG*mGM);8i zZyY+G0Df!^CesUOo*G&Cq7j~Ks&BcFkcvZ!W@SdQVW|Dxa17?nZJEXHRdMwlwXI3k znx5ua=Pux^2OgBSscmsCh@c`~iya~673_tb_%ZN<;sQgo0YT2{m z1?x@kb@*QogQyI)x^f0DWLx(G^RSm@P-B-T#lPU<rYm(_>YBp178cYiYGuP@Nq>TP*q&T_1)Hmyco?bZh#g zmB%I_iN~j8i}fywDhevrBN_Gp(|&%ave3^hM~fF0qiZh7pGpIcrI=iAgrjOCEqJ@r zCSjg@3Xs3d6`3#vo6(j25(Zl*Y-+fp1Nr2$#43BXMw z>0N1ROk0RH<7#a|=u&A5ol0BK!}Z#N;Z>*B7BY*h)I*7Oy|_7}KgtAnL|S@El2A}P zm6rlU0U#l28XCZjp*%b}T=Qd-bYqsR2P_Mj2_vqoZ8c=Y+G-aKYYpu+1^%#-Q+_ATP(0$j}O)EX$Ek z(v?^Xs`V$axrTmuFalDo8b782(!ni&v^~XmEBua?Vkticq{z@vQOgtpiq#CK4TQ^Ry1RkATMz&yoAiBuwV`8c;D^YdI))?}ZsIHb9mv-?Go7>y6 zbkD3AwjwaG0iAmF^vb)16ClO|%=9!GZA9l3Nm` z@neyACg@;wB)hOb;(M}akjFJeMI9UhjG6*J%UlMCKNyHbo<*qT~p0p`FPP7!max9W9l%xo^gtk8S zMw*1(7RQkdK9I^43j?1zeux+bILeUOGC<=YR7_gTRxU3|=6?LS!8F0jluR^-_)D}j zeK^sXb(J#O`h@XYP7u8~!YUzvdVxO5 zf>wBd>{^ABhDXvQ1ZFIpoCvQwynKX3tVUQf@E+ehRL5msJ`Ah{Xoh29hvUx=r@*G!MgST`yJ3`~RKwHkLZG~9UQ+f$3&Ed>s zN&MVd#`4$`7K-?+PuyLk^Me!3{eGhpe24W8lfIdhLfclQoDx(Y zRu2F0Dg4lrtI8YRsGbmA?cagxlp7Lul%6CGG+#Z9AHbZWks{b2H6ZP=*0treR3HV7 z!zqpHqNRj{y$v_|$Ag(Q6 zke1JbB9z$^S6H6dTgP8(0ZjYCCO~u0a zx4&q!C2PJca&mNh*Q=IfX)(-X0^MsIEx9pA%a$B1H5S(Jetz81(m3@2ZYxL2R^w=C z?~eEv2ce40JW83nS*Gk%$<4AI9H~2lziKz)LfE}wnU2xat3c>w!sap@!vJd{f4!pe z*E>WIFo4`A0%cd+n9)HLc?wGqvB&Jf%T)Y;{QOE6ms1gBRdmYAXv3T@j3Kb*0z=@+ z7=mon&^CQx3?Y{Rg&SiD)CexCh*&~hB)rFu7)GsweTu4SDx#Bz_?+JTdn1l|aB2Cn zYmYO`icxqG`Y1+E#c2KFAYxQF#h(zfVe5~bNL40pz@CK;Zr%~PP!Du=sK4sGkD>m$ zkbr?g-JyI{AL)SguHs;<3=vK$Nz1$n;M&PN1?bjRd6tPpbJ0Y$_;*UWB8c~Kk>11{LBJ=W|AZi@U+6utiexv zrxw9zHb#V>tqMO;QOC!%DMHc}L_MH#Dnyqsc-;bb4 z-3f|-&5l)vA$B(SiR$)ylp$AzIdw{c@o#er+LX8kn%VciGhFw*3j6n5;nyF_bFpG< ziex2-We+ciMf&wQ#Y{9bIhHQBMc88La_|Lw3>v@HnKOM-qMw;>(kvNrf=vR|6nFe+ zSI3_g(?0N$IM3AB#usL2$g;!$lewp)SR5<-1bN;H0sJ8ag?%~-qD8?awwdh2FALJP z@F1#Ws#%E35ch2SFYLmLx$7Yt406%U+(j254XW#FLo#9u8kUhthskG8?h5#$ovJFa zQRZPJi}AgER2lqHOXvxmzbF~6&>1cXlhN9SNMI-{;nd^TR2&nFOhb_?4?ltWyohtITNQe7RG;wrODEK5CQw4jYd98kqMt_1$+_|-!f z%{gh0uXHOaB~cj3211qTF*l5gp`q`%?ak}7236@?p0(0SUQ4Lw_qF}PcZGovX@w5& zlforRI-DBEWIo`D2Spr^_yMLhn2G{HS(ep{$3p`QLaOr*LY)Ty1y%0{#WEdFla|DY zm{P&{TLwS_pN62$it&mO2^vr_`0uj0PzfE>cCVQGH4bgy2WBK-aP_Oe#-0NV>anCc zZG{2_uxAWf%CG4ns?qz~GD|qHRs0b>{zJU?0pZ}Kt=WYYFEVNFuwpzY%3S@@U!m&Z zDGeu(ad_6fO*#*CCqcydbG*Wkadnf9-#w>%9OiVSC!$b-(6dElnZC!QH^APXz-0!a zF~stwo4VsSlLXW7P+w#vPU5Vt@`Ca6v25PdC5FyQs2pV~qwOWDZ}deTzCchWw(b5t$b_MV zWTO1(9@pxjd&MAR1qoU{l9~boa5m9ew^J!4z`~-&{J4M7GFx+G?kz0+faae`ytJ5; zPyr|yPS4p`I_Ud5{JjPr*fGD3C3^FZ@Z&d}~j?ea6A*=sY4}c97 z>E3h=yxo&tin|7g!2d>&k)+gH2;#&}W6UVafDX>*oo-?zhFN5l!Y*|9JfxK~Zj3i{ zZFkRP&_mOq>^;oBokL{{MVWk9Hc&Cl+zZ*Xuz2fC8)k#v zlrcMC?mqpqygL3OCrXLJE5|FvjdlTe5oGa+Insq_H;A*{6QTxAOMSYni6R=bU@*>6diXw`K3MeIf188h0kbXlxH? z_mm~Y*jP3=m>Ex%Qst@A^wm^ZvW9WhNLHJNF#`ef@bCs_fHVY&7z2h$LLvv7GPVH` zdl)b;g{NceKmrLS19*P_|N8bm``o^5-ByblCTew`efHV=d#rE0*ZS6n!j6I`M$Zlv zfuFa9y=A*~gkHNt3B)!T1Jofd09-PGnf8=RB`0Y39f+dKAf7eIpGcuHO*3mKud@)^?dt6`Qm7rIq5b z1EMaiRMB)R1yrHrO$hsAA2v0#bdPgMf!)(EX?KD3@8X=_1ZncSS^Z}23iDc6azhd(_>nsnEI_M zsodj-fsiY$2WH3vi5UWq6(=;`30A1C#QDHTu>g|dieQYgzI@9+!x)Y8!4c6LD0w56 zgg*-9T1?X#NXPCNIgA(uUu=`DSaorLZ5E%FZ92K}Wu^L-J2!>!(2J-!Yfde`7d|!(Pjor^B^-o( zjXLR0(xA|v?#m;>(dMr#jQ03pnMLAp)UR#O9z8n5XIo~}uyqW0)?LmVR zrMg!%Qu$)Is{jEyMZ^x2PEyYu?_-IirecQ87r#GcF6gl@$Vdqze5H*|Q*G!06Xpu& z_^uhgY1tl3T_J8WF(sBjy|{Ka9IggQ;7xErq#Q8aX00X{9+7$vYZs->#i&XWS(iMz z9QF5=%mN2-b=6Y@4ZzxzBAV6tD;T9LBM6btdHS5}1{DhnnmRk74D{fV^DLMeBlwQ>U)F z?fVkOy@CbuV>|-|3!+>>66sp5C|96KE@l35aa))#%tAtt8*(#)VyNCAtu<=Y;l)4S z0Fg1m*vG$Sgy9yF5yq=HC}o6k10xJZEz-;N3N+*BhFlo(;i5|DH=`)O*^w)UK5sKXSBfw1De@qB3p4Qa4VnvcZDop zv5Z)D4wYczbe0v`f#@|*DFpci1#;^~tA&VL@gPV1;3knM$*Te|LrU-ZqUUxfEiuvl zX|LN)-S1zw&$aj0eoI2el)=1Ury~QE;g6+5+$~6rH1q|9b`^~z$Rh@$hvBs1t(>2$iIbW$0x0H>2z2t!Z{p}H;kvu^JiwnS{nM;4)Fh?Qcp zd;gk)W0i!w1L)dSj^oM1teLsVzxa)Gf{<0iTQD>>gx4?zJ$T`Xx4-+#U=W(1%K{8N zC~tGqhWOE>XcoUgC`nToED?~{C|XrMVOFnczUOP>+)6D%8n$6wPwqza;ZJ)FTBa6J?dm{m$j2+2KUJp3k88$`A#p3CpF|4 z15za{?CTrDRVU;#Jr7JM-HTnbYm?d1r~*V_%a*q4YuvyV@Cl;{?aLSh=!yJ0mT(gB zulu$eN9-%8q%f3=e+?b6T*8bM2CefhQLM0lXIp;aXiuAIQ|N)q`{J14&V4Mh>6nwSUweV&RU%kE-ev#9%udjta{`k{uLCSIB zh`;yY!`lGN8^M=@>ur2?k+|L=z`1i14^xlpp>>H*Y#b!aLE;nI03$xJ(IZR+>7+T3 z*^ylg8)8JJaC>$8e!9{JHUH&Ld#M9vB;m_CIs=BI9}lz{g)O@AQ~6*$#Q)~GqN7w2 zbKqfJO)eYlngS=b>IxIvBd7ympe72%C{Do{)iD@tj#B}*Fdb&$9>hKa9~`_w$VlvK z3k!;m{P&xcj7+Z3bcNR3Y7kW8nek= zSc+lN=(h3@K^kD!b%wK1DOzsRyN0^H~Dj*YW!l;;H0m?nxIPz4Y#;+$^l(5%;;>;(ked@tEAL`!hZYIJMyqKB0F z8AB2`=e4`)4Y!puLjne^>2JNmDrdiDLqA{UNc)TX`7%RRFt+S5_q@5Jsy@BQcR!8j zNM7Pz8j-X{*7&XfEZVFLcEr5rhl>?hX@1xT|KH8;dc5H6{9J@xGA104!D!LFOIQb;(o$ncl@`S3` zbQ!{PCW%LTR9_k z(R=S*F&?R!3ZBX2`waPlZeM;TZ;|{asI(2T5c%Ryr}aq)mzs`UeeoRe?YcH6t7oUZ zNFT9uFCR|6C(03*CL-Jvi=W(B-o!=8#cX-5`Yb{7CVA!a>ZV7lIWqaeXT15L z#h*-Rb+cd!NLGxqW+2D2q^!EZQzl4%4b5jOui*8tL7Z~*MbmV{g+gaStkB%KEtbz9 zI6SlKSehCG%4!NsX$+pxQiA7SW&YFm5D_y?2t!3SQ(C=4;i&xZASp>dwj z=5p#~<;!EdaU#abFM0aqnC}7b&9?7~v2uzh)#sQsPwEtFkJnA{+@a&$Y|8XTH|FKB zwLxzR>=a<&&*n>Z)hMAv3S14UV;2dTpkdr4P6=PB%6)Oqfd;!;eK9MLcKIy+9^}lIawfg}3l#AuA$ciTq zWZ+DDWVPGAqc_U*#%f%Xz2$ z(WhLWZ8_S#KHFNK1tl&4!VOTXLpP>1AB6-Bi;nNw6{?A>Pf_}73PI~U9R0$P!iqtW z&8I9pb8`hpIuUwo^{pLodW<*-r~t{gn6?c71@r1z!nJ1!*Pcb(;p(_{+PKCsX1V4< zX~ZQF=+g|*hz4ST#KF5_IJzT;HZ;kpByxnELOJd>6P@a%!yicnKefu_r(g7wRa>X8 zwXM^=wpPttk2nmDSx{gS&2v!QtkqMT>(S-$>SliuiUzz;G4NXx+ftO|+0j3PyZDlp zOv?kIQ#wz-;HZ$4;-BmRDQE3NtKs+6q-!;pLP7E&!}PiJg(xeqnupN%Bunsyusf3B zV9H|Fphj8Uq1@HqCpU@v=#{Ff1%8dutz4!IG#NaGX2Se$YLh#F1MU{Qc{{bW69GhY zJbqN?>KZV|t;r;i;F{H(`6tu)LZ5!h*Qy!H#p5`nCQ2Sl4C~Q)OSKB+zTc{1Fxae? z9~OpFD&W*5dIF+uq9da|Ro>c~JpDar=(#pn*KMytjshYhAYm z>{sGa?#t(nMEdx6q-}d^Rx16YW`APp#euIeKNY1&sR=BD^JKW2wcMtVRWx7`H&_g# z96^s2ew95cJJRWYy%PKC9Y2S(5zG;EU7-R=n~^xw&G>rkRv}UtD-@kr-W(XM36sX6 zR3xlE#vsaZGSjT8G={2@sia}ps*=L=Y~6o$6-Oz72Pd1V!6@O6_MF&$S$q<(%JAC0 zKqyv%1REpK0X=*Mj%#O{60}%=2sR1tgSf0aEF0K!5 z3s<@q{jhSeAXXUR&<}&-Um1jM2)strgeBxzq@&GbX}ZYKJ$0cv7(n#Z%c4=D4QTv0 z8ac9w`ZA9#cj)hU=t0M!o}EZ{R5p`TA&}Y$8%ngpLjBz09@*vc8qnfvX847PuvQxv zFXEG6vhXPFpkrmQ?*Z!K8$})zzmiGHg6faols%;sFIu^$)+y^TLf70IYJ5YFkG!H! zKR$c9oiWjkPXn`_j(-9KVN~96_8N7_-niGS2IP^bJg3$YCEW{Mf&d$DTw;(LWI!i& z6@S>%lG*e7Xb-`4CKsx&s&*ct>gdGz5aTa@s5*Y3d^3EWc?SA`H(u!$Z^+Wn3O`Mh z846{D1*i*$W$k!TEc#3n2= zgoF41liX~i!QGp`nqNffdZXzBD1_`>3&Gn}EW z;dKQ`px$W5gh^uK=pZpn*U!J6(v3J9psps4P@m+ZCpfFsL zEZ^GEmj@Ut?RA7y933{-%vjaWQxnql=#xryXbH)3i&N->eq4)Ug%yEp0-U_E<|Keq zlI0pWNzvb{aJ6lmedI7FLH%1tjd?xlZa-TN6;nlexL-TeSZ*&(l^yH3Z;|< z$J`~4;W^-kOhFzORn8zs4H2l1Yo(ob#xa&*Ze z$)#w3?^mbG1o~^B%WDR`>GCN-e|>Z*Falen;GT9s^ysotZVv=dMYT)PEkB03zxX#Z zWd)07m#A_`KgG^1xx)ZCuQUm5m9rL(Iih_LsG+FB#cOy$denIFF$K9~MC1`<)1@Ng zXp;2d&^W6ZI{~yp_tt|H4X>y60NCX|;926~&R^%c+FAU88Lftc{@*&GSgd6Zs@O}! zx!?LOT;QpDxMcp!1`N7|Gn~O6cc<*l{9=T&L#@}>6x4o1Z`?);(&rOGEdN_+#~+6mKQc7gBhIab)*_X{D6<(hf0{`a_+sdN>&!Oni)k5S$>H*SpUz zOT-EJ@sCjCCFR#+e02Hs+>88rZnpXLx;&6y&#lO>M{OjMiSn;dCVjt#?LUgRW7#W= zNyPmgN8D8v1Ot{~yhhuSWdDwpu(rU>5vR-9Ki$8_sF9bq@y#n1urX>^NnvEi6Zf7qpzSvkmN zt+#IO!SZf6kH|@)MDSp3ifch&XKLUW8P&+y*J3U7x3#hp zJY`hl6;MVsH=I#jrfq{X9F+#tE8tlnHeZa`r4U1(z{1>(iL*!y_z!}w7wE%h<(p!n6O>ri&pW#3$Y*n0 zi18#25;(46;uRi10m}db6po8yTvcVe*NyTC&P(SLv0r>U0Q&oZgJO z!OaWWE9>{PFv^*{C|e158U(^{wf`-qt^IGxI7$28@Ul)20s;ag;;>+NseLk2KaqIU z^$#^pe1ZoPS9K(fKm%a_e7BEVZ$qE}3ul=(2dusB+%E!HIDr-Z;K;cUBJ)~Kq)QWd zb{%uh*xVgc)ekY%(c*GGTPi368`83Jh?+zmO|S^CVI1kmFdYYg4C7XkVLT%lpbbo{ z?v7%KSag;Fk3L*;_ElCbE@addzy)GH0x9 zOAIQwE;M@|!3qTlzFrtGV1?CuNjX5Ev@m=6^fBAfHi}_HT_GwR!?Kl6Ew}Bia9Ck0 zM#R=@MI*8XK?XDG2w1T3vDc6y1MhZUdOdv@4w056reXP=W+RSe?ZB4dKee$${ z!_y^bm#gWeK2felf`M69Dhwn}CHA$NXvWMApX$Lq_${;Q_TaCWl}{iM*V0s_)~#j= z3tP>UFY7bCUe-kddn_>0KW3^tC3yH?_FIFM*h~9=T-Z&>&h}RT!XZeJrH^pqY+Esy zyv@?T>?Oy4B}!xlM5KhXd1RxODH}E2i>zuE)|sfKGEvc>kqF+nK?;HtI;C~N8}V60 zwi1LoXEmf|wW|S|h(71?Ac1zL=`N2?ftH18oe${E$~SA(9KKi@_|Q{yus|MOzP3Y8 zIVVDsZ9z(=1lwXt#Rduk4Y*NNs+|+iuy!PuFXcb@qU}))8|XVDiQ+3 zHl$Dh-aYYRgW%}p$Z~<8hgCUPg=DnHKFwb9PBoq0Jeqaea6+BX<{HYBv8@JW0(>*z zkOBc6rQxxS!Id{8qk&3D*U&IV^lg}))I=?EQO9KR2upa4qK&R7W`ic#If6VtiRn|V zK~mR;CNd8fsq(aD^RinxH2OcOU`_b~HCeCvmhX%vk_rm^#YnhCbV1agF!26m+( z26QCI6k0CeX4OQ7m?Ku)Pt0g6Lu`y8MtJNo2i4~FR9P@cu4>cKA3cnmz!DX@sdgWz zA5p$)dRZh*G#lMsnnW_h(8D@ItlQ|!&DIdp0_RN6IjgLGc{b=bZG>5UhmW!m#+FJ1Pyg?-J0=~HNn12+x03`4TaiMi zN{?bILupmw)KGPmUm%DIa{kl?e9_CUsuUnQ^pZ}*;<2Q9KjzJiFb)n7YyK3^?cMfk6JvT|uIiew?X#@4IFA`luprAdD=y|h@R$_`;!EN{po=&VjOgidAlCuu z*_vfiT#`tz;U-XsJ@_DOc{&Vw%ApuhUXZcNfB{Ut^aU9~Wv&)nQU8al9j@fjfn!)- zhab_7>@jrP4-YS}Gnrr6G4{TV7T^;iO&oOq`2q3&CtLg+f@w&#GXJh6*HXR|u7P@$ zHbM?(e=^uOz!~9>vBWJ`gcY=W4N=f&BU@T(*t(vm8dnctc8JJit|C zJSYtr81O8^#fxP37|z@Bb|9Kn8#tvnmrb>qCaY|sCcWq&@SoCFQv>nfxE3C1&4t7!>Uz9N)c;ZV~B60 zzFf4nW!mDa%;XLZb%9Mo#)cn{^)x&Yedw}4LX?0nC@29YW?5Vw)i?z7UQW zOyAy~Dj{Ew_ZB!j0}xUbp@PX)166y|0$~8np0GL-`-9tE!Ukm!?i_Wdqzq7T*HVRV zHpFyXg_@N@*}Pw>6K3zlbi$@3TO-39$pQTLsEfT{@Gbr`XxS!ji zYeE^NsK%=7ema}prFIKk8&MCkd(jUADeX}szXh$Xlj_y@E0eK2W1y2qmzdj5w-Jo$ z60M*b3j<@LgFcuBjO>TlBv9ju&T*bB=OycB`f67U zo~jjNW;mBtD@Hc#L)Fv^Hcb~7{?880^M6Jzi2;%SBojOON#`?wNXvITA%}2j%-;9{cIiv!ff`P2MfB3 zW^ALAfx895I^rPc64&V~%7MzUh?=sil;uojZmN>JjH7wL;F z2_z5dw$>OY5c@QsP_4V4DM{nz85O!|ACsVvGRxA8q31vhQk|0B1!Tng?|!d)`$4nnNNgD6opk(!Tv94W%iAZln> zF?Tvwsb=Pa8|{)(cM0TRO>Im6_JDE@LRtY+r6^L-38V(nS>-1!;>qUAdXwx&+KT=p zuNFsLi-4E0=Gp8$gTwsHEkAW7N_jF1Qgj;^P?hS>nkmwot9q5v3e5kA1(jNPS9YPK zljsn&Ud0j-(EFOXzO->nNKGs~SGqKCpdD1;eTCt~Tv&wEA?~01`2Dd9XCJC(Yk^DFyuf~b!Cd3-&YT{ zpB87E_e=wQbwUps;C&Y{A42qWcvh|?;_^sK(92jcFb9lX+jQG5>N%a%_#+J&O<`(C zm%zH3)|9W&5nhaisj=Tp*c2SZ*B(iU+dMyTWlDKioByteo04_WzkAJL|UG2n+(^g-){Oci+Xc z@t`yf`dNG@t~1`s(k}mj!eWx^fP>NHvtJmsRe@AW{*8LcWpuSNjMX42ZZA*(tvo?5 z{Ue^rR%5){5l@7`r7yy)9<9fnzBoEeU!=AMlCl~<90ldsQ?WYYsqE=)ivNfe0r@L+ zMc~(+UZjei(i;U-nA(RqRfWII3yO8g;`WFqKd2*~{9px)!4x|Y){c16T}Pk5PDGV( z5{ziC(lL6Vn#4~a<|X_MydnpkPIVF-`;fd;^_1^H3(8MDyHma^4P0-$UqJ|!1q)yf zt_zqXKzE8TLNkEb%WLcu?`Hy-OdgaLFw2Jd_Iehkt9yta)V)-}qR2|dGjEzb*^@%O zg+7|7?Xf^sLqaiDQ&*JvO4W_E7}8j%x?2^m0!xuHuYj~b{YtW47gk63yvN%-GqSak z(5^rest|FCyhV9*vj>;@)8Y^_ztQGxo*tgXtemQ`BF}3vf+1N_tq9sV@ge!duNDDC8Zdy z5#h-Q7h=VrS@X9nVKLQ6x>E_cEHmC*X}}Ox#WMz~9x8Yma2(K&^#rTSj74y&b;K7m zRBaBaRG3ClRes^v0RI-LVDO)qo(0`?p0p zO(2vf&dy@Y0c?dCG*}Q#1gQ{%a;#8%!Z*)@kSKal>sR5m*Vg4)Xd1bmykcm{3Qcpv zN>g!buyd^vW<+3B=V+4%QEPIm@dlWlExtB)zO2SZjtOkVu*KEl;WAmB_aPn4&Ng3E znVoF`a`lAXwsN-drE~YY5EveHO?6M8w~N8L^^ppJxzuOR!Jr_LG*!OD4%Gs2O zE#5z4m+R~UdFQj#6a?W^=oJJ+Ue$T3e}%@B>R)li`>cDFOONX6UvbTz{Z>CC;gRR~ zUuSp7|H)S!?wc#OM0FsTB#M?5KD`K@z(3k^1k6azA`#!e!N9q_$2-1>!liNQb*h#{ z7gDWxcs2lZvmLJ*hkZp4JUm$ZdmQq!pDlZ0UX7g9=1jFkt79xc3J42Ba@-&@)@W zI|M?5V=ehqW*yRp@i_NVL$3jyH1a|UAfUJMC*ajX1Z_8izy4V;n)0h>v+wG#HhJn@ zN13^lwk!wBOoXY$wPh*WksG61*rok(OTfL!XFpR2(~^-CJT3W&;Z+C{4Nky!0BhU}%R16LUJuKr zdxwN&W2?RU3?W4+IzyKd62{^CVLwsG%SL{uMhuge*NFYF-b6XMlGQZ z_M;jRjlc$l*AV~*ek=UwOYG8Aha5DmKW9P?Bm~roQmvvCb;D*kbAY@Sxg1Ojy^;g;4u?_IGIX8XdEnKPFOSuNr z{MnDmD7Zv+CRTxh%LiM+CTYIuQ#SG3(tSMc@ApPK_w<^1lATOfX@(tK%@6;I5R%te z+?Udfzuy(jnDM32+`dmMcBC;F*K0X!V3b6nbW7LZIgLx-;k=q()f-o(VM+GTUd6`G zL#9atlp-=+Yjaxj_er#tty)V>6)e9DpK>Gl}Ih* zl~V*edBuHVPOZGMM7dkd$T48V(E}kmeyB_eN^!eSK2#67Bo-}ZB5?+6eI18D$YW*C zMdBx5c2_SAEQq})JOeid8!;3PX%TQli}I8d?fdF`2{LnVR$Y;Dw zkl=dSJY?pe`=@R3&P_AL!)A?~mv)2N4=+=VGs9Iv@pKFd;c^ksEzj zSL%qD#E`AQq5L;D!Pf`{OHpSeP!m7%I^$t*N&q85I%F>|c|6G#$3vQb%|Ew+rW{er zn>Zr6B)!=w1L;;n-J+A<7PJ2{0`6cl>W&`g0oiZ4T;*Jyq~|btxVyymC}y7(uOP}_ z6w)$Vd>MM1wMo75ItgM_Z9V&C2M*I(<+gNDT*{K`E&iV`y-c?v5u9S_V@R<8QI_To zPVh`RLqui9>s&5DE8g_Sp^XhD7*&;*u7-Up>9t1*0Y0 zrWdNWTvmjAprliM&%Tf$C?q9;S=`EC?cjZV= zprVcDM~IMiyjR+oa#G;xY6Y5>UTm{KL$1r#on%J^w_?MTri6TwIEKx)BUeVfJDVS9 zwx(IxtQwJUl6k#|V#Y#7fFKSZfJ%#NXoZLrOqMLOH=HN2kvUO}Ry1ySjArlMO>_03 zh0#7D&vFjcfXd7wt(Oi+51|n_0in)Ln`Z2^^U$z*6l7wwv#&q3igVeWzMk-d@j*V9 zat0VD721H<5}Tvi#EqhuluSYu+igC{m>ni^a*g&sF-jF$l$39HPU1k>**qu*$hda~ zgPa)S3yOjGzel7~!O% z#-v*GrKsfC;eR?)Z!J`iwf^m^g$gF&-3BKgtv9+*!Q`+|!L&^+nN}MQR}-a{P$zR0 zF2Km^Jly0P6b=`RR-Tp4!)@L`h=Ap&vNl|xn+L-ML1HOjz;P0~@^KKX%vz9u?pQ1B z{L8>?IA?q1NI{kfWGes-dI5kAKxOOym-z;iTlfDp0*EBe7C4Br!+|5uhJn+|dhCFs z?%TW@mF03Q#bY`UOVK^}0U!a6F9X~Hj&4c=>_;0i!$$n-WFxFbvNC}uH*MW2X zFyK6|1&#tL|Gx*$`5vOKfHUcU6UdXHW3^XRceT@9wMZsen$S()Bm&UKwUdW|^F#~I zlm9t@^W+ual)?Zgsw*Ih=fH^9gPG*1o>iCu23^UrM}8w5;LDl#GPaOabxEd zrm$j3K-@>JNYNcUSRcDsZ=(?TSKJvKip#%Wjm!DP7A)JCasEwG9RWjIem|E0B5N3J zXYCc;#`0na?QSLJuk54=B{1u(;bg^a{y~f@Le9xe`hF^X*O25oh*$mAQU?sB*}w`i zM04vVZuWZUNHR(UW}nldL0PPcdeUmx+t8TQkfZRdr4GijTIeG=$$JGX$R`Yo zZ7}un59{n^MN@j}O4*|v@0HXplu^)Yxq?!swaAofwU$w< zwdm$SmCiQb=z!Lun^H@Ncr4QSPdd#DWRZbEa#?e8k^xCI_gJ*gNP4-2fb??mrho{> zHV89uDN>v!GzrfpkZLf2~B~{Wze3lOnbiS(o%x<07G<1VuK>j@zoZLBHHQ}e;+(P+8i+xUzySnr6gxT z5KL?F@;ZHW(gNAfjP-$VaqvJB`vAM?jwa2jNhaDISSG_F_x2EtT;W=+9cSU^`5;)Yj$iwo%mz?50~2#t;l^yCqT+4h3LqpJji zd&R~O$FYX;ps2eZcj@P@9tljnDgsrR!X3$w*4jjXnPdF~JTDZS5f*1J3sL#L2C|CPt{mu4IV^F0g7l z)}~^O?fC#HsFjB#+QXGNP$^12=vEK9mqgi`S)d_ANXm0#kc3AOx01XT)Ex}%yS zIfLdL=i1T!r9G_kLQA#>Dh-7$ahPQq7YPNp@CIpkJWqBskP?;9^Le;CV-No60?r15e=H;uRy|wD21(A@wlIKI)T5M?OYg|& z7^@syc)Us0Xmb2a99dgUzmQ{oR5Tlhg$tHy_JG2-p z$Avm`^-&))yNB{0Io+;&mVm8|C3x99L*}>Z-C=@(_By~-@zUz8JGC&XW+^$;uCn@z zkiR06=uO>hP>c>D;qa+uJi%)+Y&AvaS$=C}Pi`f3F1tYnN_PDsmNhEMukemYz#B=c?N{8yS536K*{#LKHhxeYu z3|@%BoF#)BMI7zk}2*h9s*Z^taPPVQgW99oFy%Z zlNI8}$nA3W-{O!D2j@@@PB4UJKq4p#D!O zVACG9e0B+CBI0f9|3*H?%B6Z642R+K{~Xe{XWj?47q`pi7Gs3t@`VR(twC|AV^Ugt ze1ViHKs;qA=_ff^b%}}XyeE?4<@n|nN5KIeXp-tC#qG2>-UMO}x^Yi%kteL?5Stx6 z-X6BB^Jt)J%}j`>?i8mpKt$?DOz{nr0rKb-Mco!5#ONc7v%DReocNsU&339bhw$^0 zh^JfO^k-vbc>PBpId{)jTbEJM9P4P^{tk6em_*>9<9W4pp?dR$oWdkjQLm<24uTL` zEN0q4f$MPU!?I)U47uHl&dy{N7xW6y z9ts|d_+sq{K+Ni^cFk#{jGgz}GMhM$o#-kHdmHu++t9J&evCr4U91B3B~^1vK5d*X zw-$4Pir$3PF&B8ybY((dBKFjgt8L?%_SF$UcN>$nRIa6Oa*Kje~ptK*ekvOSr9-Lq(kwoJU{`gi-Fy$ zOr}+w+k2;KFj1ieCl2#-i;EB^Kd4=Wr|3>C6-Gt(%P*ZBIhuWN?d;%0=M(5$+kjCH zlo7{AY(jHfr+GvTje^N!+-koL)fCmkzx zYdp8w%sXn|iQ`S;4J@_T%WHydck((yjC2?iHe-ei2|22Wp(Ie$Gx3lq(x4%0q&x%u z#<0yHcpwL*^?-LYuMc}8hTT3{2>JDdUsxOV#`>`1jc(ZNJ7cj@%vZxsVPP;>qgR|B z0#hhH*r@=WMx911tkO^e{7(U4p1ei~W7u9D!eEzUVkn}ZbFt6X6`|V1eu>$;yNtYU zs~e~7GHghM|8a_)Z*q;mAjciNLBL<3F$ghL$KYIAY}lA zk7-juR#6+`FiTY}S3Bv^qyaL|3PsDvJav)AEH=;!$yJZE{k=umY8)Hq-SD}rlp+{S z#9sShk38{dq(f{NN#jr^15su8cC$U^&_M9VzYq<)(qntSnEMBB{3715!Ey`$2K2C}kU9v7#IapD% zLX>#Mm8&#ves4#?$hGRRZ$XH{O2#98hX+@Dd^L2vawVcLzJrJY5LbxOqQ~sL#i|BT zXU?{}+t8oj60zw9up_5ky^|Dp>v|YsH$dL+bLttU1GV<2EsiieD<>F0*}zr}f|Z;h$Osertb z3@+w@a>a&idvj0%{xnbds?sHc6|v)GM;vwa$2=Qdb!#Kb2gQK@WDdX&_ryG5U&;?F z(OYw7>;Y0fX-;YzH0_Ct)=_ixhVwB9*5u(hatlDlEtu0Jzf9uIFWH^}g|1B<1$C7+ z#s2WU0r9tSq$oI#KVGoXcdR)2gLMP0Z1KONXV3m#vWjBOLB;*8QJ(Q%E>ESWrhO0| zSk4ec?!3toF(c-w8CmQ0jAm-M8@YM>?DEYg4!T=b>7l(}v=RJC41pP{7Hx1CJ!7J~ zswNi$i!3A)V=07sh0zoup41@P0_1X;Hu#B^E|3=qIcdExNEy|SSU2s$sU+VGKhXzi za$yPvS>#R=I>wwA)iLX$fuSdm!SO`4gjlMH^`;Y2%IfR{jK6*yq8FC3wCLV!wkh<+u%K%d~ETsMS77tmi72@&aLX)xO!gTqC z9E)5#QW$LOBlPTBSZU5oD?yHLhEM=U@PiRNJpc`!3P7@c4**DT*3blmy`94=~Kd z%&YB4wo{qYU~X8c+dT}I83w&+GZZb1gYZ~$UX}_ujxe}4_W0yoQmA0%ruOznIJbh7 z1jT{*Q$EDvNw45z$0u+{&H;sFV6PgCcvjZL?|3RSXy2DAChj!0Fyay12?dap#6Y-d zgN{EID1Ky}iVyPitQ)Kc2Io*(>`oP_3H*HW;^J3y$Pe}^Wm{cJmDL=rB9{GFMbS5; zujYR5#VS-Jnubqeu9LdTi0&|m7@t|aN>f_bUND}Z9%T?^GtS&Aa6pxU0?Exp9piew zuW*v?lGkhPpM%FG5h2P*aGqDkl+AF$NzRI=wKtH}DC)Q$C7%^;LM(B_ zBPVtyKwD4(Xt=(Z9wL0(w`?2GsPI#UIfIt&aNw-1%KoyON9_L?KNJM zBAi}Rd7wZns$9Yi@P;RaQyGXFFK*tjV@s{OYW9RGw)m{7C_z*@Gzr@cy@ZRQjERl(<@|kh zA%Ct8byL^IaPdpd)1@1obfspNI-nB_RH{nzxMTJk5SV%MrVDC`e{KN_nsD*v0w9XQ zi{|WpeIlH@NRUB&Ok76cIB*3+xo9YHDuxk^NCcg(TF$h$FYXb%X=i_#6>sEVQotkJ zrsk4z^68s{3@s!^T^{e_;%vQd_zdV5MuEp$`{v+Z3_(&*tXu7wwy1Bn6U zc8k%_^LcT$Bv1vQ;A@-Wcme((NB=;3}Hltc8bO$ADEAL^>i%0M0XFCxmFD7!1GxL&S-)VDuA%E45V&mn2+v zEGLzx=-8^fROht|M*^aGGV>+VVpFOwb*#d$I{B*l#4e(2SRH>=eJrk~uc{YuHF;H? z5!R%al4=KRz~LV}Ju=)+>{iEitHmyH9*}JS-G#^_rIP7}KYtFeWc32>C_tgnNV0$l zuc|3*sIs2C9M&UP%bT>1%mjH!tY__@^;j>Em-%Xf75h2D4(fgchR{qOp@ep4LJN$1!_2N|VB}`w@`!NTsEYx?h(o=! z+W}MsDWQ-x+pn5{{zBCVAGtxN)PYt!ivfIwz)MLX(^!SN`;Iez;N zLYmMvmI#{bpXY5E2^C$+!yf@Y^Wxc+SuDGq1vlX`*xonIA6n4IP^`EE17l?)nBQ{# zFfuvnDFGN=rQb+N6((`VJMF*`Kn39jsKn<2I0;7TNUU$?l>#ikO*A#S1o!gTys3OHWmAPL$ zkKLGEI3N>beAipJp39@PX_0{+L4d?R5!9}_ByH-ChQm| z&(8Rk>}+)ks+7&aNddlUo_kSzZ*iBMHT-~Na3_WyeLo1`5P{``^;p)#aa$9}3mnrA z;ygIs&|K?rk@Tr=L_`}O7o2#@5SBLpzZ=x>jFxV&M+1cp@XtULLIRS;tHqg%M@OT8hE#ZuE9 zjM)pLzUktK3o}FW9akq_r)k%Mr4(0U2zkbs4~niPjIDrGp=zEXx%1>G;EOLgcopex?kjW)Wn2! ziH=NXN-Xhe%hvmwlw+fX#%1pGkhCP*m^yMnr%ibb{pZ=@it zAP{V_o{G>Ju1RT{=1Zd})%3ctFNXHqvLXj5SIU#XObNKz=`?u3Mca?J9v}Uro~QFda6rh3$yD(yNvTU` zH_9>5O*X&WpY3uQ^EEOM5o)JU6OM zAk0I~#t5ohT{fJBW7#2iXs=s&I};->2ONf=oTOH%iifT;jQ`R>bCghn4XMoic|G)4 zvBhaBFHe#RGt4i}dCP`1)n!|(cL>n|m)c1`9 z*8|mu#p~$I_7cV{EA{k>5nH#Bp{p#$lQ#Z;I}06K+2@fGn12%86$FWwdBcX0g4Wcq9*mKlw+jz-)ABU8rA|; zg@6dC030ahJB;c^Hn03D6H7;D#1L}S`K~`1ep)tlNkSS80z$Lbi7bb-a z$OcLT(u26P3^zNvCClovsg=7?@Lz7n?yqKi2lw+lvl75lxhbysb%CsGel@#ecL}o! z2c!UoiojS%%({~d-3gWh%#OAt@bRac=8KCIalw&9JVU|^$nzdPlsHf#Y<&N0H7W_z z7-xYl6j+ixxGKb}Tj&oE$wW(!-h;^%hOfB;RdjuyI5`Wh66M%1cYqh5mPG`0CBDk# zR^Yo`F-p0{G%y7lga}cLQkoj_Xb6u@8Ra^LKb*!Xg%`_8U0wpZTWH-qNj9L*=!UW}M@)3LPc^Ulbgl9yZCF;;A{Psc~{_^i?K6uGzutC{`5osh4PVy&-04$oFqlIh*QSL%Mcm!1?iL(~b~l+6O-H@H=E)_<`00qW!M zKI*?RdsWPcsp>M{Z}QLQn}3kJ$TR>x_kgbURcU#X2BGUct0yWiB~(6#E+o$4ifgJ5 zlQ2`dp>%~&=n5nbRG~6t&5v_*NK3Guy2h}zQRJon%kZcEXuiyulf94N5hxnzIXJAz z8qn7fW*Fo0RobFXf67l_m--U2w|=r9gwwo>{`4KvTEwt^0`X2Yy9SfpkeV#VwqlSM z28&fJDd6;tI|012Ytn_;W?(K(Q*<_gMOuwxm<&v+3scq|f1od0%J>;wUF8|r!IF?E zQ$k;M_(t9XrT`N(!p|c~Iyy@YG4TU^(LDd3=gsEpzG-Cm1?ZZu`K=)x2qQFToetuY zxcLy<-DuNoSTQt34IlpVAy~8cPe)n(atTM0X1#I=hB}!RkLtYf(jN?_c@xMfi}Dg` z7JI0h|MQpV6i`2N{R$5(|5O5^)IVv1NpSW~kx~V7$44?&SK6@@DbPu~hhS&OcjICx zQUKD$Or9Coh~o@bP4!cMjs)gj>W}O)A4M@_&)}K~1TBFZXi`CMOb`t2C1Qe9dqRGM z6kav&$nuQgFo5m*h{OmMNC&|J%HnasLgJNchY12C$SL{~1aUt|3MVYplh#wvT$che zB8kdldbZ>0dP(6;iHW3))nfs=Du0D;; zbR=b~Lg)A#A&3&9ZLg~C>eCgjFdqQNsjOh32jZifmFXZ~C>`v!Kr0L$ z0ZMrRGUfFam&@2w&0`YItEXr%p5qnKlW2LeFEV1B?W-^Y?ZX1pKwPG_uJk13R-I#5 z&fYb=Qe9G754sdBoYEp%SKaUy41!|a_9-xJ)@>i2Vta?wMrdPEHCb#DnC<^F|HXK2s%P zOl|v+iiHrgB_Z1ftrj1w5B`<u`XkP39|~qw0fwQ zk@h?o6)CkY;FX$Ci}Zny0`k-&atB@5lg;Dy%vYH(JbI$!oC2iJfHzW)d%iN#`>L&! zQ~;m!oI1qjO`HL2Bn?>(1k5KRKeh}$e#{|{TthTc%1jaZYItHP!HQP%m%*BLQVxgvMyAe`2yv12Qf=a7tdF86eEa7%Ve9JHm^(?MH$hx8qRcPwSc+!0a&D<5gz z1RtQUlQgv8e7hmbN74bmF5YF&-Cr<*0f*!vX}SA4+o?T%R`!BVM{;iUDv@XcCmEPP zOaR*1GQ-)sISZomdvu}Nl>B1c5SoPlNR|%zh9y8fc(gS~0JK7bE_iFy@g*})?jc2L z6dX2h8e%61F;Q{E<;-PTmWL`MRbpt}sM$%L1mS0BR2`W${Yq@bQ&nOkzN9m#@XkM4 z&$SE8tC2#+9n zCA}Fo?6GQaDS=7)TP(hRzWCm`;IrZm5}Z=Vu^g2SX!RL>-nvADJVGgKlE7lVFvNpO z%Ahn*`i|Z3+W6t4C@DwEt^TV}Qiii%F2V>&`vzGJX1G@~M;QiOlb&TJq|__oks_~Q zDV(qY0b5`@2;Wpqm$cH2SFm70aHEU_0&G_`&QRaEO37EKF2NI>r$(L^?MhzwEMoPq zy*|mblYAutY-KNvhZR#M8ZVub@n=nEe8`y4j~JYX)+Uc7bW0g@R3%dJu@UKWX@FEl z(GBfr63d(Tb7?<`4b2{QXNI!XYS$?S9)_yfLO; z%s$7Fi>tiCJZNk2?M`6~Y;52AvsRi3=42R(Vp$Qs$RX^K*bD*@BA*PaV|jU2MbY&S zuW-W@#jkwxEyUVh$1!=bV^ruXy`mB2RniuE-Zhq5t=1*SrqMUbQtWi~wKkORt&Ir+ ztp-*)q&o@7E2{on>h8$p6y?YLJqq7jYSI+D7DT%DS4#Wr7Xr4Xg+ zaV+aq16sC0+kk(*%5R0dK;Q>EhC|Og5XB_1aq;rUwC7}FL0JU4k)g`-{*YHA)RN5W zr*1bc3-DSl{gFx_@AH}uf4Hv4Hu;k0^?AebGVbTL2R?Lsog3gDJUI1UE zbveu??8rjN!U@g8QfGmQ$^pB;2c^0nSySjC0q`3wVgz-k%cmDg^?q zJMP?I=hRm&rJ#CocwoIVk|ePu8}7$U(0HYc-}+?R>nfi^jFQ%wO#OELZ8^^l_x z9;}nx=AX|8WBJ*8yY8R;(>xNoX{c2*ajcUf3z+c`$4&t!JmgN01&!TDN*xe=s5|xH zPyIs!^qs$+-mZ4B%y|WYA>vn<##BU}XFL4%O+P1cV8jf+@N;=P_%pzx$zde0LHYZ6 z3J!C39Mf?4k9Wn7zgt`pmh`Y|?-#OvRX!__+WUk=2$)%Dn;qTtbW`k*9?QSlxqQ8V zF@!B2(VP!BgzdFN1z33#cTlz&cp-rqzlT!QH_tmWhVCn zY<#?eDjoshzH0F>a1H?kHb90;$zZOG-1-FvM76OS%BQlZrOCLc0vWY_NOWZPp>T%b z!Re@15--q=p5YI@fdKjv#UQ~F7-%{BPm{#~`=>j=uH6C<(O?~wgDwh83YM|?55G8C zyo;hbxFY_K-y5dQMYr>l_G{K`*%#j6?cP>L+#KBHw5)0yM4{lEu!td1%Nl18*n=4! z$OiLn53(=GqeSmUZ&s|4rqQsY0@FBtaWmU&cPbvN$+5%Gra=S;Po)#6QQf&I^@<(F zD>)S>0%q${DqELQ^f!`(axxin0PYf0{0Tv&ng^LCr>STP+MO#+9FZkVr%tlOPc^$U z6f~SC5>6sVEg>2jWoC3|A?Z~nAf)g!Gex%OndE{QQOz6V+SEigt2t_rz2e9=jBJby z;@=q(3C%&E7Mz&3G7x1+Pk~Bi2)Y0qSVm4~R!x^AVyeN(@>G=vBI7eUS)E$^<2n0= z_RzCcE5}P6HOiT%W4EFVQ7ob8 zNi{n*M210fXsdN5eRV^%%n%68cfXUYYEJ{jH-ned1TWhhK}~#m zG%!%DXRxwZF@mOFM!)l8U#*P(R#?kh@?#(GtmUo4{MaYjI>=-gKU{6eMp&y`UiM5_ z!9hHTmF^VL&SF+HzO|UIr2w*RXZuJLfb5sjS6u;NhVv4_p~hMXz{j%8XVjL-ldDt{ z730L8hiOSk2oQ#7IbhWaSg&Adlry&Ctk+lSIvq|ln*C9}@?o_(S`3l=h&~(dt4~K_ z<7=TRc#l|O`E--KD!IZyW1y3qc)D&?BQBpJ%`1-QYE!$urJb?JMu|Um_;8KV-(WM8 zVslgx5a$qyN=WDfG#7mq(7gnVynK1Pv+a|gr}JY(qwrE($l748H?TQ`R&q-@flFFH z5(?E$EEcO04ueiXTPT_Ty)8Yp!2;mtGMcOw{CZNjX#K;*74fI8?dF<%SsaEYUltfe1$H^;?L{;qELieh8khiqQd`h3~i!nAg*du2%Y?XAaYz zMgjv@^YT%(wZ}7xmw1q?j;<4P-Z|{HozV~Ii=G8dz@t2C`HuTw%ASRXwS>pPThRj;C}v^d~eB)M{WruJ8=vd zo{P1Miy)|b@wQyPy!LGca)SxsLUv($Wc8{ESDB+e8Ckig*`&uhUMY5^koTpDD(0Lv zyCJ+IB?j|cEP&3qy||onvKdN%yxH&z6m@KT?@hpgEpK$Lq}uSUh)p4!F};$t3*gN# z=vVPvFT)&RuH@cWAfM5ta=(>t$lHOqVZucBSx{>1`G}GXjOXf%{!vv0=I+K$9veqN z2kSEq7mz8@{(1n(om`<`u{8S&-ej@8rY3&Xy6s2u&#sxYsTO^jxXLTW#B~s1 zTou;DH1XNQ%e#2-?Dz6Kf1}Vp{#3=*Aj>0b*&`$dlyk=P_ab@ZIMh9(5W9|6x3gO* zoo&@J!(2LM+4t7uK`R&Uj(0H_UYPT)_UAH4TI01dPw%zrT3?%OA&AxC+?~%(phz>6 z9McQ|i@*Kx`Ro(_&9kmBt=2ZFOSLYIK`TETjBKMne-zxc}5SM={?Y{V*5$M z1JY^qSk>Hm=dy0f<+ID%neek^sWH0crU!sB`JMtEu!$RJLphn8=gAr+J8lzQChV&B z{i-T~;V~jjxB1Qd{^rBs-g5>lHVwb4GhRrB*w6X}%$#`q7uFx=*YtQ1?Z1Eh@eiy& z&adh5G9LfH`s43if1F>_yQ8J`s4hX9v{WyKfnI? zN7f(b*Yx-}9{+{)$KOkaIr07$ko-DBsEmQU{A2_pxLV~I3&!WNNo{{8%QbGE_$j+P zxh8Ii-MMiQoO=)DAx4WI*;Ek~(D9hJc(urJ*k@J8vNySXdYoo>v7W{1Zz5Ql|JvJ+ z5DKI%C`#f6W&UBfA}Ag&8U=(mn#YTa1cmD@GsPuIIm=^U(|mq<7QI$mZgkzCpIl+k z^Hg4MMf(k{5Yi&rR1W@S5-ILr*re1jb8JuiP-;e zG@hW9QJd!Z#amTY_Y*Sgo42yA828%X#x6f071v|ENAR>6;74IlW7Z+oS1b1m|8%5f z0^}Xj_?bRwO!b5o#EWe@eImWmv5hq@Gi~@iy^z?(FCKj1L+d^8dwL-;j(^pE;cwqT zNuoq~(}tgf4^u!rW6N;9e3pD3J;2|w$#gfWt>+hS7ht~UM+KO-9|{<~J*V);je)}B zYHN8Tz*_0JH}=%}qioI1=D=g=6>w>4 zi4~|Z4Msa__`Sm=zwpBcU-)SyzAKxsdxu9r4b$`tp206Y^dNT}a=T*am#-Z9d)9}} z6YE3&frBFn`PL1C-`9u!g9l$YFjsz0FO+d0!#_IsLd;b=PFncz$kpfSO;IL=cZd|; zVp4d=6{KKp026>!w2HucvOAVb0riFzV%?ww&n_Bp!_z^m8`co(26eEr>R^ZOs}6Ra zP6s<{9qedx&Y9{avs4&D#w9HECNICR0Q&FsxYg_NNEYqZsyDgxuVvgsU851!tT(1 zyXIiIsMCa7F0nVEy5af7S7?s{&VvsY&6~fOm`ighl#X<2+%Yj;(v~F_5sVwn2iaoe zB(`I~QQO>=!S+Ym@E|GSuY73x)jX*$G7T!afvkiL5zeS=!;Yz_`s* zWN(cr%Msz71i)i(&BgBwsDDs}y1jdOd2@9P<&&LPC4?Yf&hn&q5Qn&&2? zWG_POxJE&wM6PvrtW6D^1sPNNM5R}}8BYzN{-p63F;xp=a53$@Q^{Sv&sX0K3+-C3 zBMOFAxxb`>3sda`3B#v@{x-?59#Ffa@5VMs#!OVs!*ykrlgtio2dI##vzZb|Hq!$0 z$pU8vsQxKcfKn z%)e1f;EH26YRu!Nh{aPE?}o%;x$+RtlHOxu;+WMW#?o%^I3n4M#% ziu=^F>N(Y(hJ*Xg#+b| zngH-8lyJ-E$DMeq3QjZ2A{8@u){7~u@^7_ikL|SPA9EQ{mkO2=lzk~^1YCqCeB8f0 z&Bq(>C*)q4&Iscm)6DUAs7D_@J5`O2t4TxYj5kq#gUNMIwm+>NB90UfjmZ>eQMOrS zW1DY;6HEM%*02b?2w)=mT-- zc1GOG3J6K>TnMMjAE;PtV!P!W znk&!oQa$r@^h`KXgi&Xz(-$LQz)Melwdj0He7-<~&R)8#!IJ^Q(avtvUA-ez!G&?U zswKcrYsqgG$$PcV2+7ISLEdLLi~!m;sVaC>Oe<%qXB*KJ6o(RVoCvHpBMG;qwiLH( z;vTFVG@YEPnHzUou~p+pl826tgHa0Q;Bqzpe7-P8DA0R;sn|SANkuL}QZh^vsg!%D znD0t0-o93~c)O=$TIYc%;N?(xb(82^X;yrrrmen7BqroCyd`3p#HQsDZ*EjKKEHTU zitzjG>3otWG$d6#*l3<;hXf^P?BXNBJfBj>?{-BA8Be?z z6C}Iy^{j8Y%jb8zZPXyienXAKDQ;Qfludl*wWNq$|K&EL^+gqyLO&YXmMNb0+&;(&6S0wJb zY8vFkyi|gVc{TM5d5S_)ny2dfy$=mFESQh|F>$`dJIN^`tHBGxBlHW%L?wt1AdM2N z@?PZRkn%=li{}^L%xABaZ~mwZrndqBT1rczF)|pnE2(T`J;!=)G{5}EC{mZ!TlnNR z+2nEyKmo#8;WKWS?j-XgnR&AnJ_}0yk$&xA^HuWHm2-Z_`UrpH4>iJfJoOwy<930z zx34!5lYD!cB#?;%%egpPYn#S~aOC;L8v@1;^1-*)t&RUjKSj-7C7S|i&5d_Y!ap{e z4@o<{H{N`0ym`+dZ$9ZaC5ml7nowJ0eWdmK%`^_Re&Q(+^~7HdqH0DfB>l(_5@S7x zq)5S-?cHn7e#@_GnV#@8&8A2@J_H9>jsJ3L9IWfRDy|3Vdf@#Xf|bh~-~)jBeMNoD z5+jqykpc(i#dL1pS74;| zQE&r{f%RSSVsIjqszdx2&5dF##~6%pqMj^%YIvF^&=(dzNkz6lAyk7U8UaLVH9-H2 zDO(=94(A2~>APaW!d)LVBeJ+X2a2(RbECP{YFG<1J%4fW6MX8oGiFj1jeg*dNk!OI z7_#}uSBTYBjvS>dPG-azS~i@g4H@I0P?B>(kuN~IXd7%9-^su+bWjVL=9k?l#Up^a zR4Z|gM1}Mw!2{}wY#~#dD9vB~3J9q!jmer4b3@zl@-nMxOdhR4Yg3N<46pNW^?gRu ze$vYHDoHCnu)_H1WYyN>TG{AiwM3fdP5_Pw^0MSFa#0mXZ|oDzwZ|J~*;vV|Z?YPI->;A1*W<&*S>7M%nQKMxGd%>aoyod%IEyZ zdw%fU_!7=ST-vIL>UEN5oGqFx{**2H2x;GspwK;n&isg$j>p=}QD)Mnj6R-WD71}V zx>S5ld7f|I{A#-)}Q3@f!e?H(mW0cv*n zh2$)2K?l(ZshY8twjI4H6^ru~-#Kc2?|Vi%VNU1Q?ts*@?;fO6B+eGUmdgv>yl9yt zE$Q5bv;5N9jlu?^Uz3O3374PDm4>?F9M_p-dKM${8E)`*p6Le9KEne%_YAkUR~w00 z_h&Yv`vZAobeo-#sm9p{Ib4u_=47GraTWsQ<0RCigh5@iheWZDT)Cd8$4V>ST9C;f-(n;K&yA5ENA-aK>|@1b@>9y8!hf9$I}2c;p;)HkuFp2z#;?@8$N{ z;#?~5AqEenpg}U`V)o{O>~|*d*Lzo`Xb-|i%Al72rb7{(n%GyCp8n>=e{wKQza!=5 zN!(VQ4c=9p_|1%6oGL%T@AAeM5dZsizEORRdHP4p(RZdgytZ=(NH2uJvGR21Qt+j9{>Xp%wXxS2}@_c zkDEwb`tS_nOZc0qb=Ab?1)~;`UG!00_S(c--kc!uL#&w1wpQJ!?0-HU9X zexIUi=|9w5V5wAMvJby6X*rv*!D3I_9yWEfnjKf<>HEfKmD%DOFum#cf?S`&=D4>| zY=Vx_&NuQa9aZDcDerP5Q`@dT#j|u3F2N;}hKrlYK!X3`_0b(Wb1d;`|DVukzXbeYw-kUNog9Yegn^7!(v3)7~%g+v?x!-Lx;?n zuKm2S!-1=J*K^|NU9_jL75ZodSx3sTy{qS3>nRdXt3W`Sq$c)@p4eT0AI$ypeDVGb zPPNbq{5iX&Fln`8uB=!F-Z@7uK#G9@{@}7oP-S^}`N@1qH4X)7A7DBhP<$6`3((M%)H1aVD1D*g)z;?Idwb2ldsJvs z$*D={0O2$&LSa51dV%drF8*yA99lH~<2RuVuuvR2r2IF{S-o{FXwP=10NB9f_2;b^8#zvEeKc8z$@JTF~wcv+YK!(6rd0g<7T zZtWp=G9Bg2dJmljNjY!!7=l%y=_xQ+C{1W|XqwQXOB2FfHE*VJuuY??fjgL^RE&^@ zt3Dz{XmMF*hLe6nloqPdcrNO(dGlPI)VgJV(1kbs`K3!wJW06Vu{vbg>ZiX%od1hw zSH4Y=2B6iUDCJ*QR?Vobqj$9mw>QP!j6ogJj@E znF^W`bW!c^vln$k45jL>+WMBNH<^9~mwqXbOWpClOzvrQL)7>nD}htUH&ti{=0O%D zTXcN~r{bJ+63#9fzYL|6jVuo~@6PYvg*Zm&8K^WM0o3WUpY=9aiI{yXVc&d>5kh@kJMo_ruQxMf{;NrFu_$! zl|Sf%>t0c%)+kf@(CThL2w^l6#)cX)g&j>{N3wGjE4Jf+2iwgUY8V%;0!N-9v2kP~ zFf%bWNfDd4m@vQpf33aGKDYZyw_7rv*Vnk>yj6A#{c*lK#*hHGM8h&wNmI#qjXt4*|p|7WhL~MG9IxUQEm`+p^kUx~g;FV6K z)krr!l(JhNNgHa?1BlBk)wkIuEAO5Dgu%Nkxd$@ko_jFIprPEhG&Ll}A$aG65LHU4 zGe!0!2X8q68XQX`9?<}%VuA&Ywl2N2G9f9?gi0tiW%igo5txylIMQ|N)boLVeNckG~5{lZ1NDG^W1&LCygv{du)w)5|C?qf6x z#v9IC(;7a@1^&|pk{p3Wxs`t}sc}`_M&NZ8QW7d*1-TpJw@%Ii2iS~wbwfd{ktB#o z^;qm%;t}SPo`eskS;MtLDs9JJVbs>%MhQV?*r#Q z68R`n2=S?PW~%nRrCd=on(>8bO(XW}Ac(YF2_iJovuX+TQP6pw5e-59616%7@nTFh zMTSP&67^4_`ZMOigE~Qt53wxS4(73H?e^Y}#4E?BKl>Y2*y}tgEhfh29TA--yjnzJ zOspB*BI*LslI4cJG2{cq2#9#x3{*&_QNd2SH9P4>c4Egp{g*C|R1AeJ^kwl>JNX#B zF=>{=bP@xAD;1b}Lky0&j84Jjq(#74&?^WySHhMB<*2R1kl-(@mpYN=x;xom9d#c@ zay2SVzoybY;)KqQX#1C4>0EJ(n$}Jco*X2Ko=0H@ZPR*dYCoFBd6(KF758x1!9nqJ zuR^~-x)pAG9wagh#@ey~iXYRG5Ft7DYM{TC)#6=<+o5Mdy9{mubUpc1lYc;NHy}(& zXb2M}B3xJxE7sEek^PaN4MEN@Y~c`p=<-bxis2dbC0>fnL862}OjrD;G6VE7SyPG} z@!)Y4>IGo8qmvL0NoP`VybPG~%*Op5E|F>=@T1_<$01KyC>iVx164~JODxf@6$TPp z+r6WX3|}Hvfxub@ivyA64!_iHLcA<@$bz^HF3?{}72uC;RoPf%lzmDfqhlhi32p&dM3 zd^zl^M2K*FGYF)R>E@dY(D?2oT+5`gb&G>K;C4U(1l2$}$dbA^8od_>CA}ULrf~wW zPR@ju>k@b>TXu$AhZnUNJpeF8rK>JZYu27JC)k1}h!pJnb8@t@(qaH=!_lS6h!h%Y z9nFwf+a871pvOdt*6(nA=^+^{DOt>nlpA5Bs%?4Hof!k!LXt<~$ih=&dSetCEc8r+ z<$aLa*4&EAYGy;j#&CB(|+{k6rOJ(UA%i9G}~8Y&ouFd7}O+@Wf<%CI=R z#-G)aQj0+ryPdOo*{Y}&csPcvIZy`hvd`v)MVQ%eu+ozf2VmhJ36BblaAD6aEK=pj9N?nr|_e<#-t3xRUeVQS$ z4J%e$!bXlcwXYI*%3=qXHR@81p`s6gwDyGER(3)dzx+C6Un~b!7g|&D3Je%wnq{dl z96~$HtEoXKj}Iy!`h^VX_$mT-&Ba}@RD109K;|0H22FS`qKmSHT#P?wD1uVyGrtH3Yd{o)E1zAgGV2g=0}PRis>sX;`l2z76mP^p z4I~#y=8Yml`&AzoxJq*!x*j;gj}8iK--@?Ds7gIB`V&Yry=;!HEj~Wm6KQE{Vv4-V z+&Loz^j=~RMV=!9Lv@9P&{y8yvh2t5C7C?JO&+O?X>uvBBMA>0+V~%kZP^M=+9?2lgpy|(6T!EWDedG%03Cg`->)DYg?GwDEvVp?_F9A(^7ZUeR+8u~%YMp05q2L@@yK#1)ZXQZqNh4gxfmkU z3had?Dp*q_6J!%5%fJ>&JkeNd$!ip})veBK1_q8}p!v4md@Gu7HS>=J@pAFqL47xL z(HAaPBoOO`6%D3;>?jaqXy`Aj&WH@ATKz}$i*1wG7P11(!zv~-+X`JV33)Iey&i7< zat}AJhXAb)!v$DfglU4#vAk8Pv%s|x>Qa21LlhI)1E|ytZMk8rfxC8vO z&BQnI>LL$uA)GKxC!O29B@;D)h;gHX`&YlFfmhIYBvQ<3ggW`(g4zUvP!ocNJm51! zs#rdrKy9S>h%Q9L)aI|Ut>q2@q=^WNMBH(d0V#KGY7o!8mIqTW>?zI~PeehxH`r7W zvaF*amJdt~A|23mQ5MleP)c-!x0O>0rWsMr((%gcgq@jJqsCwllbezv} zv)K18tSAas2?KqrjB%XRf%ZCLGiZM1Gcj3HWWfR%EL8_iSu_qd8$sGKv8qRWkV8#G z7;eY3A_f?m8y6%vS#n`OlTdG-PzeSHgJb2`2nBQ16u~F9HU51K-IcqV2SG5S)xv`` z6H^uTAmTF2W!x3Vlkrnat2@|`ux=3p^^5-+&n+MnaV+;C-m@%hUi4-zLMN2i#K$=a zaw@i=O3)Y1l~l&g&ocB5re2;D-HSpU5f8dTFoR4{mi%_MnBVR|8tJkJ!mH*uXo|21 z&Ld0+T>%t3OlGsXbKybg89t)RTB9)hTgwAnp}@;6IX)hJ3|M}ft3J9^4qc`LJUS*B zktYD$L#mTqbX6fmZxtw!Hg8bu2p`k;q}3BoAilGL)2ER3-9Y9vaGJKqqhX8mxLye8 zL(gR=PS1^%bbnl&i0Az%Xs=E+WR_p3H2t+94hl|7@*hS%$Vi&uLU1a#e!9bsR_c`K)D%+DkG9yo;^65ipl9I z>^jq`^R7}k=37PQUB!X>l&-)n%)R=+YAU(Q@)6?Iv?Zr?YFp(>EvKmva7#>E3St@v zvR$q=V%pNxY?X&XF>m~Z#p=VwlEk!rOH5-UPpCA)a0RPrGV#}k&`#BIVb|k%mRr0vC}1h9lTw|6b(4eGZJP-kFIt*v6KMT zdn#<6k89^sXw$vu56=K|GnDDi`6fIBo+2IFjqExpy;ZGA^h^weRhzTJ+Lu)p-B9w~ z$m!IfA_nZ#Ohdu@7_-GVAjsUtL9c=tosO)Oo$AuXb3D=06Gk9BW^74zC}vWtP+M5& z!IUwCDATS#tX)rE;1U1bxyIj>HT;ZVHzDG;WE~BkjulG;Y&FjCfw05(=J1tcyq3E@ zsnX_9Yfq~sqz&`|@oEgDuV&HrW^Y_LE&y;LfUrRNq#l4IO%#4Mk3DKkWe}`>!}0$# z*mo69)yPQUUXYZi;mh(kqE74)dV<^~lQLULBAaZ#XKTXFf_2Vn|MjacVJ|Z=rFAev zc;{jv(6}rC7hTDFBnA}S+h3QIfl?=giv^ZAs{TBc-$hIal1WV`{4De=OPnm4mc}`e zqk^;sMNO*?6-Qr$g*oSk($8Xnpsz+P`7qId|CQS@(_n%K0?`Ok zI;eI|bUvMF7}0y1g9R1E4G{X2r6Tk_@@9|&;4|piJ}^!JOyZuM#ROsijqwXY!+&YlKnx8-{;oX_EwA1FZ)@5QlSAnsL-qMG(B`7jQaL(8@q% zO~J2@=~S1N7^==dqd(rH5B1Jgr4YROCV*Gk6MNr#)9RmwULKG!Rb+twMWYMiRbq zM?(>RgU-n~0~wuiv|2y|jQ~J?a!Baz9NYq>?n5-d#xQ!H zJZ5nW(%aW6Yw+`A9QIm! z6wqAR21Uth0B$__v#>LOpMK=`F=VqNq_@aQXeek{IQ)Qo;Xowu79pVwWAsBXvV<}3 z*LdO1a71c+u)&UBUu~Z>7InBq4hqIxg1`iJS#wIp3_w%ZE;Pg&O*UH`& zAno&s3*3W{g)TvA@|gW1ldNV)1Q{TWlBgZt?qlds?>yxk*Ox$`xdTBeT=~s@C0u3U z%|-t{c%jGbDEb^JPV4}D;*f6Avng7HP*CYqLyncHq1fT$Q$Aa7%pOktH`pfc=JMDZ$QI0~`$t-;=d&0Zmch@%@e z&SMTRYNIa9gxft3e|Rz>w%e}`d|{6=N?@dy z`8?p}r=Yegl$4gn+7N$c3UgIRLEwzJ#!Ao3;L@o*LdYx7@x`a7L8AP;D1@0E>p6wM zUIAovF$XcirSR(dAjXvXX!)R&5VFBU@Csp^5l9#h3ZrW?1}1joJ|gOoAGEEK?Tvw| zHluD(P0#xpl+^u@Q=*O>kBupF6T*}TEzl#~l9+-_9!Ro7!dgsGgk%6GEiZvsNTky% zhm6N&D$DlDTTlfhK7{%BQ589;oyo6S$p2rK^dM_=7L*h@kzr(v(i5+-#kC=sBJu$5 z)V{=4sbECUSzMOyQsHtX5*B>$!ee~EbLd4|n`qk^Ktrz*g>1W;+oi$w6z#ECk51Mi zZQ_8vQq}Q6{CQduYm{gLa9q|aAR$v=G$MT3q0sE<`?TX|MeKmj>(S2@h@~(YN`&wi zbhbb#k7&m>dIJ(+grKJUiyWF#crvuP_SurY0$tdZg7vD5=WU$4hJxtiHu~YXDMlF;A3vC6{)N zZVe=g{*$t;bS@Nqyf82vq!WKFSDu{yGHDaKvI;|RZ$M1%Q&tFPtMCI(%sM)u1UN9t zkdn%He9k(iL#-rD*i}j?Q4WV!wRKIpLe8>&OAmk0< zLvb*wUCl@`rHo`kG8M()4>&hw^g4hIjH;o80t(<_Gy;8VbeK*QcEHz;90Ic9&<3jY z^pA*@#jy+&!XpfDc(DHXR=C!|Ho#O?OT5)wS2IFsh=k|o)5qjBJGFuS_*!x=v6FpSW7fG0aSci2EWAW6DK^ze$tQy=VGgTIBnfYx+ z_uTjxqdS>|P;;EYO1&4SK>MpwRQqraBU?{otNsW6Fa=x80QlB&o}^hV3**w9AKfN; ztyPg64dwVp`dg9ZF4M|CVqn$(3dKFn=Qj~x5AgZ!)4nO&i~@0f{Zq0*3Bj$1TC;&a z&0j$OpbclkxlMgETo+l;nm_+RPS(#CQ;t6p2Y7esTyc8;n*VE_GNkA9U zgT{f}EJZa{pu(b|aoBl>`Xif0R$YAaQkNd|OD?w(YEWIgb16G2u4A)@&v#%Qwuo7Eu1-Q2QV$+FN@8-WM3o&F}7X9D@X{AwTmCld#-26yrRYc2q5h9k9y99cTR zj3k)G7qC&z(D->+Yg)e{69wb_hJD*Ali4bh1vg`+?IVO_17J_ew5k{h8+%eVwXDAf=a)aleSRVLvFgV#_*aiydSp~&|DCMx%pE6H z_1rIp6EPSVc#Vt<3^|n%LKu%WWL2zajeqIvJg<7rd6hw3M~8%L>iHFU=f#ts!L}9_`n}m1PJLGjS$H;t?S;cu*%0BdRr;KW zHBlIqCtzA!K$X*$3_Qzk;j#`}g(o!$_5<$?R+n-LTg$^V>H2?}Hx|I)4*N)^$X=6PuT>|*n9m|@eLyRkX^Mx+1z#pb`eI2i86=H1Zz|6FXoqj&Dc=DpDT|5|Jw zj!J9>!`;}tADVw@v3WQuv1!iTF(jl5`m9L`W;q-eB@JJbe<&-L5MVKHF8xSg z^&f)?it?}PbR(VEq_2-#n0pKfL${`XGzkt2jn6OfxEQCFl!drC`xp;MZ>A4AzlHaB zG7F6hqQseT#^`k&`NbvyOH43VEqgLcb+3S;v(qFg(knCTqC>&S^Xb2t&_cg|jd=Gt zlt}dFHoCu~jV%<&d#VHgd0r&!D~|9(^nQ|4ROq*(luCLZO`n?xtmMLrWOAqP8kg9M zRE{IMHa!o;LSVPR1noIM^krJK1|t6C_(jR{da0}oo{9_JJ3m8HH)e*w$CNpia1b(diAwuy8=LS4gbERL!vwtlwmi%6oeg5{mGS2Ny5W*9AZPWN-eZz;SB^H zwq7#R;sh!ud4V?yYDx8!%X}*J8}RvvE3Vr1`s3Ble*+UI7Gl@HHg8h3m=K{HcGvsD z?gH4}U954V)Ut*sr~|649-THrP-^?A0JK0lYT zJN&-K;(IT#5qRV=UhzDS6sar*+8nZ;>+rQQSIRz>8I{~mtgoXc87t=M_3Uyg3M$dv zhyS?ehcY$>U6SKWmo%3H!uru`@`uX7M*0rzf6bY96JGhF+DNp=z7*P16OHbr$Srik zs_>?Vq^rwF$5U8>9-b}NjX5mteEh{0>wr!vEe@S8mN)W8&zJj))$_%Eecc#d&`)Ua z`Hk%1a_KYix^b6XNXRNU0J*EeVOV?}&Qf5TRr%(rB;hlQpK18i#euqQ|HnWZa>Nm8 z@FJ{e(lcCe9_lGd)ejvv9rz)z(=@Ek9U2q|-lyn8;HV%jlQTgdqKSzYaP$4cDWN$= z(_SEtki_X%MFeV!78z@=BC2kpuqIL!K|ZLEs3{6b7=v-kg^0%O@+^y}K{zChqONN=E4*9eXNOpH zPZWuCB8I}#C5?+-OPWG)VX3Z=hF&&$%_=V zi^I0WTC%~Y5thv``Ver{AO4PzEyXIy6Dbai591+KqS4`HttTaeiP&Q&XU?M3IHH#1VH~O z)VMqSn$3R+(r7;YlgYRNHwhYDj>o{y2P|i!9RN$pp{$sKkysLFz0jqSZSGg;7!)W~ zI&(%?w2H<923xBXwrVQ4_QUK6ER1mE$W3k5bSE795st7XPdzmp1A{ZVYDi&DvV+{u z8l}stDd%PE_@DCmj6`B#A0*Mu$TxU$7W#^o21S10MO7Bv^%)$jwX19BI8mO$@+&P3 z3{qeL3MTxSB3(rIk#J4uxmh#@1$CrZ2`3{=Z8RS4ZX*tf>bL6v4#d+J-5zd{V zt=xB-xO^=?#`>Ac{iZxVfJRG?oz6aSN6Z-G!*#$745V_qmO# z|7wwABdJ6*n10=Jf!e6AIYDhZD)%JHx9bVe@%8 z`yK9I;Y{I&LZ!TXK9N>$K}BIRgx9A#-;%c9lGbk_7UzUk-EV2XLwJ!1Da6TSihv+| zC=~%XnS8^CAg~=KJO~}LiAq|KWcsZ7$){zi;FmBr=@{-IvQ-PoM+66#&s$aw@|Fkurlz0WsM zH#FBKYBdjd+cckVBCt%oYZJAaFZe)ux*G@656!iSTFt{IYI>h9chVfHD;f+3EE z0kf(99x(e0DVPoZ*O;xZ7zf4h;M3^30$Z~|it33!)W#@wHwo;NpI>ehE~EM=Z~(;K zQ_*yb)OarzrMA;Q-N>Th6)q>!Ef+9nvUyKur)JXqfEofg^V9dxLECtnwvD&$<4l3f zYU6DtnO&IZFH-kea92K;{K`UQZ3~YB1k`}$i19KXfEd>uBoHh-Xb{1|pSPhqgDdsp1AR7Zef?1P;ama z#4nX&L|ed05AY~bMg#D7QcFhlTr9-?jn1Hz*5NRLkP6g2p0GsrEJ?vrgm&~ZAe<03 zu2*w0hIq@((A}ByBuZZ>&B^%LCGZOEOPNmd`L~msFuMOAO`X}!E@4ychgAYK z7_K=*K^b}4hL)}%c-jyQQaTv2e67Orqp@)2L5*c3!v8#~v3am?=8YPg&(&Dp^VqG% zYN-dcg%h357EVS4rme|XaV35!ME!Wee7?$`q6e|$|6t?zSF&CU-BcBV+9Zwz)#xSx zHdPGUq~AwG(3Mn*Nle0X4ibq@l7t5&nYYVu&GD%%-R_}2qBd`>))1!vk<)mix)LDHjA}>WR5h4Wz?OY0@X1XkIKvrQiH-b-6e8yv98xm7DFjGzjVFyc1Uf_?N?tBH zPzdYfEY2kmEJR@ko7=}OjFjNayk=HJ1ja^<`jC;Xv!F4vH z%;UbAIz(F$7>Z;%;bU6Ej*9e z4at-N|^ptoZcEzya1VE^q!9 z;EObU%5*$gu2e+*DlwCYtk7H>iRRsn?ev|G-|1l)okq9}rwupxLZgNgfWCh9o z4>aBBHR@3%!QG?#1LE#T9l9fO1!ObpyMPSINTDx=rtqC5mrSUuCTYAcOZU8RTZMW> z${r5{ToNXbgA?m&5HYi})t{jU4O&8G4eyqasUtKXhzOaTISp?MnR|-OZwr~;fw0k= zv&S*A!D(8ywDy7Td#cUZI`G}NqHr%6WGyDnBdK?Agkl`U)tVy|Ll%mr=A5!jYX zLFlA9IDI^I!6{2LXpgEh#RpO578XUJ(Oe{_N~4;Csy(AUar4%ULU&pHl#e2^!F9J0}LSRMvo?S4v` z;~Ro%bMhZanvSU}!&|j`X)YJ6I_p%QN~gDDV_!kofpV{~F2gD*)reViTv2O++=Ryj zsunvDRJj<8bJYhvMwu~&rEM2$438=iyH=6c zBJnIWr28OmidS>+7YDZl*@;Nsr}2>DYEHKasu?|co^T`JdoNDPwm8N4EZRIk5_m|Q z;sTpT?#H-pJg~Z1E{m)a!q=I>*oiHnHU7?%Nut#3i(qZnQF8KBpu3coi~rC^O|FxHz-Yg-?LJzOgJ@tgq3;SOcyU z%S1Y8VF5R&rDbG6sE)_t3svazc@9Ha(a{qjQL4iGrU=y`up;oUO_a+5Z z4vKKqnA!&;siJfbbJVG742JBXkxF8WAvK}oD;rZg*3%!sv0cM~VX}-I(4`(DsRHK< z^f8Eo#c8$!gH{b9Dj`rdRy*Q#2_hh0wAqnU)>R_G^0`llkw7=5C>8de1eYi@35M%$ zgH2!4?t?0Bqz|ifj)9_Sl;hSGwKnH1N*T<0i#k;kOH;E&*@o=cxJBv9oNL5wUcoyE zHdH#bPX;tEiN0{JAM|)GCh#MQ2{Jb!CaBJY#RSmI%IPqeuW$;-0KMVdeC2!Km!62n zV2^7tK|;?tA|XUe02zk1wLpJ{jE=!E&IyG=5%kC7k93BO=unFguGc~-GlL0P|G1SZ zJX1hSh3BNzps>KQg_Ird6mV+#|0?cXvrz>+FnbXBwrVVhrD zGWj9R*-X%(mFJr*k&iVjFKi?K4n20@!J35`41vr6Z!EXqLR% zDYb~{mFz~IXQ|_vm}xZ-*HR_3k`0?9lz}^NvL2WUK1i9Rc3TY-wxwvvETN%7PfPD^ z6ux!9h43W-74X1xWiq`eah9)?yG4n^;_c{onppF7<6AM&@%XK1nlvDb4Uh?l{<%g* zrN}=G5{tfDk`dJe@ME?Y?uIkvi=nhrrd%?+U><-LYGzDE4peqEjG{Y!^ziWov}h}g zL1}DBn6%t^zd@zikZ1YR7=%FKa)MPTdY7oSUU}$blB^MwF4QVr!tE%^9WZ}|biB>k z8j2HT8df;v6rdMsHz^P6PezEt>=;l+^}JEQJ~x~3!3HS#D9+7pQsV&!JXB_A$lh1+FaNe*)<;iZ{h=`SE+77@{(>!MEyl$b4) zNhG!@7)eb_h0#hD$zfP8B%b2H?K-~FVa}X+Dx{kYnbL^kRwZ096(ai-!7d3oZd0g> zv}nietE`{RHY&EaJ_}JJM#&y1DGNtL$;=g)!Q>W7@<>Fat&nZ5MuMq>^K;=dm-`(BV5J zE1`xA56qyMXi3R`RQ(jKcOb_rwSVq92bmHr>Z7ILQzZh9hYo~Yj})L?JAYAlO~F~9 z8oIY-N7@b30W&$a2V7$K;gHV*K4ppCxP~pEIL3cB@n1dgGdv(<7mCq^`@Wm1zBXX0 z^Sd>lTLTg0=ba%?h_X&aXM1Dy{EzXV%5!7JLZ;jpcC>qgUuVh`GcWPdxzI17jn-L^%+>T%Oa*PJs~&dKs)jrkKn< zDQ;-WK4{J|h6{Kd6AhoJ-{iy`Q*XZL^*Ad`amRJhpT z@Gc^zZoEKvSKomk$3(e{iEc7|_mV2&9HbApV6liB^vC+~NU@Ki(L9wy#}hqL!)I7f zC3&+vXsgnY!?5UQCg?a`-ysKlBM`?INU>ws;Ob!ZD#pod4S9~CQ9uX(mdGDD%HGZ( z@HBvG=`srg3;oaOxgvjn5ph}<1~81%3UsBDD0g?Fo18o9;j zVxdhQ+bp{cp&<)xVk1h-xTAw^L_o-5Be#MgSN(Ira(X7^%l8i$`y!AvDV01!3Jk~1iti*RI{QP{FerPwpPtrxWPad9*4mduR!IoTC-B>93d+_<(~98r)smcAprGVEbHwArZ} z>7!-Xt}>%&6UXS}%-MhD;N#*ZA&v_OY2hXC(l@yU2m{gJ2{3dH(Ed1*{Tc}|*4m$( z6+!bY;07#ZJiRdvg6l#)if)-apcSZ+gQx`Kww2YLGWnnhs3YJX(H4vyfr)_Fd6QXo zR{w-ARB7RT%UMP#h6pG&EVlY5S?W06h@b&-Xu<(le zmTjm29Dxv7oMsJF1Q3I#$Fx1PIR?-n=#P^d4KWiA0L6oFiG#=@EI+bTL9lrs`AqC@ zj@;M8URWQtF$g(+njO1y`#G-Qs@u<=Ayu`-D90H!&=jqncE+w;6IP3^dMh8;W7y{s z+Nk7p2Fn%wAXJANCR09BXtpxuo=&*H85thYuHzA@XLi+P)%55p z^O5$LL#mY0IDsD10)u!%k45-Zd(W-aG7Bw5OKF|k_-5{RM~{Dk%u zE1exlTCzE6yM9erOfutDtxKNT=`%}mMT18)d_F-Zmgq6}=>2a=T;{|VzOUt$RX ztQheD6acJjc!9CnQ$Jv$`T@8Jek82WLj8b2?Ci?=0chLkS=w$6;HPArO9fEPl~Mt@ zl_)Xn;LkmB*Aghl@EJ~lcmzuj2gX#(mg-Xr0G)lPS^ypY#`4#LrFiTJz9d&sD@<(E z)C1d~tl~bM009KzNkltap9Zr;Qb8Tn#1EN;LcD?^>4EKWk%()IS1{KC)9@TQPe7-O zh}tt6s2W%pLnmqnBTT$K41P3DEQd}gkl{Lq;t;-GZJolc6r5O54GgP~7m*R-y1**d5D^lTQNe?0l5rM3VJ7mtw?0(fUHEs z(cT6vRAzzK8R8qs+i4&_rB=Bk!=I#CgBDiqRd!nVI#+AMUuSOk^F6;ohClrIb`J`# z!#0%UZr>g0S5}jZ^UyEBky<6d6|8RdYl0w<1f4I$z zCfAW&e`eU@HLNK6UtgCQinqjYlXU#au0p$77NS5v2sF^vcJENv1GBuHrxdqQfov1P zXPga~C=smeJQfncwCE@f%02Q8M8Sl6#ncIZIPZlMe+Jq^Zr{DATa;Ym zeQmcOB5!n{i@fy4T7NYcGnZRV;u-9$tmXx_wvc-jv5;w1Ne( z(+Vd3ZN`ggs(3U*h&d|A>nMAA@&GlNTiWr%JIR7 zfvBLv630lX&#t`Ck#m&z9ES*E#vN$T5lnE|W;xm3SgwO+KsVVbv@e-q9lwX6N+m42 zJjT`Fh|bPd3gMIcLaw{01BS!|2FZ?!QG8>9g`hA*fDr2vPdei6{G6FRWs$bRLSbN3 zo;)J+8Bu&ViFS*ZxMssU^fF9dlV!{f00C3(MQLawD_NxxS;>=@58G*`!c-H9?wq!& z{((A^XH9y_;(24e;6dY~K5q;T(UT8t#rAQ?aC6?6f-5Tgr*(h@WZe-KW4Tn1Lk<*# z<&(v5i4knXIp$DA2kIfU z5Q82>7Tr<n!2KmKzMz=Nzd(xSJ}zvh^`| z*0zv|Mnku}q{}Mv609b)C`S${llD(_=O-ClZ4JRN;^w(NxEJHr+GY`M;WCqIBQt`~ zAqK#yJ4l*J5UNv|KpX?-E|m$dU^?|_7Z~#^j)@(8UD0sPv$5izwPx%W7SfDCTp#Y!k&j zg*IQED3Tc@{w;_c|JgRZQTW;xPyZ?L=iLa^c_%3X?iIU%)nDxmGyK{-eOx@pt~4A8aYIb4gU+=D&9OH5c#fY&rLE z$`k6g$hF_Z)ZRbN&J?MA3N^7J)FX)7eXZR`VO^ke&9tk>sJK=ia8bx zx(+IAg|+E72;r!U=AgpsKTDbkw_XdXmYXos(Z$6Sd^05ak6{Dr*@ny>$=XE6o4Wz34);E)f*UIbEQ<1 z?v!fMdIRgxMyfG~VbkhjE!gDsL8@Y6@Ii+LT}80Lma82Lvy-Pr!9h{5fxri8cP`j~ zPRH5jQY0kUAZ#lDfe_VD*_p+$#9>?!X>yRhf_Plh1c}J&h15*_5GPDx>$y350$^ZY z@5+OqTU`1W#FB3HF8;&nY2xP_dZk?aCBAm|^Vc#?O zgU>gFK+MH^5f+7wyE3tcpg1Jxp7UxYt%unSt4|;Sd><%JL8=*HtuB-I8a{Q{;cNNi z{Jz;M`8>Nd`&)bvmUu%YZya{^yVstc9S0dN!?0h)=O_52SVHwV1eb#xSUx*}1CS$m zPx8U}IDeZD!u-E~gTij`Yw-0FHF1RV>)E!^>KR65{SgkW>&E#@Y4!f!7S3Oy4pj^1 zX3@yx+D^z}jznYrYWf7sq$tesNs5kD$gXRHFxlh0O*qLJ~#C=@IZX z)f^NeVNrid5JARPoRP373D~|n61~)D>z0NXqpf=gDGUZ{iYCo4@KA{od@SY2Vto~5 z4=X2Ep$5v`kESJul_IZ|`DWA^@G@8UZZ*PJ{QZK;Q2Ps83$n9d1BOSM3MsXlkUp6r zAnMl7DuNU+aGoJ@95U!#l1GqB1i8C7A_|{yZu&tO1Kht8WK>)_PQg&;DnzcMQXPe1 z_cgL{gP7= z+hnngd<;~=+R-L9%3~ur7tsB7HgYRsa%$IauafL7uP@e{&0<1^3z~a-b%2saiizbJ zv_6SAaKLwm-<+K~c=uaH2S6_E;bMH}8a;uEMUQU*;nGgihy_Z^5Z}R)A-};R9 zI6=K(kAnu^ONRDN^E2jyGkd_8S?{2%L$j}7YfbIZT3J`L38df27DiG%&Mu~&-rwNH zjaX4|ggr$t(cxKDG;T%a*!LGEtMLjSfc8W4^;r}v72#NrX1YO|;iERw$V`DH7Xz>8 zqXZi0UoFstQkN*`kvL0#AvlNQA0W!d+eXMysJU<3s&G#%198P2((hdG;78PHB!Xat z7Yn^^;lmY)V<@&FjTxH)DJ=?Z69a3}1G$<~vN+@)5M7WcVheD@QVc6IBDF*-4qDAC zPK1w>;o~5S5x)KH@PQb?dLmLxerlz#(-)8`@Sns-3YqFYDm2aGG8F)4Ix^wj6o4$R^OJI z9NY_7dIv}|e)9w6>XMkILivUEj^nr7;V}Lq#D_XUS2$}?T*SlJ8>07nQt9T#x!JzT zC%Op3t`yR#$tK(5zJP#Nis+c{cZ%r3Xhx+}0>uL#q~DniIvf=PMcZ>meT=q0plJIJ zaeqo18HqGmP^Zm=QwWhQki5C7W$qO|S`=MSG52H`-jY+!&Sp3E=!i#<-xX<(5TZzX z6<(shk}xXVP~0YHKg196MkI<-UZ@14oE!^|wC@DmOA;>z+%QDiQy|n4Sw{WO%gT0h z_IbtJA#=-igS-qoC$4LD0D6(|50tc^CDOY1l*vgTGPa3(PhU+A1XvO++0)mrP}o6T zlN(VRsS{=sJpw*gsZ${ur`^iioZrN>T)2K%eBaI4vmI?M1<0&tpYZKZbyS_Yc`DqV zQlC1=(lH}1Y|^+@d-98Gr>-&U`i^s!RHs&|8NGjptRa1VyMtKGJJ+*M;X06%fmN85 zN(OT`VYBZ$C9V``XVR#DU*C_7|pzAiaMdnW+xmp$HRENMi@6jBoG zrVs@Y^%VtyXvxyXl&#qF(d7K(q8W(e+WJVja6!HvFZUVw;evTXGxB0z%>_9W7du^i zWX|V!e(nQ!sdl^YVlso|TReAkLa85nsn`M&uI~DF?-5%L?NSkiyLQW=b75N}uy)1} zqRpa2z=IGX_J2LKz6N@KhJYw<1sezItuU<~|ERV?aI@(a^e1mJK0CFWtz|*V=dxU< zKpk!{ z+oveC`7iA=;GOHL=|M19K@S!TX{4HeT|hXyb=~a!y6J(HAja9f(tfs6hOPN~Bg2}% z7sJ!Aky+4FA_cH`K+!YB>0lj{Q~d?xS0E(0&u6@A^CJ;SUkM{>tPE_m`A*`;+*BnU z{`#av>`=T9wL0WIJ0 z2)hdj-&0!aE~cM*SuvP$3urnHA)M->Tmz_}DBy$J=bJP;N#D>r5vA`TD5aDs)2?th z{$Id#k>G|pS5@9vm=Sji@QA!SHRHhTTXM38HT>;z>HIAO^y|mc#>xeLd=&QWU(5RS zZCtnhwWMEPs((%N>l5{_v7f7djr<&z0YAs_2s~H+qH;LT)xY|FuKv~Ya~iqE()Dxo zuguTYzj8lU|4Mc5AB=spFM;qPd zXru2O#h4oOouh~~;hSB@&tZ7^RrwMiw$Deqs$R~hOc`zdfs-U;JLSlr#jCJ)@d;1D ztaNks35`ouuwMvcFwJJvIpWm(I*p{PIGB%bpHG$F%xn1mIrxrd=~C!qx*|VMu`aFp z8WQv>se5C=2<1Wd?plM2gSPsKb;&;&Wb1BFA+OGb_Oz*6TnI!kTr|X&tH)+xmrr0X zB+_Ba*1;8G&t)h>@KDCqt^xu=3K;kD2nT3I7$YT~Kp@#XN?aZmhXaYinkOO)UwWp^fZO(iovR z50gux#&kD3#W%{j^X&)tmiyZe@~z`|7y)+zrQaDszJdC5TsN9cP#J~Fk`Ju>QakomJRSC8JZ@<3gk-F7@OY#pL6C%m2D%|#_66z2 zZM7rd83#$SK^Djdw*&pKd4ZjXK|at7IhuU$^N=pc!RLUZ^2H2C0V5YEmqpAZwgO6E zCr|=(gEEJL2QVpQb8GdHe217y|6kOgc~B5P7Cu(55m-W{zslJw=&8ct{usWh&T zE2(rxp!O(PG2Z!HTG}!SRxGp9%Qz^&ie*@duws9l4Y`GyO7!7+Dq#+wlxC!jY*JM? z%b%x(8QAE<_yrUtW$ca_FHY$IF9Lh;adTq3x_&_k-aU%E1O3Ll+g1s#y+bd9szRXC zB32p|z~V-+ii)DBqO!`n7*t}W#p=K53ySl2QBqx69&LLrp08dT&3H{exz;l-b>xt z-{BtL9_f~^R&W^+PdMSWc&!8fp+?$#6Fh#5cBEI*$dpkjihO|v>H}+>L#hZC4Ix!y zc5tzZ6@q7)Qf7Xlj=ow4k;Rj%rkVx|_h)i!&)v6eVeEkOk0v~YG z$l5R*n{tV!infB6qFj!OkSc~m&0|mxXt5LwMMPZ8toLF2PlL+a28))RxJ*ii zEz~Bw+OD@>8}YJUb^%d?nu)$M1P`LrizMfvlNX1T>aZ&8SgocIMVB#wg5!(6IlCu( zyg`J4UGK-v6jLZ1E4DvSxBaLZ5Vd`gs4c{aik|5v&V!9h>D$=+OM)~$M{%m+2Af5T zUXTkJ4Y=Uw*mxuN4Mz>HXKxdlzEZ&IwHUwMs4h@)H-iMh-)72JGZw~=KF2g5a!yH> zBKykXZy_*Fi@#I6disk?ja@xujSgZ}Z^Z-%dwEoW1uA(0!i8+JT0fTjBnz;2oTva+ z7yS7L5pyU8KK&s@nTof0V4JYuSs}S)8wZ5Y zhObYdCRTP-$#5(~GKGkeiuBJ(wG#G^D7^R3P<-i`jzrH&Q67MQ+rP?DTj*$)Ro|1) zu~1eWFIMQ25c;_w(>?=nPg-T`Bq|9YNHEYDG>ZmD%ig6mQy4VmWLPUU0wjJz#e9b+lT#x1!c;|Q8}2yubY>i&pR$>3IXh&U zQXbYvQBnkf4cxUb(TmC#*c;TS>0cTyJMSx0c@CqzWn8~j^Rk@4XAPrWyS!G1w1@$E z-!_=wNH2lKOD><4fiwN~gkS_2*g$LO26Qp?t_7NfAV`jmXaFB>0CA~9-QmYOjq-^D z-TSQ&lka(8E1~W$A+WXRpC($0qzGu#GM_U;It(fWAo>E}ir9cfXI|^T}y+9v^Wqu)dBWqKUCCE?&SuugPpQI$chi&Wz7DpE%EAO1m?gu8jLspF-%IZ+D| z5vG?%vt4`)*Sc>ZE}h%L`9~`9#n7_x7xTsA04{`a=NdPIP`)1Jx0|CoKn1(APX`Ap zO-_Zg;!~`2aCVq;Qhk12IiE+Bcc{yDjwjVuINXEykCextM=Je*T;TaOwexclKXG>u zPoB*eshzREr-?7t&IiFKI^*v1X+b$CxC--#)l!A|B$&aBJa44_4N*|NpE zwZUGy@7yc^;B?Wsk1WpYT?OK0T7BBeV8oPDI;tu(TRf^NKu*Vnu=V4Tc0joCueEVe ztuAFyOBZ3`2Sw9eW|;R7AJSp^SCr1*m9*~(_$|*CAQd|e=KGFH=VyojA&1dvkUtAJouboYfzqTy?7d z{#R702M_aS2^4_L{F&3xTTh$`Pn>F=c+bDk6Zkpf6W`eR#Cmw5XrB1+uj&b+TKq(- z?<1il)oS8se%mc^`hON8)@n$trdawTHvITMr%SaW2mYNits}8eqCDfnsfvP}OulLA zkxc)c(LWpS4Y$LYBThWj+6COsLdhZ*5NJz6ZJXkr#FhmIkFxi57y?M#6>h_>WG}cX zZvT^9HD>q+Rir+2lEbm}l?{IqUykb2Jo|yJzvsq6WsJD!%QNrq+uoDcCzL^IAz{{Y zXoIcJN2eC&L2hZx~8E5SCc3z^MAblCgtqj4sKfU~_eg4dEy!?GW_tP(_ z&#TP*Js*1E9w}NbG3RQth7kS5tB=l^c}zTO2uS=rPfZKNh5L|}Cy?@~xj=F|o}S<= z9q3f=`s+96U%x*83g*`h$cL%FLU!U;ecUNr(I%2KSFvuq0~6Eqk2%Ls`TloXZ|cH^ zCH{e0gAifqgj&^wruy&pY^Yfept+1`9qdK!eoT?G;0IUPuTU08VGl%6AbQc66uJ+tc8F>&o3wI}_nwWF9J6M4+xL=Rz|!?UO%$Kuvd3MRqCI=s{w?!#ho zp%}Ti^&~{~>!!aeB3%}`RHQatQsTA_4FZrF zACYbQWfQTp$zcF!4f%JFNV8Q8F&XxotT(JXT7Bi`cps9n=@_g|2hk%V@!CgH%>R5|N^#Thc^+k&kB2aA_m}1;PgIvV7PQXa zWu(uCki*y4iNlxKw(Z2>QAivf5!g@;o5bPK)e?s%Bo5=?89rQ$NE-Ig_O%m-JFN`f zcq&kLGBrh&3A7$mlQ_)$o5bM`1sAI?kzuThxKvuflK64C2EqALPvwW1EZ^La&`iyD zo;ciJ;v5G+#`zFC_v^=Agz{gjEG49Isvo2KIby06V+!dXwMqXl3#8SgpX84V#js8K zcjheAbh^n|SRnm1;pgD+rY94A)=re5w-DmkQ+%_D0o%py~Vc~Zg@+d59 zv(ut_|5HN45E9-HK_>XU1nPNUN*HWle9SShP;5Wja8+Q?oPE;FzfB2Mu;tT>86a~? z=)+$`5|7H}46W%(tM5l21!hgNKMZqo_Q#LtS69gYXXICBL@$8__G+bC1uUEt1Q(>n zJFHMrkp9V7mOylfS3}Gx6-%Tv4T?wW4n@AGi-%Pi@`mR@ipxkJDrv3QbY@MMnzoJ{__1d`3yQnQYEJs8{4~lp8S1MX z``hQ4W`|(-(Tsc%X#%3M_@J1y>>>mUs7}jKwTh5n+&138aSm)G`X_LmX~FU@Cyt#J znxE!*%wQDg91A>v20+yinMBv(L=d62upq*V=MafMLV@c5jbRHKLp#j6#Zb><_(u9= zlg`1R=%)i-OO|>>WLOwz{R%z}n!n^Q9x=}OZ~+0a8L&;LDOfGu`eTY9R)?A^R%vh@ z@HpLq`Qu*?l9YmooxPLm>UwjvXuj1km5PtApBcn&)IvN>q?hUeh^Rw?CDMb=8r#<~ z0j!J1iAq5&caodLQOrKv4B69V6_I7D7`r^E{yHi5y@J?+c!Xi!!f*+>PQ z#1`rk_b(`h50VO$h}PhnPI6f(mbS`6bP2)`j%f$2$O;i5E5+d$2y>7|yh{>Id4s-# z?Ql8&z$HOO^+|9cQg6#eN0Ep=HMd#F4?Z6(77g z17aQUWhHjc`D4dq>k?xRot@e}MDSWg&@i}{xxZxkSChFLqb0W^BeX&ycRQoJb-0ez z7HmBJL?yCF1No93g+iz0T+b4Y9s&Vv)(=z+v=iJ3k;m`Rgi?;@3dG(9GM;Bwc>wQt zIpH+GY9`BXcl>-FoM?5Sr}^2`a>r2oHN=I(re$7Zz9m(|u?tDw=AzA4N%aR55%3Z6 zvA}pP9u2>wVa*5UN66=MsAMgu>q=mAmNwLgrE95L z{8&`ATw4D6R4wl_95W%O4h#vZ7Hk6>D&y(}FJyQ8kzRX+2~--f!e}HFHgC<0%Ad!W znJZp$*(*G)9{B@!PBhmvCxq6E+?=R5;>2c_00(i4ptZvSCT+?(*(KP#9TvdQBnvXA zpWxI-FETNG(JZVjySGKwglcOtmTJds>)EyiIniP-;K-T6II<2w=kaXet$&T|rWUknzu1viqC*K1qwp>3f{aa-sdNf%r6mttr)nc1Hj zu`LLns_7j+;4l)&bXm6j~v@&i1ccMB2nb@5uApa>dDVpce%R+tQGYpP%uh7X2 z9Tgeqp}y;wk-tY9d;@QnKel;JxxagOGS!oGAm3|Cr5&`XFF%B4{56UJr0b)+MzKLn zdC{Z;6X&C!+87&~ci zi>|iCu-%XRl0!>@V$SM^QHZ$+-0DW%hS4lAnXZ}4LRSbr>gt{t6Daau2M0oLZ0r@h zgoTzq$ZMXHStU6)`2SK(I(d!%puJ5xJ{Lj|!iW&(hJtw|+0k;bWuiFT5FagCyew_f z7HoKs^ndXSY!mH?^gWTjHZsP8u#x+bSJ(iEy`Yhe`*YdY_dG<&#-{0EBD_c7!CEal zDXWppVCVB!@*}b+7EiBL870$?Jiay$B6;4tHlM%N_l$dbt+tawYHG=C5a>rHT1`C@ z77vWu!xFN_*Gs~z6||Nxh_VVMhWT~Jzt9`kNhs&_G>B%vQT~24)01(Aw z<7C{DzcSkN94Soy1%2kk!poF5!23NL(_yrqjBQ(^^r7r0Ad~u9ewswI7ir@el^C7w zWU(ZOv0=8c0^2eY%~L8K9OsLKK|98BeAegXl&+vqW2@46^qB_pI@xv_4b}mTMr~!y zscW3O%T_l_S9Y`HNnr+6Hx9$TvKtRZ=~RMfv23di=2X&uFy$~C#wu@vRCc}|19a?U zY(uhP@O{xN6lN;VJANZD1oIIGo*r ztk_YeL&1kl@V;OZyuS@LVf!qBeMGh$%^>{o!lPY`=fCws+5P*uoW1?$QAi{T!vSA@ppO8)DU6E{YGHD95Dg&3@BV3G!De9Pl@PjiQVHMb6%YAPOMtVnm^>jFgJs^W( zpCSY}{4|OyOU23q<$mpz#1UeAbRf5!yv5-Q$S@ZRWKRq;mrIl+QzuV&pb6u4jAxS~ zWpm62lDG@hlKP`T(Y+js;{x>=sR1jF znf*D-+-tO@#4{PQ(R4`*^v`M0f4b;AeZE}PDa6aH2NZv~Sk>{RQ>^Ag9P1o`qS>oA zj{Uq1E=Zf9GXG&oML(L$2Y>_Q)(b(2K9q%GN5Xm6Ojr`pWpb4?p#GbS&I40 zt{?0Ab7J$2vSIKI3jlX)3uhYK*6%q=w%q}HN;PV^1GIY-(hV-IE8N>T1%pyj0#Xm} zI*WQ?e&kWUK{?{PCSB~w7tvC?nH)hq&CgwnKhZb67`%PpN_o*~@4LDH>xWM+z? zVHFwHBZZ;RP6w?@q%AW^p}~?z51^@bMtnxbxI07Z6XD}-K0NQ#KxTL8fYwCsKAG4z z|1!f`ukn$b0pO<>fR7)gfcEh*{W0hplopazk~C8=5w0U1l{jmv6Q%*A2L(+`jvJt% zo|(CK8YN)6x^T+ph5PGznIk!HFcp0vw{2FJ3bi=F+2M4W^YhKBd!AK)l}vwkNU8vD zau-U#2fnBD1E0zZA9>3dW=7CcN)w=aV~*{UT0=?sIi;WmCtaFaklDiF&msquou|-z!v-nOxuZ>NM5XzLW?;P7*~qP0 zgoA|Dz_B?(pQYKR8wt8=op&{e`sZrxgR8GUT~bkT)rgHflm zH|X$5?xXdKYxm*W!4>KK*Z-mH4WI$bAMi^{#(E0LRB)minQhm21_u{q>KM<`LU`6$ zz%#UmfM;?R)_4Y<=sD~Se=T?xCP(xDN^l?@486-fzm=J|Y6k0s{2ft`?M2Ct=_5-J zJw|o+%=L?zjFzZ`R@_~2$|3YY^zt6TCKjlGu+$4sCZc}&n+(z;jkIL=z4sCsXbcklr%|z{zEe?$)A(5GM z-ug22^Y+-!Z)I)I82;@}G;A0a!U0BchEHwf0FbwZUH*>B_Y4w9tPORkj!)q`<(|NT zmCfn<4?r%)=At|Uh!(ruXCR)K{CdI$WV`j-k_K7lU8PR;^K0mq0^ z2{bOE6x)|&ilmDgCkZqt0dR0=*3aJto8g*<5!U=v>Cu~X?w#3bN>XVw za4_l~(==vh{-2Ehb$57$k``4n=iTVJdlWc_3przvPbPm}XLSm!(#c+jGHuRZmtWzL zw}C&>vKN3H4H+5^!>jSTwe@qHE(psGadM zS$A%3DA+I@f32i_5F%hxbt)8m97?ZG0vWZLug|X(kaRXi7vMu1-%a1U@dbqUmGh3+ zTY2w!U=4^&2egDVFSHUw8OA%SnqKS~H|TKDa$g zH!iYL8>r%g4NJFmk3-TV+>P7Uqf2)g9XnNnN-jt|Gbl& z%9BbozL1LjZ#&R;$R}eU%zyfOQk#J$ME=`c_4eYsa`AcU%Ri0&V%Et)6l#pS0E2j^N$+x2^`+1vG~Y-(U7 zS)1F}5LfI=6rjgHn>MCMmd{3^WKkIz4ohU>fvd2!!&vIk%7L zGr5!j$)geAU3M+_R`#Hjk0J)JVE;CK&61@iqRZIBw*;Mxt_%QV5#|}Xphm)s-Gz9mZb&Mm&}4Buc04sGg|5v80D9Gz7T=(x-jyAtbI z_`WoICXI{2qGk2yS9*lNAYF2RsDo7!RXVU00*X4>oW6evy0bDPpo0_ezV!>e*=qGy z{5@KIlfO3!#`QnC&$gDkojgmEuFwKg#%h`Br1m_V$PVj)A{!#%0Q9td0D2w|K!>gQ z0Q58-fZll$VLWt)yU>1)yP4~bGn5e`y=UWRlPt(WQ^19*h4Rd@?tMX1Fq6bC-kDMe2<3k#$85Z zyw_OLIF|A3roy$Rk1~$pCL{0k7aSjjM9ZQ-{=Pmz3n>=Fk2^#POw{D}Pyf|~`;=#$ zS`BeKP^4+6!mTrEH&&OE3K~`9)!Dn(O1<`Sf<56?TeFi@Iy=b5I7ywqSF!cMv4h2{ z?9w~?>TebVxyF;yb1%+j zbg`84CWs7KnQ~KKupX^T6`bxTV`Qtm_hj^W1_Aw#>aGo8DvMv zt9YR2ECfGw({m{9mAKehh)>Rd2tvL3GFZ0gV$2+?G2xX_Ov(beN zLMTxg7>`+5q?0G|x+7F-ptA`?)z|EpeY20G<%(W>xF9h8-0YPs4M(@*C{YQ^c{vnQ1+eMy9jxD>}1R7lT<@q$)*NlMW^<=M=MBF~@_s^d=a&>#6e=bO3s% zv=9Fam3qR{=Y^^eBMupYuA!{kY%IZQg+!2%&*#RgZsORWfDmgEAd({!5_uM}!Yfov8)gbJQO zApK(R63SR*NdQ6w0@m1a#St;!5@$8bo$+;h23y|tX@fWpbBc7s~Z~0uMt*vq0x1$E{d;Kms$r9PoS$% z5UIjFA~Rp`4PtWw^fIy;Fw=4uC2%^a0LMjpn2!aQQ3JWL-&Hxh3 zA}fi61rY>YKoAfQ1T=_=B7zE{gi{4vFBFg)LGc6yJi)x*-~XxVuAWSAkodm)emtinTFVSpA(fA@c4#3&&V&Rogc4L8vPA$9hu!gB zM3HW|K|qmWn+}SEMqL!?X|zTZfl)p$r+wKb$!rTrd=ZmkfpNDmAAV5QQNS{o14|9s zL{JbrQFnzVfWul0C{bV(uqA;4&v}a%kpR4rvc0D!8!AeDYSP{+D)XTP+hnK(VGFsO zE;zMS!Iq&@hPVd!v=Rg+#y>Ne?i_o1THcvV;^egw1=o>o*5Y_bK4$XH8T`-s`FY$W zcH3pS^^iT_ngqDOGnC0CjwW`6XDF0_Uj+`9Z< zlYGOfyWn`SmYZe2DEmAgp@l0{59VKr4)ZUyL-^M-8`4YpPRG+ms=SKz?oS^k%@?!+ zR!5Y*8#njBb;bTDr4d`&a+vetc@G(=j)O<%O<^wT7tEnR5slM=0t%b8KXQ_=aau#B z$e1}Uj4%V>jGs02=T-bQ{G?7Y2878I7e>_fBHGG0@j~2+2z9=^ZCYSL4F$oGr_q#S zCtzK=(qwxeJN2aHt!Og_a>gsb&RE|=`@9h%>0wlf;e$c3C@dU;z3(9z@(5z#+R-Qi zHIT}MX@QOJp#tW8XOPP^Bkg)&58Jxnd#GyGp(R(s9%4A1N@gk(^Q~kHwSlws_Mrvs zhCm;?Orf=p?doh(znXnsUZPbPlxrS*=a_i@z1;sr1yCQpxuK$Vw@+3>JIy%4TN}wb zV@T(zu^1c@qWctF3M#78qT6NN9(63R-3x+Fc0vi7eBI!pTw`zKu2Tw^c_F) z>C5QA1X*vriFQe)Ra0j|zZM5Y3Kf!dJscNDASW;H(HaU%q8QV*>|I)v;t+-kDB3dw z2v%VTjVxLfD9V;3nv0mgP{vlAnADHov#p>eb_7+b!jOC)p06$E0n8(l+YNuX^J4lM z*EK zesOjalDr(6eOg)HT6~c`riPU!^9|=y%fak?sxJ|*1}zYg6H(-e9)N^W=S04q%wTz` zdOdv);L;y*`$kp^6+6jR(No-De@te-U}u|S)GSfxV)hqu{*a9gMOK0efB#o~Eh(1i z&;1KS_}w`bC|rMfLYY|E^q#A^&o6nW<8&6b%JhV#C%_kvlKlsU%dyYt{g=2#22%1~ zB^IMDW9VV>)avNk-=9mQt+=WoW2x`yG9vLVBn|2#WO7rwQi;>``%8qphB*1mog5HJ zoc@{@EKHA^CgU0cZ=1^NxN6AuH-$j)MHUYwrs zS>ms8k+3{m$QL__x+cv;qI-Ax#ULsxrVrT~(uaycR5(H0>l!`eeNZZR3BT|r^GGb?k7~gYsJas$+#nD*Z|fo-tIcnb z$C0uE^gul=m0k)X?W^Aq<^F`sXdG4@Yp=5?k^+LV9p^*iIo&bAh@z(4#Cv7~1Bf3t zOTxGamSi8r?6}MyuWYmUB5=W>;$bn}uwsC(jV~+{_KRUL9zx);#WB{7GLLsdXF9@u zXe41jc6Uloqw&IiAuJ|6C2Bk56Fs+n$Ecuf2_YtlW~j(~Z#1@|P0r8^e(*s|ZnfT$ zP?7oYuWF2}=EE-<+ugv<%AOD1i#M=HD?tI^u#g~RFp}#{%G<34dn*2TOb}w6!Sc$k zbu6mfGo7Qh0iQ^tu}qS|<{76Hxy!#U?R?dhquCdXA4w9++POi%l8==b4WQ(8bg*v5 zO2`DPB9R3}RZKy+ZM3kvLhD;+2wV)3+QE$6w)ZB2Mk)q^COOGE@`^ zh%V0n!QRQD@Nq==I5d1LRS%8!RGCA))gg*YXo8;pEAgQwqv3BajcQ8t7hln80ILyZGK^$=HubrrJ+cgXi*;%F>)QRC1m@G> z3lbAWyQN+0{12!Y7~c3dNGRWP37ofW??)!Y3ds0@!_ zY&l(JKoy-3@N0*(R)-+U#RR~!%G9jl-$|^y9wU9q4G+$`ID$wo!iO?DIzntsi4lB1 z6je$=EQnoUU&hiIhe3n!u<#}j=KQ5q_{Afob{}F8HXWDGWPe=eQMwX$XRV4ePBch=|4^R%-XHv2}@-}J>1oqy2 z*t?}zb1-OhC8LJkGsCSFfS6O5?nCf(LEM@vwM;4;pim8iGBO-0SMsPAq&643#J(7O zE(xqAc17dFE}cT;Vwb#BE?xNjU@j2A z`6*l}(yFM9c|ucA)P%k;eso(gej;&0_yfDw!BjDRprydnLz`l3zZidSo2(<`0q-bh z{NoyVs{*EW7(cz?S&+p59HnHgtc=pJsw>(YRC7F98Ph~((8r7xFinU^`PlT>5YmMN zRh##>V5tQsWE($pv<3Bbiv;^8tj$O{jlh{3dz1O^Bj+;UDVxexr^~(uP1fJ$eSJYxNK4JT z;jW?G?k_Tyfw>pJ7nFSdCooeW4>^>XOD3Y6*eix*(-W7hHQnyqO#tyN1K|WaB~E z@WrnG>G{)pM8rJiq9`Uh+Nl-WaX(?J@dg^8={$(AA2G+FdOQV}aU;pFC8U&4<5NL2 z!Q0q%_#=L2;Rg=X9ymeVfmFVT4I}&js>1?L3;wQfJVEBZ*X9N{e>wfsDne~$qP>eX zlXVy4^2=q++4(nJNC41b5Jx$#fGP>DfdlgIv3hvlHuNC2>ML@BY2 z9L^ycxu{Lzz%&Jl&v5Ar3kP1{QMoJGwLvwKYAvBfZwgY0$AgI?ZWZmrR>SD`Mbp+9 z><)e+Tanu6r6kDI(`!o{vJT(~Dm!;G-91_q-dAiUojzJ5eTf=%Q92#Jhma2pg;1+c zM_HO^Jle22g=B>+jy52WU}v|0X`Gg*Ukmt{JxXXyy;XwMOo;&|CdKL2(;P4vRxT~E z|J&N;IjrTSg87XZq4%$(Xa_>hOzO}6l>4K8>+kRLpA}@gW}}%nxF@g_s&#W=I9!;e z3#5NE8wj*Q{XH?HlU3&W1I~MA4yQNRWq^(OZ5;2pePn`9W~U0=%?9mzpW%5wX<8>W zoQ?{rb%@jqbW2e{_(nJF{&|$@na+%TWIH0LqlU#`9Xsw={19^R>}W?sTynznl|3Z_ zgPW)L+m#8UK}iaK8N^`v;-vprjm{4c!p91{fM zsn4X5)pM(+*IWR)Dc%-(OfC~{27nM&;B|}wMtYsEf>>8XwMi8+D$q79o+Gk*HcFHj z*F+)PUQisMI|yb_ta^=6F{`QKmG!i>STg`Z71V?4?c9LR%x_fHjkM#EkU^d}8O^w2 z^tYa8`E>MQk%)6e zO+P^YvmHS5;*wq~=2Xzfv$rD|cHU0naITO0N?{%d`z-L1nU_kFh^(&QRsks)%p`~b z(9JU%08G171SD$jJ0OvzoC7$i-V!gfXaepA5W+v=R+rZUFtEiv13${F8nB}bbQNC~ z-X;@FfPa7w(vX%HwIflLL5I4O;tRW}_WxjNn5ChN&fu~Rfz8lOdL3Z|;%clYV@VLu z6fhv%(JWbmZbTS<7)4}p{)a-r_`$5gq6VYnm`)tyWg=l*hpn*Q<8Bc$0@Ve92nSOD zB)k9?&nUT6=B#LFzHd|Z801+nt5r%}3LivtcE{(`7{KwUDh)dyGzT3!whu5qg|pSh z7y{n52#tiuJLcm+DzIhrz#SiIqH*U7`_Lf1%#4nd_VK2=FLl=aI2vNr`3bB;-S;mW zMIKidihOFZlbU-lToA<`))gJyWcZhor4^3nM*L;g9(O3qE33-=ny+jKeUfEYuF?o8 zTQ8Ey3Re~Vll2b@^+{A}YpKKiY%;{LAr>oHq0UW`I1+N;d2tEARmJaYbPzF;v9tv> z^(oyCJ)Cd627`D8W~>Ga6R4`M26otxZr*9m3zS^T`58XK&UyfRK3Av02~1wG+yNh^ z!rstqv}SIT!9tpRRFv&}#V3&M2D@qUU=0wtnd^B-DM49W#GD?iZffuNHa#8XW`-9Z4jj>$De?nIkIXs)_|URcY=hLc+@M8&tfmT z9F0oNkYdqpPSzkKczRmlj|N>6+O5H;vPW`szM=EL`hyr; zAl3pGfJfx7TWN_OUfjtGp9%|j?*@E?LV%Ij^=y9r=ilP(N@vg*N<3lVQ!nn6(QfUW zaDxI*pc+PxQ=%Y_xYVgh{$CzX7z<}*9F#KP;VNsa_I~S73H&}~F1^%23Z@_t4ozzmRe;O8xs_R-b^Ti4 z5!vo{f#MRan3rtihwoBJwXoncVV4k9y+`b^|3qTkqc@Z6=sti1B<# zP35CUO)WY`C*>I|mLRHM5LF8Hfh+-(G|hZ{Xwsz z0T^prfHjzCTj`bL>YUM_KUv1x1EE4CmZ@E7MKpp;W7LU&Ci0NBM_`5kp-ylL>H>YZ zo2{>YxgR-*y^n8dr&8_6~pzrD@8>WNAD z1aFC)GEqwmlcD8Mr)4~GOU#p@<@8QVB#(*uEaxp}by||WI#J8MyyXi!Eh`hZtmG{> z>9l0oC+f4Bx7?!Bl0c7%T2j>`%xLRQOU{;Gz2z3xKW~RllL3#>izSs{v&4z&J4?<} zeMB3L!hu8pX2KNfpB!uyVV&;MMKNqW}@P24NAiY%IJ69q0_jYDdINQ9UIh z;x7PA@l;b`TwYqBPEBS>$(Y6i(mOHW(4~>-3(# zPgt(>mRg3D?rsmAD>95;JVU+&>SI5|=L84S&jT8pZV%Vg>vfel3{VH_ODFc%$LonHz z&I($HD)DhEqROIuh)7BXtaGaSG*wk|Jn{M zAwxnu(E9KX(n2MTy;1;xDubSn$8`m2ar%2WiA3Cz%tW0@!UUD0AC?=2k<^I>7q|=} zJi<{~`{72cYW}Itea~))`l}Q0WOKI>cy?T12dqX|;Q)E8i?(JU0NVh}iq$W*tK(cw zUi+mRYf^QW6XSNy01C)YM4K2xF3aJuCMuH#fE3zfjmlXgxtvrcZCoR7MM0pnx-gyP zO>*ZjWL}$ym<8VpWC2Kl%qk5vz#KU5vlB3AVnCcg`fp^KI_2n)7s+G)|4rRzu8BBI zLz@J@tO2;ITRY*IaYpZT#rx{Z%Dr{PafygHS26^7 z&@Ubi1+wIUQFH*xFa%Yt5tTsbK)?}l(+le_YldjptQJB^X357r;h@$Qsj@guVmfyyUx-t4$A~F~z;Hs1hb*%AN{RC$!`1M3 z2}VOdFb}S%zBSOKfl%g5n(i47CeR$5AP8a!4hjL7dV!0@3f5;{77L^b=1Zo}yaTW~ zh{ae1p&8BvyO72@t`h&Wg&&O^CBcrhgq z=1>ChKuwNRxCcmJ5Il!V1L{Wb0XJJRQt3KOw0hKh7p@QpN*&s!x2Og(C^dL!77HPJ zCLC4cQnFk+Z+4c#@uVAwZP5 zWpFoxhy}NdLL5+V5hVvjlby#8*s~7Q#u2*K<@hkHz^U7d^ z*sestsnAMgG4x>Y%t&I6LUbG}badPFJJ;yBVr>ha89uT|#TE?JdOb7N^~_XQB&0An zU_q^~NUevAZIHsUR`<@hsK_XQV7;J%uYVLU^fgZK)@;OaJ37bKB^e$bw8}AodZUQxZ#*A4~4M zJQht9xup+KODJ0gWf><`hZlwjOc~{rGY>mOnB-&eLihtZIP-MY!n2s1wO@F;VwR6tDNEG% z9UHs62_T~XL>(c0}NrFaV792WEwDl2d#EfgqZ| z=!|?I_n*V;SVkEh^%2%MfmzR|{sB894&aPCt2F^Vm%Nlzjuhqh$-uM@Re}+WjVvQE z6{Ib<%0{enCa7vlcJ_-%49MDWQ?V18%OoiomB7NND5H9KZ*O2BFV5u8ETh1qdqbPN z&}MHN$*43Ej!6~F0}IDB@>T^IHSUA}d-ViZAC^r3z`0CGatGhY%FxC7*-`8}Q4min zx{nGY7%XK%DKtsNotuOhm0Xw*JQ`~tiU)68(!%#6xeuZ5DJ@x@nG4^Q{dZpVV|AQvuba{|Te#hqfUEhvNdso)LcQQTQi8h6GH ziWkmA>XYAl0xxVKh*};ZSA)>8ScKVb>j(qu##2ICd3PojKyA7Wp;vj(g|jToVo9lR zT1PC@kD-yPY;UMbX&$F_Amf8h0>V+)f%4jHp-MalJr`YC<`(l8`atk^c~&T}C!v8S z>lchnEG}f2N&ZtxdKl2>vVwJh5yH%!v7xd>h96PjnUn2LG(<@KCjn~B@Y5f6ot4LA zcB2FKjm<(xIB*&L+Q6j!69xD@Zba}JW`D-hMLV>WoEf-Koo$ms+5}{!=|}v#k*+=uY>er0i+tT zhplNS%}+Lh$(#o20b;^8pNjKg%|-1de5=pX8IG)%dW(P}JRShJ*%Ca_wM#oa17O~I zyLgONz+dgl&;{h@5+%<<0E(QJc|?nnByyqB2ZL2LjL4xvju0QrYjFca&GQ?= zQF9=3zzp95kRA!I1>}&Z3k?Joplj!92G0(fkyGSZOb2d^ZLIB3+kGQuHw^`by8EJ-J7rFc5qq$=qbPG=+hzSvdqpwCHlRXFGqApj6i z>=Zi#R1$o|1cbN3THFt9LUc4G{sDpc7lE5%k%~NJwjPs8UPB-a_*!``1noG|V;UKg z114a9U-MIq^(S6|fg;BkSOdo>tbn8$xGMuGqC^pOC$$iT1ebr_l9n;ORsGnku9V+K zqy?U2gH-q(pZdLN8=z9IOGOdAfS|nBvw$~bks16FaX=muamR6>Cm;&&u)$ZgtC+uo zZo#tfoyuF1h6nttETI=sViPa@q!y~M^a|i`v@WNX40za}95ph=h-C%|TZ0S1_LW^Kn z#K%bux(6RKdvGb+ZT6iv1Pbd)6WnADSv!#0F2QuVOV)Ri+OA@LSypjezccQ&d1Y>K z(JMKN06~e+`r>E(%I!_L09l0rInJnN3#x*iq~)|0TtF07ydY72y56CW%yT$PovosY{;3?AA&?-HWU*9m}WO_qEq4HIT!a zl0)<^3QGqJXO$E5F~|0>jF4L!6AEF36vAsCr1^N-0n)th5KEhS*AyCAj3;6VeNb*ooKgSPaI?n*kf-@c*OF2bI^w8(Fd0)w78PK z@lD}9XRwUBs&O|uhxk#c|^f&xb@eYLhi8j+@|)@r}GyVcZq!JGU7! z3cd6)JUpf4t?5Z5nlaT8YiTV83!#Wm?WubGUPq#6>8*RIzLCQQ>x2UX=TPq~hkSyIeMZR$^{Hjc z69y=V66*qmgE%2^rqV{aNHHJi^|A7hl%jegw=0NQmlV#6z~@=>oQ9h zf4j%u34cqn=XkJ05r4x`G&%mtn$&G02!{}q8FOw%6aJ2CF?Py0jHO6{kF)qNOFPLwV?>UL+g*}1IYEMFGSf{C7+7$N0X%nuj;+}*y-90I`>Fh~p zl+)BwAaYqpfjk#xN`iArkdg{!X}W?AehjfyQTf0FXrq#)9wu9<-#R=zj@jpIJ_K53Hm(M&-epASO%N%a z1J$BqMYyFP2mYfa(3THo#ip_nAPO48ZrxB2eQ4sbBeAnhY?;|!cqDBm5J)c--^JdT zv&){a5uWPY?rdctVx;H(_+3Q*#TbN(Fbimt6g_0WHDP%PY^GXC z_L3atXo-$;x{O z!h$oC&Q44)6VXCNj{i?ueHa#`va|l67W+}0k`m(nNAJl%21lR)L#Nn|MAKp6ef~#v zL6U*q-yXD$0?NT9|6F3?RslaW33E|SS%d<(e$g2O4Q(JlhzdBI+(Rt>5AAYURH0sR zS5%M{44(s~FI>kL4TI+*bi|NED!u-5NTT8-!_iMTOuDmx2yk!T-Lx-84U6*Y-U1j z{;w1qnUk`aRJ!S;(vQ?f(YQY;XK2B`+O<#?M>46ilnWza(!MA-|ITswa(47F%wlr< zz@`aL1W?)oVxMvFvO~aGM3%VE6;clJWFhf7Z!JAu_PmM6+Fk4HTVGvk#fG^$kh|~ zHmRjA^j1hJF0TEvg#roI0?4rTz?`o=Mp8wr)Y6qk)iTfzA#|aj% zV@5<1_6&W0aTEqpT*cz_pDpMG7;8sNbY~`qb)$K4W6kcBNv&>=g&d_%w&g1Hi?Ajt zkp8egXe+r%GEWBUq=Z51uzcf@kLD&G9q1HoEqWR}n^xEp>LbaOgF(YpaCt?_5NQwO z=r$moOK>Y6Vh0n7e#=Rve-`2d1sS5vtr~NL5y+gt#~8I^V(4f&kVF7XR~lSVfwEWu z0W$Usv`}Yw&@s6^gb_KZET1=^`kVIS5F02I{MA&-sG z7Q2FXLXs<%c#-{M6OwTNY&lRlRT-$xTT@1mrD-BM5~n3Ys7i}Zfo#*wRPRPQf<`Al zlBaTEF7pJgVG_6qai%&CpVF@T0so=-WYZJRHk0q@Av1||k~w;?O>Hi84TOee8033( zplYTARi#!SPY5UB#}cNXx7j+O6tQ+b#c&Ab5Ls!9C8C8z(?c9vmQ2}0{IKUiU$XJf4lhQm zt3t2KE%yMYQ-M0n54aR%eozQ><}G25y5jWj;~XbIlXYU#5u$aFO;4h0*>BzUpIH zI?a%FB0y{xy#@-LeNtY}fi7n+u!hF7?WWP~208$Ah#Y`L0GUTRY${wWiOg@xRDyq} zTtA^UwZ{Zg48P3c+roW_TjBUdXh1C>u+un_+7ZC^lvn7=QhHS>VE9Z9og0=QFg>9h z*%)P^hSF$3YhCa|4=5XIA8-)Z#I6OT`*DfKHHZz$f+4DqF2o6TTp!80(2ME8IHkv7 zc)St*L^sKl*YZtLfDyo+^}#H$J-``Zgi2qPh@1>92;2g@voL@QJ8^Jh>P20AE=_0- zf*@H9Zqu*fZ(;1Bca*A^O(<)?5I{Z&rC1`ElF(JLqFhg=acTx=q4%npjOqXnLl(n^ zEa{^n$wx5SpR5zcH0bX{pe}i2CU2zbXHA1sJV;pMtwl6zE7~KRlLO(R0VIHy?xr1? zH+}IN+2yIr=$pwj13A_=t|9oA7C}aqx4m+z_(B!CFw$Bn8BrXjLk*>~5U(=!?oU4R z$;HkOn$RNul3;%3o`l&Z`Ecr0H_Xkr>vSU@hzP}eUd z3zWqexjqXdO-!my*h#j6SQkKgu9^Ot~@5tIoSWZ~%jhHYZr=alK`2sKx7M1KF+zu<7=;$r@3M*Bi;K zhWItUk+&+?)}(x3yOumGo34Kqu_411-qc3Jgq;a>8E{fTXF~SZA$+WN2DPz6fk281 z$4X`o zT)7I^SFssMB$Gu?D=vLA*z00XLIy;g>+`U>aYM6!7Oy>qIuebYmz27fmMA0`kVN(* z=mQfq5zijB!H+V~5<6>QvZD5kLzqMzzr>O_u$B_*!!;No0)E2#;mIn&P}5P_n7+Id z01hOL1s>if4;sk&^LW4eFv>S#Fu zy^H6KNYe4Meh_uEN;vhz#d$>_&JvU*+b|q7V`Q5awZ5>yOAsxGMlwf)Ml3AAqed(g z5mgdzh9zMkkPIBjLNlXL#4u>SL><6+XIIJiV6|GMcy343X|xBEW_t*62gwF;Cm!Qr z&fkrr_evz9OP*M$I)MNg-}I^2egUb?PfEBg7q-hY`Gr`3EQAU#!lWez7?-u#tl;a_ zHnB-HmxRz&Bnh#^!e|5{tpzQ3d2S2NG8>S6lwCk@2H~U#=B&;jLM7!aCGZ66QDmCU~Vh_tdMIRGO4`C`Z(Bf(3{8x{oqn!#HHs|qsNYD+5(l1c`J z`N}uGHs*_Tl?>$b9hmHVu|bCU4s_=`(48-O1?ORf8H@gE`;#HxS4Ya8IjVV)7 zQwN9&g4=LGaGR9YIouW8=xJD9As-8;y7OB)yf8M$U*Wc+i=YlZQFrB=hCJ3Masu^X zcZX%w0HAX@?^h)cogE@A zYMv?^Ukl*}iHQx0f-ANdpA!x$$u7}K!Y>LwaWN+(joj4`Ay-J13vvZn>k#$AX%cn3|A=*nrLeNXXkF4Ot!x7aG9S2KOB|L^sm^H0 zoJH9I20d0GJKK;pQPxJI)!BxnT~u(^-}^_b-9zk3h$GrSCWLHRfG zVyMRq4WN_$5WmZHm( zk}$JE$5mhni?vef3yy+f#>=D}1%-?khKn?~)Cb48h!nSyI9|?k>Iu9(2zF4cbc~*! z<MYX$1VJ+|CEJ4)d!{nD$y_h!G-t7wDi!xHLd&b_;nxFx{EZ=v({8C zwl6(?MvN1vP^#USWzrqpR>8xBvza)Wst=`^ojkuZDk<{(P@ZrEL$~%0Tme?RiZvgd zQ=R%$!jMynMDKYG;s;+hXipQcTYHLZC|UKxK2FA@Ou`gp=9km5N-^>PV0C4G9n%qq z9kN$o0CKxXH%BQoSKzDkg%h*&SMa88=>&dw>4dWCfKCxyhrUtz&tgsjp4nW@>wuQ2 z%#c-U^?NLWp4dE@BB&Y3i>z?mZW9|1f^2KZNsL%l-%L4erNkZ5t|O&EXk1P|RlrFn z2eG7RTpSKnCGAw|;X{o7c;y&74yqkk!}Z6Y!^IhT3qxJuK5#udTGadlRy+vH>_`B_ zI(DSe=Ryk*#~nF*29g-uge-fd$WWjWjIsxV=B9UjS{OuG`62=ZmeoVK{+S2_0hko! znp#8yQLd?>8i)g#(=I};OG}{HfRYH`gaoWhuABnqWGuUki0$M|MdUK95EOS|QmA$v zyXP<|R`L(Rr2F^-^6(x&5SXM}QIfD@D>JIsyJMTDA90$u`TtXrw{nssZ)p6E4LPqN ziSUGySgYW&)hBA@+y_)r4L{#L@f+Fc(Sw?xNq(J(4Vma95cWZ%oM`ZkqDkIM)I&%g zupSNupXlX&2k-{C-<~|{Psigq;K?5R(qVxxDNf10){Ead@SMatBoO1HGpLb3*C@(;pMO-PTCITVmm{E5R+SWrqy`5LcHDno}ytj+#7 zy>%4NUXE=4cNZ#`)!3#WwJC8iQpo@v4|wvL7I-YA?^6y&D@VKp(??#{F)-O-dUcumL&hzG5TZ~Y zHLtQJa2BzxNdQ2A3`l~V-30)S{*nMt>j(g~t^nZo=vPl{9%=&?kc2YL+CdU|u{|L* z%_L|D^^cw8C~-zHk+5&+hd;&s1x88hHOlsd9eXbPyt88{9-MtXK>j@o)ghG5;wn8X zt|FS5i}yGnw<~Q8nS{V0qnp<3u@aw;Nvn2Qfjt|LmVyw*rVjZg4)6{?iyA_^g6t%J zWkyvi%kji#@9iP26^Y;-%II%CfHy-JMOsDM0%6S`E-ECP=M6;-R8uhGPvfOY#457O zU8*XCTr)wX`PwI@V+5y)=@4@I%VB3BD7r{<^|xfzk_f2adH(7Vau-RLwWN&uX55nE_Bh` zvA==mC@1*z_yp=mPV%GX=n1~_Sz;a7a$*FU60?Ho6=OfBuZx??Z!QyJgUN}@F>3L$ zV6pZhE`(h1cVO3<;phgctUz!$$3bYxy|EUbEQ<_^oGmtgA)meq8l5a-IA0U=D+(T! z*hkhU^EqGWA&Njz+#DQi$Z?Y}o_1sM?Sl8u@|iL5$_9gzNDE$kUJ+F%%U zEsUDb6Hl+zf~;ZG+J-edEG8AZ*pu{3e^`v!^e%lVdO-ex4$&FGifa9)k~?}p6vB1N zToR%>;IKccwxpt1%}Z5o7@C1urX9;%1Wd_*(8|vc(Q+2btMVh0kTKwfQ$XUt{Ns%I z$3lZil~{GPxRguC00_*V?FU4_LueM5v4Pbujwc97s4*WGA+R;(cmT?wmSebDw8 z&{pN`V*#>y^9zHD0<1SLRltbIBelx3?5CGf&XdX7&V&JnYDKc9Ru-l)CqPj+TMQ$gBmSY)Id!^6d!X`SF8oGM%uAT^Fcz}cV-&UFn>W8jEXU} zlVVeaaBgWwyrAY(DIaopC*vN~8HO4)V1jYK=KBQ1eXLOZK^c3SdkidN6*ei7>J==e z)(sA|DZA!mEYxCv#H7`+p}|tr`C|eFthrEb=X?)|U~1y{<`Bk_bHDgK#RIw6E&;_` z-A}6|Jx;e*Ar<;3=&}Tb7gp!3=^xADjwgsnl0CdJ8Iq0KcwTm4-W<@o^cm8F)$f}-Qm=d^xC_2aB(H!{)hrwa# z?1yWV&}YI5QqU{?vWCRw(4w4p&z1BZ!r)m^x?$bmC$LM$an8qZ>DH}El88M29KreP zHQ6ZUBi(zy9wq}=B_%mWS8wRPdGXjVEZ+jSp*IBTmDOdOTvPfEzm6AgA59}WTa@c2Qu zoy*lJ-pO^*V20}m8)z^DJEOt!fVTbUr2%Huwxo%*olO`J$Y4u#aXJ0OWdJ#+&MI}B zd#qxEGdUD>;#j2zY7;?v!ir^Z-q#D~eZ6p=0;dI7XY{kh7*IhjU~0QI-5qcid3-1yy(Pv zPm$|4d^|deG_)?gES4&o)VauoL<}6n4Jl~k_+#4$B)HK(C@nA3b77<54EHcI?Q*8@#;thG?dwa9t;BvMSXbo?;}|*T{;zmrtql0)A0;4g{LAz zwGhDMKpRV)9l|EXA@B+g%4khZxLR}l6@0xkS4Z zKXgH)g_skP;gONsl{OW-R(0X>yqoYkEnRupcecw4=1YJO-QOJPh0`bqXJc{V=KGzB z1?QZK8ih*Ml8I-BP0-g3MB~bHY))F%p%!|$d6FBPxjBpEbcq8ZNUE`z#K_Men~zJ1 znIziuluye?ab>9$b=SF=gEJ{9t&oF5xFidV?5EC=*ntQQK-9SV0xPWlq_PmKYn!CQ zjx3IU5MlhIotbug6t71k2hgMRibqkgbKkO3@&(9b2=EXqu_!!y zM0(rfFa$aMvR7)UBu?_MIzNPu%FE*eX!8{I3ldbmuWs+B{f+3jxrA5TpQvcsT~kS` z!v1Jnh_${b*_*XQ3&NWjZ_k@?_1%bRsFaDRn|E&i?QZJiS%e{O z%kvq?vHwEPsQ%r)E^K(lh-8D#N~X<10c0|7y~J=joYy}laljZ^Uj7(^iz+NBAcoLg zt^3P>?CM12kNflT$C#nX4pRAJSa`SmF>dwTIG;s=WaW2@i}-ll#8tTDm>hGkd?lTVRFM99rOsNN+FYPr zgKO|;YLJ-p-f#BY0KT#tr(B)g0KGT@CtQa{RMI-hD=D$^di)UtROdT86#J%$fsD5F z6d#Qw3Kjy*J!WfNxlO9h+S8RK0*zVP`_J--Ibs@#%EL}qM=_Bk7`qh$QFkRm?@~%H zllIb=?m!AmS|NB+`=r>zq>jFiZ$Khfh2yW&zpaV|Ay2Q0apu5uq?@R6ck#jz^mu7Z zm)TXp!O9S)7zgVoA3PZ!mCjn2e(%bl7FRgvY2kd-qZGdwcM9`B)de1F;dtca#{M=a_?@J_Mpm;F$m=^ z+i^N@6!%wE7XpwvE>2|=(PY!hDr4!Z6|{ZdH6K`M>7TCG=|bmMc2N>0lYdWo|9_B( zIjX@2354BHfxV>80We4;upj4A`UevrgLSW$pBgGu#TPb)?BA~}tYL5DyBhWGsvk2@ z&UUrj*;NJNOlnulzN=cI-d&Yxu6I|cXl-#4NUN9dEBm+dv;ZY zjq+VB=et^Yrd<^vuAN;icXzcs(XN*BU4=W3+f|?q(;ub+k5LWz5At~=eilz=7NN|X z7S~VjNK_M7Pb4)(wdxkNGL<+3mEzYJ=aaMtK~Qp9nI8Bnl!T|=X#K{Kll{<9=Lhhmj>;IwlA7oEVGi(Y!=R3$$djffsuDn! z@dn=xF04UlRsF(X+)a!Di*v8pBt0pirH8C`NNQ1ZoRsKZ6df7l(##$>fiN(uAPkgq zVPIx13{d*LC=B4&kuX32!eq}v5M{~FLg*0&fT+m}1JWe(vk?07vk-J~{8lcy#J3t1PJ-iQ1MvZ4tEVX8v<++FPs2lYy?RK>Eg0{ zT5AOSY$lEN6hY0y%E|EK%*iWtnQF?Km@Zmz(xmJQk2ln&+Tpht7mMtc^xM(4+B%Xq zl{faB`7N^8GcnmA?smy>hsh3!96N($W3l|eU}}^t5R)Yv-sx2jlZDrb$&!QzW5og> za-#18&SdKa>dow7vKU-5CJWmef`MT$!1kYdB89p_HsI1=OJWjMu#{Oa2B@ZwL0nsk zTYHeQ#_Mw#JKGp726u(yGeVi&vcYHoqF>l`#fsU;Y3*vOpDFQ`EImk~Vo=9$->Q3j zS#oq&5iebcR(lLUP7XQE-5;Wj^m;sy5OFbjZNGy6Ybif4YnmWI@Nun;rR(o9GpkL( zO2?@BF{jMqgaA1(IX3CFU?EmQ~ayTVj`EB6f%e zSiuW<1R&#f_HY}|XvG;&dO^6y0ufE~u7#3T)R3g-^wQ(|^(KtN8l+-klVM3Mz|Nu+ zscR^GTEj)+S_43k-~GK4ybqVUo*5v9(@15I>go4R>>tHo4|S2;gw)sRg{j1X69*Gg z!Lr6oOO5Q7CBUGU+O*dhAgJ6ho9Dbwi0Fh_*+8f1b!e^ij8U z*qUNwUV@dEO!n zZpu+Q8uzh$eCRgx%QNGtAJ@ZJ7`y59)LGD$8kkBAF@9 zWhSxxf&qoVG099A9GAB%9Ro_=LJFP`9nZrnNWhPghmrq>opuOCkeP~1bD6z>wV9({zaL!W5D{mGAjnG$(`Rt z_T_2P{=O{P*Bjofs$qu< zTO&LbWEfexh(+dq_g`sgNkAIHV&eH$egkQe&@%k$d`uZ_59xLNk^%dXNF)P>&fC*w zN=R|(l(IzbfE!S=0j?FA4S6&4eVoPp1hx3%1G~&jrp=^V2?}gM_v+A0c7G}pA|qL$ zIV|*uCdi2R2l1~STzy5MG#gN@@FpS*yM5N^Q{}QTiAmrj6LgU_X_yrQH=)~Oszp`J zCeDS1-l5rLNuvQ8l3_$QkCdQX&S<(01L}%tS_qPKkrN%?;0hD+QW2#dKT+ZMBl$0~I? zB?xOEU0*ZM8yduIdHeM7pOsWpuvX_WZ?oPg-B8eGH^j15KF-j zQIlj|38VqS^bng~wm2@q*8!Fiq;zMc^$KGK1U&t^0(`q?TTmUqw|PxNN~6r_Uc)_< zNyeP3XOY3dF1a9h02Q`>WeOdks~PkpEKMJ~+9{_W{Zyr|I>Ai51l2B}&T20qLPJzu zs=~t=SotU5=7UhMpx%q>DYSwN`fPs7Y)bkX0iFI;ip_-6fSday^bRlGpRG|S9QA8q zkcUYrQcB@cam13bL?z~?B^%&Vij<=+qkKdN;$sHxL&FDs2m|SZJq_>ZHe`RiM~zj~ zP#D$i@riCjPjeVx;iQTB2&LOInD876AvKsmLm7r%)reU1>Z0_x<6u*W5kmXs$`Gqe zA6m5Zj~Oj?^QodS6DqtACc`&&u<9E~(V4J;Fw4RQVsjYvJq(Y9Uy5%TP<=@jpMBFi z!%F_y=T=+8CIBCQrn!uDPFQMzs?d#dqyPi?5(^NVim_F$^7Z@+b(`E@C(P|y5DEa) zp=q_L{Zj{~)~E7kaO%`4e3WdeoDpIUY)-qzhF8-keB&X&0lEkvn_~!YzRP?qJ7mbp z6e3E%4#lv?vUHK!7l~wa7qJ{f?-x3ah8AF`mhJUTcmLN4hr5Lt*QL>9Tn zX($5|bZJkb9J;d6YleYc(xlI6kGB@QhIw~DN^6KrqT{YQvs^2piTv?TT*uDz2~{Tm zD|n$3Nfbcnnxx)ZgWBpoL^L>2%0U5H5LeWOI%8aqMP)ksGy$>9=gSkc4D=}A_2emn z1TUV+=nz96=Fr8p*bG#QAf!seyB9 zQ-2!vCf`&twFI;x5JH_0=nN6yx+vUQB(55k1V_O_X*B)m-HuOEn`TTn53sD(kk>{d zW=rxBud9y2_6W|_;a6wW`muILE!GbA5(O5H_6~fV2?vf`95CtkKJcn9ZZ?6xaA|s2 za-j}iyMxycF_lTc&m;x+b?Nah;=9q{^a-(ps~yRzK|$E`=L`x(T5ByV2SakXO2`t{ z87V!c9CaG-eTjQL5`5q1xU%{2!S{vY|R%~17ub#uySmJ{KkiTDj+*T zF5}L`*aDDG^~EEM-08rxTX_+gXIf(owgcf>S~R$ETP3oBg(d8TFE7X34~F7Yj9NC1 zW-O7t^T&nu98E=ADY(iyIx0+|qmI0(A8S|M6wDyR1zlAOoIVjqO#qvT=H^TykQ9j* zBVnvUfRWBv0U!O4?l1`iout4?L?TRDUhQ)5*^L7>Ej-&HgBjw3lORQEJ(_*xxSrhB z14L<0kPmZs2Ut|Xf2~OIjp2!*0;1x4P=d2a7p-zR0yqwWTs7ySA}S(!R5c1@McRr( zQ_!sZYhNl7>0c|kbb*u)>=9>>$c))N z3xQWr7&3)PSPJrYTSr46uxi|;F#u)0FZoZ!_o!$HL7P~8X53-xB&AC}_I=b3@%%D! zAgY%prfE9+4zj%z? zXE?E=Q=pDQCq}Oyz;pMl%R@R>55W_OM1d%EK)t(1K)?%{U?)21cRZ5+iamUAFvBz{#s6 zi_A<#7sWB*jXV-*QWAzbR~*ZGt~j!HulS|~lS}rH@Ltwwc&K~v{;uIoh2-T;EJxR}odK9r3#T!}^IdagK6>R$2Lcu_RH%-2)Xa0XimX0l3dCad(A z$-*T3(TR=h$d(;QWVL-3inS8NBoz@hy;7QMMrN~7=?Y8QhDf=QqeAkyUtooWO(eAX%w{gMEXQD&J~0fE{kI z?xr~4%BfxEGl44CoNZ-Fm++Bw6~Z^KZ3y85&oWH(BA;SO;CHcsWOFU6Xup3ACJ@yH z=6dX->a&4?0fym3spn}_S3OPl5(~sm#&r+%&KhLO?f3>DXy^UeETqlgJ?g%{->Tt{ zsWr5xXAF`A!x%)I-0h?bLgcZbKI`XnLJd;@RGhdQ7$vxgH|U;L;WsMWsi)-$@~;q& zp2yZOf@04gXf~iHvp&WxiW=yZ0#rYUsKL78GJnxrg;psF?}KUk$Eh*VInBrtc1z)*q(-X={il_HELj_uNZIK zx&FISw=fl1gL)fFWSWRM3n&E^5Z=0aXWo+su=C8Ao=J>rq(7*ScBw^_oCrO+%wp1Q?J>pCUmy&8x(QYWM?J)u+xJB;&GjpIuM?dS*hflV+e z&)n<;9>$XmJcPOUwhpV#2l=Stom^5TV(cRBf6<`SKJx;n{mA_@nSw zCHxw~n&Yg9B=jo}!}RFD`v1madil@)jm0b!N_;NSxFF5(<=XheTM#e&gbEntATdjP z)Hs<%3<*4FLC}>LGywlVUsKR!L;R7Lzy&msJ2?Yq@diC4c1^s1f+R7dAlC#d9^Vyl ziSFSMmxM_=f)Nj=piLt13jGk-LO){cS&^?S*izyJLIlZu2ulh{QKuo;QkQj<27{g9 zCzT+N5nYLJkwsTldvjhC94@0j%`(iVFTHY1dRxCj9|s`?bjKmJqd`6yV2Vt^7WdYAT1Jgw=rZn3?>$ND zggFOD4F!8PJMV^*kQCL&RY^Nn-dSmWxkLel5_dVS<1*GYTERJRo%2`#)Fjej=yFV4 zs@po8Mn9UYk^H#uS}MX-IK4>KB?WgIgtJ8ie}09DCDrVV4-UN0H!T9opaOMleA}zw zM7>pTqTT{iEI!%mIzgZms)^{<~^ zu6L-z;?6hXwHY{Ekx{bM`Zm~BksH2~uwB+Atzv@2sf;yp(G*Bqnx{%JOP4)#>r6ZO7o#IZORR0-KYP?@A} zNm5=d8>lFhtE`6$f^uj$VuXb=89BD3pD*I{rjGFUTA!M-Gq{Q_97#is&T&s|r&INrgL&6s+cF zw6I+x{yZ%mrJ^1b)M{7BsAW50CL)uN+Jq}IiwTv7eAg&;n(te+xNp^NCR(ds(3e3V zwHJY*p3Em*KoTn!xMJUqZm-?`_F1d_rQb5Q@v=I9G66eN;z%ZH0cl-#YL{j*DQEDd z`7Eg|@akmZL$cI(bX)1glo6#Ee|aJQJ6D`zn`&e63YM$klP@xtBO7{{? zR{hU`tp2A6ix(sS4<#-$oLf!B?I}b6W?M_e7)7!9ssbI z(3pc(%o$O(W=8-cvE)Jo#;rJl36)6H`KMH(CPzf_Bt_oGcmu92OK&jo@s@y!p7&`- zfRj34R7MSU?&H#fbS&NtoA4jK2y;Wk`tULF7l%OUs z$yYYk;8v(gzNiBC zQg)2BRym2tLMlZu%gcyz5DKu9QueudAzLNuxiCO-K1)5e9Dsu$SlfC|@8dNbmJynV zC@QZuptwUh(x?9(&J8)g!Xsr@tb9F8jRZ2dyoSU3_OW zH~U;k05-3AWct$3pnq=mxiU6X&g}mRpU40C0^9M`huc#dPq**CVI#ZerBB*h?pkTD zIQJ}0hp6yb(-}-;Knaw)m`}V8n{mnN1;w*b) z`(^gz%l^}L{Mu&rv0t2Emv49k{AYjr@#)*x>yF>XKK8^mcFO)I*z7-l-Tw4~?d;xF zXWQ^OeKzvqM{VFur`TaHILyBL-mR?vmW^zuJ-%X}c>4}E=a>82RU7@gJ^ZV0+P@z2 zJNx4{RXgLgAF#iU{nB3W#r>_e-v@2;cyBxAsh#Yx&y87f^>=NnCq8OF{p|DX-wr(8 zYBPUk?>qNxcK)>e?Spd1uEclyt5mG--VnYP}4-)EoPVwJu9`J;C38xFMPf8E*Md+Z(7e%n{{<;XV?$gvu*Z?kJy9z>~1&R{1U7EbRD~Y$t||-%02Dz z=Pk1t_rKXToBC2ae#%?y_yr|<@T@4Wr%Hs>>MwI{B*#Xfl4 zqqgC-2ismZ&$pZJ+{$KO`~$o0zz^D#Z@=5h8&0z+JDq1YyzvJ6){Q&b?w6fzw(jG0 z+bdVt#=AUhPyeWC_Km0P`Dfm0NBsA1ZR++<+OL1N)V}od>+PF=nr$EMJJYURxV>%G z|0S!>f80)*@-h2da*S8 z>WBO7gIoNI{c+JYwt3$yqaLQcs&p$MW{!(bt!?t;J8at9e`Fg~KW_V#_q5BmyUTug)Q$H3 zKd)=Mj4iR}ZFH4=O_V(*`v4igaS3CQjH@3k|w`MBM4#HqIKSAK4_`?j;` zFMpBkyYzf})6x%HbL0#ge&h~2bmW-IqT+u|LLxBkceU@w|`svWk)xwg&aRU1sE+a1@x*`7S(2D@p+ ztL)V`f7+J4{5$ru&u(R(JL62dXWk*U-dpdrqfUL)4mstu_S9W3x6gm-b9UeKEsQTV z_}8DE`zKQ~zM)Tc+Dz z+7-L=q37AZe(556!_5D(t-jN5ub%e{oBEB5Y|9s3VUJz1zU}e0i|q&3e%k6g4BMNJ z{*Jxy&qvuYrc{KWpa-}!da(kE>BV=uOQe*IC~Vc)Cmd-on@r+xDUw#i*zwhR9S z^n=L>vL?6@0@SRr_Z%7UGPJD@qPn#`Jd<6 z$WLyuCExg-op;x@_PKSxZZ}_WoYhA6waxZg*EX`f?AU3K*#p%RZCd>x`$+mhd;d4? zwVyn_iH-fsm+hF7Uuu1i|IMzv<`Z_v=pMG~CKuZtH@wN_{OM}D{Y~fC6W=_`8oPhc zl5Ia@7rkMBo3_IjZRyr$*{w;*7T$BBef!=o+cgI~X}iB|#7fmMJN44#cG=4B*=zP% zV9)>Skezkp^>$%pJ6k#TWmdWS7`uP|t@i4T|6)JB`CInL#XFp|IT)dI}?(pmF%p13|J1*Ya zF2DE+`|hnnHs$0w_RcrF)HdDwWIOl2e`-HYuC%d#yTrEN0PeOG(niND&1 zwmZxoJaJR|#ce0pQ#d);j-Z~C#-*ZYXAf5cbq9cLY68@}lP+u^mpwPQzy?TIT!?5SIx zw3l8zhyQTieY)KhIv%xX8}k@{9J_+lTBOeGBYumpx|3p0vzP+U;!n^Y^#1))`;2WBzkj zJLkJCoBPST?e3lTvIiDzYX|>op8f6P_u0SQw!a;7@I`jj^7q(Yf4IP2bkYkgy=pIe zg zrqA2XH=bzkd*xfKb>eom>3^JQ%>&evR!<`L-z1p z$Jh&FBVUPz+6q-3%iPFac(8h5;;5>|HTxB9>^Pi5g=`Y{85k>|L>o z6?+HlqS1NZwa+;N7`^xZf1mequXE1YYqzua+N*DVSA<3L>kF$}FA!pmw-PEm-Yj@8 zQwaeJ4+{z7BZM)dn+w%4ItZ&?%oaZDcUNfoq`a^NI*noHOqlS?&w}}JywG*lNMZcnYlPSiLj)h^!Gh4~v2aRA7XE!6CX^WHFXRkQ z6+CbLP`c8(5*}}x7BHx_f~$984?I#A`n*=-8Q%A33iA4e)CmpqyW;7gavIr%;AZ1* z;!>a>eE!Vv#ryGX^}T9Gdk`!LUAzS0&HJ8iNn*FJezGlkRe8sbcVt0aW9rZ_{I`$I zZCm$5SlF+uZq~}^8a2l8aRuRE&%CbG?hb3Qcf5Uvc${r{Uip0a*gx3OAfHof|C+!i zb_-aXb3Tj-om zUBIhw^})r~dYS`yEd6xH!M9eVsV6+!f4IlaJQhD{!qDFq{iv=stsri|mOS=v-n;J` zY?-Zo)yv%W`#&(=l6DE*clJ>Ka`JSCM=SDJC1cvOPNlxJH9Y-(L)79tR&__aHo^TC z*!m8xnN?z59t(RAFf%VT$ab`ST;`7Hd92R!vl-0~&9&vYu35imd>-2nHst=z)2Zsd zvwuCfaAY3qJ@3~CwHv0|M)mzp{kJ)fb?fx z!@&`GtmVTRNlUVSu$>uFdScGtJQm)rTaQe}1dSA1VKkNGA3aic`f$?EnO{QgZSk;nSHK0UPS zl{spAoyfn+|C`H751##1>Way>C(FLq?t7WbVuHRt`nb>cwj*o0eYxsME}QMzx8dt@ z>9(i~W#ZRA%4MfI&+l>XtH$1+ne*JXY?bWsRxZccV@qTSq^?nJ?z4FFJ4O+-pNFE3T$9Vb$c$`zr^9@8@22Z&n^xtrWl8C} zKDTDtDqK#=xc+M{TkW6s)xM51ZIi;fZ5*>Qm#x3wc3MivM4M{Q(M~=qa@l|Z{Zg(R zpJ#Jw7B;@iFS#tT{+QI?tM^x1*7%(X`#G1jYW9tow`rd3*jHntep;T(#%FYzvaaU0 zHt}L5YfZqpYvTXTi;l3hYoJ&EwJewQothKc{c@^p;{3h^-vK_+W6+q$CMmW=?W22E zz#G4tk=ZAAvMq7kue}!mo_;5+afkYoZHJ6z9RNJ}(&3zhRy^Q_M7lO{rw>|#edvW&a zTqaDfIyib=nmRpddiH_ebJ^wx`McU}o29iqfc^5; zJ{vgUeddfxvqf#4)w*16 zF5ABTa=+|7VYaum1ONWzSuXQ<`CIp@E7NS<2Hu`!F2MTFTi50JxfoloZ{9vlvV&fy z4~V^yJJ;5y?9c8S%jB_RSF{z++Y{BNc72`J82sjsh2Ots1p zYp*=!yT;mOeU&uZ(`i-8PYKLptIBo%ZPJQF^^}!wFV`E8$Er2+Q2jJ_ylvrxLv?P3 zWBl)Toedf^TRo}6rBZhcdF<=h5`PTrHc=hExx}-kaFaFZvAJB+v*T^r#iKg@I699V zs?zJLj5gD3t$%*;na|`rc6w^J@X}io)i2qMyKZTDY`A%8-$(lE*x zeIf0qal7v3v1v!cJ$ID}Q9l_zr|s@%c}(acX$bDo2j=yE=GMIg*En*-!R~#bS)65Q znupLdPKY&1JZZ5h{SaGru&V-5D|V=y|cpeV1=jY5^9i?9Mfv7ng5&Q$GCZOD5#>t#z~3dGWiMwVM2P5^zeZ zE`$F*C!XBAuafVd1gEBj4Lv7ruiUO+2U!D;^ySy}Z(`STV{chFLGos&+{lSqhUoc_y zw65Q4&WM37bGJla0Q~pHuFoHz7O$oaK4RMrIAMXrgtzN2nqkJI9m zem*t(r2PqDQN%C%i5IUYIvO>v5KN za79XHj~#%kU#j=(qAYQ`Q_h~TzX1L_BKS_PEV0wXGcC$Y1)M)w)9m31v65^3hR5Rp zZ>($W)9Zv7TCeNr>=3~2)w_GIJT4BJxY^se8{zMJS1Ea1eEYh#=N1*UPj3B7_%ZR% z=RGctF9$enLFp2iN5whs`wyLy`wZhx>(^R!RJ`w3X?gZpg2&COJMM_sc31Vx@Ew4& zP9HsVE@w1ESAh#cC6Vf!1woO1`n7Dw#IhqMEnFiico`he(L! z-L};QI{^!)`nve+71uVbJhIUmf+yIfZ`>ogZ}}|TJda@C*z|^b#1}vJ@BijIz#c2p zLZ|E&#jieJyeS6o@)55yp6wEMyqGg#X$ZkCP6xwxiC>jJ^!v6RfK{*hk3F6#ZuMBx zwnQ7kzxTbY&J;U%9{piNZNRBt+jjI9#l`=g`dn24u!qMF<-go1R_g8V`~1-pzy&=P z*4-f*^mBq=TmZcMLO^uEKjP>y{cAMe2ROW)YQ*L3;{BFK5=Z|DIJMQ?J((He)&?$> zOZ)^l)4a*&x4*?530p^PoDNv{V^fJ)+r+K5Jg4c&1b5LqN!%)4Z14BQtVn7ozr^-i9<_3B z09Z9_p-Js673UFpkk7+-z5gRPLF?v-d!6iEmn7T?l*?Iqjb{hbvo{Row_^)EuTFVz+ zT1v3qclwYO;`^=Nrti<<+g1VXmW?9(!||EspTzoezL>e?TY`gwpM)(E zT?!uknmdr-aVLg#|3OT1IeE<27qIaA%(tz+7uT%I-@m^L!3C;O?PrQ>I*h2LZ^iLL zzo}`4A+@c=Ak9L=;nIbOu^Ru$0%M;vUM1|7fVuLp=Up2`AUl!6PKFc$)#0R?F zjeaJ$`xl;q&MIB4H*=S%HjEY?b~ zUjj}Y8QXdLUe?F`^QK={0GxlaRo8j@*qFShlkQ!50JvU@W8dy)zjP08|M>>MX;F_} zdmLb^2ApPh#uL85i_F>w*$hjCJdgf>Q(uO*zJHK8f4w%XjSFCp*CjjubBLXMIy^3NhY;SU(~e!oSeM>+m+tQbIOoLQC1xIHcY>qa1y%u^RyVUk*a^1uynS}? zoqOQ#O=`wf&0?d4qsxwqfV1XR{d;&8tGZ|B#mscT36p<{J(I=W)@}Z~b0Xot?l`6M zNmhQ*ray#0z`dJCS6O(Hh4s+i^KAn-^=OX$^+^_9^7(=iWdX-ToYxLK#age(iEz4c z7xM743ho)F*t#v3lQ-=I9PU-!T<%ZTt1yh;yGy|>S~!`@XL=;u6Uw9U3JqMWet z4l8l-a_^X3(`_$z4QVW7-C;H6`7Uk5Ca8P7Ec4KwcZY?z-e^!db&M_b$H`TN>UUZ2 zhzi4_?4#5*???Y@Z+Dlqn6jhg4PmDG+ZyAp*#qygQzf1l=aw|u(w0P56B6#S#3iA} zhW{IF`{Ll3H}*Mq*@V(Be%iHjochjg)qDGfyG$Q>v~}Gv2{z#ndu%^(mo=I(s=PTh z)t1zt<$ZhJUADepX?&~9S?YT$mXsE%-(wy9ZudPkcA9#Q%e=aR`#m=9nfuoJ@2A_A zSUQ#!g6=Wf7y4LHoTlDCt*1&zxW}xcYCO}6Gi;?tym)AzbC2~u()|~sFwJ(Yw5^%2 z@gA%AbxxOS!gsdm4J+TapSZ`$EVKIz7pB_0X3zcCo_CLRNf?ZxCAi;bNhKG49gsR!Z7P?0#~yf}xec>t=Z~3VJ6ThG)o!}aws&dy z!|&r0Y*nUfp4;c#XL+k5=Qd28V(a0y@QQuIefH(NLDO?Qrr4t1`r`YEei!d5f1IiN zE_tF7^6#^XgQq(G&ZgVSZq(Eesy|@;E)GcV4ZGpZ%YVuV?hjbK__ov6?wqL}@%fL{ zg`fw_eMHKY!|$i6d%L~(Tu6ApF0H-LJ;`&9Ex6;rMnc*HRx@e$#FFA{+t)n;+Xx#U zFfFsIOTRPNPBvbD-hSc%+nkVA^KOsvwv^I+bM1K#*ov!Fb9$8hRz0|i{*t}gLzYpo zNtc6V2dVoX{{6kZ-9z@dx_M&b5+iJvw=c-H2R>xW+DwkAZXaP=qW`IdknoW82%May zu|p59Go`>j=OHWDv-^kS_oLN;M@pZvZ+OV|wtbrGY>%*MhIpQ`pLoccKKLqkn?25U ztwO|Wd)`Afq>|f@r98*kLXx&zw^w__>VLa!e&nth>YM%FJh8WX#2)W=pOyDM($?aZ zc-bEKh*^6*vc<58wpSUUkL{*M>`_ig{)#aZ)o16VWB(tqC*K#$Dm%fVUewg7sj%@8 zD_yl-sKV&(@28toi2Tb;D`-2;2xBldpkvUOc|&Q`a5y{L{*{V^Lp zC}Z{9@2u+2UsbCjxIbnW4c`FRKo)-JWvUO-OjmysPc< zKbJbz_WStDO@*|_Y{-yz^XH6Cv`r`(d%?cpF&m?6y6^L`Gu2&t#kCf)9u!-c5df^1Ed9n43A+fB5NEj9yf~gvs{Pt>i`m?6g1sIR16+xZ&#ddvadc z^YYlBDG4RMEMv48!}ZVY)$-ZJij92NjhSv6Fmm!Ud%Jv=^Vh$73}b(^)vfaHJ9}V0 z8$AC=r}yHI>hb=^N(l-1>`1>`nG=NZ>U&3?g8uSZ1M8PNui4{m`iltlZp>#7Ti#he zmd&+wIlZ!kkd@C~E$cnv&3CElckeE~vFGKp%-C}YWlAU8et5UNl2H8#8&)ZP;+fRh z>Y>kXzp=M_!ty%5i+m$4Rc9|c3;z3rtq-c1kSr`xFA8f4{`Z9CUcGsv;N2{B%TVWk z?Q@+71PJn{a0Ob9>$s z_Hgj3rQ+Cm>XnmcR2Hf~Wz7b^n;VO+lWZGqjC^aa_KYoU_081b!Z_Pl z?H@S*&sgnk+t^V1TwA~B-zp11&)AOfGn$PbyFlIa)!Q0E!ZUXCY?Zy+g;aG$yMb8$ zXRPn4zg(BH`L>>?u9OxwK4aIrBqhX-ouux6=&u*{6VF)tnqu{CB}c03ZQh9U_l#`} z{xd3m>_YYP4IOF=)t|E#lj>`~d>yTBJ);-+|8wTm_poU;&U0pN)9q;mkHzZJt9IVDZ+Ol$-&GN}+2`A? zI#;hNWIboyzr8#>GBe$Fqep%%1~*xW06_dZcri zI)eKPR-r@lxs9@zt5u=78cDPt}<&9){~n`bw@U^OETRlOrFR@bb4r>>Cp zf~Dnc7`JcCRQ2~g4wVu%zF?V^#fs%Um)UIfeLoknUa;1^oZhw>x6n3iFDd+}i3r{W&gazK@E^I^N}+nA-2lRxLKap*Rd8E`&`#3~c!U;*OJNMb)dE3*~=p zw1Z>A37bLK0h+qWNoU3Qpsi+mUmX_KIeB2|zhBw+hLw80zI?=Cpy9>3t^R_v#?L9LHyL$3u_tIy? zZk5JAe%AA{H0MmhW)rrzAQx`6}((APNed@k5{sWyP zY${>Xj{>W@zWv6%Q{siT+tM44YAIpE`M89gdbQS|X{SWC@x<284%aS%&HfbDgO5wt zloM|~Tb~k>E{3#fF{sWCX*Kw`$ADdE*tPKBNwIY3-5A@3CK6WQ;}UlD+OfUd9P=iaLF5oBma#S%vd) z2^)U-$h!RFVv7xvmuzdFGlaZdo7-^N(Z`M6l!&O!s*A@ooGsR)}v*v!D#rbCX2 z4Py@fGk1Gasja}rCG7G=2VTuN3jfTqn7|RvMX&{*!sft>;hCO=wrQ@3lXo8x=WLtN zeq%s=scj}fwlF45I;!e$e8K3&UBLI%&`TZ z!lv?ZPoizm^Cg3V4~aL=>?)movW?U>oR3S`ER}xw*n?t)HP z4~PT$gqYJV6~z{O3ajGdo}!-X->r6TzZiAnuNB|ksxFNy@No&7wkpBhzEA8LRDGG( zPmPOUvp3$=ZsA&nc( z$2|jVc)PQ0w(SysSW%{yQEBYmzyFGGz zBdIONW_${pNo}(Uo7v&zfW%c|?$1v<`TXm$LplkBE%+36IUn~TwSAv4<);Hinc7+!mLuPM0vXOny+mJowp_!EAH}Y} zy_pv}tCiH$gRt9yt@H23)tPg|CBL11IlA#RNnmi~#ZMqr)bb4>tH-v<87toMxLAeV zs4sQPk&7;W94S!C<3N_Am&bT1l?ivA=Nqa&&04#9D!bQqX?pAdnXjc1GW`mD!Mp+e zRB7zgs~cqpUsm)I!fpq)&Y@OLz6)8W%7Z#=UoNv^fsonM)Z^~7p`OcG$oVHjGHaCR zE^QZ_ex7frsoRI`Uqo5;FZN?bfo-exJXZeb;hO)`Ai82YL`TgJZ88 zvmE(@m1}jO*VC8=^5+van`6snwtujmjr!_PV2>JAC2S6Sg`Ne34fi?u)sKI&#XnW) zH?)Hyc?g?+4cMHMt6uEb#Lfp?`t_TG@|g)IYzASM|L8yH{ub8w^P%dp26@gNgv};w z=7Wl-g>9_EeX(_2~Dq#xOm^={JDg*l|MlxqDg4)_0*JCdk}Y#mD8?pKslE-p3AnXSjW@qx`)&@NRl$6Sn%y zodNy#vlKVA%Zw9>-a*&`!X{W})Xd+{t~XtBdsYo)e+ip@6WAc{NwcOMU}e1KCRC47 zba29M2ewYvhZ}YtWG7wj{~p@CoV<{PyhzAbmj?|x#7y?(16n;TCw;BJN2PvqrmG*% zJIoAC`vrNK<#V0`|C49>Enu?-_rK8o2>bo|9|5zzkoCq)!e$UQ=c_JLvW~E=HA4sP z{aW6?<%G>9Z1w#8Z%s$pskT4tGe3GFF^O=(77#Y=%*O729%El@to^EuT|R&weB9gA z_O88Z$Z_WW+%w#{=5A>ZRD|6QY@I8&*1b5+YRvveU%TmHsbhf;OHDU!iffd9g1KL- zeE89khSKL|!XfKfK-dBP;a!GjvAF?{>s(sG6V6};5jOn}u;IFB*S%Tn{sVQL8TDkP zGL^6yguO>3cak;A|23j&Q~3~u6E>T$um3nQB=#g5SLfGP#}+9H8XuRiF@qw~#glB? zj$VBq|0WZpijR92*uSgBYd$;09&Gp7eszkhbmYM4>zP5=w9BLOcb;O;O9%CNvqaV$ zG6|ba*znWWpL}+j{jF|#dgKjx1D6xFfUwnfCPl}dW(Sj>Y&>SHA(J{`)9(T6-Z43N z_h~j{N7=2RU)7Va;e1@e-aFfTbNw@HX-?Xs&bP`-SPwofVGj=9J!|+GW<3{O;ka|V z9h^t1__)01xT08sMv6t%1y!weBAqJySz)e_07(*fd?YTCG2#Qdd|5+-%Hr6 zgCVa*on?6*LvtUmlU0XI!e#@TyQF0Jz-v3so@JNyE6ca3R1tlvkPL_r_%C^G|CYJi zz3T)@4!kSwEZyyLg#%aF+ja?&y=tEqd;66Nic3DlY~Mdb6ZbN87nfDH zrtKD^atF0)w<(jo{^QTsRxL1}jmL7e6|RdvA3YWI>N{+3&81aV1Zz9DEmMVA_Go>+P4t zzXO{ND)R^6O7-8w{9x+H$_y3)W3T>)=&9n`M&Me)iy-Q&O# zfWu!88rw8m%o^2u_TPtLNTm(m=CcViL|J*UDe*G$d-S2i- z@_Ckce)wO9opPWyhrjvdyGh5z@yBYND7_hQYWIkPr;mz3M@GABoCc8x|K6923{xqH7(fQ3|65+Uv`8+zRIsYLiP4OVsBFJ4)3>|O2+sDwiQ z`!DA272Ug58qnt-z{_)5+$z{D3eCn&44Dr&^WC658Ud&7ur696io0)Z z>!s~Y_=3UxN7=-alZ15xniKwcwf*54qI0v5YWeS>tq5Ct-SFEg&gqtwthxl)qr_h+ zY?GLsI`G_`ZGba-Hu$c~Msb$MsP{b9ZPWWoyVJ8d0$$<+-t`vtfta9te zz64j^x4QXK@t4`EU31+DPHElp+qq)XF`JyKS10)1h1aTNF?QAAf-$5c2|<5`yr0Y_ zK6!as?+rM$+V!K2er98{0sSee+J{b>H8-r83~~u|cOU?_v?ws+a#-3BkPlYN@qJ zds*Kj=kCpBfK@k=y~-V6ew9lGw!H!o>9Jk_< z5}`TAH&mQ>oOKOq-7;Yx1XODD=87Y-*p>Fqwi5AxGfTvj`Qs#;@r2n<*8!aK{!EQa z2&uh~_C2{9{6BSHfKS;otYrG==eH67=Xa~H)AcNSY8&76EeVgTAXQr5bL`2$S5r!y z2Jg*(aO~9Z^DO>l#>3l_0jGU8Y02yhY<|Xotv{*(hhGmXu{xVItG?e}<~ev*)@ftC zofk3x&+0W>2RLW>`lnf!*i8FR1(%}%dx+gv=3Hj8D`wObRCidJt=?tVmY$~mtrKo^ zgx_InUJZM&*sfFWd+M~uzU&U$o~Ax>V$67T=|LG?1aQBW^DO(@OJqE5UMlx<%IdO1GdGy9cAyhxcziXQ!sE~>r zl4#BzH^){{Q@N!Op2sfRot=f@9=48WXWp|f%VQf?zq@|9;Q-sT$<@x@z&e%X*T0G@2d%Lig>+U;+OSqs%`FtWtjg{ zHvZ)N5pCYjRA0RFTWeuCLJBj!8Ez?=VC&kWb&mboQ&#ZXUl+TMUaTIUfBBWY$ukxj zeA(FX$#?4T8H4ie+Gp%x`(u9nO8sOzy1uHLu>2WIUU~ZKyZKgi=fA!xE#y379j7k+ z?8tXZ)b=SSvHs6ltM0BRHk2Qu{&RGfDgxx$Z|V9;UzQ)Qp0=!CX<_+ucFGo*HssAT z+cU2((Ed4V9a8tPQ;if`wXr3S+MB#!mqU{$UYM{@ZQ3;Don89^Mq5_T#X^eQ3Y-g7vuX?v|E1*VfUkQwKM9Vbpg*LbPS1;55?7;)I9A z4Zj9sl)-3793kkUV>TFLwek9Rs%Ek#s!UNT8H&;w;`EWKM3YJv7iWslCF)g9R@JZ(iF!+s zTD?8{`3Ce-Ma1c>7QM=3#5hKi(Nz~6ZPrIqo8eYHy7o0DdYKYN2qFBppSRwUXf}-y z{H<|`hJ?5gLbTqLV8WBv)|!lXwHo6Lv3k5nlWyi@X{L(NSyY&+UX>W5Gh#HoD#2`s z*O^DCV)Y}0C}0fHM*jY-#bne*n@!dPtF^e>OEg4i3t?C3)nrbf&yxUevnj!sw=hJe z2*Fq#>HvPreq-j|BU!&Fed7w^=6eRNpFsdLjjiPi*EQTvjwG= zL|sH|AubtHL={Vnjvm2!3$`;DZ@y6h=$GD%dg@kXu|~wGk_-SMbVj1acvGYyYJ|$k zq8g@;;G|D44tqx^IYy2=Q4~h#!PqaR%0Tk zwqb_oqSfTHrB~r#T2we2{Ot0+q8xo;1F-5eD9*km#$=6)#EzfR|ugmG6zuI ze*D*9l#U4agu$3#MHk><+C)RV9!sv!N+eEzLIlJGx`D%}OqhaMF14uiDOe97L2tIu zQ|1F&?5CC%3VVeUC%q~kB0(UnIKK1}7^wrV!AD3CXw(`fzjGcW6(`V^>7;j}4?aRa zU7S_#M`IOd6=0T$0uDlmJ~5PDLuk=J103+QrWnA9z`e|g*i*;X#9Ohs*o8P9T13&0 zAN_dIk7c+Sz3_FUUx}?5j5wT$0@#AD^d?o10dFj)(L(g)6iFl&p^uB>uSP6nBsMz^ zn+__7FqzHPghZjIAu+&&-lFI?2;|L4Oi;*9D}mrWS|V>5#NpS2#e)_FD|m?D6{C-c zO#rXMY;{SXWqNa*Q4ov{lh#VbI+a&%jn~(hfDvK=h(rjyzyOt3V1SRGuUDudT_Q~& zWX?TwiQp$Xm923V$OceevR|X_c)RH8h zV5tk=kWk+M%+Vq7AfaggV(`_VOI<`FP60_OojKY{M_mBP^QUK!uPOqv6(=a!kQk$a zOb1692@rCHW*ABQ76P3beONgl%+K#*^&ks^q9f2CQXi!QJ63^9Ss|E-QE)ao*vT@K zcAM6bFSrhs{W0U7dSASKjPvr@kyKaetK`mw-nuxDBqj+VW&p|14~aN0d?H?T_@EIu zk~k~`T1-)i+8DhqL55>==E$P(w8FAK0=xDayyu%qp`(kNJu~@eAyr*6plfh5E_>$f%vSJ zBd{J27f@BO;Fd&?2WP$09|OX7gVR_?(6W2*!#wlI9#i%!}BC%#JL= zhYZRh=u>b?EyPwWIESVf!!T%w{7Z_c9enTp!;~yVccWEnE=i%Q;|q-{eUct*SyCr( zXceX*H*vC{x>2u>4fyPViO{vD@9_KaUfpo zi^0PG6Y#{0>8Q}+D;fgn#43v-W>l`KkiLFJCQ0OlErLZ-*aWOx4@v)j*@{><6jdA; zqlMN2GWGvtuzsFiVPXFNb5)SKk>(d=jpI+OGk=mcg<=ay1RbooqUQ)J76JK&s#=-4 zEdr@#z5(8v0UB>&Pco;J8NPDfFz>J+Z!!xYG`%%`8oU*5Di=q@xTF&!^%)Qt>gf0X zlTL?QA?>0JI5QG?l4qO{m_#vgkcE6(#UwAb+Jl@0;wPt=z&H(h#9M>G?qvJe48wMr$|X_k*pR#N-eW45{5eo zlsHvCProotND*D@BQvDM0H=;mNE`v%oo1^gg^RY%BKVnfk)E=GB1FYSw`}=P*~vf|YzVkRYTpksSvnjbHAiA%UA{z>Y|}-@mse7^*RM)PSGF zz6jMo(zhqsK)5!q2Q&>mR$rL6X0qG4p zPhl!#sum|1DE+EnO=wtf0C|)Yj+KND<(BAw>&t8NEo=)IsWi6qJ)|tSD(|Fbkg$Lf zO>$ru3`dzn1<$b1Kh z$oe7)p2A{snnhz(P{U#!M!qe2Ez-k>Jb-5C;OX3TMh%qX0&ysHKxP({6mmz<*on}Y z6(~{Q&{hOFOsZ}I>Y9VLkVk91O&vTj#Oqf#=@BdnVg`HAPS^UAJMHiPCD`uuar^LpOZy! zfzOkkAzq#V*h~H{o7J#4VCm|HX&vZDG802WJ+Xt>Dik~Q#gD3=Z*XXsr=RThlBX8g zjqnzX27fC3f1v;+lZI><66r+E5;`9G2GJE!d*X-$uKvm>c^A2>6-Bb0h5aKMkxVVA z58}(k@icI#W}z+{YYj0nqXhA534#pLQuSG(sD{8%OB{#kq=KIVFmLa zom3?;6a^0#7goxxeHRPnP8(9(jp)>uT#Q<{8e2J8S_7*J3!y{n8xX4L1sPUU1x5{l zXwN%1FbLbC=}$aL(lxo#j|CIJ9XXBSvx_$6YM{Iwf&rFtG-xTxV1{|ED6^d5fgu|# zGzMwR@Tge8M?W}PG>YStN~=U3s*e`)#TT$=#r1mh@SzzXuNoa&VE-$DS~*h=&Wke45$23ciVka7CE0o0YAsq@t_LMS2lq)) zj84@DoKR6cz_j^yJoD5;&X+{7?W{bk~$agVmLYk|wVZfaHcQqyR?^ zNg=^Ng{C!^nKX1EP7-1gqNgUbzeWQNLH;Yx0B`BVVVFBwLovV?;G-0SQ1Pv+NbW)6 zf-<;-aSGw;2TqiHfD7^e=|cWAM-7LbsL~CCWW`|c97lFjad!(w@CxjQbIgwjbn{{# zg`F+b3}uQTRuDq9!b0G>*Z2pidb)-NYcwjKz+ftNbybB1`}U%<1_*DxLtXh60_wq} z)c|>nr1M;a$rX|as8I*EJQqsDnW6V69E7Z1D+P`~Slm11kVtV-O@-xfy@Iz@N~A-_ zixhGJv6~I#W#mz#k5nMrjg0?d9XX7-Vx>^cIP6f*95VyK%HDOU1_s6a`H{oO^nbje z6wHv2TpuCkE`=`?S_N18SQjc?6eJJ&;{7ORQBnWQ#im)jR2mJs7?&haMG!fHT_XEJ zndN-=|TWAO5!m95N9x2o9S5i;@Z1A!WJsh_mQeA6T-n4nv{XS17iBvBE<6 zQjBV0P$8gWjOKOy`^fB_Ly6$j@RCa`sU7FeaIHxyi4Kl19p5G%x{`EL-b$*@4=A=4 zdQTD#D#>LyauHpF7{Ec{H9yc%6|Tl{3RxB_{0KXcf(a7+^Dz)EfB+#)F^2R|unFE@ zq!ocP9tkbNAULLQjwEV7#1^(At+EK~_()r67LFm6PmqEUyuNa>q=Qq$=;BzV0q=*G z6ge%*86l}zcyVre8KrPHlS{dv)J{s{b2~;LQWs=iU@d8O- zU@%8mYcI*CMxkF@7VJ*X36!~)-7yp9ja8NI~kiPI3L=jGtdV5d$aVT0f)%P#%}E-HT9 zII%;8a_U!2bub4o^d3;Gl_OEwD#kR+PPaG;0PYJfWoFSHq2U4lW2pe1)gYL##< znfGV}*^D_W`VqJA(T2j@w5bYj7aSbG!L5p+6(NrGcJM0tO6sauMKZgaxiwQkFW~+u znqWurN}0@v{$h`tIfWu*2aj%|E=A%y4poNF0rW(!2N^{MRGcXq-U|r{CwHvMw_TtN zA|#D|;k-l+10PB2n7*Ue!V(0v^=5%w%xEKp@X0#W#v_teSR_N-%WW2dDH0&X&jg=X z9??QoCHx|B1t<7MeS|EFuGn6oW;Y;a>`gCs}M(v@lW=3QasN%w@w`poD=?$#aK=!t@G>fsVZ~ zF-9w?Z%Q0NhlyKY`M|MD+!a1@L7^T}sEvu_VgDa0N0BHa_aVFuI8Tx{w@3q0i;a{F zQgj5Vk>1FU;Qv_@gs1rAg2|O4DSL8Yp36n-Ts&fja2z94`F}AZ$%8Jp`9GSF+ydDN zW=BX9*)GJ<1ll=a1n6Gyf`i#i!PGz^*x`th#Kj@}D`?^@dd+YF4L}$?Da6~FfZ&ZO zLFi+RPY{Sg1+W|BwZN>$I}Q_t8hKb8tBexQ=;)9{eS%|fvMAzo30#Hi=9IwMozTma zXaYNcnnM9Z^p&KGuv+6)$YFucLh&a;7N>x{ni9FE6x%&gZ#GG>-$C@|t&cF%v^d}s z>l?*i@I6M<;*MD|`T~h}x#36hb2V!vu{#Pc8%?bxS6wUC-i38&T_mn6)oSe>s5qlT zG~|Y%Hr@3p5pmW?eWaTN7dJmYI@-sKPZzm0*HpDBq$5eXzWnacoUl-oB2c6Pe+`6; z4YKI1ktV^fjVhpx%F875)JGePh?0)9nm@<1Nvgou^XAw_FN`INN`o)|@(8Fm_6h?Kvvx6+1N#MUY8R(G>5q4i?RaHnrePNk*g~5eIi@k%Et$ zETS+g&KgjmXxM}#yUey6u@p}Fl6#TdDwJ3wDItzlR%HvLsM6 zJR%ur&{_(v(ZI4KRKTEM&tCqXD(E9bmW8#rqT>Lyu#({aas;|bKLoeMDoOeVW$#57 zc1}4vvM*T~4?GN9St*pvsUoR8bZ&T>m_*ia!7E7=u%szg2O9!QK*B`vhbn;qh0aJQ zdTV?rPx+^U}!cl`-* zMx-)93osZ39Yno=Z-_VH6P)B|7x&HRROGsb-=~m+NQ5omSc1t2{Wz}?NURB(l!Q2X zQkX#E&%~VMR3QG^kN?IPBEdj0pw7rW`W74ufl?!pD6#0y2XlAlpQ4$;v$6mWPV@$ig{^o<7u0*x2q z_;0YMZ-_?bH~$HD71e88c?4G%kK{f?a`7Z8r)Ln^%Z_Qn*rCsc(iag++6Y=Dny@(n zEL8lM5-H##h2$f3g|fw zM1cdNwIGEfjuO7SkYt5PQAFJpnwt=zHxP_76Gs^qO0*2e7oxf77I2L~lK?9N`g9!j z5l0qJhcr$ zqeMxHhPw-MiR-dt3Z;MSNaG&l`F}2mZWGw zhkptjsUK#I7K~8&gT*brE{BvM|Qdx-fkOwhyMT*MF!zLO34p}41QP|$#*;I!P6Fn8T6HXvP_R-j4 zB%5-4C{ZknQS{z&G@!hvKn&P$X)yvKl7{Db5NGZ&oP zJG*tnL;7hGMJ$CP29Qu@W7p%6DdXNh+p@k%u8vZ`Hcb2+56*g z=mjMBNwR?~bSvG};F3aykj6oBgYtR3r8iJj5)Kdkr+MUS6+%BR9!{s8tO;N%dZAyK z^i<46UWo6b+&n!PCH)SgWOv2COu0Xj=aak}QuGP(NRDLFiRD^~lcg|^=p$%HyhZZf z7EaM&4`83*IO8@#VY(l=jd}$Kh9R(_Bq<3&p24BMp}vm%PC=&%@I*cU!ni!fuh=9! zAq5^IRKzEQ@yMe*xI2cD-u;xqUX7dGRrE*_r-Q&nPna*jU^6+S=? zY4Ctr3%ONQW(B<_YKGQ$eyubi3iHykCxK`}D*hG-~mwx_g` ztO$n%J4B@iPe(NzA~b?(>Se-}9Y_zopfN@k0#HSuZXu7ISa=kF!Po2gi$d=lkUmLb zyVR>IUs_rqV#GqfVCkughd8i8H&Bi;$I^mH<|pI?&lN33afJzMytak>uEaMvm*R4e z#=*z&U?Rwbmnpl%6J>DqhAc+tQGzFh3Hcj^wIfDod1`}JDso6g8c8m5`0J4q#_f9$ z6*xRa8z5fk4hZkfA3+t!MpY{w7Ip2x9c8fR%&7`Xv6=in9ZJD19hLjZnN5;2nRjbVjB4K*bQ>1xqdZ;tOL4^k zdHb>87<3oJ6l>6v@qu&9U%7=OAh`(2H;kKT92K}Fq&I#Wj+e=@mHXq0UAzL}B|5w( zxTI*Yz(FJ=>&&DQI$$OKp|~``&~P{+N%x8Zi{%$!NJA1rz?I`^`6Y&p73Azwrd&yE zlR7L&g0?4r=TuETMQ~JHpTkqRvp|tB#pu*>z?1-f&b12u>?2)n@TW3wSTcA-m~`0o z2rxA%Hlf7GuzXNNa7zfs z!0;#+jzqVUlfuuS`9Y0GGzP4ZS|L|Bg6E|2E;vKvZwd>8=s=hXK|2~jDdetexlBI1 z!a#!_HRwJTT*M&SM9I&M9ptQ6hMbhA#f^6&NU^^*6z}6MYs}N3E`73wl;ZN=s?Y|5 zDe{4>O_pA0v7|SO4uV*?D^4O1=`|`AUa*;r=JF zU^&!JW*6~er8cF6kRl{y3IJ7zC=&AiXbsMJRan7~v?i4e7Yrn$0(2q-1%~(zD2&6A zo@5~{jlR&~z=a`4v_b(ahYGHwXMRvqw$@3yqj&5w(I}A&Aaa&)c7u1YANhhD04d3z zmIh&CXmW*#XGKu7B8aBq8gvmfA3%~>kud4yylQD&$uQu%0Zz*&Bj*uH%D!WpNzsGq zB4vqadEFoo2QrCq*OD$}koFu&5iBxF!|1)3PEc&6xgNu7V7kROK|y_NgA^S6%elOhjX(eW|pheguo6(W?N4)+^EPc-6!g+fE%&s+_JekUX3#gX#foFXw#zQg=B zFhFhvTT}?2!%)FJFx(o)f);AY{5+G2>WKDQjSemOqbm=&!tZ<#=j2z_NOl(q2`c&N zQsyw-4k5nGr)eot=GYN@xMJfemR8|*Nx2$4r%#UU2)H^WS^x0#@Vl*?#^u00b~K@g zMhJ6J3c|wCFW=#X0~~g=^CA*<01#W zsKNv>9?%LGU0SQ)bfTOA;b+Y*3dXp+7tS4?<Q#yrXoB!DZ0SQ{Zp&G5AN~p3zrS{1y&aF;N04~TZSS|L)I3B zVd;-Lkdv64Nk#6oOUcoKLyW5YJwve?I5xc5+Ll8vV6Da2-@(-u0i~qR~A?e#6#T3yP zK9TpWSPz2YI;ESj0|Z#q1NeNfg19Tf{itx77SA~^QsD!HYy7teKn&;#i8VmFbW`+7 z4PwTc{*qB4sp?=+xRIrgg9bz~dgxkonFZGugF`|EKTrH<26$#>l-5NG2yBx%58ik?JCo?bu@41< z;Qs_yry_kQxpG_rD9JUb?dZdyte~u@pNb0%g>^d|Q4$$Zs)Ota!I6^HG{+hizubgw z@#lqb1o1WG`H_NMn6L$@JfuGHvAsw|KPu#cbtqJiB!5)6C z(Rv4JLIOgy{P=6>l4A&Q6{ir#+_@5jNrfohR-U^Lh66ulq0f@Ed0t8RWEuC7hL}>Q z#?xCB=u@-c`50wrA1?*1Jp+0ON3l7EEB)68^K^sj$UNToo@sLTN zjr6Cbc*?S(Be@qF-l8FXZb|I3x0Ea7o)urJQ)_ ztjR~7RvTMG`U2?)V? z5MaaNSHvKN$IMJw3g? zmg)xu2lfIN579!6l!`g4z`W>eNykm9>8-(^3Xsk%t|an52Ba{ho}^r8aX$Thy|n$I zDrgi;u`(%ZNhVe7xSz%|M1wW)qDM~+iD;5!%5YwOp#y^mAD|%_l|G$o>To{zTnmImJnhkxe z3tW@MromCX)P6}yl~GP6X!+67wvzW8_uVrd3$NW z2ZEdVL;6CQ_7ad;{}H7XTR)Qj`GHU3r2|jGTj<%dC#kPm-l3<$^&#|pJbnGZ#`)D@ z=?aIlikJ*vmF}+X>CX;fev;Ub3Z<>$3}wki0M-;AsU%N$fS)GTOPpN*)MSOqMEtX%X)66r}@v7V$u3FiOKIHkh2lqg3apd3Z78mdeba`uatOd- z@2f)LR)_dO;yK*w+H-Y##%;^w#K@&pOai#E_<_TU7owI)xU_LHQ*d@ntUcAMFb90H z5=ZcOAgBb6zi48uLaBJP;eN9s7+pL2cz&8a7`#Ww$J=8G_kOXJja*i5SrIUQbSX_3 zV|6F~Oz~J0Fb6ko8{dTT)1N@#(rJP}sO$k4`;(7Hi#J;9y~mD-q=4tEUxIUQZljfgL<5u&L0vag5KFP>dNIS69ihInf zhVfVLs|J$ebsKbhS4+)5184(2CtnO^GZ3sg@Avfiz)Z>NflDHK@zu|PX+xRp2F7FV zI?A9Q@R7Y~#a>pY1OirohBfghhl7>73WNK}Tt0^1y~0FT%B*ZI;Zk8p|L|X)Dz^vh z(58YCwM)BPaC_{kD1udU%EOng4cbt;bwgP?4zx|3kWNk0nk7z1OG~5Sa}yI2(`+e# zR6fU)%16uOU(;0Tku^BLK^&FUHzy-0xi!coWxGZ(54Ts}QT@Q3%V?RH)+*r9J1ZwU z$eDo*%mP1vS^Z#;bja?T(IUBZt5yuq-oL z1fkHPln5QMInp1%TeoQ4GAT8=1hYRIh@rz$}TPgz{{f)=%gz`if6S+C=Ypur(Ep)PlH<>MR0~K z*!I#dILm<~uFUjR@Tn~Dl@*LLWVLnh3P%N3G8CZ2!b6?MeMu9Eq|Fg{GyDyY<2)g^U<_AiHV8*QOI! zWvgNYsB}g3wU&Wg_puT#t;y`*V?Go%(XqGX3&4~s-2`xMAxXt+D{REzj_)$nuXO11 z?+sdf6`%hL9eHzj{au=vJ>PBI*vH)p!vy;)xsv2r(k)i5E6Qc9!b%gsJJzNNuhv0? zvW?o0u~p+_7P<1o`I;c(%$ZO3B_}4gXquRU9@&?aoZg~UdQyrnwMEkS#ED~*Q(Lqe z+d64n+SqX^Nr|mmk87DWal(X_V^b$4r6#s)oto5gV)Dd^$;snWlUk2YPDx5j88@*- zO5)f=yPRTzmq&rU_hvCS-6Vx|VtM`=chgPGq2e9E(nFkOL&z3a8r|R3Sci+PoCQy9 zd9Ld}_KWKetZNq%lH%I=(c(=Ti^Q_8_&4wv)3)vWlXU;S4!-_Td0JPtxWquS>5<(7 z*D3Z#hYq(s{LkI`pk95i%kDd>e;2UqJ4r8p11;~tp|c0~?u(J2cmFPS^d3F3&_H>> z4oWD<&4!!RnFFLHC%0(PIytdLtJIX1ty`z0md5EV8R(;UN4Ve6jO0Wfp^_{Nt-}=A zoiLC|jQzX*m@aSuW~3zg-MbIy(GziD_jeT*REb~HG9KLh@HUIQ_)iYB0B-}bw>|BA zN@qE%v67KHo4tWlcHf?(x@Y&y0WE-n9d}@-4%wr6_0C9^PJUNA7=yANnGu}0@B;|) zso-iC`{o9FQ(lS|V9Y~5;Xf3V*ep?=3`@cnhL}8=D) z5@gkz!_u6vMy8(4s8KUqIahiJBLQ2pv#*~#gC#QK(X+}6SSE~*r`ZcLh9x#l8xc>j z*r}6eVVgFd8%MFckuFUgtnaO0!ZZUM^*Pq3d+^znz{%~5*v4}c5QmRP`OVm23%aEQ z0peI*dyKs5)DpwPX9aNc3#49eLDF70Q^K41kQBy!$2g*A zUF%zE2tHdTzwIH12|kL0C_&LIksK@>%N|9=hWG4dxTLdf2CkkeOFI-kjx)hJ@hrMX^ENarSTsh5a_o&lLPmhC_j;8Vt+yI-)QY#@0kHZY>%$ZG;l z$;J^^PQ3c^sso3e`TlqNt|*A8;P|%m4IJXM1emR=4cf+XZ^O~C>s$?a>ad_hLUq@n=>R6N+_+~*Hzw)FAa^k;7{=X_zO9s+ktg=XXB4V)* zQM_OzN{#XkyaPopJ4$A>mgOCmXBh@KcfR^KVPUfjnOSF_>&0{q?Bue2%KTVdP?TV` z6NwO*>C>=gORyF<30!+Q1TIXNl)$o1_9=)2$wjpeNT7Tn$^uTJWrcCJZM-5etHbv9 z#_|I^I8`!zoFz4iPb*j=F_tV$Wk3KvC^2-|;57%5_G5uTj!#Pfw{h*`{ELB7X0?AR zY{d@Vl?!x#K}*N_8GunyU+JGT`|s3BXzy2X6x;=uS$o)hiKGR0G;#Lr`LQx`xr72S zB|i+)_5_Qk9~`M%6uW=s1$Imj=!!!jyUZiIW;hUvw@=Fk#7)$(l~bnd{=}7dV{w6V ztP}VGR_o|cxlV!GJ(yDgN}?*4DT4rM{0nh^DI{TADf!ybti{rQ8OdHXmy1>5fEjzeYm_y#tKr@bl*besOViTwLFcdl5fS+tdlvjksKAg^*9uWbDjv~+^t z5^jj|5547=N0<)8#>~U{y_kfU0FNI_)iT=x+}rqPY8i=TF$geLn8XciS|ug;4`g$9 zABPjsWxtD4dU6xzAN}VeF;v@Mjf(xZG3+loA-pA5#Z#|5s5{xu{yMFVlhU5_ZZ zi=fO^o|uSOV%2i6DU%vHr~v+Q74R?fYK6u9)3_2%o&e=ZBj5k#{}@S-1RaZjm0o!f z$e$hFe|*l52C^;TR7?@+RVsuZV5o8ykrxd7@)Q*Cu=mCIn7hCBR5p$IAB=clGnTH= zQ3-vqf$E2&hq6KjP_XN6(1Clf2C(su5yl>C;lZrVpkXp- zGp|%8rlO59U-_gUk|0x((1VjhTaO984goSTiE-A39tJbHM;AaKXrGRcOG-jm%@GGD ztrNB}ar_y8*!j(3#x)*~i~q~EKa2o23Cis+`(xWX%!vsx{^_{?`f>(kcSy;;c+>z~ zh!vXzCeRf-tdMiziM4eID-K&4auoGbM?Fy}b}h0B zxw$Wv`I@Lv;3x(q>8~07$UNrRoKl+=>Z>?>Il`2!?v>HoU;WEdsG`{Z*2pCWIeOW5 z)W@>RZhsW;FH>;AA$V47H&3z()gM`wbD-4aDQ|{C)@oiF<>!WY)@=)($;+Fik4@L> z@e$oJl(c7ZeD4*mzpAjL{F68&WDRC=dBl5xd}Rk3fiHHVl)K<{XJCm3z6E$07_%XB z1`#e_;1Uggp_Ogx)(pw-$FtA?nl_!;Ey>^2kL3;<8MCDI1GQ)lA9?jx6d1u{pW~0h zUh>SbFD8ES_!w}!%e89>s$4rW`Pk)pN%b3_F z&npPd7)!F-5@tbI@W6%zq)mt*k8hdVk zRaeMd9Nev!mW3_3VvEmXLG7?Z3&u}VnOT+^lvnrJ zLQd&c5Nnet_-c7vS0JyPZ0R{RKzIOrFnkPt!+XgIo*1+bdRT!7O%XnDRD4V4v zc_TKEGNPi^^$CocOrY^NJ{dr<^4}IGWJbbl1b}l*Ow zcUwYDhPOY<&df=9Ll!R_G0|b}beT&dtc;djdsGm>&Vk)-##sC@YuEy@_=+#dF_T@Y z1rpn@QsPYp;^F|c{mT>PY4FG>(UIThvIE%3$Xjed5UWgVKR>`Sjt~~)`;>7`v2TCo z3o-{!u3Q>mWRa^-?2%ZAl*a4Nm;~MPFImf+3OpdXfBkrn7t!*XT6YoJ8zd-QE5r7x zt|2cldGEx&0LS+9U)NxL=+e3e)9)qkeL%~S*MIpP0mU}T5mfS%F?QkrW7Fvqn=+cS zta5|5j|I?4&c8Wz!Vn$!`M>^ER;<+L@7etA-x_Zl@S@4zgV-WPGK4);+e7F7axW|A zKXwZCI*~uk?(fvgF4TA~V(~=dGUT{b4&4g6>i?JMVxds#Eo zU8AMjc+|+ieGA-I!pTK=#=C@+#F`K76@&3l+C&n9XaWhPE@k6ClyU$q zlqO5~c?dz&n8+lW;iV7~{fXQ}{fIn7vs@yKap5O1DY-?Q-@d^V+B`l`fl?_7}5ZrzdSAKcAEI}B>PIB1dF zlt1$6yB>K^HQg{BPM6yg5*p^M5?-}h^@zwCHKS_Pu2Z+3uYQAujT%SC#Ky%pNod-v zc`2glZQ5qEYoBT1n>%Upl8qQy&= zE?d6h*8G*X-G0Za)py>t=I(p$UAykS`yW`p;lYg$ZF+d~Bac3|~qh*@Zw7^zw)0~Uwi$HH+SsZ^;SXQ+wbgtchBB^``>&2zy}|GbnxR(K0S2!$Y)1C zKla6!UmgGY#5do5ck=sFr+@hIr=QRK^6PJBfB)mpbLap1`@%m(7mF`lEi3(Qy zhhNsg+e~*CO;>dRr9kn!yq(>H75fL<VU-<8hlfWzs0>Vl76cIMRsnn-rvzHG(e@WCCs53rWgxR{}D zR^K5IZpCapaG22&)9(tY@Lv7d1482RMge>>p`RsLYh4SAvlV=OJcDCFbSV@duP%Ty z_Ln<%##m#qnfO}^Jy|?EyHhsbxsf#xC&O?epG9xs9=O`qk{Rtg#Qyp#e53%Vb+*J7 zMe5bR3nKH~wGhjcl9}?T8n2`5lkFCZ3&O%I=st?Sv)#2v4}94H2A25c&sodWBxq*M zk*(XCksV8R)gl%m^n=KGM+hJ@2#cw0i~bMF8qyDAPER@R*iy-IWhSM^<%w{tJ#dsc z%f3?Ax<>(s@waY)YJZ@LV=&fL3ZPl%?zkeMW8Yr=`uWlB-?ayBPRQyJ_$md9?;)ba z1hcmB<(&_Kk5%yezcUvX&aQREnbuAqpLO>FNQN@yPayig?<=ou@E=!&sC>TxJv;Cn z9od~EF9+q>Gslu`=IbX=0ecPVFoci&fI{7e*m4wy+u(-L7(rWQ1tfID3WSI z)uH-Wxx`U3N~9EOMQx}ZWl=|T`ViWtfix6qBnAsyvPjc0blfP_EwqG|(`|Go-9z`% z1GJGg(>8jRUZK~Z-lU!M4(*{2=~FsNU(j*-md?;`bPnnQ6_YBQB1}|=swHX*pNJ7n zM6yT~okS1OOAHW0#c(lBgfXdkq;$TIJTxzRGq{2t8DPqNJK!wk@L1o|`RqtKs2 zAA|mavX0(ox*eY%*8lN6GVU|VT64eY9*84Yyxy@{RxJ?!>Vs~1f4`mIoOXw#05(KxnN(9IhKbzUuKE%bGr1f_QthM$IaMy8+{w+c!F>~YYqz`Q9}P&@d)lq1MFUyuiS z3*emTBIwSJ&`9ecydQ(E4Zi^$1nmTzF?hECjOPGj3iNeIb1D2sz^xGo-yPvM0N3hc z1%;u2F2h^^oJJyCE5LpS<`#JG!Fwp&n)N^!yd4OC890pw{0yZ1{!-+3yrAfDf|dZ! z`hXSPSQy7I~D2Qg78lv%n9I^0@`(%2RcFD-(Junp?%2j zkD%W~q%#8HUjl9k$Xj!`_eVKhL^_iYz8~V|qI?%3ooz^C5ZsM%f=Xrxs&*4#!R=na zyBRPZL>cUce+I(l14bfn@Bq*ImZ40bx52+X@^b@lc^Tn$K`%$RZxH?-_#MG}B=G5g zbpIJC$OV`uK+Cg;`)yA_Ch~F{@OdBM-WVllCGzV9zE6QRI_yuvFCVy^18xri#^;+* z2LXQ#!e5w)azgm?FjvKU1@PVszY$39C73^hZVi0|_&R|1Yp9bAV2%R(wZLN^=LO|6 z190y~xG}T284?xUfqJnD^%i>03d>EPPgl@fFzHf+;>AmvgxBk3kE|CqneJuqQ#HfE zQ++(JDXNN2M(2*r;cz-#F1Op`2?+@e4GZ&nt5gXOuUfTQwd&O)A|fMe)TmiADymkk z+O_M{sav;RJ)f_B{RRyhHf+?WapUOdn3&kuxVZTECQT9&nl^3Lta0_kb>x(r{oH#gAzJ z>KqxRx4koOA$1*=b9cu4Zj?msIIJLvrn#oixj8iXCK^xS3)ZAAy<>2{#&vHYn%ZL7 zVroE`5{!+Gp=wR%jv!pu_ee~7+)W+pFK^erxsvr*bdB4+^B#6D+dOP>_3BNM`-a>$ zvPIPn3!1MqYR{hcXpXbm4fkhvTH0gCsMvd(>+^2DQH|;|FVvU#!0>w-)|>y(%qrs@ zcP(nB)$KgST-9{R9lb|yTGypkopA{(2Hg^t)Tphi@x1Zl2Mmty|3ue*1Mi%-HvH~x zBObqRo~QeDLvLNvv)7i42ATN_DeL?e)7?^|CPY(aAwL)j@4_ntnpR_B+>+=vEMVKw z?X&`eB2n!g?A3;vQ`Sq5o9^grw$eQ+rIWZ0rh3x8h$c~HhxXFkjJ&9e-yv}QKKLd= zb+aS&8a_)S9}}C|~`wnlzDU5M`}>!gN1`6?+ycGODsFb-3t?NB(u~ng#bP zk;PARbXG&ua8-572L=^h$c5q{ZtqaMg6H)+7F0yxb$yvI!yz*|@MKbWW~P_jGYJL` z%ujF1)HKTMoyicS3;qo+X=r>qx0-GfUVwxiHV{-x#(=q7Y;Du`n}kE6>l5V!z= zjU*ssu0>AR5|57Ffoz?CrPV<6))EYQ9)6z3h`@F~l}-Vy(;E%iT2IR!7&(C8=BF_E z+1SS)*_t<*~g2b~5IP#ypEXe-YZ`#@N$36;RRlK#pCbFLK zpnEv7wRk(|{+A!Jo$H@L_o^!L49`|)$6{z6Q$3KU4*;q9m}uP(=|juk@E1fZvJo*8 z)J9|@78NM+ZWJ$D<{-@)YmnwMNb`D(cou1x&qS1hkWuj53{RszvQ`Vxo`*$$5CvNs z+2mL%#`rp3r#~(F7=Cr@BQcKE*p79UEpNc59%{hiXHj>e5X~19?FI}hR^nE%ce8PR z9)UX_Ma8x;lc+s$oo)A7S)S9)w%b)kOtfmPAE`+^ZZT<}1Hvcla>=yf(y0tg1W*?@ z!_(*wf;2?P=h<=#3ZW6#UszgQ1W_B0aRiDh3>k>79~Q75v;0ken(tsf62legc|dv% zX~b%1Hf;F`RW=T3Y=-52bUx$?47(rj+qOU8%9_KCyeB$>g_uuvorL)q z%-fK^k*1QB_%``5gm{&)5W3-MMVgPG%q5+rQ*xQh==50W55y!At?lcwfOIg|6IEG z&jq@C?(d5ikR)9~OvDAgC6~atEV@{75y;2~=mRl0aZXAuU&Qay#f!!G0W4?h(m9}l zlmMSGM{X|`UA}zrJaP(X$S9&;{`*1^U;un^5$6Yq75!6Ga-pR70&$l3S0qumScJR* z3c`X`Kph%yrU2ZTI3Nu21Uq932Tm6NnAjXZzS#^TyAopoqF+Xr^qT4ZBw>c}u6{x5 zAUX&%P<@a7sovCN^_gtBM<`pf>=pfofrIjn_KtRx1`|d}Tg8G$qln4kFj{VolBc|) ze5o{4yQz1pNm};5P(u)=K-;PARL2>&7{418rTo9^b{lv`!D=KuD>_gX&7eF{U8$~| zRDRL;-HUorb!8)XKpRC5+9+UxnUCTow%*bL!X zYQH*7nTAkHm1=4=^?-IjYo)eQJ5rIxDU_;O`WxySYFFi`Sgb4)uPRYW9c4#_(2oP- ziq(S}E6Xp%4zpIBFI^mZ`8bP|Wc_1msadL%@-cl(^>xgC)Z3JYv_|?m(MUg{{X-9F z56S;^;)pgxKPZ0I&Z(>h>y~2PTr+(oxK#V}=Z)u$F;HJYjWMPhvyH!vlSYZH#u%aI zYPiidR!jHQ@LP>=q2}$zpYmPLWE<;x=5B+PVkSbd?LBE@x5tf^=5gb=!J#ifg_&XI zhsIH30PG(b9~xg9-vjO-b28LIsY>Zwk?AAK(XJCym3%c?P1fGmAJF&f@%m7Gmj1Ku z2G`APR5#if?Tq%u2K^bmukjzfp7F6h)tG1WHf}OJMu>5bvChaaPATim^=7_#(YV`O zYu;(DG3%J&W~_M+)O}`M^Fh;RK4d;`HZqgol5Ea5@5Q@;xx`#*t}t&k)6K5tMze*v z%iLjZH+!26&6Vbh=56LO^9eK69AUn0zGW7gz0AR8fqB3Aw)u{^+uUPrFdsAbnm3s5 zn(vtpoBPZIW*_rI^Pu^$`HA_ddC2_8Ty2guKR1t=^UTBMm*#l$3-gHinR(Rw%G_i= zWj<~mH(xL}n_ru!&7aJl%^%G(=C|eo^G5SGg#6t+XP!6zGXFL&m>0pYEH*Ehm(3Cr z>`(_e9x(4RA2A;_HHYcY9W@lQ7gCJicRiRa`$;-Xrzi$-*xrN^s44i#&9R_NqGW18EhT5UHKkITg!ekV0Uq%V zaEW(eOtI2^2R`pY>%y{Mq673Rbf0U$vqBqUBDOmxfk!=suBWLqjq=bF&Oi_G8=aNf z%1ydxBcQ3R7zjS}VCbsEZoK@O32t~7iWRrh9ptJM-qmy0hZ+HTBM~oxamc1QG?(T9 zI%8L8W7Z0*L8b`q{HO%?`M`)NdUvHEPGhBdhYfuTtw(Mi1P|YWTN%{Fv?NeESI^B+ z;93(C8?FP7(-U}iq#Bjt(pBQx=3mr-$}n4ioN{UwwQis);sCa)8 zIaCFkVG$;&OMpuRb}_8bjS#OgxLgNXV}Ic@N&nvg!NT%ul>cly{{1u`jHVnwX(>|B z8rC6&G}QADajhD7N#+>e4+8z$fd0DRQmzR|6QB#}G|hs|!g3}hiUn{xfRHyJ#RYc$ zZk8~t_Owiv>8VO{vz|5}m5ua}tk)LY?tmGIeANU+F2Pic|EXXw9H1ezZJ5O zl0^&Ie($?R%i@yY+E-PkQ%gi%(YCtEbncWC<9gT!6ubKxP+L^mvTE8G)A7b~UK)oXZFS%caDTFoG87UC>}MJ?;U7`1>? z3%f?%s))M~Y94q>mDR-V@NGlC+t3qbIW$77wkRjAm%|aCOEN;%*VCv$5m$kBt-LWT z&YP8sHng9rBb7wtGj`_^#nqv4{;l4=vb>#^xcgf#hqcoE7R)8?L9A3F z<*0HRWyT>ssFYGy$EGSE-UwbAx9mdHb$>5kX!o!~P%{fb%{F+ihQ2zq+TxLakvDH( z%rfOJYKnLVwdP&a`KmTG4fIzL=;>=nXlA7~{p#2h+PP{2n(aW|c2N&-$9f?@?;s~U zMpmV!q8a)q?nju4-^za%Qh)d=BX4Ep=8@_BK=I;N;BL|KSM1ShNTHZ&$#K3AJG}>B z<1}N)fX{f0kr5&uu9d-^3v3v>1@gbWjBDkM``kjL*A*lDujn7G9;O(yt08Mg4ft|Q z*2U;mxxc#vCR|logPDfs8a4G-gyX)e%{5A$#}4ji3a=5aHr5-3pnqlgtSd{R5VUJ3 z=F$(9hU2;sNga?P=c{3*;R=z%0dnj}!ANu#xk(dgVk8~JtlwWZI)E3aK0D zQcRD)%@mifG5_M!bxEPB*pGLiuk(Nd9*PuGL>27kUq*Ud&fPIKa@Z8%0o1y1^}CKO7)`j{1PX(q~a#@aca4L8=-NY3#6xYF2hy`dRjGj zHB9S34MkFeW0sEO%rRCZG#$Cxgjkz{N``Y;g>Hc>QxBUrF!9Ql+esw0$ZC>L`mBLl zBMBuIKAb`!&SosJO_om~&T=qTDe|932d0q~mj53>$+W>ds153~1*50*?IZu&i5yU` zP|}a77YW6uNO&eQR{AhiBjHmME=;|uG9E+5*N9LeRxMzkVCv06YL*X|49}3Pv7KQt ze*Sd0=e2Mx45FUp@@OEXQo1r#8I~^T(+2b@t?z|222}N@;1gW${*W-vAiYwm@@Q;P zC^nFSzupys-uOsWIk=R=O3a89eWYt;zbHBu#pn9n9CG;oi`&)R&fvRC* zJT(^Q$t{l1U-nGvFSw4S^KhRgYUBd?%!Zl_C54?XjNE>srnD?#%!X7SPkg2 zVDnS;JgB-4DREsdrB9sLN70ft_am44P&-#qw1~zG!HZt@CkjV>4@Ho7;+gUj?plfGUV*~E5wKr8KN((MJ}E8%&`r6iUojF zU2H-+PEnKI!|9|Vq#G$h(6hY_^$%Tu%PRUC7#dU{Rddl?9Hx&b0sp16IgCDaJoIt+ z9D!o$YSN}6jmMB~m`z#+n!_y~sl~j8-^|0GFlc*;1ey!=K+v5w8LK zR-;}I8Ki&ScF7lx2WZm2O73(a;fCfpLB82paS1r?zd6Ksj(5;kh2S z$i}GKtEHXik2L{pFjBPCK-fmWuL0sWfL{&y9|=rZC&*Zl7!?=}rx<~JGGsQ@lzhh3 zct@hQYcDEStC4=?zW=|^{~ZcYR>AkC`k`ohZdEi&%!=OEW{d_)dHybQr&=B zz5^!*E%k4ed&JSI^y@=ohzW z{X~HX#$gd{(H_^fXlvd3QTcGe7HtK_{j0;R3__^Z zK-r?r1qGQ}#k5YpOI#4=#W^vZ5|vhpMjO?Q>I>pe(O(<@Cx4Q-U3`p?9J&Q+YGrV_ z2Fw)EMyA2^-$3idPFYhGJw++B;}4*Bv@p?Bsi&w)RU=gyOK(FWqDVU`u2lo06)q#v zE`s)3wB1@`Wg0k($I+rb(VoNq(;^S+v7I7K*(shCF5@pXTf`urp`xCcAufyS#U;!I zx#iST_&-;cX=kId-2A2frCw0~QEL(B%gX&ylu@>^UMy30QM58%q$ttKR<$}#;4jrQ zr6bin49%7d1sOl+URSD8{Yk zPK=e+l&hD0NTvDu-pdT#;qh3X5hb%3iE$=87M$L9w;^PBm3INjuca%5JH4 z61jQ^n#;m%aLs9o+#JxBYM33OoaTx+W38qW*VkvnCz?ucRtoJ}c{@n0K{FA^%W~0I zeUMy6U7VBdtaa9YKwreYK|{SEc15lZZ3${JV>_=>N;d#yJ8BA=aSM11JlhDUI#BugePW%s1$0b7f3Q^B zig&t^a*a9(jC97gNUsc={mA`TkziP3R%bOw?V?sQGQ_LeJ*e~R1vYrWd-#x==uX{p!z1>2vxSv@F(BmG{(- zKn>E)(jqZfGb`4#j z{uuk)hIm`FmirT_l%iPu-J7C2W)5MB2m4A_r{6Gy8>wDEUalT)nl{cjCdL`F0dLk- z==QPR6_mKH($ajN@{uo>K2kj>UejK#G+dlAO&f32QpOu$m@6-=v{k1n@ghpOUdz|3 z7~w{9eZ4SH$5v}+wTDHfq*T6M3~Gfa36N`O0=`tLa--@2rMijZ;z@D8xZ3Ja8Pl=y^Lq|;8YU3R7 zQtdg^&!sq%P=!v5L0UR?rz)#mgSDgd4R*WQ*u4RdiZ=QS-l@tfVjCqW zTd*GeTJT8T7;YUgR$1?=aG9t&uwrcs{%{6Vs)98KO$Y>stf5>!*f z$%X%TIwg{^zt|oMXBjC;d00d$8{k8LAEEFF!a55apin5wos>t_i8vj=Bl#m3Z##e^ zw+t$e-oe~~NAk_$1=Q^2*k$Snm8yISh>xnDiQalG%q1UD+lXHJ{cw99lpn+DGgaw>vkqHm3-th9yMtSos?--JQD5uPclh5a z`ik$wcxnYTSagv)n`dx_pecN&sonKkv7fe$x?+&b~r-*mNZP@p_9jerashX&z^yHBy|y^fkF1?o@O3$v*DFk;OFcfALw+6_F^c&H)z zPLT*+{t#*dK(Y`|-TNrKh zmZBQ!dx~&_s<(+&;s?~$1v+WHL_;x0|AKl;$~~dRiCgraX@K|&GswUEl+$lU&evdt zHcfm@`w(ldo}+isJL}mxQ}qC~G7f0X6el<#dDuDeQ*{}r`nUcPaa}K^&nY^u@7H>v zRt*5x;!*5d)ZB%?F@rL;4W3c{PZtuh9oO@6P`w{s2GkPO(^TM2qy3 zVi+A3cZ;Q@i!MU6zs_HF7gz+D-7`YsY z6uC|A6b+C!7rmlSrklkGy#cjR#!*YXsgf=>Y2grj2p2bsPpF07P+20D;zUDRbhr9Db=Tgcr|4;VTnqwlWvkc;uJ};ePQA20={oHkcwyn-+zk=n zGX-Y#y6B`8(jM(c@isU#d7_W{tGI|=ogy(DJf1&rR#$>5>>W8$B(5!aqtPW{o^fCG$`g!SQ`IP?eu)`kGs^gqask>#G0^gZ|5Qnr~ z`dhZ`cl}TOLw&w}gFa86tDn#Z=+pH{`c(aO{SEy!y`S-xz6&9**VpS$;zUq+xc|58 zkLcU9pAy&zmzitmuN2`=Zgd-Z$t?fS#|)B02T zKYE&xYJ3zFlBx6G;XFvU=y_h!mCt(puKlhJ157f~bxU=``|42t($8HZL}l^YR}wE7 z`S?O_s<*dQmflQH(9`t4v@f(V#*O+6JrjDQk*D7X#s8VG8G08(pcb(jWUFENF#S#V zrXi&lgG(s{%hcUS)Ne=F)%s6p zRVQT2BFHXf72M@;KVj^|A+jCVB7e(PyI{7|J7CT5R>K~s-B9mCeE{_#*qp3B#)Rz% z1Y0XpC$JguCDd`KZ*27~w%RTAHH25blj=RNSWgAikJzF(hV74^FrEDwnD91QAXIW4n+QZw;M?0@sN7sJ7xw6W%B{gry+pCzZA7uzhSP#*dE^`;}LOK!rk?P@iM#jujsO z2i;ei;zA=z9N!}8};4O66GpGdHnYd}R{vUv$hZ59jPMK!@H`U*qy4^UAU z>?|7Ag21?C;(tD#xQpt5*~ZEzRRge$>OwUVjiDOaiqktIl@&Wi#00@%w^-XAk8Rzi zP|bu3DoLtD@jH&qBtt~Kg=iV1czZrYq~Z8r8%$~2igc(9sCH6a#PKy&sZgy2PpbIP zBdY?bcr$7j>g0Z?LMX10pFn*CW!1^|APjX9wd+UJBtGDRQ|#Cf_kw!il3Kj9w$!Io zU(}a*=FPh}s3uSeVBNEF3CP&2bGQ$wEV9-JTc9KHZiz;ekM~Gavw?W`hIV4xCk9)l zIWRAT?tleQCoEk$!_3dHWrBKl5Oj2@pgTrGk^+(y)girc{T&dmS`BH7RoHOV9EKr7 z<2s~Kd2^?YoiK~=S*Y0)M&VBR>uJV>S>tdilVur)o5n}s6BTnPZw@XyB-~{>o~Dk; zmGOa_TfxGHFtH+RE)z|LeMpeKx38>y4*ZAPVL8qc+s^r8`yDnshQ;=~Z9AJ;-xp-( zF!-E!r|b^6RR{7%Eb_AIZAhft3aM`7cLLrMkY6^d8f5%6h~K-MPKU#U)IUZsUDxnf zVx{&4CwX%wjgnWo<1=r#KE^huwFYSUu+&T@Oo^Z~lBF~Vr)A+iW{f~d5Y>pN9*Gk4 z)ub9q-?vv(Cb&N*V)#Ze_pIApEnz;jW)I zX3pGMW2R1+I0sk$<7)}IljiWH@{{xOP(rh&&z?401XscuDzjYpBh0%@ItpEyNX%O7&M)$J&T?JwF2UL4;pN4+MFC-SnJi`f0JAuayx<-32H^68T7{fst=R;>A1G@x-XTpo zTYd}=ey_3LkCe5K{hHhHY?vq5?#A>K!QW1E zs}ExP%M?|#Pu1gU8?CEmYENlX#J5=T{i23wFKVx7Pit>z?MhPVby`sJ1G#Xi$q;3- z@{sbhvR4_bu2P>-YiK>R8?_(7l=xj+3C41Y-bQbycK`#Smp&4csMT_T(nt9d)%|<* zas4Izb?r+mr_Sh8F(Lm||4rYlpVbqUKd{_7r~jq@jm61CeUpB_z5`3U0)02a-w)dd z`gz=o@}T}IFVHXne@s83zpWq8k71E^9Lu31{i1#ex2ND%6XP5GTm3uzr2e~pK|ibu zqZkwGgZfcD(MUJG$1*(AP>jpCi6GjDGn!)>oosYBh8j(cYDR?70xW?nqovUi3#3uT zBqP+QVq9-bGlm#5jXB0FV=fi|C2|VS2v6SYiw^o-jrlOO0hlzHyte)%cI`s!?dXZMjc z9w+TWao(aHc&1@75)S?h>l0Pz);}FYw79)7ZE_wuWcs|tH~n$FS_f^?^tmjo{(Rcm zJ{StJRos5aafcQ^){P3b<>=F5CFzm@we(1EiIGmKgL zo^-g4v2*fh;w(7AGK(p48WNZ~Br1ccbp##XVRS^m1}qSC&d|6-1KVP_ISv{Enewq; zGzSIy^gXamN74m&^YbRa9R_!*C;SJZOFbexb)wf`=Vt-X*$z1O z;=K)8D7q`GTFsg@@g+T6l;;SqpVBjT@rx&U;97(zi=mf5qxUCN7g`Rz0veMD%7F(J*p2!pWFaos>oqB--MjdZ!3d4n*Q86AmQRs6op78dN=@CTZJnSf~KH zcP$DVT#L+&wMaQv3k{$);z4(+O|=SYlly_X02edL_#BXzBh^esLLD}Z@? zeG>EQQ>`@(Q7s#h`a>fMztD)xPK`-h*%)awCRK|jaWjwkD%(YZ8N7lVfyiQuo2UJC)3X zseqkI&f00X2`LS3>0}&CC*=&@zBW`(YfGMkZ7Fhh2Dw|dqekP~QP_oc6q4GWs%_6C zBQ^_VkVWcz=#^PyZiIbz7I_>UP-Y#-n1uJ4j^vrsgIt+C(E;=(<>euG4<%*lP*S%K zBee^JP4*2ZrOOD=egriS^x>0GhbED$|75DOcrx-cnassg$k;pub!;kCIXIOXPMU_vSRREe&!f->renu) zI#pXUgY+{qNVzZ*bM@I&GjlfT@odm$Hr6z_^YZKsB+lJJYB6-nMWoJwet8k<pNdEykb}2dmtn%ToHWmJ;Ialmt8Jv$`)vZAPbx~{lZrOuNk#qgN$kZy7d)k?`<_yi zFQG3yr3me5gnwEwx8r^2X~n(jIR#4@RVkhZJzW*Wi&QcHj4HOAQN8_s(9D^|@(#j0_pSanamgfJzlxw%BuPnM|Y1828u|)NsTQkgiLsh`A{K73nlm#F?>Nmo znV_kZsYRT~#JhtQUeE#WPFm>3PFMnF!`xX5J=PtkXMYz0BQa+k)L@lY)26IuGnMn`G`YowVOnGWVPH>40ez z956e7dBChjADWF9e`xA8J~FE;{>W@k2TegAoBwfqY-%SzHQUi4Q=`LXjm*Pl=QE#~ z?rNU{&tv8s`Vx3j>gdIkdX}_Q9(DM!h1-iU=v-jUZV$r18Z!%e$kv)u~37@ zGt9@c9|-}Cu+oPEU>;HFV*!9Shq1zy{wqk8pHpK&8oV20waKf@hq_seiwE)My8)jW zjR_gvhdO~|cz=zV6uY;>Y|4d|?M`bpw|JMs{dN#02*FQ~OF5(Ty@o&CfC&zEk?A2! zY{0vuPPg(K3ud@$$oo*t3Q@c?705o1H{aj#0^Xdd7wrtbgg0vx9igg7%|-PpG^z`Z zVG_Lo{U-Ddo(H|lc&>uk`g#H-%6X;K&C0{G6sK6rLnnH*Bogn%!ZSVxSlru`-YxvU?RL0#PoY$`8 zgHZ$XP`SCH|A_Zn(4ApcR{|kCCB?YO0@qvMVh`NB!S`J7trdJj1@581lOUfKJ(_qz z`}GZtjI38Lr(4fH1BV$YDQz=5r3@OLG6M7Iw;k@sguE&_0&_dQGTDr9%C{5m5O#>N zJ;H2{sEFz{3=@~ic|3+$-C3iiCtR-<8ll%fQS%Q|Wz~(J)1`YNYq(sve=aNxf3<44 z%im!p5d~*bKBIc~p4>YxkAM6OgPt(HckiLOy?amU4F<_>hx-rFr`l+v_PDW8QQ>%3 z8Jika74Oiop;7gQ!!UJh&8X^l_Z*uZRR{0u$3{fe@Os=LB&3En(p|qn$QVa0-&ivW zydeJdgKn>@?L5lB5NBPNt5w={J$t64h4t;5W25G+hNpVxNdd<&1!rvr;B?6VoDCg7UDZ}_NruFFB6K!vX|SbH zeZ)(FTthnkQ}G`I#&Q}pfQfBskef@zUiSd}H-}#f$iAo0k2tCHBk5`y>7uUL82i+X z>9T$tjOMNgdka)om~Vrb?UOM*<2UPFvnTA2rQ<}vb#&P{E|89UKb9$n>3fYS+nToPNjQU*0tUCG z6DU{B1*IO9^llB)P?{=I@HP=IM{HMmh;?AiBb+A%xjrMQe1JLwLOM>)D%2IY(3A+8x*=00v{*9kCK*$QY4phukV5P656Q!GfOyGh@>lex;b? zkQJ755D&^&*s$4;4cAl1``~{sQp$&W3^e=Z3x?bc7)_D>@qj-aTY9a5`xN9gmrg4= zVk^Q=#d)NufZkokWITRD7{}N zEDanlbIB?75Qk+Bx+DFmuulOFKLMvzm_RXwyW@n4MWG&oX+4zoYb_kD8I)5icvBs2mMkq{nQ@pZxIJ*c7Xu8K0*BEy*CAd8Y`JK6`9_S+SnhRfRk_5wBOl!m z_C172mu+FMx)tX{ymZkW?t4|M9OsWfR-`i1!XJl>2M`*4SEA&(5LQ-diG|dN`Ct>ru4+gvLQEYY&z(~;o zHLSnC&Etvs}kuVwILtlR<(&o+FA%M+3mM+4(NaYh?e4h)O*Vm5{km*x~VDp`GknT#OV``cjrGHLC zl_G7SxXV1|{75N^Kn&#Wm{C&{g``nbc#((0SEfHwH|VcR-+yFXFCVU^66IUqE$@0Y z`#+}Nx2DFXA-*W%b!8~F%!i5}_3w3SG`=k9$79_{$Y^%9Y@WuT<0jO-ktnU^DA9Md z#t31W(I~A1^pvO3hJ%$yvr3)Icdjh|6zgB`Tq6mw*vAUv$IAbH1!X<}x3LUW)7{6S zHlQZV1+AmeHk(yQt)W-ACc&jI;xrShQ2&$Y36xi!gpdN$URQUF@0|fJiE`X2kk5}n z-?P^}6er?_id=OAPQ(|fy~Hs!4E^M9A_}KEi?rWFks0MfNQ%NN0{yEJO{ecH!aeTX z?(*w%?_y%)&Y|Nv_c7NakKN_?Sy#mf?dXa2eV8sN(PA)Wd)agxw9|1IVI*4RV9<6G z7~7pe)6E z?!)4V`y1}BxevGjsL;tBCfJ=9&IVBVQ6pw!EfIpA+3jr@)jyo|ZaUP|%LdPH^ zk2xqC%pT%pe82)74>^K#@+jwJDW{-cOMx_X?<>mOUwi!T0W!oo+zmAs zb(U*HXmIQu%t0q-qL|^z2nW0vua^37&exo8W1Gr!rEkNTev z#i3)AT-2->j0+p|4W1&%pA6 z7;zgYNz#3Fp*W0_bk@*%Oe zO56zvwtFGzbsuDXHi}L7;>RQ6QL$A#Ew+p2aDMz{@d_k8-w8-3))?t(W zZDo)0iE={uUOA)uqWr4-hW)V_>Kt{hI!|4w-l*Q9E>~|=^VOBuWWQ5ggS#{zQ@5)h zsUNGKsE5^~>RH^dh!gl~ky@-?QWLe&+EQ(qwo+d4Cx?VMT8uFf9L zp3dIRKF-0;vCi?%iOw0$na)|x1c7E$TB!+FkGw3!dqU#mc4%bfCE?1#zuWP^Seb)!BgRT>6+(mAj zr0|4#!aebx6itaJJLJGJJvhFo9oT<&h*apF7+<+uJGo2S9|aD-sN56-Qa!5yUDxRyVv`H z_n`Npx7d5h+bz6z_~7uN;iJQE4__1hV)$#}1>tXp?+ZVQk5bgAI-=_6s*|fOuDYh` zW?UX3s!fZS9$&o3MnUQ@XM@Q!UAI9DUKFT8L zAI}__GbbRB1WmH25XEdbWOdzDLc$S+BufIi?hz(4Pm+;jW}KM-@qJ%60xBYER8&;d zctHprc;g*!yn}Li^a%zW}lZmH`|w8o9)jwvYWDF+5gFI&2GzX&t8+=k)4!d&q>ai zkaKFz#GEs7{*v?8oXI&QIa6{fbI#B4<;=^8=d|W5%2}LqXU<(Yt8+SXI&;?L+?Vq} z&ib6Ea=yv=HfLwf_c=f1^yKWy*^_e^uZtf)V$6sMBPNbGW5lEpGe=a8IDf>#5f_i> z8qq!C{Sli-d_Llf5#NpYX++P6JtOvw*gqoa*fGb>J9go*Eyvz^Y}c`ek4-x6#^Y{3 zE-BZQn~^&_H!pW|Zc*-Oxs!6I=T_$aJ@+5E|H`e&_2o9?Msizom*%$RuFP%E?Z{o9 z`*`k#+-Gv1&3!KS`P>(CU(MZ^`&RDTx!t*2bGPSylDi{!XYNnAdvXut9?U(Q`&({O zo;NQeZ)o1|ysW(Jyqvsa^N!2Q&CAOhomY@|Qr;i)it+Qr2NAC zKjs(ZPsl$t|MdJn=l>=D%=}6DQ}UK05N_kzb5VI)2jebB|wj{P&n}pEzN|2``-R;t2;&NIEfmV&p{2sD@F& zQ5TGwH>z<|)2Ps>@TkbB3r9sq#YV+PHIJGZegXqjrtz9YquP;({dwmlj-BaCyPff-4G^6gR z!ly(|`Ohh>r?j8aamxBrHk{IR%EnW=PuYIT4jcz-EwmNd3zG{Sh3-O6p|>!lFtsqP za9H8+!tBDF!V!hX79LlaSD0V;hr*GC#}}SZcw*tG!qJ5Vg(nsMv9PG{&xNgpx8fzx z-aq1?!XkSS;>U2l%lJ>V(H;cFjyG zf9sB<_G8+Iwzu8Web2#r`tC`(H)VC|>WtNSt4~@zX?19Icy(lTY;}C~#jF3bx^?v( ztJ_z9v$}Wn9vDx<*5s}E!u1i z9gYrXhqoi8V`Rq(9iuu%cNBF@>^QCC^o~g#@s8GxMIDcJyxj3lM|a1Ljy)X*I}X7h z^Q=8_ZQZUvox z>>S%UzVp=1Nu4E~rJXZ6XLeS0{+I@$q4UMgk2*i;{IqjN=MSAfcJ_4kcJAri+qu8l@ye)tA>-)Hk+o zeBY^k6Z`(ucUs@+eShvdqwg<$f9*T7@2tK_eZ_r~`%3ys`=<0w>zm$J);F`Svah=D zyuQEpo!|G5zJK=ptMA`^HGQ>x{=Pt8Ltn7(g1$)Ke4O%b>9_YM_q+Pt{hoere@cI9 ze_DS=e|GKQ`zxw};P|vyjzW&;Ne}ACAu0PU$ zVgK#@?fozIztR6*|A+lM`oHM^vj408ulslQf7kz0|1bTAu@RSwVM}&)B?3^A@Uq39 zER!tFu!)yh+AQ5TJ*3sz4r?^eR%9!-O~yIyt+qRC?Y51!Zdjj)HnCUQ+wF+Ra(P^T za{a}1mg`*Cd9dV$x^vxm?z7yju*%@*gx!_m$?zQG$%55&mS>Wu(lgidf1dx~D74dI zDV^t?>s^RL0OzLRAg>H-h7Gg%w2WC9bs4QZW3SJ6B;$#UCo`VTcsAoX%+tLYNtw3H zQJG^hPsyB^IVrO>b5Z8v%ttaG&wM`fh0IqnyE9vdt{Zya(EEozFm(OU$A>;Kv}-T1-$c6u*uj|zv+TaO`Bqy{%6zTO_y$3zNvH519%r= z@_SQoX!BgW<&nL4!shbLb2c|@UbK1D=G!;lwfWx7Yd1fz`SHz9Z+>?3E1SDFf4|wj z#knPQ%g`;yZ8>er8Cxc8nY!idEwi>XZnb8m7Dz;T_o3kyvEwb&3ZOgW`ZCksobK6VX zUf%Y`ws*EA^(6P?_Z;6ds;8i5LeJ?vXY@?&nbuR*b5769p1<`}_nh1F_nv?B{Hv#? z$JZ0+sqbm*iTAYhT-?*zb7jw+J@@vk>*?)D>MiPR?|rEEh2BlQNxL(47wwMh{$_W^ zo=JNu_ayBt+WV)yt$W+|zPfkE-lTn#_D$aR%f6)jllE8cKeT_!fz|_9JSA;~-k9*j zq$iHuKtUIIkQ@H^0rv8euwF~cek^H{r7J0I*!H9}Cw7&K##tavn`gwg_by^ z%i{PCPT08wFSIPOSnQX<%X~Q^3a+r=t!DgQZOOA-V>uBLI2!N#CSf&pl4S*gp>M>i zFE?3=@Eu0PKH>g0yx)8W)^Y8iN2e970emff5d~p+0KeGE$Cn!aY<&b}Jb_nYusx48 zTM|}mR;<~Qux7Jj)s}=+n-%Le%b-tj?Z*8c;2*GDgmv3xI3va~I?o!y+rO4Uf3{Aw zoMBDE$r+87Gp(hTV%(QlFR+y2}h#(?Up|*vs)&1*>M)C-ICUAx12XNdFYAl8IwmS7K9zg1^_koimgjNdT-TgK(5Smx%tG8X42Ssp*$lbtkX=pW}IhOu_cc^3beI!j;-Jep%H zj;1lyme80vmhhNLOJvL}OB6WGxGo-3ZfzZ73H&g|V&8-3Nvkb|t*b4=|FFiAHg1jO z%$7A4`~R((VYzsX#dGDFB+FH6&bG7x){f`SHPbEm{b{`aO#vS+g#BeCWh3kppS6ac za5U5ao!Br1zL5%OzBoKS^lIKa@Mh90Q18PZx)t8%5AiCS(>8a+=#x%9>6!DlpMSXd zg)N_N`C`jgTWnk1TeG$nfA-X8#b4b0#i1{=ckk=_D|GP1{jL3r`Y-Qq>tEG>M}KGk z*fV57loUB!Ep2b&+F%fcU@2)`rKy(!_nqgyuoMe3h&}5bS6^!Wgzgi@pWB& zLqqVpd5u5f1KGPG(LK@F-gxu=`3vYH*$wdpExyk`|J?Zc>tJ}-u3gRh_qQY!w=Q*i zp@Z}v*9jW!zy1k?|C$U{h(CHSW)E)n;@XF6Kdu9~e#Qlrne+>;UvVA6br{!g7QC!; zh1)xL6m*y!R|T#wZpR0y?m)_Bqs z3ve6mXCq>3rG($>Ltq@`#q$@yA1dkeoN2*H9SHeG!brq-49C44_oIQIC2<~_M7dy8 zAPx*JBaBXWQgPRnZtq>zdzavwq^SDm_ga!xVJ7(I9yAjne8=2rNqQRaJ$K_>2f*%M zh3}{0H+w0*SBd*vaH=2At-#60uLIXtV9y)4wjqB7@T&3a#P!({d@mHw7a){rIm)QV z{bIl$K%T9*p2Kx2==~YL{{ig_QJ25sItR~R0`F76F2{2&u9tED5B#Pe?OJrjVqAHk z`zWr5Q1(>NzZ}2k;Q3tqet!+hK^?=uKdTKh4;V29Y&iv2A+A5-D#A4u*En3`aZSK= zDz1sR{)G3!TCa9{r;7JFrcEz9`LKxK0-XuySrbm3_@~oOr?1lEsTCIyvmf=-_JYWN|G+(`Cu$~Y zkJ=@@0ajvqOj>~7YIA$X;hz66lKy|c+0k{a+iSs_gm2;Zm|wXZL4=5jtGM+#x7S5ALRjj5l8W!a zV}TRN=sJkGyur`dnW6?4;68{8@6Nz&U%UhOnIYUa;ljIt{5KC>em#nQHK}+xehc0L z^le=4h-6Gz2nWQq3D3h>%h2H#5vZ1k@W4;;RKr@U;COiFCrFKcu(bfb`Y>!dH6d z!af3w=%aV|59u99PrvQ2f&-kM*9rvysO3jUB&B}yKTugJH>K{R)SvKTB7U>xO+(#O zYD!mGaHPLptI0iu^k%{h!FcQ1MQt6F%~{t(58Xtnw4@C(YpU zH&D8t%KulQeAPF|zeA-{ezGv~L7)CMApb6W1oLKacOI1bMwCx~lwQ0Z&|-qpAN|kI zXk~G2L#|#t@5Z$U7yT(bMV;`AW-|5GTOd*QLUJ0AkN$`{B&`GRKM|b%6n*-2A>Wbo z&3Knk?RFx!WiR?3zv*Yu*!GFOLXG<=sH3`|)xZrH;fz zRf&F3{Z_n#QV(F9Q0ihxY!Re}+GU}_GAcN*)5@8!Ju8-INS7s(1$_ zum2l5!<>AOl3hq%dN-0gkv!>dWKv1_YX=m^bfF29dfyC7@PH?!ZkpCDR|(Udh6FGJiMaF9B;tqxQObJ5~OJ zDw*=@9&NkV?afWWW2(H;@SBN#?*$Q!wLxK}14I{LH3Th5J5W`PwF6i;VK*P2(3KaV zeF{~u5`D?VT7hTsbUA3R>4-Nwa>OD5yD17piiuBhoGzcl0GB!5<&;;^3zNR zf(c2CuyP%0;JDqA)CJy90_%YFfN~AGaKi<^*^Du1p-$OA&# zeL(1i-kfeKz>Khg5MBY3)|-rvd=rHogwT(UT8LH?oT~T-QyrGx4}^l5nCMJg9BD#W zPY7p&j}3DY6pl9`Y$t>+AhZENwc-ScK&`ms0SF+tG~CqFCz=R!AU*peRAGmygi$7h zZbCQ*CA6CAINF48kPuz~LYGO}3QP#?4+7!O7~ykG!gP`eVIv_-0>XLcCR%y2389w| zrUD^JDI73zj0s`odLWz*1eb}zDJFz2LO2Tu2TcftCWM`YFa-#C=Oya!M-xKZLqJ$r z0*NeOVTB<5pXy7bP)WrykekC zX8;v1e@x-5#9i(gNdJqx2qy>}7uHMk$CSE&HTbW~BS4fm4%iBO$Q;;%MUeoYPrwt9j+Cf;DgObW{osH`p zT)l&=N$b^GkGQb(31H1Y3Wh0;o5aEyL?S6i&{_|yX%$GVG+|wI1QwM(9M&ySAWDiF zoqN=#x`oPY-Qf0ykA_7QxNm_)f4x|_{5L!lz}zRiwxg6vrz>qRmwFJTo^d2K!lFNO zsSW>yT5;EtZtox-9-~{6lBSEC7<0utkdXZ`dVe%3d?W&_`r@Te0pTua0Qx%;p$Z7= z3E{=?(GjYFu$>SdjvgIhHV|5$2Ev_$aFjaC0YV25Y%76K{3zYA)!T(T9F25r3lQu297K1eyP#DrG74R_YR1JsTi=ToTrdRR}z>*pHMMSP&+C4A5;KtvNwT)+m!_d{Y8HrSRDM53V9a!ZQ$TiAW#*V{02a+ zl)O8otClJ#6R~%75>+>j}2Kn1?liq;=J-x=%`VLB-i{uTI+>P=hNLJ++cT+O) zdhe0?cYjG_qjuG1hb7 zV=LN1L%I*Jeq5Brf(vH~B;mlVBs;ETTn=1LTrOO0TpnDc5lFMCi%Lwza~g#EzL(tI zIq7&H;@SAk!8HQck;IP$Oc6g0_e4Aw*OA2Y08_-5zYLauc=1ZyoRp80Kj0dPi~f$s z?+Lh0#5D@nXj}!jPC|x*N6THCbicA9e>;LD_*qk?_b$D zo6e=wob}*AjUx$1hzgc$E0S&)!yAw`9nYw4|F~wAw?yCc|=XoAv$FBzJwdCSWugal=BlKEL0H#jF{) zrStA;BEEP7VcSvx!CUKra8n2fb{8IFjfN3PPRE_UIU1!C8sotx!!hUxK+VJn&J@5J z!+u{QVYs|_nqL>IsSAbzZldIG495(Q6L(P@=jbKSf@m;qq!1>~-wXMDaU+$|V=W$M~u)=N0YA+r3`Zg8pYjkdtKBp zvK)a%`ptHt5rmMFigPL>XcFnUY;u$TNnt| z2jls6pFbS?Lo)qu7-{##f}!J+>3_osc3<2VIx(64j~m554WpB5YJgafQG;eS)kK2f zaW##;XuWZgCjmJbNFXrA2Fz2OH8sY^ix~c(uhH*|855ELX&QT~y{;)7n3yIB1%mT0GNR!>spnv5zOOMDIL+1= zu0K5)|HelCY>R{!oZ;f$35Mc-Ni`8I9Q#*C3{p}XI@5+apJk_(PeKFG=wciGO}67- zLy5bl=E4}*R}(D-N?m-4Gae0w<~15qlNmnEyCCX|;M~v}e^X?-qseH(ZyEnaTF!Rh zNJl)M;{s#i5r3p*216n(Gra_f`WvF5=Eia--NquJ3QBD>LX`vvA>-drJV+AWEP~NZ z6=1$t1LS*rbt*AAZiE7Xx_I5V+2A>bSKYWdxT&X`bAj6!Yls5(JaD-#xUe}Ci`NB$ ze@9Mm8>eiB0>OCQ`AB48L0a9of1tWe&5iN8@&6<=gJ?y=!2H)BevJBpkhEaPSO}s0 zH;{dS0FY~Bw&3`=xI_N{=0gQgYP>EMtVNT#$QTOr10&X43ygpQQ#}msxS~2c`fpr) zX6(X749)R1wU7do7mPQgNzg1I_rW0wB>-{35Mitf1}kXPsE6z@aGnNYlm?9$0~>V_ z%@7atY;6_uSC4m39!|C2&ZS493dU82oKP;1OIno4l+ZgdL7JQ^wv1*(jAIi`yxmZ7Ra0!#7kQp+(-hA-9}HHt|y zGAF9Q)5|PgnF0E_{&I_!91JU*b&DY!3e+vN9D~PVKaTztwUBalg+?!}72PM1eQyK4nUhX)7&C!i(eK;KT_xYfj^N>Mgo+W&5Y$ z=;d22S{wyasxjfmAhyOT%MjV^#eqPz5yg3vK1`XnSu!Me7W&DEmNz%uZb=W+%Kj0Y zxxgu%xP~;_GxNG`PjEo*jxBb@y2^B#o)C7Rtc5h4-V5 z^Qv*6a=j5PWn=6Ci`P#htO`&5_=AwHg^}nCSRx|1ynMZG>=dLZ=tEkrtD^n{IzFNT zLx%bPh|YH|m=s*r z3)XKyM|0-M;5xVRN!|4|O%WcLPk|MTQyPpR7nSj}#Unr!82isaXhj9cKz!DcBA%uO z8=-feQ<&u#9nV|bB5g{zu1n!TlQlPmUa$-$0h|R+Vs;S9iU;J2iu$bZf?(h!-7T}4 zLzO-#^XSVOG=~X5=3ddmmOz4euj+Bb*(z!;Ksz9uM*KD1;%NqCY@QL?Xi05p0rwz? z&17}HZgJx|Y6P17#v2wjkxISwrslUONJ_|Cnkv;{I*jVKEyGPih=*;R5#>SgjwL-R zS`MXM9F6)~-nFC?KS=m0A`I!aILL6VoUqA~DsE`*D2Xq8FTns(M3m)yi(8<8+~x!` zAO^G9^xmSGL6w^t#o7U^Kue9SN2C}=NplodTzUDn0o506EpA>|3R`!(9)+_oE!Fz` z^Du#Ypodlo$wifKz7YvS(Z@ba)E9+w`#-{%#(hb+sVNx$*fNM8I9D8stqH4^Pc${E zaTUx;Bg(z^sU^EMjwUO~X>1e~uJqL#vCnkhRQi1|W+l=N%g_jtqkX(*O*uafYVz4_PhF@9!AbXdq1qM{1z$Ra;qD~G>=(evD+(loMHAT=4 zFrX<`|BcpJqGaYoWdp`S^@8xX|2459WbD-Jtciuhi2Y8F^@^y$>=32HX82h*oP;7eBOIRB964x7p;|OYW=8^$v0t=& z2}z;ptuz>oxBRNRj5C8A{nDED5C%kZ?FFLR1T3qYWn9=Cgq}ETIVM6y@dP=87JF6D zHsR=R7B9oa!nx1lqIDQ$?YCq_SVE^7aesrDlgaKYgXP|8O(R}RZmxs6Abac*YdSBy z6C7J)J(lTW;wNg=VI`#!Ww8~Lo}(m8Xfzt%FSXWr2l+z0~S80k5!%k!dcb9Ib7^;wi9fKzSN`rFG=M z@`?i&ATXJ#H8mWqfcZ`f-Q`v_IYVR5@zE@Gl~u{D=szVnS6fp>H)Es_Yp$`9^+x>U zA<$+ebB`Wj4h62&iQIA5Su+(bPrEk*&VTnvPV}464sct2+{pHu)lG$<5ZZV8|bxY;U;HC3jUhe5mXcB?XoC{I+VSynFK${i{r$JqH$JbFQb3NtVY>M zxxJz@(t0cugvaPr4T2gKR_SY6Pys46>U>yC@QP@oHANDvB+LGFt2<7HBi+BD8A?xO z0W1vhZIY?e2|-hd`=Z^Nw<{lfkHNi5Q!79{@hhz~^Bwo&)b`E|f;Y5$4tVy4r&D zoS?B_vsKv*V)3)ZI>;A~!^WaMt_};}Rx9i*ve8R6Y6dc-g-me49VPocPCdvt{;je3*j*1Z}kmfppjXP;HA z`j}2Au-`hk7N&o+r8+#De#+{|wRT`YakE3139z~lz3?;UF{y)4+(9iJM6fKz1KAgf z|DxfnSTHih5cpNgCE-&CRfky<#SZDQL@AK|=@|D7ag@u(-eD{3ZW@Ci#YM5}fJWJG zn)Ni&ScLrfH4g5aD>R@O%Z`?d zjAb@8`xKMsLXKLREUvUEmBA^Z?LwKtb+O#0tQk(F3W(X`Dw{I9IDvVibK%uhrOOkg ziG0^+g5;DErLhs+W>ZEkB``gPU#nYBaOfnmDz3AsIgeCwWpk|IdYjVOC2<2Ia)ssq zVW4I=XgWgnOByh<+^7qc10ohPn!uEsjzH$IyHZPn^7fvO70%5zWk%8BT}&dk*qrrn zXI4bU-#Q=_)u@O}SY=ZdKCNGQ7P`&m6&cuUxm~x8gqqBZJG5+4A+&xYlfI>0HyVr# zl-Ay;9*6}U&s2NgF5F0Z;4VQ1Z|Q!wlL4b1FRbVaDK zW%U3uJjT{&u0w-SRXenpaF4Q)iB@AahB{jNd*&2%{vI}d-S1&z@B2M$-2J-w#8^>% zZruYqp)6L_;DghV!4-86+OpyG!^#U9hvWobm19>NC$HBd1744C<9w`h8?g$;Le&WQ zjfZTRQ4PjCK_m5H8(dwC%IXS`M{KSIzQ%d<_^9qfF%qE72>h5HD=3A$$yh_xiNXK4 zW<9YI)?G;$`)zR;r%z~FT+`yZx*++dqs~6>o|^rA50OUNKq< zK!HB3MH|B+R1arWcwW$WMl*oOL3kNg@UoCGXwj=W$S46Z^_d0r7&OKM*v9&0FZtEBcNEn+0fSmV8{c_HU{;RAWa zmMe7-RRO~rCT^&-xv8n8#3%fCuiCuWgH&a`W^?07l(A6@7v&WguWP=|;I$qz^bI`( zikssNJm}uk63JZZ@v3NJQir4^bp^H+^4F=*3n{3%p!yj(Kt^zue9MCb0TCN35VBHKza*$T?m@eMe za)a%usk9KlH{nbZdcp#uU79Vr5g6pMwp(@mM2V1MO4+6*m{pz86jAH5?Y2SlVQLEs zs3K{p*as#m0Yls9AL`-Di#{xU#L6f3k#5Y?c^dm;-6x{sz{5{89`!G^2Eb3Xq-r46 z_;KSiU1t_|vMqRN-5lAW8!jkUMvchlwv-sE4$&)a4EkbU=-yY04#5v@-j}*Wk)MRC zJRFXEWgFtF$C|J%T!}4Q)J{m@*S2F3z5!tkFDS0B$DTEMIaU^83wd%&N$od!01_e9 zh;PL}OLQ6C?bIApXz-Inuzm6!hB#X7kBj+lmLXge3@WMp9#Zi8R8hMhv~p19H5;>X zwf>{#1J#Z8lp^Ht^TXQ`Gk!W+VyPh#du+$4aT}!VA?)x*eP}<~uuNr_O|AKrxd;Y2=lS&nux;jh}bm%BlXhJ$XAO|KG zn#N}MY7Km32wolP_%ix-DpY2qPb&c~5z|e-%`4@SoFT1tvr3S5B|3)W>k|9m2H$*E zXd*MK>P7YppD;hQ{4Tb8v2{DsxA1SxMzm##eNX~HEjcf>r-Io*^eg%ceRP>!+2wK; zf(eDi(dBk!FG_A#)UhsGYFGApf=QJVuCUYeL%n38yvz>oA4G-svYWBZ9FAUT&unI& zxe2!1J_s`dHV85E`s1X?rbHU9vLCC&l*D8vHwuC@#TRXCsc4R0Z6AU;nZq`u@RG$7 zyT-0;c^2L}cAd1@^TR>}4b7<8F+(=U;HAyAx>-<})lj6fXr8{#uFQHON2Z&Sx9jaE z`jpau*prDPX8^*0?yn9D&9p)jRwT&jcY{5nUV2SvRbGu5{6_n6B*7H$gV==9AbISu zc_k-*jKQ1iuztkHlcg3|saq=+Iy`6ItUFFB4jDyoi$=!eK?9BIbF1BpeF!+oSyors zha5Sxflq{%3-6ck8OKT4^%T{lkxcvil{KFE}VW-83M?RK@KkpqP(Va98YOm4Z; zK3p*by^E<8D{X0v-DMvHF@h7*JihMM<%(Jf2Hay;rvHp^J?3xBE%$2iruLRW!N(Du z6kTms>luN$#?I@#in=-oY=@o09)t#{oG=xdZ>@bWEDGAbkHJ1~Y;2jb5CYq2SBsOW z^VI&$It?o$R5s=Bv#Vv^OsL5yBJ9u{Qgrug0i)4`j;Wj=`S^fc*;h(#^juz1#~uBk z<|j}7wAjSL9a4zc#@KrMAgK>oEFnd(h#pFm7DvQ_jKZLd58Ks>Qq8MS^@695K+818 z5#fUQgLYG)xE|Hbp&_A6TIiC;bb`pMokfq^hxrHk9H~`gtv;daB)gXr$XeN8A0%|e z9PFhv`x?2?PwIYWZN+gol@p$_X9!f95`;iJtwmw#yo$yEHdE(4qeq5xDnKv^{;XY1 zi8O1&s#83Wp4`}TIwQ3goRRsT*L|dN@C?X4RW?>*U3TR;m^zOkFKE4{vVa_Sk>J>i zx+ADAWG@N#29(=NrWO^mzbW>zJ!2u%gn5E}#hxO&i|4dg?YzGkW9GePSH1`nuW5c^ z^J$~*3Fsg6LSxV$WH)o{buDSaBPS=PYTBHPzcFCmA_h%`-#r{9v3gT8P6@Hd^OoH! zD@n8H+j_(hmf*uX_H>S+2)E1%hk2LdT}?|46*%?Kfw6A8a;MkSVH(|}iP7K_i>dce ze+(^lL!sr+WkNS|v)?DRN-c4Y)ohYEiMaZ57vbIoMINLrbGF`$k!X~LL+&Dt+@w-Gy_pvbC+W&D+vW<;ur ziTrELftpyjE?(1M_#!opWX?^T@Qq57>$AztF}=|IR;7)v3DhFghIbMvfHxd%*{L-W zx{=sECFJM*qVMd(f;1H%46TJnrVtE_#_x6a6SJvlVT57OI`0R2Do2Vb!}CYY1`^z| zI@+xHN#|AroJTjbdXMI*vQB3N=W*;Rn=ZRF|EA6pD^yqmTFLDog7CnEQ1X@gh%5bJ#>YpohJbI_2l4 z75>lmbZJ|vCFenVYMA^&YWet!#()=r_0O;N6xzRM^?`NRA*d>0zjEqfdqyzE-cC{- z4EjymEVJWvr(vRr&M-oKWDkTOjEKkqH8I5dX@C*18Vhy-YE344381M#n8RT#?k-8r z^aTPUQV*WaW}40xB`Xt8ED(eRK>fKmIc)(JR{~7KZAmhMO^6_^xyYS$X|mGp^aM^` zmaL3pB0y-gdbm6}S9-xnr;~vvrYLN6HP>E9hWgTEWrK^9%5a1zUIF@Sn1Py);xCsa z%LOA08X;r2I^TE4cGc=g9!R=xjH!| z6sB!TgiT`lxd!DW_8nCB&yEqPHr-aiA>pCFHd$Fjif^HL*QsW}ES^Fe*w-g>v?E)| zQVds^a1agx3psgcFvb-Ty~*-W4(8vOjCcTEXt77&retODLtQqI&PM}RCd1vuIA$C3 z=45432`---4TtJ6i|`thqakid9xC&xo|4w?t(v)t?ShTO{MahZ3F>v_t-Eailm-bQ z-=3W2XI;YG1{U9utW3kwTDC01m`7+m*sdE!R8bt+(03jIWGBO2y4JIx^X40Z^RbfJ zyOT$l*)X|qd5tJgf(V zuqJ5FL}~L!k_XSnBM}p3Ajf|`nyf5qVb}<{AwiBkmYgY6J5fOvj=mH^YL;Hl*F1c2i!o=(n4Kt!DFGv-_rYx``nHmTr5i9DB_ zn#h9i+vm+BM0>ilOi-XZ=6=NXBcAjHbMcs3gMk;5$>6~DDwGcVqlRMrOUY_RBf*%m z(D1*kM=R@tnXtPI6J@%rHf z_`g-_4Dn1e@;1!^0TYXw?MGme?0t}&5oI!%DWWZGwtSfEhE?mIM-BQ2`jhTO1OVRE z_&7P00o7zA2V#o;`zblC2_jh?o?+C*o5G0dO?KB(d<1pmu4ECVhT%CMC&tElp&n5y zQwSK@rMr{U2r3Gr|9g^;IRcFrT19)4GYL*^2qqE5CiK4Fk)+<;pX?E}BE}vV*mg)C zJ3ZkW`dQX>2BxWl1F=|#h;IBvr_4d=g6p$G5k&v~n(T$IKtzyEoN#Es_``6JekN#( z!2l>QE-4s5?2KuW*=^A=t;&fw~7hSSHIH$}*``EWc8dhJ=e= z7(Z^gBi}SeKt_)q(*DAzI$?!oT}^W| zh@ez@p#nDY4U#4d9=wiyqr*exQus+Qev?B4R^ydKOr*3D7PCimr6XNRK1K1+fV^2V zj(JVv@)n0OND>k)^~kLbwzdZ77Rd1`$FTWY_$8{a!)|j3p%mhLyF-M*R=^w1`&<-# zdWYi}mfHjnFJ@!i)h@ZD;dDa*+LY-|nTZO+yic*1=#aQt3JTEM8I#WTtyUaxjIYkiGAL>H`aWF`C_q*LhKFVR!64u>bmF9s6H zwGJ#cF*IU4xyZQ7PQfRkv?N2or*#fiT?4@6a=6dIs%rrJeh0s^Bw#d_XtYuw_yYpD zvdKql88T*#c@GYN31MG90ESodP|!oN12750F93^@82zwAtx56T7I`t)UU)-;vkn(c)KwQYPJPaS*ap6RUKh(U z4s}4ftxFfeQ1lY~NH1ueCV`O_;`xi30^WJ1_c{>QYeZg3j7$lIqY75o%OqBCB9SG> z@kFmU5JMlwm<>r;c-5hdS#n!YKfdPRSF&WUvaRW0TY$y-bw|1%+K1fXveVvhAR@lD znPS2rw{L>gLT>RMVknAf?Jde7A`l>?w0L`4Xet^iT&Z^)>7+44&oJa&hca2jf--QV zpSxRY1~w7I!cateY;q{iG0!r>=!gG8coE;z855MHi}iiTj9?Y*x@>m1=!w?3TeJYO z)09}URrgK_kg(7e&W~-ncNBFRE87KO$?*^LOr~&P+MbQKKPoWTKXeQ=cnM8i)=07E zGG6l|-71>mNTHBJNu_?Q=P5rjq3rJl%e&g_^5GhHzQ=SE9hO zaWT=}L3{mF&7GPOwRlzoUPvn||IWdo zMmjQp_XxgsWYU&0hYBzNL;D9k3@A>X!sLH+;5Y?e97FUcT_R?9tQVnzcuTm);UWwQ zIou^~X`<|f2ms0${H7Q$t#^a5!aFrP6oelw!N5HZPXIaqZ$qJ{_c}Zxyqq5P={i+X zVAkwtaK9ErVY8re2egU6Y63i=Q7F9VKRf7%kuWqiUL%3a!iXMpxEiG+_ZQu9!h_3$ zr7UhV{puJ@8#OGg@gTfs+$V=LI=B^tHLn8l4?6}6p(1@v9f1ahL%%uTJ2LM-^*M$x zK!s$>ZK;0ETd`eJ8WtvBt23<*u4Q_I4UNata0vmb{Js#seFDfLXC{@))mGxW*s07l z4n3$sC&!mKGZ)add`Y9PIVN??rA{y9>w0A}HJ*-!u>%~v>6xge?}&2Y<{L-jKW2D5PrC|>Ct%n1}}fx_gL z;c{6|3FY3r%9&=ytcYH10`OFHjWeAwD&bA4qKJ-Yo1{~LIfOjAw0(Z9GncX0sx7O7 z0z+&Uzqec#!>&0F*SSvC3H9N63Wa*T6R|PW(U4)<;X!a&(9h{BoJz?GNdSV0>J3h1 zte;D)N24j+f=z8-=tifqpE;36D^jT0RrDguO_GfwYQ`{DI+YE~=(EUNq&888o1JP@ z2~ym}%$HkCJZ1n(<*fs0QD?wG3^fNGvdYQoQuyE)dYh9adnT1QS&RZBFz$9|3XBX4 zqKfD=OaylbF_fZI5hb@}yJilR0G477qLT}R?Q*9xlVqtZHU%$H!u3QEq<6_qQ?f_- z?slqm6LVZ?%!+yU=vEM#oK>g@I9>0R@<7}X>ygz?evO)G5Kq@gu_TOy^q~hjoDO(D z5Mr>_L_^HUoz7tks3V0p9Ro6sumGmG&Up-{5H%4DA>L%X&pCwQ6yOP=#MUCC-|tK@ zP-nbH$>0YD)`exB@g8($adsAK2we>7KPLU#>t$saQOGIva0m`ir+PP;7=!p;-X)b* zfYMhFJC$j1u1Pjc!utsKC<&}^+)$4`>dYYRg&xCpL!5onk4X?ps)&l|^l|7Y9#xf) zr&5HCJ>m3H*dA>Wfyf3Yt3ddP%yeQ;YW2h2iF1Vvn$wBXxeB!@J4y{N|k4RFjEQsLtrNcgy4a^j2$5f~uhFFVz;Tms1B zf(@5foN75OCy3_At4?f|@s3I5IQAaKUc*p{@{Z%Ifl)^rofI|9Z`8;YQ%UXXPIrvr zh=|*7IESM;(mECKu@pr_NpCt+h|NmPzvWD$V8Dt{JS-MMZ#y$!V~dHfOautN;~Wt= zGQN;V$xzC7ojC@c2F5)@i-@SAZfC{<&jOhz!GbN+NJf_5TML@=TK!5mct=n-8JS84PmNryn`7ZAZG^h>)Co?1a&c zu_+YIC(hjeFAk!0pHh#KpQVhVl|?A^XHHizK5}u+N>? zhf6@eaJumrPHe`~K~p3JSYKgJ;47!{tRSThW9e(BUY5c-uJJW53}B1w8|RRL zIWbQ{;e6|)LzRq}pDVBvgD^^-ShOC4jNISfK`F?is6xhq?-NhHK;Q=_t=IUNDzp-| z=8p*gWCyr9tV zRSnH?h+}ARGiDP#rTt^v~xhUL` zp6TgImj{MIeVkVb%Ux~=uQ+MzDwi^OiKJ8_VRaE)S+8oUui@R=M04Qp5w@-{#6}go|4a z&6+5!G;Vh}MJQ104p(YC9LEW6^10oGkp|1s&w1~3rO+u8wJ4iN-R1JImgk1t?Q+J% zQ3Ln5lw~T}g~s|CN2gx91xZgF{1X0-@aAlaFEFKTK2AM#T-g;N^ z!V)9c_>c={QXnoO#7uqIcflNrAGY*mm?CSZh`ubI8H1F-Drl26^Ap*SR%1AUv82oRmdeM<5KzT>xVFwEgTz|v60)Yd6 z2%%e4d{#oZH@Q-XD(&48!h0eExFrVE`?6hhq7sSJX4x)!W`WuwYefKBFu+m0)r7-r z-zIR-C(Uq@vea)kw~h#ZAZjL?O9SOYS0>d=KqTpp%venOW5HLv_m30sJ`q&8pE&hX zfq&|`4LD~lM$YrkTtkT}qhKN<=EE$4rr99~mBl8&75BNQu^HuHi>ZB){Odu3<+@g0FR_YY?S~p#p=S4Eor2qLnY_Z!!%@_bPX02&d@|AbYj@ z7!5O1y#{rLO|I#+xd+z;@fFp9xvzB(GeOPyuXDqQrf5U4R-lSr@0J0GJUX!pvce5> zIe{Z%ooa7z%Lqx4l@>oGwKpnUSeWG0l1svy+z5F~keJel?&0X9mF{8YgtCB6x!EmW z8>N-1By)>9RbWrSfwHLCtpmw&g?Un0rRv5Y>14RgjnyYrg8d5A)Z5)yb7+Wa*d3~5 z#uM#oACQ-pTz9(Dct?=eo-X|6`_qp|A zNp3~KYZ|}bjaOZ&a)ysZIu3v8DMf0q0+{!(M z6T1<-QUm8h03>1$Cn~_gUsFpbXg;EwC=EZ%M31_a<5z7rvZeM|f`DJ_LXuJW`0tRJ z?h|h1w@@_1Ijb8qw-g)&KKVNu08X6n)b9!;YxL>gK}p7*NkFN=d=Tiw3D3G+^h7(j z&$;=G!Py}KJbwhXs9RT}ZcKwK@j`+@3?%FQ#UrxQ@^#{bmyXEJTz=WDT(R5{HOdyB zIN=qy^7o1q%pD?Z0E~fM{Hj}dl8;QL=Dzk{Goy9J!i}a%qmOv6<8^l`^%wcO=zzEd zZwq_ABgs@=9r+- z9LI$2>pr3i9C5Je2q25odpbY&EJU5QZ{AO!M#L)#HS@=BPBa0p62OUqb56Iom9rdY zuOG3H+M2+Z3n;w&kr-6WmhEm8P06u~A7}+5xK=ZN+=qJDVV+U;C#{b^!kh^%3NwWO z#gX90336Yc~S2wTx_?aUUG5;I!LvCJo z5>#wj9d@%x&a*Ng*onX`EIv#Xzqxs#M7XpE*N4x!zz(NJ1OxXc2nlPW)srYs*s!$W zaET`;Vb+U<4S}aL@;il#Ji5+MF2TTJkC#}Dtyqe|S>nlLj+@t#wc19U# z%d2DwiEg^ulfq@<^%RO5x<)=qX>IceQKBBa)+0oT`{_ClJTK@O;Zwg}S4?!z3Qr2n z^)ql%CbjDZ+59R@(*6cM7Z6VA8wJ~n{d|(>O|oVrh!mpft6M43WyNlmHK9Je<@faP z4$7?_7qfBwo>qN29e1|84^N9c;Mrrp95gnoTxY-)K(?hC;0!9}w z+Fc$`NkbTO303!Q*#Mz!IKWHup9U%f)Yo*c=NP7th?In10^@wOY!O~p<@iYfUE>)n zdz6%oQUD#EK@!R_AU>x`sFBWtznxvQuj?*F z$OMi#;Cb*3tw^w8YP_kdQQ}`fWZsg3B(%=kawHNT-jQsPlf%1G#`Mh4EprOBuu0Kj zoBBQZBu3%;X0<81aI>PL|)R!#`obVL*K+s}1(V@_)4?ROEr@$4e6ft^0{>U?2C+H@M zq>nvWIw_%CMcOAOdQz{7gik$eHE=akXUz*q;`b40AS#y zQWk{1^{AB{5ked>ufuuKuv4&_-?gP~qfFm<2Gs$NYY)9GXnb#~q|o02{)4$qH0}lX zM~_;=QIVL1Mabz-f^;byqzhGXvwB3Op~@79_K9{4fKvEqIcnZ}1Od$D^JncA{VWO0 z!dumFgMlMNW{>D+-M~_8obnqFdp&H$aaCr_Z={Cr!wiYq($aty6#G5d^f-_#$s^G{ za0KJXv;DJx!9j_*8+ho5$U#wzE+5tUMGOmJaBRb&(p**}Lo!>Dv(37py@h$B{m zQ*?~Oo}8nm`0*;c5&z9|>`_wB#~uv24e5PHrAwhU{eq20l!#noi;7ykJp6v2c8QmT z#nirq@o|g1Jcihn&JCOamr!i6mo~MU$fV{HZx^L;NyPs zD{Rg?h2$_cccaL1m*_+WW9~yR_uZ;Ka@0c*_L(UP>I*Du%UXd>=gxON~=wE zXI`!mb>+q|fJt_kTEG=%Z^l}$c^cBXcKo+pvJ8zi(0Z|!44;$gwu z;+Q`e6lFbPf(UYtiXs?C5qnGse|*WbE^DxN=>^l-VU}LXt`b&kLfR z(ufl%FA7#3VdlIf1no!*=VkBj%m-d2zA`|Y$zjAPuMWr|1|H38uZgM*Fq1Y4Nuk$l z#rEOr0+2A7-Vp32%LH3N^4kG#3QllwqD^lJX`*t3IYjd_bU8lN^0r`-*(Q3&YqrD4 z-wyik{tj3i3Uteo*kLi1woNukg_3}9$XMV#H6r;u6O11^g!6sToP-gz**n09A}vMh z5UTeU!5^*-fvB*pBEJYqBP!d3Bx!?cyOaPny9Fyg5Zz03@OBu!1J^_ot^Irqx}^RcQ>*iQjUUk#8-QrWO#(Cc4&N07eP<*1Wb zu$MwR9N#Fl%)QDJ9ZwVA3SQ}!VI{ItS|BuY$b*n5C>TcEcM=(<0fr>|8@~4{$GEBa zf_K%NZ=Jh0q9l2 zM6W0b&~72s>QgKNxMx7ebEheUy<#ReJ2ga}eWG~yja6Oui_(M(Lm(XxqO1KF0{XKM z1?epku!BNdsbZ_c0{n|?lJ#?MJa6fa?A?>If!O)3a@V^ z-jWoaTkynV^-@h()StG6E;|B7g zq@S)#VM|KsC(=eW)l+88T%N*~_W*cR^{le;X;z>%tK_4-y|V;nggT zD!C!iO5x^}DL0znjc|6V95)SYJ#G8eh}N$Z4WMGsd}!>OQ+VZ~7{#c?<)ybA1zcWH zed|ENwDgi?u1YamYGU~D`?$BIm@PG0PO!qbJ;gkQOVtO1>y80%768^w?Sjz*z8-gH z%7E1b&0An5R46uzpnvWfP$ecMlJ6c+B~GCE?jF(O{0!y@+4$~w|r5@yAJ|1%fb=7+DG&vZer-xX0C`~#V z9u@#3OTZ&39!y;0XBiDZf0S!5J|3ozsn8aUP=}ADsQ3WPGUL&?*qV4eh1TGNdV~S^ z1PdG`9BBh?V1b~NgkAO|_aK*;a7{hM>>;4p+Im`NC+>=xJ;U0GFtsW3tj;WksX%;A zmt(S2o)@`=aV_w=SWAxAcCRRN05@I~1su`rmjvsMZ1c;4zyNFY6~Xe-TC!JP6&;e` z$ZIL&HW+U*N;fJ9q*xeTuZxPCx${N}t!BrwHX@0AGew11aGybYkn(*?kRq(f;tkxl z1!D-pii(c~dPnr(6l~tYjNqeI$bAHN#k&$6Db=*KS%R1HW8Fd)2wgk6s_M89oGFbIiVvVxe4cZ%8x*1${@9+2oaSyhxW z3HQocYLjrEC8Rji){~UlI}`{eE~y1a8fK zp#XG-L}F_ynQ4h^yuL(oFmOpK&j>mX6~YONQpw`O6ypnE_Y#|1e&}_hF|at*WM^

    tbSrJ{DE=VR5AjOdN2WPUQg=-pO)r4-@5CABxD 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 diff --git a/vendor/github.com/ncruces/go-sqlite3/error.go b/vendor/github.com/ncruces/go-sqlite3/error.go index 957a7440b7..838f1aaefe 100644 --- a/vendor/github.com/ncruces/go-sqlite3/error.go +++ b/vendor/github.com/ncruces/go-sqlite3/error.go @@ -1,6 +1,7 @@ package sqlite3 import ( + "errors" "strconv" "strings" @@ -9,7 +10,7 @@ import ( // Error wraps an SQLite Error Code. // -// https://www.sqlite.org/c3ref/errcode.html +// https://sqlite.org/c3ref/errcode.html type Error struct { str string msg string @@ -19,14 +20,14 @@ type Error struct { // Code returns the primary error code for this error. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html func (e *Error) Code() ErrorCode { return ErrorCode(e.code) } // ExtendedCode returns the extended error code for this error. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html func (e *Error) ExtendedCode() ExtendedErrorCode { return ExtendedErrorCode(e.code) } @@ -43,8 +44,7 @@ func (e *Error) Error() string { } if e.msg != "" { - b.WriteByte(':') - b.WriteByte(' ') + b.WriteString(": ") b.WriteString(e.msg) } @@ -68,6 +68,19 @@ func (e *Error) Is(err error) bool { return false } +// As converts this error to an [ErrorCode] or [ExtendedErrorCode]. +func (e *Error) As(err any) bool { + switch c := err.(type) { + case *ErrorCode: + *c = e.Code() + return true + case *ExtendedErrorCode: + *c = e.ExtendedCode() + return true + } + return false +} + // Temporary returns true for [BUSY] errors. func (e *Error) Temporary() bool { return e.Code() == BUSY @@ -104,6 +117,15 @@ func (e ExtendedErrorCode) Is(err error) bool { return ok && c == ErrorCode(e) } +// As converts this error to an [ErrorCode]. +func (e ExtendedErrorCode) As(err any) bool { + c, ok := err.(*ErrorCode) + if ok { + *c = ErrorCode(e) + } + return ok +} + // Temporary returns true for [BUSY] errors. func (e ExtendedErrorCode) Temporary() bool { return ErrorCode(e) == BUSY @@ -113,3 +135,28 @@ func (e ExtendedErrorCode) Temporary() bool { func (e ExtendedErrorCode) Timeout() bool { return e == BUSY_TIMEOUT } + +func errorCode(err error, def ErrorCode) (msg string, code uint32) { + switch code := err.(type) { + case ErrorCode: + return "", uint32(code) + case ExtendedErrorCode: + return "", uint32(code) + case *Error: + return code.msg, uint32(code.code) + case nil: + return "", _OK + } + + var ecode ErrorCode + var xcode xErrorCode + switch { + case errors.As(err, &xcode): + code = uint32(xcode) + case errors.As(err, &ecode): + code = uint32(ecode) + default: + code = uint32(def) + } + return err.Error(), code +} diff --git a/vendor/github.com/ncruces/go-sqlite3/func.go b/vendor/github.com/ncruces/go-sqlite3/func.go new file mode 100644 index 0000000000..fbf0812d22 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/func.go @@ -0,0 +1,175 @@ +package sqlite3 + +import ( + "context" + + "github.com/ncruces/go-sqlite3/internal/util" + "github.com/tetratelabs/wazero/api" +) + +// AnyCollationNeeded registers a fake collating function +// for any unknown collating sequence. +// The fake collating function works like BINARY. +// +// This can be used to load schemas that contain +// one or more unknown collating sequences. +func (c *Conn) AnyCollationNeeded() { + c.call("sqlite3_anycollseq_init", uint64(c.handle), 0, 0) +} + +// CreateCollation defines a new collating sequence. +// +// https://sqlite.org/c3ref/create_collation.html +func (c *Conn) CreateCollation(name string, fn func(a, b []byte) int) error { + defer c.arena.mark()() + namePtr := c.arena.string(name) + funcPtr := util.AddHandle(c.ctx, fn) + r := c.call("sqlite3_create_collation_go", + uint64(c.handle), uint64(namePtr), uint64(funcPtr)) + return c.error(r) +} + +// CreateFunction defines a new scalar SQL function. +// +// https://sqlite.org/c3ref/create_function.html +func (c *Conn) CreateFunction(name string, nArg int, flag FunctionFlag, fn ScalarFunction) error { + defer c.arena.mark()() + namePtr := c.arena.string(name) + funcPtr := util.AddHandle(c.ctx, fn) + r := c.call("sqlite3_create_function_go", + uint64(c.handle), uint64(namePtr), uint64(nArg), + uint64(flag), uint64(funcPtr)) + return c.error(r) +} + +// ScalarFunction is the type of a scalar SQL function. +type ScalarFunction func(ctx Context, arg ...Value) + +// CreateWindowFunction defines a new aggregate or aggregate window SQL function. +// If fn returns a [WindowFunction], then an aggregate window function is created. +// If fn returns an [io.Closer], it will be called to free resources. +// +// https://sqlite.org/c3ref/create_function.html +func (c *Conn) CreateWindowFunction(name string, nArg int, flag FunctionFlag, fn func() AggregateFunction) error { + defer c.arena.mark()() + call := "sqlite3_create_aggregate_function_go" + namePtr := c.arena.string(name) + funcPtr := util.AddHandle(c.ctx, fn) + if _, ok := fn().(WindowFunction); ok { + call = "sqlite3_create_window_function_go" + } + r := c.call(call, + uint64(c.handle), uint64(namePtr), uint64(nArg), + uint64(flag), uint64(funcPtr)) + return c.error(r) +} + +// AggregateFunction is the interface an aggregate function should implement. +// +// https://sqlite.org/appfunc.html +type AggregateFunction interface { + // Step is invoked to add a row to the current window. + // The function arguments, if any, corresponding to the row being added are passed to Step. + Step(ctx Context, arg ...Value) + + // Value is invoked to return the current (or final) value of the aggregate. + Value(ctx Context) +} + +// WindowFunction is the interface an aggregate window function should implement. +// +// https://sqlite.org/windowfunctions.html +type WindowFunction interface { + AggregateFunction + + // Inverse is invoked to remove the oldest presently aggregated result of Step from the current window. + // The function arguments, if any, are those passed to Step for the row being removed. + Inverse(ctx Context, arg ...Value) +} + +func destroyCallback(ctx context.Context, mod api.Module, pApp uint32) { + util.DelHandle(ctx, pApp) +} + +func compareCallback(ctx context.Context, mod api.Module, pApp, nKey1, pKey1, nKey2, pKey2 uint32) uint32 { + fn := util.GetHandle(ctx, pApp).(func(a, b []byte) int) + return uint32(fn(util.View(mod, pKey1, uint64(nKey1)), util.View(mod, pKey2, uint64(nKey2)))) +} + +func funcCallback(ctx context.Context, mod api.Module, pCtx, nArg, pArg uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := userDataHandle(db, pCtx).(ScalarFunction) + fn(Context{db, pCtx}, callbackArgs(db, nArg, pArg)...) +} + +func stepCallback(ctx context.Context, mod api.Module, pCtx, nArg, pArg uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, nil) + fn.Step(Context{db, pCtx}, callbackArgs(db, nArg, pArg)...) +} + +func finalCallback(ctx context.Context, mod api.Module, pCtx uint32) { + var handle uint32 + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, &handle) + fn.Value(Context{db, pCtx}) + if err := util.DelHandle(ctx, handle); err != nil { + Context{db, pCtx}.ResultError(err) + } +} + +func valueCallback(ctx context.Context, mod api.Module, pCtx uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, nil) + fn.Value(Context{db, pCtx}) +} + +func inverseCallback(ctx context.Context, mod api.Module, pCtx, nArg, pArg uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, nil).(WindowFunction) + fn.Inverse(Context{db, pCtx}, callbackArgs(db, nArg, pArg)...) +} + +func userDataHandle(db *Conn, pCtx uint32) any { + pApp := uint32(db.call("sqlite3_user_data", uint64(pCtx))) + return util.GetHandle(db.ctx, pApp) +} + +func aggregateCtxHandle(db *Conn, pCtx uint32, close *uint32) AggregateFunction { + // On close, we're getting rid of the aggregate. + // Don't allocate space to store it. + var size uint64 + if close == nil { + size = ptrlen + } + ptr := uint32(db.call("sqlite3_aggregate_context", uint64(pCtx), size)) + + // If we already have an aggregate, return it. + if ptr != 0 { + if handle := util.ReadUint32(db.mod, ptr); handle != 0 { + fn := util.GetHandle(db.ctx, handle).(AggregateFunction) + if close != nil { + *close = handle + } + return fn + } + } + + // Create a new aggregate, and store it if needed. + fn := userDataHandle(db, pCtx).(func() AggregateFunction)() + if ptr != 0 { + util.WriteUint32(db.mod, ptr, util.AddHandle(db.ctx, fn)) + } + return fn +} + +func callbackArgs(db *Conn, nArg, pArg uint32) []Value { + args := make([]Value, nArg) + for i := range args { + args[i] = Value{ + sqlite: db.sqlite, + handle: util.ReadUint32(db.mod, pArg+ptrlen*uint32(i)), + } + } + return args +} diff --git a/vendor/github.com/ncruces/go-sqlite3/go.work b/vendor/github.com/ncruces/go-sqlite3/go.work new file mode 100644 index 0000000000..18e3785922 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/go.work @@ -0,0 +1,6 @@ +go 1.21 + +use ( + . + ./gormlite +) diff --git a/vendor/github.com/ncruces/go-sqlite3/go.work.sum b/vendor/github.com/ncruces/go-sqlite3/go.work.sum new file mode 100644 index 0000000000..cf0b1d6783 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/go.work.sum @@ -0,0 +1,4 @@ +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go index 6398bc1c1e..86bb9749db 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go @@ -72,6 +72,7 @@ const ( IOERR_ROLLBACK_ATOMIC = IOERR | (31 << 8) IOERR_DATA = IOERR | (32 << 8) IOERR_CORRUPTFS = IOERR | (33 << 8) + IOERR_IN_PAGE = IOERR | (34 << 8) LOCKED_SHAREDCACHE = LOCKED | (1 << 8) LOCKED_VTAB = LOCKED | (2 << 8) BUSY_RECOVERY = BUSY | (1 << 8) diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go index 7bcd45ae94..1f5555fd3e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go @@ -1,7 +1,6 @@ package util import ( - "fmt" "runtime" "strconv" ) @@ -15,14 +14,14 @@ const ( OOMErr = ErrorString("sqlite3: out of memory") RangeErr = ErrorString("sqlite3: index out of range") NoNulErr = ErrorString("sqlite3: missing NUL terminator") - NoGlobalErr = ErrorString("sqlite3: could not find global: ") - NoFuncErr = ErrorString("sqlite3: could not find function: ") - BinaryErr = ErrorString("sqlite3: no SQLite binary embed/set/loaded") + NoBinaryErr = ErrorString("sqlite3: no SQLite binary embed/set/loaded") + BadBinaryErr = ErrorString("sqlite3: invalid SQLite binary embed/set/loaded") TimeErr = ErrorString("sqlite3: invalid time value") WhenceErr = ErrorString("sqlite3: invalid whence") OffsetErr = ErrorString("sqlite3: invalid offset") TailErr = ErrorString("sqlite3: multiple statements") IsolationErr = ErrorString("sqlite3: unsupported isolation level") + ValueErr = ErrorString("sqlite3: unsupported value") NoVFSErr = ErrorString("sqlite3: no such vfs: ") ) @@ -34,14 +33,6 @@ func AssertErr() ErrorString { return ErrorString(msg) } -func Finalizer[T any](skip int) func(*T) { - msg := fmt.Sprintf("sqlite3: %T not closed", new(T)) - if _, file, line, ok := runtime.Caller(skip + 1); ok && skip >= 0 { - msg += " (" + file + ":" + strconv.Itoa(line) + ")" - } - return func(*T) { panic(ErrorString(msg)) } -} - func ErrorCodeString(rc uint32) string { switch rc { case ABORT_ROLLBACK: diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go index 65efe3b39e..9ff775774c 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go @@ -10,6 +10,32 @@ import ( type i32 interface{ ~int32 | ~uint32 } type i64 interface{ ~int64 | ~uint64 } +type funcVI[T0 i32] func(context.Context, api.Module, T0) + +func (fn funcVI[T0]) Call(ctx context.Context, mod api.Module, stack []uint64) { + fn(ctx, mod, T0(stack[0])) +} + +func ExportFuncVI[T0 i32](mod wazero.HostModuleBuilder, name string, fn func(context.Context, api.Module, T0)) { + mod.NewFunctionBuilder(). + WithGoModuleFunction(funcVI[T0](fn), + []api.ValueType{api.ValueTypeI32}, nil). + Export(name) +} + +type funcVIII[T0, T1, T2 i32] func(context.Context, api.Module, T0, T1, T2) + +func (fn funcVIII[T0, T1, T2]) Call(ctx context.Context, mod api.Module, stack []uint64) { + fn(ctx, mod, T0(stack[0]), T1(stack[1]), T2(stack[2])) +} + +func ExportFuncVIII[T0, T1, T2 i32](mod wazero.HostModuleBuilder, name string, fn func(context.Context, api.Module, T0, T1, T2)) { + mod.NewFunctionBuilder(). + WithGoModuleFunction(funcVIII[T0, T1, T2](fn), + []api.ValueType{api.ValueTypeI32, api.ValueTypeI32, api.ValueTypeI32}, nil). + Export(name) +} + type funcII[TR, T0 i32] func(context.Context, api.Module, T0) TR func (fn funcII[TR, T0]) Call(ctx context.Context, mod api.Module, stack []uint64) { diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go new file mode 100644 index 0000000000..2309ed478f --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go @@ -0,0 +1,75 @@ +package util + +import ( + "context" + "io" + + "github.com/tetratelabs/wazero/experimental" +) + +type handleKey struct{} +type handleState struct { + handles []any + empty int +} + +func NewContext(ctx context.Context) context.Context { + state := new(handleState) + ctx = experimental.WithCloseNotifier(ctx, state) + ctx = context.WithValue(ctx, handleKey{}, state) + return ctx +} + +func (s *handleState) CloseNotify(ctx context.Context, exitCode uint32) { + for _, h := range s.handles { + if c, ok := h.(io.Closer); ok { + c.Close() + } + } + s.handles = nil + s.empty = 0 +} + +func GetHandle(ctx context.Context, id uint32) any { + if id == 0 { + return nil + } + s := ctx.Value(handleKey{}).(*handleState) + return s.handles[^id] +} + +func DelHandle(ctx context.Context, id uint32) error { + if id == 0 { + return nil + } + s := ctx.Value(handleKey{}).(*handleState) + a := s.handles[^id] + s.handles[^id] = nil + s.empty++ + if c, ok := a.(io.Closer); ok { + return c.Close() + } + return nil +} + +func AddHandle(ctx context.Context, a any) (id uint32) { + if a == nil { + panic(NilErr) + } + s := ctx.Value(handleKey{}).(*handleState) + + // Find an empty slot. + if s.empty > cap(s.handles)-len(s.handles) { + for id, h := range s.handles { + if h == nil { + s.empty-- + s.handles[id] = a + return ^uint32(id) + } + } + } + + // Add a new slot. + s.handles = append(s.handles, a) + return -uint32(len(s.handles)) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go index 0b3564720f..a09523fd16 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go @@ -14,6 +14,9 @@ func View(mod api.Module, ptr uint32, size uint64) []byte { if size > math.MaxUint32 { panic(RangeErr) } + if size == 0 { + return nil + } buf, ok := mod.Memory().Read(ptr, uint32(size)) if !ok { panic(RangeErr) @@ -21,6 +24,17 @@ func View(mod api.Module, ptr uint32, size uint64) []byte { return buf } +func ReadUint8(mod api.Module, ptr uint32) uint8 { + if ptr == 0 { + panic(NilErr) + } + v, ok := mod.Memory().ReadByte(ptr) + if !ok { + panic(RangeErr) + } + return v +} + func ReadUint32(mod api.Module, ptr uint32) uint32 { if ptr == 0 { panic(NilErr) @@ -32,6 +46,16 @@ func ReadUint32(mod api.Module, ptr uint32) uint32 { return v } +func WriteUint8(mod api.Module, ptr uint32, v uint8) { + if ptr == 0 { + panic(NilErr) + } + ok := mod.Memory().WriteByte(ptr, v) + if !ok { + panic(RangeErr) + } +} + func WriteUint32(mod api.Module, ptr uint32, v uint32) { if ptr == 0 { panic(NilErr) diff --git a/vendor/github.com/ncruces/go-sqlite3/json.go b/vendor/github.com/ncruces/go-sqlite3/json.go new file mode 100644 index 0000000000..c0086ea1de --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/json.go @@ -0,0 +1,46 @@ +package sqlite3 + +import ( + "encoding/json" + "strconv" + "time" + "unsafe" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// JSON returns a value that can be used as an argument to +// [database/sql.DB.Exec], [database/sql.Row.Scan] and similar methods to +// store value as JSON, or decode JSON into value. +func JSON(value any) any { + return jsonValue{value} +} + +type jsonValue struct{ any } + +func (j jsonValue) JSON() any { return j.any } + +func (j jsonValue) Scan(value any) error { + var buf []byte + + switch v := value.(type) { + case []byte: + buf = v + case string: + buf = unsafe.Slice(unsafe.StringData(v), len(v)) + case int64: + buf = strconv.AppendInt(nil, v, 10) + case float64: + buf = strconv.AppendFloat(nil, v, 'g', -1, 64) + case time.Time: + buf = append(buf, '"') + buf = v.AppendFormat(buf, time.RFC3339Nano) + buf = append(buf, '"') + case nil: + buf = append(buf, "null"...) + default: + panic(util.AssertErr()) + } + + return json.Unmarshal(buf, j.any) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/module.go b/vendor/github.com/ncruces/go-sqlite3/module.go deleted file mode 100644 index e279601629..0000000000 --- a/vendor/github.com/ncruces/go-sqlite3/module.go +++ /dev/null @@ -1,352 +0,0 @@ -// Package sqlite3 wraps the C SQLite API. -package sqlite3 - -import ( - "context" - "io" - "math" - "os" - "sync" - - "github.com/ncruces/go-sqlite3/internal/util" - "github.com/ncruces/go-sqlite3/vfs" - "github.com/tetratelabs/wazero" - "github.com/tetratelabs/wazero/api" -) - -// Configure SQLite WASM. -// -// Importing package embed initializes these -// with an appropriate build of SQLite: -// -// import _ "github.com/ncruces/go-sqlite3/embed" -var ( - Binary []byte // WASM binary to load. - Path string // Path to load the binary from. -) - -var sqlite3 struct { - runtime wazero.Runtime - compiled wazero.CompiledModule - err error - once sync.Once -} - -func instantiateModule() (*module, error) { - ctx := context.Background() - - sqlite3.once.Do(compileModule) - if sqlite3.err != nil { - return nil, sqlite3.err - } - - cfg := wazero.NewModuleConfig() - - mod, err := sqlite3.runtime.InstantiateModule(ctx, sqlite3.compiled, cfg) - if err != nil { - return nil, err - } - return newModule(mod) -} - -func compileModule() { - ctx := context.Background() - sqlite3.runtime = wazero.NewRuntime(ctx) - - env := vfs.ExportHostFunctions(sqlite3.runtime.NewHostModuleBuilder("env")) - _, sqlite3.err = env.Instantiate(ctx) - if sqlite3.err != nil { - return - } - - bin := Binary - if bin == nil && Path != "" { - bin, sqlite3.err = os.ReadFile(Path) - if sqlite3.err != nil { - return - } - } - if bin == nil { - sqlite3.err = util.BinaryErr - return - } - - sqlite3.compiled, sqlite3.err = sqlite3.runtime.CompileModule(ctx, bin) -} - -type module struct { - ctx context.Context - mod api.Module - vfs io.Closer - api sqliteAPI - arg [8]uint64 -} - -func newModule(mod api.Module) (m *module, err error) { - m = new(module) - m.mod = mod - m.ctx, m.vfs = vfs.NewContext(context.Background()) - - getFun := func(name string) api.Function { - f := mod.ExportedFunction(name) - if f == nil { - err = util.NoFuncErr + util.ErrorString(name) - return nil - } - return f - } - - getVal := func(name string) uint32 { - g := mod.ExportedGlobal(name) - if g == nil { - err = util.NoGlobalErr + util.ErrorString(name) - return 0 - } - return util.ReadUint32(mod, uint32(g.Get())) - } - - m.api = sqliteAPI{ - free: getFun("free"), - malloc: getFun("malloc"), - destructor: getVal("malloc_destructor"), - errcode: getFun("sqlite3_errcode"), - errstr: getFun("sqlite3_errstr"), - errmsg: getFun("sqlite3_errmsg"), - erroff: getFun("sqlite3_error_offset"), - open: getFun("sqlite3_open_v2"), - close: getFun("sqlite3_close"), - closeZombie: getFun("sqlite3_close_v2"), - prepare: getFun("sqlite3_prepare_v3"), - finalize: getFun("sqlite3_finalize"), - reset: getFun("sqlite3_reset"), - step: getFun("sqlite3_step"), - exec: getFun("sqlite3_exec"), - clearBindings: getFun("sqlite3_clear_bindings"), - bindCount: getFun("sqlite3_bind_parameter_count"), - bindIndex: getFun("sqlite3_bind_parameter_index"), - bindName: getFun("sqlite3_bind_parameter_name"), - bindNull: getFun("sqlite3_bind_null"), - bindInteger: getFun("sqlite3_bind_int64"), - bindFloat: getFun("sqlite3_bind_double"), - bindText: getFun("sqlite3_bind_text64"), - bindBlob: getFun("sqlite3_bind_blob64"), - bindZeroBlob: getFun("sqlite3_bind_zeroblob64"), - columnCount: getFun("sqlite3_column_count"), - columnName: getFun("sqlite3_column_name"), - columnType: getFun("sqlite3_column_type"), - columnInteger: getFun("sqlite3_column_int64"), - columnFloat: getFun("sqlite3_column_double"), - columnText: getFun("sqlite3_column_text"), - columnBlob: getFun("sqlite3_column_blob"), - columnBytes: getFun("sqlite3_column_bytes"), - blobOpen: getFun("sqlite3_blob_open"), - blobClose: getFun("sqlite3_blob_close"), - blobReopen: getFun("sqlite3_blob_reopen"), - blobBytes: getFun("sqlite3_blob_bytes"), - blobRead: getFun("sqlite3_blob_read"), - blobWrite: getFun("sqlite3_blob_write"), - backupInit: getFun("sqlite3_backup_init"), - backupStep: getFun("sqlite3_backup_step"), - backupFinish: getFun("sqlite3_backup_finish"), - backupRemaining: getFun("sqlite3_backup_remaining"), - backupPageCount: getFun("sqlite3_backup_pagecount"), - changes: getFun("sqlite3_changes64"), - lastRowid: getFun("sqlite3_last_insert_rowid"), - autocommit: getFun("sqlite3_get_autocommit"), - } - if err != nil { - return nil, err - } - return m, nil -} - -func (m *module) close() error { - err := m.mod.Close(m.ctx) - m.vfs.Close() - return err -} - -func (m *module) error(rc uint64, handle uint32, sql ...string) error { - if rc == _OK { - return nil - } - - err := Error{code: rc} - - if err.Code() == NOMEM || err.ExtendedCode() == IOERR_NOMEM { - panic(util.OOMErr) - } - - if r := m.call(m.api.errstr, rc); r != 0 { - err.str = util.ReadString(m.mod, uint32(r), _MAX_STRING) - } - - if r := m.call(m.api.errmsg, uint64(handle)); r != 0 { - err.msg = util.ReadString(m.mod, uint32(r), _MAX_STRING) - } - - if sql != nil { - if r := m.call(m.api.erroff, uint64(handle)); r != math.MaxUint32 { - err.sql = sql[0][r:] - } - } - - switch err.msg { - case err.str, "not an error": - err.msg = "" - } - return &err -} - -func (m *module) call(fn api.Function, params ...uint64) uint64 { - copy(m.arg[:], params) - err := fn.CallWithStack(m.ctx, m.arg[:]) - if err != nil { - // The module closed or panicked; release resources. - m.vfs.Close() - panic(err) - } - return m.arg[0] -} - -func (m *module) free(ptr uint32) { - if ptr == 0 { - return - } - m.call(m.api.free, uint64(ptr)) -} - -func (m *module) new(size uint64) uint32 { - if size > _MAX_ALLOCATION_SIZE { - panic(util.OOMErr) - } - ptr := uint32(m.call(m.api.malloc, size)) - if ptr == 0 && size != 0 { - panic(util.OOMErr) - } - return ptr -} - -func (m *module) newBytes(b []byte) uint32 { - if b == nil { - return 0 - } - ptr := m.new(uint64(len(b))) - util.WriteBytes(m.mod, ptr, b) - return ptr -} - -func (m *module) newString(s string) uint32 { - ptr := m.new(uint64(len(s) + 1)) - util.WriteString(m.mod, ptr, s) - return ptr -} - -func (m *module) newArena(size uint64) arena { - return arena{ - m: m, - base: m.new(size), - size: uint32(size), - } -} - -type arena struct { - m *module - ptrs []uint32 - base uint32 - next uint32 - size uint32 -} - -func (a *arena) free() { - if a.m == nil { - return - } - a.reset() - a.m.free(a.base) - a.m = nil -} - -func (a *arena) reset() { - for _, ptr := range a.ptrs { - a.m.free(ptr) - } - a.ptrs = nil - a.next = 0 -} - -func (a *arena) new(size uint64) uint32 { - if size <= uint64(a.size-a.next) { - ptr := a.base + a.next - a.next += uint32(size) - return ptr - } - ptr := a.m.new(size) - a.ptrs = append(a.ptrs, ptr) - return ptr -} - -func (a *arena) bytes(b []byte) uint32 { - if b == nil { - return 0 - } - ptr := a.new(uint64(len(b))) - util.WriteBytes(a.m.mod, ptr, b) - return ptr -} - -func (a *arena) string(s string) uint32 { - ptr := a.new(uint64(len(s) + 1)) - util.WriteString(a.m.mod, ptr, s) - return ptr -} - -type sqliteAPI struct { - free api.Function - malloc api.Function - errcode api.Function - errstr api.Function - errmsg api.Function - erroff api.Function - open api.Function - close api.Function - closeZombie api.Function - prepare api.Function - finalize api.Function - reset api.Function - step api.Function - exec api.Function - clearBindings api.Function - bindNull api.Function - bindCount api.Function - bindIndex api.Function - bindName api.Function - bindInteger api.Function - bindFloat api.Function - bindText api.Function - bindBlob api.Function - bindZeroBlob api.Function - columnCount api.Function - columnName api.Function - columnType api.Function - columnInteger api.Function - columnFloat api.Function - columnText api.Function - columnBlob api.Function - columnBytes api.Function - blobOpen api.Function - blobClose api.Function - blobReopen api.Function - blobBytes api.Function - blobRead api.Function - blobWrite api.Function - backupInit api.Function - backupStep api.Function - backupFinish api.Function - backupRemaining api.Function - backupPageCount api.Function - changes api.Function - lastRowid api.Function - autocommit api.Function - destructor uint32 -} diff --git a/vendor/github.com/ncruces/go-sqlite3/pointer.go b/vendor/github.com/ncruces/go-sqlite3/pointer.go new file mode 100644 index 0000000000..dba1e44cbf --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/pointer.go @@ -0,0 +1,14 @@ +package sqlite3 + +// Pointer returns a pointer to a value +// that can be used as an argument to +// [database/sql.DB.Exec] and similar methods. +// +// https://sqlite.org/bindptr.html +func Pointer[T any](val T) any { + return pointer[T]{val} +} + +type pointer[T any] struct{ val T } + +func (p pointer[T]) Pointer() any { return p.val } diff --git a/vendor/github.com/ncruces/go-sqlite3/quote.go b/vendor/github.com/ncruces/go-sqlite3/quote.go new file mode 100644 index 0000000000..d1cd6fa875 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/quote.go @@ -0,0 +1,112 @@ +package sqlite3 + +import ( + "bytes" + "math" + "strconv" + "strings" + "time" + "unsafe" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// Quote escapes and quotes a value +// making it safe to embed in SQL text. +func Quote(value any) string { + switch v := value.(type) { + case nil: + return "NULL" + case bool: + if v { + return "1" + } else { + return "0" + } + + case int: + return strconv.Itoa(v) + case int64: + return strconv.FormatInt(v, 10) + case float64: + switch { + case math.IsNaN(v): + return "NULL" + case math.IsInf(v, 1): + return "9.0e999" + case math.IsInf(v, -1): + return "-9.0e999" + } + return strconv.FormatFloat(v, 'g', -1, 64) + case time.Time: + return "'" + v.Format(time.RFC3339Nano) + "'" + + case string: + if strings.IndexByte(v, 0) >= 0 { + break + } + + buf := make([]byte, 2+len(v)+strings.Count(v, "'")) + buf[0] = '\'' + i := 1 + for _, b := range []byte(v) { + if b == '\'' { + buf[i] = b + i += 1 + } + buf[i] = b + i += 1 + } + buf[i] = '\'' + return unsafe.String(&buf[0], len(buf)) + + case []byte: + buf := make([]byte, 3+2*len(v)) + buf[0] = 'x' + buf[1] = '\'' + i := 2 + for _, b := range v { + const hex = "0123456789ABCDEF" + buf[i+0] = hex[b/16] + buf[i+1] = hex[b%16] + i += 2 + } + buf[i] = '\'' + return unsafe.String(&buf[0], len(buf)) + + case ZeroBlob: + if v > ZeroBlob(1e9-3)/2 { + break + } + + buf := bytes.Repeat([]byte("0"), int(3+2*int64(v))) + buf[0] = 'x' + buf[1] = '\'' + buf[len(buf)-1] = '\'' + return unsafe.String(&buf[0], len(buf)) + } + + panic(util.ValueErr) +} + +// QuoteIdentifier escapes and quotes an identifier +// making it safe to embed in SQL text. +func QuoteIdentifier(id string) string { + if strings.IndexByte(id, 0) >= 0 { + panic(util.ValueErr) + } + + buf := make([]byte, 2+len(id)+strings.Count(id, `"`)) + buf[0] = '"' + i := 1 + for _, b := range []byte(id) { + if b == '"' { + buf[i] = b + i += 1 + } + buf[i] = b + i += 1 + } + buf[i] = '"' + return unsafe.String(&buf[0], len(buf)) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/sqlite.go b/vendor/github.com/ncruces/go-sqlite3/sqlite.go new file mode 100644 index 0000000000..31c52a9a27 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/sqlite.go @@ -0,0 +1,301 @@ +// Package sqlite3 wraps the C SQLite API. +package sqlite3 + +import ( + "context" + "math" + "os" + "sync" + + "github.com/ncruces/go-sqlite3/internal/util" + "github.com/ncruces/go-sqlite3/vfs" + "github.com/tetratelabs/wazero" + "github.com/tetratelabs/wazero/api" +) + +// Configure SQLite WASM. +// +// Importing package embed initializes these +// with an appropriate build of SQLite: +// +// import _ "github.com/ncruces/go-sqlite3/embed" +var ( + Binary []byte // WASM binary to load. + Path string // Path to load the binary from. + + RuntimeConfig wazero.RuntimeConfig +) + +var instance struct { + runtime wazero.Runtime + compiled wazero.CompiledModule + err error + once sync.Once +} + +func compileSQLite() { + if RuntimeConfig == nil { + RuntimeConfig = wazero.NewRuntimeConfig() + } + + ctx := context.Background() + instance.runtime = wazero.NewRuntimeWithConfig(ctx, RuntimeConfig) + + env := instance.runtime.NewHostModuleBuilder("env") + env = vfs.ExportHostFunctions(env) + env = exportCallbacks(env) + _, instance.err = env.Instantiate(ctx) + if instance.err != nil { + return + } + + bin := Binary + if bin == nil && Path != "" { + bin, instance.err = os.ReadFile(Path) + if instance.err != nil { + return + } + } + if bin == nil { + instance.err = util.NoBinaryErr + return + } + + instance.compiled, instance.err = instance.runtime.CompileModule(ctx, bin) +} + +type sqlite struct { + ctx context.Context + mod api.Module + funcs [8]api.Function + stack [8]uint64 + freer uint32 +} + +func instantiateSQLite() (sqlt *sqlite, err error) { + instance.once.Do(compileSQLite) + if instance.err != nil { + return nil, instance.err + } + + sqlt = new(sqlite) + sqlt.ctx = util.NewContext(context.Background()) + + sqlt.mod, err = instance.runtime.InstantiateModule(sqlt.ctx, + instance.compiled, wazero.NewModuleConfig()) + if err != nil { + return nil, err + } + + global := sqlt.mod.ExportedGlobal("malloc_destructor") + if global == nil { + return nil, util.BadBinaryErr + } + + sqlt.freer = util.ReadUint32(sqlt.mod, uint32(global.Get())) + if err != nil { + return nil, err + } + return sqlt, nil +} + +func (sqlt *sqlite) close() error { + return sqlt.mod.Close(sqlt.ctx) +} + +func (sqlt *sqlite) error(rc uint64, handle uint32, sql ...string) error { + if rc == _OK { + return nil + } + + err := Error{code: rc} + + if err.Code() == NOMEM || err.ExtendedCode() == IOERR_NOMEM { + panic(util.OOMErr) + } + + if r := sqlt.call("sqlite3_errstr", rc); r != 0 { + err.str = util.ReadString(sqlt.mod, uint32(r), _MAX_NAME) + } + + if handle != 0 { + if r := sqlt.call("sqlite3_errmsg", uint64(handle)); r != 0 { + err.msg = util.ReadString(sqlt.mod, uint32(r), _MAX_NAME) + } + + if sql != nil { + if r := sqlt.call("sqlite3_error_offset", uint64(handle)); r != math.MaxUint32 { + err.sql = sql[0][r:] + } + } + } + + switch err.msg { + case err.str, "not an error": + err.msg = "" + } + return &err +} + +func (sqlt *sqlite) getfn(name string) (api.Function, uint32) { + // https://cr.yp.to/cdb/cdb.txt + hash := func(s string) uint32 { + var hash uint32 = 5381 + for _, b := range []byte(s) { + hash = (hash<<5 + hash) ^ uint32(b) + } + return hash + }(name) % uint32(len(sqlt.funcs)) + + fn := sqlt.funcs[hash] + if fn == nil || name != fn.Definition().Name() { + fn = sqlt.mod.ExportedFunction(name) + } else { + sqlt.funcs[hash] = nil + } + return fn, hash +} + +func (sqlt *sqlite) call(name string, params ...uint64) uint64 { + copy(sqlt.stack[:], params) + fn, hash := sqlt.getfn(name) + err := fn.CallWithStack(sqlt.ctx, sqlt.stack[:]) + if err != nil { + panic(err) + } + sqlt.funcs[hash] = fn + return sqlt.stack[0] +} + +func (sqlt *sqlite) free(ptr uint32) { + if ptr == 0 { + return + } + sqlt.call("free", uint64(ptr)) +} + +func (sqlt *sqlite) new(size uint64) uint32 { + if size > _MAX_ALLOCATION_SIZE { + panic(util.OOMErr) + } + ptr := uint32(sqlt.call("malloc", size)) + if ptr == 0 && size != 0 { + panic(util.OOMErr) + } + return ptr +} + +func (sqlt *sqlite) newBytes(b []byte) uint32 { + if (*[0]byte)(b) == nil { + return 0 + } + ptr := sqlt.new(uint64(len(b))) + util.WriteBytes(sqlt.mod, ptr, b) + return ptr +} + +func (sqlt *sqlite) newString(s string) uint32 { + ptr := sqlt.new(uint64(len(s) + 1)) + util.WriteString(sqlt.mod, ptr, s) + return ptr +} + +func (sqlt *sqlite) newArena(size uint64) arena { + return arena{ + sqlt: sqlt, + size: uint32(size), + base: sqlt.new(size), + } +} + +type arena struct { + sqlt *sqlite + ptrs []uint32 + base uint32 + next uint32 + size uint32 +} + +func (a *arena) free() { + if a.sqlt == nil { + return + } + for _, ptr := range a.ptrs { + a.sqlt.free(ptr) + } + a.sqlt.free(a.base) + a.sqlt = nil +} + +func (a *arena) mark() (reset func()) { + ptrs := len(a.ptrs) + next := a.next + return func() { + for _, ptr := range a.ptrs[ptrs:] { + a.sqlt.free(ptr) + } + a.ptrs = a.ptrs[:ptrs] + a.next = next + } +} + +func (a *arena) new(size uint64) uint32 { + if size <= uint64(a.size-a.next) { + ptr := a.base + a.next + a.next += uint32(size) + return ptr + } + ptr := a.sqlt.new(size) + a.ptrs = append(a.ptrs, ptr) + return ptr +} + +func (a *arena) bytes(b []byte) uint32 { + if b == nil { + return 0 + } + ptr := a.new(uint64(len(b))) + util.WriteBytes(a.sqlt.mod, ptr, b) + return ptr +} + +func (a *arena) string(s string) uint32 { + ptr := a.new(uint64(len(s) + 1)) + util.WriteString(a.sqlt.mod, ptr, s) + return ptr +} + +func exportCallbacks(env wazero.HostModuleBuilder) wazero.HostModuleBuilder { + util.ExportFuncII(env, "go_progress", progressCallback) + util.ExportFuncVI(env, "go_destroy", destroyCallback) + util.ExportFuncVIII(env, "go_func", funcCallback) + util.ExportFuncVIII(env, "go_step", stepCallback) + util.ExportFuncVI(env, "go_final", finalCallback) + util.ExportFuncVI(env, "go_value", valueCallback) + util.ExportFuncVIII(env, "go_inverse", inverseCallback) + util.ExportFuncIIIIII(env, "go_compare", compareCallback) + util.ExportFuncIIIIII(env, "go_vtab_create", vtabModuleCallback(0)) + util.ExportFuncIIIIII(env, "go_vtab_connect", vtabModuleCallback(1)) + util.ExportFuncII(env, "go_vtab_disconnect", vtabDisconnectCallback) + util.ExportFuncII(env, "go_vtab_destroy", vtabDestroyCallback) + util.ExportFuncIII(env, "go_vtab_best_index", vtabBestIndexCallback) + util.ExportFuncIIIII(env, "go_vtab_update", vtabUpdateCallback) + util.ExportFuncIII(env, "go_vtab_rename", vtabRenameCallback) + util.ExportFuncIIIII(env, "go_vtab_find_function", vtabFindFuncCallback) + util.ExportFuncII(env, "go_vtab_begin", vtabBeginCallback) + util.ExportFuncII(env, "go_vtab_sync", vtabSyncCallback) + util.ExportFuncII(env, "go_vtab_commit", vtabCommitCallback) + util.ExportFuncII(env, "go_vtab_rollback", vtabRollbackCallback) + util.ExportFuncIII(env, "go_vtab_savepoint", vtabSavepointCallback) + util.ExportFuncIII(env, "go_vtab_release", vtabReleaseCallback) + util.ExportFuncIII(env, "go_vtab_rollback_to", vtabRollbackToCallback) + util.ExportFuncIIIIII(env, "go_vtab_integrity", vtabIntegrityCallback) + util.ExportFuncIII(env, "go_cur_open", cursorOpenCallback) + util.ExportFuncII(env, "go_cur_close", cursorCloseCallback) + util.ExportFuncIIIIII(env, "go_cur_filter", cursorFilterCallback) + util.ExportFuncII(env, "go_cur_next", cursorNextCallback) + util.ExportFuncII(env, "go_cur_eof", cursorEOFCallback) + util.ExportFuncIIII(env, "go_cur_column", cursorColumnCallback) + util.ExportFuncIII(env, "go_cur_rowid", cursorRowIDCallback) + return env +} diff --git a/vendor/github.com/ncruces/go-sqlite3/stmt.go b/vendor/github.com/ncruces/go-sqlite3/stmt.go index 2fae0b40fb..e9b80ae821 100644 --- a/vendor/github.com/ncruces/go-sqlite3/stmt.go +++ b/vendor/github.com/ncruces/go-sqlite3/stmt.go @@ -1,7 +1,9 @@ package sqlite3 import ( + "encoding/json" "math" + "strconv" "time" "github.com/ncruces/go-sqlite3/internal/util" @@ -9,7 +11,7 @@ import ( // Stmt is a prepared statement object. // -// https://www.sqlite.org/c3ref/stmt.html +// https://sqlite.org/c3ref/stmt.html type Stmt struct { c *Conn err error @@ -20,33 +22,49 @@ type Stmt struct { // // It is safe to close a nil, zero or closed Stmt. // -// https://www.sqlite.org/c3ref/finalize.html +// https://sqlite.org/c3ref/finalize.html func (s *Stmt) Close() error { if s == nil || s.handle == 0 { return nil } - r := s.c.call(s.c.api.finalize, uint64(s.handle)) + r := s.c.call("sqlite3_finalize", uint64(s.handle)) s.handle = 0 return s.c.error(r) } +// Conn returns the database connection to which the prepared statement belongs. +// +// https://sqlite.org/c3ref/db_handle.html +func (s *Stmt) Conn() *Conn { + return s.c +} + +// ReadOnly returns true if and only if the statement +// makes no direct changes to the content of the database file. +// +// https://sqlite.org/c3ref/stmt_readonly.html +func (s *Stmt) ReadOnly() bool { + r := s.c.call("sqlite3_stmt_readonly", uint64(s.handle)) + return r != 0 +} + // Reset resets the prepared statement object. // -// https://www.sqlite.org/c3ref/reset.html +// https://sqlite.org/c3ref/reset.html func (s *Stmt) Reset() error { - r := s.c.call(s.c.api.reset, uint64(s.handle)) + r := s.c.call("sqlite3_reset", uint64(s.handle)) s.err = nil return s.c.error(r) } -// ClearBindings resets all bindings on the prepared statement. +// Busy determines if a prepared statement has been reset. // -// https://www.sqlite.org/c3ref/clear_bindings.html -func (s *Stmt) ClearBindings() error { - r := s.c.call(s.c.api.clearBindings, uint64(s.handle)) - return s.c.error(r) +// https://sqlite.org/c3ref/stmt_busy.html +func (s *Stmt) Busy() bool { + r := s.c.call("sqlite3_stmt_busy", uint64(s.handle)) + return r != 0 } // Step evaluates the SQL statement. @@ -57,16 +75,17 @@ func (s *Stmt) ClearBindings() error { // If an error has occurred, Step returns false; // call [Stmt.Err] or [Stmt.Reset] to get the error. // -// https://www.sqlite.org/c3ref/step.html +// https://sqlite.org/c3ref/step.html func (s *Stmt) Step() bool { s.c.checkInterrupt() - r := s.c.call(s.c.api.step, uint64(s.handle)) - if r == _ROW { + r := s.c.call("sqlite3_step", uint64(s.handle)) + switch r { + case _ROW: + s.err = nil return true - } - if r == _DONE { + case _DONE: s.err = nil - } else { + default: s.err = s.c.error(r) } return false @@ -75,7 +94,7 @@ func (s *Stmt) Step() bool { // Err gets the last error occurred during [Stmt.Step]. // Err returns nil after [Stmt.Reset] is called. // -// https://www.sqlite.org/c3ref/step.html +// https://sqlite.org/c3ref/step.html func (s *Stmt) Err() error { return s.err } @@ -88,11 +107,32 @@ func (s *Stmt) Exec() error { return s.Reset() } +// Status monitors the performance characteristics of prepared statements. +// +// https://sqlite.org/c3ref/stmt_status.html +func (s *Stmt) Status(op StmtStatus, reset bool) int { + var i uint64 + if reset { + i = 1 + } + r := s.c.call("sqlite3_stmt_status", uint64(s.handle), + uint64(op), i) + return int(r) +} + +// ClearBindings resets all bindings on the prepared statement. +// +// https://sqlite.org/c3ref/clear_bindings.html +func (s *Stmt) ClearBindings() error { + r := s.c.call("sqlite3_clear_bindings", uint64(s.handle)) + return s.c.error(r) +} + // BindCount returns the number of SQL parameters in the prepared statement. // -// https://www.sqlite.org/c3ref/bind_parameter_count.html +// https://sqlite.org/c3ref/bind_parameter_count.html func (s *Stmt) BindCount() int { - r := s.c.call(s.c.api.bindCount, + r := s.c.call("sqlite3_bind_parameter_count", uint64(s.handle)) return int(r) } @@ -100,11 +140,11 @@ func (s *Stmt) BindCount() int { // BindIndex returns the index of a parameter in the prepared statement // given its name. // -// https://www.sqlite.org/c3ref/bind_parameter_index.html +// https://sqlite.org/c3ref/bind_parameter_index.html func (s *Stmt) BindIndex(name string) int { - defer s.c.arena.reset() + defer s.c.arena.mark()() namePtr := s.c.arena.string(name) - r := s.c.call(s.c.api.bindIndex, + r := s.c.call("sqlite3_bind_parameter_index", uint64(s.handle), uint64(namePtr)) return int(r) } @@ -112,16 +152,16 @@ func (s *Stmt) BindIndex(name string) int { // BindName returns the name of a parameter in the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_parameter_name.html +// https://sqlite.org/c3ref/bind_parameter_name.html func (s *Stmt) BindName(param int) string { - r := s.c.call(s.c.api.bindName, + r := s.c.call("sqlite3_bind_parameter_name", uint64(s.handle), uint64(param)) ptr := uint32(r) if ptr == 0 { return "" } - return util.ReadString(s.c.mod, ptr, _MAX_STRING) + return util.ReadString(s.c.mod, ptr, _MAX_NAME) } // BindBool binds a bool to the prepared statement. @@ -129,18 +169,19 @@ func (s *Stmt) BindName(param int) string { // SQLite does not have a separate boolean storage class. // Instead, boolean values are stored as integers 0 (false) and 1 (true). // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindBool(param int, value bool) error { + var i int64 if value { - return s.BindInt64(param, 1) + i = 1 } - return s.BindInt64(param, 0) + return s.BindInt64(param, i) } // BindInt binds an int to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindInt(param int, value int) error { return s.BindInt64(param, int64(value)) } @@ -148,9 +189,9 @@ func (s *Stmt) BindInt(param int, value int) error { // BindInt64 binds an int64 to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindInt64(param int, value int64) error { - r := s.c.call(s.c.api.bindInteger, + r := s.c.call("sqlite3_bind_int64", uint64(s.handle), uint64(param), uint64(value)) return s.c.error(r) } @@ -158,9 +199,9 @@ func (s *Stmt) BindInt64(param int, value int64) error { // BindFloat binds a float64 to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindFloat(param int, value float64) error { - r := s.c.call(s.c.api.bindFloat, + r := s.c.call("sqlite3_bind_double", uint64(s.handle), uint64(param), math.Float64bits(value)) return s.c.error(r) } @@ -168,13 +209,32 @@ func (s *Stmt) BindFloat(param int, value float64) error { // BindText binds a string to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindText(param int, value string) error { + if len(value) > _MAX_LENGTH { + return TOOBIG + } ptr := s.c.newString(value) - r := s.c.call(s.c.api.bindText, + r := s.c.call("sqlite3_bind_text64", + uint64(s.handle), uint64(param), + uint64(ptr), uint64(len(value)), + uint64(s.c.freer), _UTF8) + return s.c.error(r) +} + +// BindRawText binds a []byte to the prepared statement as text. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindRawText(param int, value []byte) error { + if len(value) > _MAX_LENGTH { + return TOOBIG + } + ptr := s.c.newBytes(value) + r := s.c.call("sqlite3_bind_text64", uint64(s.handle), uint64(param), uint64(ptr), uint64(len(value)), - uint64(s.c.api.destructor), _UTF8) + uint64(s.c.freer), _UTF8) return s.c.error(r) } @@ -182,22 +242,25 @@ func (s *Stmt) BindText(param int, value string) error { // The leftmost SQL parameter has an index of 1. // Binding a nil slice is the same as calling [Stmt.BindNull]. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindBlob(param int, value []byte) error { + if len(value) > _MAX_LENGTH { + return TOOBIG + } ptr := s.c.newBytes(value) - r := s.c.call(s.c.api.bindBlob, + r := s.c.call("sqlite3_bind_blob64", uint64(s.handle), uint64(param), uint64(ptr), uint64(len(value)), - uint64(s.c.api.destructor)) + uint64(s.c.freer)) return s.c.error(r) } // BindZeroBlob binds a zero-filled, length n BLOB to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindZeroBlob(param int, n int64) error { - r := s.c.call(s.c.api.bindZeroBlob, + r := s.c.call("sqlite3_bind_zeroblob64", uint64(s.handle), uint64(param), uint64(n)) return s.c.error(r) } @@ -205,9 +268,9 @@ func (s *Stmt) BindZeroBlob(param int, n int64) error { // BindNull binds a NULL to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindNull(param int) error { - r := s.c.call(s.c.api.bindNull, + r := s.c.call("sqlite3_bind_null", uint64(s.handle), uint64(param)) return s.c.error(r) } @@ -215,7 +278,7 @@ func (s *Stmt) BindNull(param int) error { // BindTime binds a [time.Time] to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error { if format == TimeFormatDefault { return s.bindRFC3339Nano(param, value) @@ -234,24 +297,62 @@ func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error { } func (s *Stmt) bindRFC3339Nano(param int, value time.Time) error { - const maxlen = uint64(len(time.RFC3339Nano)) + const maxlen = uint64(len(time.RFC3339Nano)) + 5 ptr := s.c.new(maxlen) buf := util.View(s.c.mod, ptr, maxlen) buf = value.AppendFormat(buf[:0], time.RFC3339Nano) - r := s.c.call(s.c.api.bindText, + r := s.c.call("sqlite3_bind_text64", uint64(s.handle), uint64(param), uint64(ptr), uint64(len(buf)), - uint64(s.c.api.destructor), _UTF8) + uint64(s.c.freer), _UTF8) + return s.c.error(r) +} + +// BindPointer binds a NULL to the prepared statement, just like [Stmt.BindNull], +// but it also associates ptr with that NULL value such that it can be retrieved +// within an application-defined SQL function using [Value.Pointer]. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindPointer(param int, ptr any) error { + valPtr := util.AddHandle(s.c.ctx, ptr) + r := s.c.call("sqlite3_bind_pointer_go", + uint64(s.handle), uint64(param), uint64(valPtr)) + return s.c.error(r) +} + +// BindJSON binds the JSON encoding of value to the prepared statement. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindJSON(param int, value any) error { + data, err := json.Marshal(value) + if err != nil { + return err + } + return s.BindRawText(param, data) +} + +// BindValue binds a copy of value to the prepared statement. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindValue(param int, value Value) error { + if value.sqlite != s.c.sqlite { + return MISUSE + } + r := s.c.call("sqlite3_bind_value", + uint64(s.handle), uint64(param), uint64(value.handle)) return s.c.error(r) } // ColumnCount returns the number of columns in a result set. // -// https://www.sqlite.org/c3ref/column_count.html +// https://sqlite.org/c3ref/column_count.html func (s *Stmt) ColumnCount() int { - r := s.c.call(s.c.api.columnCount, + r := s.c.call("sqlite3_column_count", uint64(s.handle)) return int(r) } @@ -259,35 +360,48 @@ func (s *Stmt) ColumnCount() int { // ColumnName returns the name of the result column. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_name.html +// https://sqlite.org/c3ref/column_name.html func (s *Stmt) ColumnName(col int) string { - r := s.c.call(s.c.api.columnName, + r := s.c.call("sqlite3_column_name", uint64(s.handle), uint64(col)) ptr := uint32(r) if ptr == 0 { panic(util.OOMErr) } - return util.ReadString(s.c.mod, ptr, _MAX_STRING) + return util.ReadString(s.c.mod, ptr, _MAX_NAME) } // ColumnType returns the initial [Datatype] of the result column. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnType(col int) Datatype { - r := s.c.call(s.c.api.columnType, + r := s.c.call("sqlite3_column_type", uint64(s.handle), uint64(col)) return Datatype(r) } +// ColumnDeclType returns the declared datatype of the result column. +// The leftmost column of the result set has the index 0. +// +// https://sqlite.org/c3ref/column_decltype.html +func (s *Stmt) ColumnDeclType(col int) string { + r := s.c.call("sqlite3_column_decltype", + uint64(s.handle), uint64(col)) + if r == 0 { + return "" + } + return util.ReadString(s.c.mod, uint32(r), _MAX_NAME) +} + // ColumnBool returns the value of the result column as a bool. // The leftmost column of the result set has the index 0. // SQLite does not have a separate boolean storage class. // Instead, boolean values are retrieved as integers, // with 0 converted to false and any other value to true. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnBool(col int) bool { if i := s.ColumnInt64(col); i != 0 { return true @@ -298,7 +412,7 @@ func (s *Stmt) ColumnBool(col int) bool { // ColumnInt returns the value of the result column as an int. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnInt(col int) int { return int(s.ColumnInt64(col)) } @@ -306,9 +420,9 @@ func (s *Stmt) ColumnInt(col int) int { // ColumnInt64 returns the value of the result column as an int64. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnInt64(col int) int64 { - r := s.c.call(s.c.api.columnInteger, + r := s.c.call("sqlite3_column_int64", uint64(s.handle), uint64(col)) return int64(r) } @@ -316,9 +430,9 @@ func (s *Stmt) ColumnInt64(col int) int64 { // ColumnFloat returns the value of the result column as a float64. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnFloat(col int) float64 { - r := s.c.call(s.c.api.columnFloat, + r := s.c.call("sqlite3_column_double", uint64(s.handle), uint64(col)) return math.Float64frombits(r) } @@ -326,7 +440,7 @@ func (s *Stmt) ColumnFloat(col int) float64 { // ColumnTime returns the value of the result column as a [time.Time]. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnTime(col int, format TimeFormat) time.Time { var v any switch s.ColumnType(col) { @@ -351,7 +465,7 @@ func (s *Stmt) ColumnTime(col int, format TimeFormat) time.Time { // ColumnText returns the value of the result column as a string. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnText(col int) string { return string(s.ColumnRawText(col)) } @@ -360,7 +474,7 @@ func (s *Stmt) ColumnText(col int) string { // the value of the result column as a []byte. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnBlob(col int, buf []byte) []byte { return append(buf, s.ColumnRawBlob(col)...) } @@ -370,22 +484,11 @@ func (s *Stmt) ColumnBlob(col int, buf []byte) []byte { // subsequent calls to [Stmt] methods. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnRawText(col int) []byte { - r := s.c.call(s.c.api.columnText, - uint64(s.handle), uint64(col)) - - ptr := uint32(r) - if ptr == 0 { - r = s.c.call(s.c.api.errcode, uint64(s.c.handle)) - s.err = s.c.error(r) - return nil - } - - r = s.c.call(s.c.api.columnBytes, + r := s.c.call("sqlite3_column_text", uint64(s.handle), uint64(col)) - - return util.View(s.c.mod, ptr, r) + return s.columnRawBytes(col, uint32(r)) } // ColumnRawBlob returns the value of the result column as a []byte. @@ -393,35 +496,59 @@ func (s *Stmt) ColumnRawText(col int) []byte { // subsequent calls to [Stmt] methods. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnRawBlob(col int) []byte { - r := s.c.call(s.c.api.columnBlob, + r := s.c.call("sqlite3_column_blob", uint64(s.handle), uint64(col)) + return s.columnRawBytes(col, uint32(r)) +} - ptr := uint32(r) +func (s *Stmt) columnRawBytes(col int, ptr uint32) []byte { if ptr == 0 { - r = s.c.call(s.c.api.errcode, uint64(s.c.handle)) + r := s.c.call("sqlite3_errcode", uint64(s.c.handle)) s.err = s.c.error(r) return nil } - r = s.c.call(s.c.api.columnBytes, + r := s.c.call("sqlite3_column_bytes", uint64(s.handle), uint64(col)) - return util.View(s.c.mod, ptr, r) } -// Return true if stmt is an empty SQL statement. -// This is used as an optimization. -// It's OK to always return false here. -func emptyStatement(stmt string) bool { - for _, b := range []byte(stmt) { - switch b { - case ' ', '\n', '\r', '\t', '\v', '\f': - case ';': - default: - return false - } +// ColumnJSON parses the JSON-encoded value of the result column +// and stores it in the value pointed to by ptr. +// The leftmost column of the result set has the index 0. +// +// https://sqlite.org/c3ref/column_blob.html +func (s *Stmt) ColumnJSON(col int, ptr any) error { + var data []byte + switch s.ColumnType(col) { + case NULL: + data = append(data, "null"...) + case TEXT: + data = s.ColumnRawText(col) + case BLOB: + data = s.ColumnRawBlob(col) + case INTEGER: + data = strconv.AppendInt(nil, s.ColumnInt64(col), 10) + case FLOAT: + data = strconv.AppendFloat(nil, s.ColumnFloat(col), 'g', -1, 64) + default: + panic(util.AssertErr()) + } + return json.Unmarshal(data, ptr) +} + +// ColumnValue returns the unprotected value of the result column. +// The leftmost column of the result set has the index 0. +// +// https://sqlite.org/c3ref/column_blob.html +func (s *Stmt) ColumnValue(col int) Value { + r := s.c.call("sqlite3_column_value", + uint64(s.handle), uint64(col)) + return Value{ + unprot: true, + sqlite: s.c.sqlite, + handle: uint32(r), } - return true } diff --git a/vendor/github.com/ncruces/go-sqlite3/time.go b/vendor/github.com/ncruces/go-sqlite3/time.go index 6fddc3eadf..47ac67241f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/time.go +++ b/vendor/github.com/ncruces/go-sqlite3/time.go @@ -15,12 +15,12 @@ import ( // See the documentation for the [TimeFormatDefault] constant // for formats recognized by SQLite. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html type TimeFormat string // TimeFormats recognized by SQLite to encode/decode time values. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html#time_values const ( TimeFormatDefault TimeFormat = "" // time.RFC3339Nano @@ -83,9 +83,9 @@ const ( // a float64 for [TimeFormatJulianDay] and [TimeFormatUnixFrac], // or an int64 for the other numeric formats. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html // -// [collating sequence]: https://www.sqlite.org/datatype3.html#collating_sequences +// [collating sequence]: https://sqlite.org/datatype3.html#collating_sequences func (f TimeFormat) Encode(t time.Time) any { switch f { // Numeric formats @@ -136,7 +136,7 @@ func (f TimeFormat) Encode(t time.Time) any { // Unix timestamps before 1980 and after 9999 may be misinterpreted as julian day numbers, // or have the wrong time unit. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html func (f TimeFormat) Decode(v any) (time.Time, error) { switch f { // Numeric formats @@ -164,9 +164,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { case float64: sec, frac := math.Modf(v) nsec := math.Floor(frac * 1e9) - return time.Unix(int64(sec), int64(nsec)), nil + return time.Unix(int64(sec), int64(nsec)).UTC(), nil case int64: - return time.Unix(v, 0), nil + return time.Unix(v, 0).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -181,9 +181,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } switch v := v.(type) { case float64: - return time.UnixMilli(int64(math.Floor(v))), nil + return time.UnixMilli(int64(math.Floor(v))).UTC(), nil case int64: - return time.UnixMilli(int64(v)), nil + return time.UnixMilli(int64(v)).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -198,9 +198,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } switch v := v.(type) { case float64: - return time.UnixMicro(int64(math.Floor(v))), nil + return time.UnixMicro(int64(math.Floor(v))).UTC(), nil case int64: - return time.UnixMicro(int64(v)), nil + return time.UnixMicro(int64(v)).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -215,9 +215,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } switch v := v.(type) { case float64: - return time.Unix(0, int64(math.Floor(v))), nil + return time.Unix(0, int64(math.Floor(v))).UTC(), nil case int64: - return time.Unix(0, int64(v)), nil + return time.Unix(0, int64(v)).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -238,26 +238,16 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } dates := []TimeFormat{ - TimeFormat6TZ, TimeFormat6, TimeFormat3TZ, TimeFormat3, - TimeFormat5TZ, TimeFormat5, TimeFormat2TZ, TimeFormat2, - TimeFormat1, + TimeFormat9, TimeFormat8, + TimeFormat6, TimeFormat5, + TimeFormat3, TimeFormat2, TimeFormat1, } for _, f := range dates { - t, err := time.Parse(string(f), s) + t, err := f.Decode(s) if err == nil { return t, nil } } - - times := []TimeFormat{ - TimeFormat9TZ, TimeFormat9, TimeFormat8TZ, TimeFormat8, - } - for _, f := range times { - t, err := time.Parse(string(f), s) - if err == nil { - return t.AddDate(2000, 0, 0), nil - } - } } switch v := v.(type) { case float64: @@ -314,7 +304,10 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { return time.Time{}, util.TimeErr } t, err := f.parseRelaxed(s) - return t.AddDate(2000, 0, 0), err + if err != nil { + return time.Time{}, err + } + return t.AddDate(2000, 0, 0), nil default: s, ok := v.(string) @@ -338,3 +331,20 @@ func (f TimeFormat) parseRelaxed(s string) (time.Time, error) { } return t, nil } + +// Scanner returns a [database/sql.Scanner] that can be used as an argument to +// [database/sql.Row.Scan] and similar methods to +// decode a time value into dest using this format. +func (f TimeFormat) Scanner(dest *time.Time) interface{ Scan(any) error } { + return timeScanner{dest, f} +} + +type timeScanner struct { + *time.Time + TimeFormat +} + +func (s timeScanner) Scan(src any) (err error) { + *s.Time, err = s.Decode(src) + return +} diff --git a/vendor/github.com/ncruces/go-sqlite3/tx.go b/vendor/github.com/ncruces/go-sqlite3/tx.go index 5fe144c114..f9996e4d4f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/tx.go +++ b/vendor/github.com/ncruces/go-sqlite3/tx.go @@ -7,18 +7,19 @@ import ( "math/rand" "runtime" "strconv" + "strings" ) // Tx is an in-progress database transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html type Tx struct { c *Conn } // Begin starts a deferred transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (c *Conn) Begin() Tx { // BEGIN even if interrupted. err := c.txExecInterrupted(`BEGIN DEFERRED`) @@ -30,7 +31,7 @@ func (c *Conn) Begin() Tx { // BeginImmediate starts an immediate transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (c *Conn) BeginImmediate() (Tx, error) { err := c.Exec(`BEGIN IMMEDIATE`) if err != nil { @@ -41,7 +42,7 @@ func (c *Conn) BeginImmediate() (Tx, error) { // BeginExclusive starts an exclusive transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (c *Conn) BeginExclusive() (Tx, error) { err := c.Exec(`BEGIN EXCLUSIVE`) if err != nil { @@ -55,14 +56,14 @@ func (c *Conn) BeginExclusive() (Tx, error) { // // This is meant to be deferred: // -// func doWork(conn *sqlite3.Conn) (err error) { -// tx := conn.Begin() +// func doWork(db *sqlite3.Conn) (err error) { +// tx := db.Begin() // defer tx.End(&err) // // // ... do work in the transaction // } // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (tx Tx) End(errp *error) { recovered := recover() if recovered != nil { @@ -93,7 +94,7 @@ func (tx Tx) End(errp *error) { // Commit commits the transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (tx Tx) Commit() error { return tx.c.Exec(`COMMIT`) } @@ -101,7 +102,7 @@ func (tx Tx) Commit() error { // Rollback rolls back the transaction, // even if the connection has been interrupted. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (tx Tx) Rollback() error { return tx.c.txExecInterrupted(`ROLLBACK`) } @@ -109,7 +110,7 @@ func (tx Tx) Rollback() error { // Savepoint is a marker within a transaction // that allows for partial rollback. // -// https://www.sqlite.org/lang_savepoint.html +// https://sqlite.org/lang_savepoint.html type Savepoint struct { c *Conn name string @@ -117,19 +118,10 @@ type Savepoint struct { // Savepoint establishes a new transaction savepoint. // -// https://www.sqlite.org/lang_savepoint.html +// https://sqlite.org/lang_savepoint.html func (c *Conn) Savepoint() Savepoint { - name := "sqlite3.Savepoint" - var pc [1]uintptr - if n := runtime.Callers(2, pc[:]); n > 0 { - frames := runtime.CallersFrames(pc[:n]) - frame, _ := frames.Next() - if frame.Function != "" { - name = frame.Function - } - } // Names can be reused; this makes catching bugs more likely. - name += "#" + strconv.Itoa(int(rand.Int31())) + name := saveptName() + "_" + strconv.Itoa(int(rand.Int31())) err := c.txExecInterrupted(fmt.Sprintf("SAVEPOINT %q;", name)) if err != nil { @@ -138,13 +130,34 @@ func (c *Conn) Savepoint() Savepoint { return Savepoint{c: c, name: name} } +func saveptName() (name string) { + defer func() { + if name == "" { + name = "sqlite3.Savepoint" + } + }() + + var pc [8]uintptr + n := runtime.Callers(3, pc[:]) + if n <= 0 { + return "" + } + frames := runtime.CallersFrames(pc[:n]) + frame, more := frames.Next() + for more && (strings.HasPrefix(frame.Function, "database/sql.") || + strings.HasPrefix(frame.Function, "github.com/ncruces/go-sqlite3/driver.")) { + frame, more = frames.Next() + } + return frame.Function +} + // Release releases the savepoint rolling back any changes // if *error points to a non-nil error. // // This is meant to be deferred: // -// func doWork(conn *sqlite3.Conn) (err error) { -// savept := conn.Savepoint() +// func doWork(db *sqlite3.Conn) (err error) { +// savept := db.Savepoint() // defer savept.Release(&err) // // // ... do work in the transaction @@ -185,7 +198,7 @@ func (s Savepoint) Release(errp *error) { // even if the connection has been interrupted. // Rollback does not release the savepoint. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (s Savepoint) Rollback() error { // ROLLBACK even if interrupted. return s.c.txExecInterrupted(fmt.Sprintf("ROLLBACK TO %q;", s.name)) diff --git a/vendor/github.com/ncruces/go-sqlite3/value.go b/vendor/github.com/ncruces/go-sqlite3/value.go new file mode 100644 index 0000000000..e180eb46a7 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/value.go @@ -0,0 +1,188 @@ +package sqlite3 + +import ( + "encoding/json" + "math" + "strconv" + "time" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// Value is any value that can be stored in a database table. +// +// https://sqlite.org/c3ref/value.html +type Value struct { + *sqlite + handle uint32 + unprot bool + copied bool +} + +func (v Value) protected() uint64 { + if v.unprot { + panic(util.ValueErr) + } + return uint64(v.handle) +} + +// Dup makes a copy of the SQL value and returns a pointer to that copy. +// +// https://sqlite.org/c3ref/value_dup.html +func (v Value) Dup() *Value { + r := v.call("sqlite3_value_dup", uint64(v.handle)) + return &Value{ + copied: true, + sqlite: v.sqlite, + handle: uint32(r), + } +} + +// Close frees an SQL value previously obtained by [Value.Dup]. +// +// https://sqlite.org/c3ref/value_dup.html +func (dup *Value) Close() error { + if !dup.copied { + panic(util.ValueErr) + } + dup.call("sqlite3_value_free", uint64(dup.handle)) + dup.handle = 0 + return nil +} + +// Type returns the initial [Datatype] of the value. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Type() Datatype { + r := v.call("sqlite3_value_type", v.protected()) + return Datatype(r) +} + +// Bool returns the value as a bool. +// SQLite does not have a separate boolean storage class. +// Instead, boolean values are retrieved as integers, +// with 0 converted to false and any other value to true. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Bool() bool { + if i := v.Int64(); i != 0 { + return true + } + return false +} + +// Int returns the value as an int. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Int() int { + return int(v.Int64()) +} + +// Int64 returns the value as an int64. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Int64() int64 { + r := v.call("sqlite3_value_int64", v.protected()) + return int64(r) +} + +// Float returns the value as a float64. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Float() float64 { + r := v.call("sqlite3_value_double", v.protected()) + return math.Float64frombits(r) +} + +// Time returns the value as a [time.Time]. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Time(format TimeFormat) time.Time { + var a any + switch v.Type() { + case INTEGER: + a = v.Int64() + case FLOAT: + a = v.Float() + case TEXT, BLOB: + a = v.Text() + case NULL: + return time.Time{} + default: + panic(util.AssertErr()) + } + t, _ := format.Decode(a) + return t +} + +// Text returns the value as a string. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Text() string { + return string(v.RawText()) +} + +// Blob appends to buf and returns +// the value as a []byte. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Blob(buf []byte) []byte { + return append(buf, v.RawBlob()...) +} + +// RawText returns the value as a []byte. +// The []byte is owned by SQLite and may be invalidated by +// subsequent calls to [Value] methods. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) RawText() []byte { + r := v.call("sqlite3_value_text", v.protected()) + return v.rawBytes(uint32(r)) +} + +// RawBlob returns the value as a []byte. +// The []byte is owned by SQLite and may be invalidated by +// subsequent calls to [Value] methods. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) RawBlob() []byte { + r := v.call("sqlite3_value_blob", v.protected()) + return v.rawBytes(uint32(r)) +} + +func (v Value) rawBytes(ptr uint32) []byte { + if ptr == 0 { + return nil + } + + r := v.call("sqlite3_value_bytes", v.protected()) + return util.View(v.mod, ptr, r) +} + +// Pointer gets the pointer associated with this value, +// or nil if it has no associated pointer. +func (v Value) Pointer() any { + r := v.call("sqlite3_value_pointer_go", v.protected()) + return util.GetHandle(v.ctx, uint32(r)) +} + +// JSON parses a JSON-encoded value +// and stores the result in the value pointed to by ptr. +func (v Value) JSON(ptr any) error { + var data []byte + switch v.Type() { + case NULL: + data = append(data, "null"...) + case TEXT: + data = v.RawText() + case BLOB: + data = v.RawBlob() + case INTEGER: + data = strconv.AppendInt(nil, v.Int64(), 10) + case FLOAT: + data = strconv.AppendFloat(nil, v.Float(), 'g', -1, 64) + default: + panic(util.AssertErr()) + } + return json.Unmarshal(data, ptr) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/README.md b/vendor/github.com/ncruces/go-sqlite3/vfs/README.md index f028964cae..0d734b47b2 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/README.md @@ -1,9 +1,7 @@ # Go SQLite VFS API -This package implements the SQLite [OS Interface](https://www.sqlite.org/vfs.html) (aka VFS). +This package implements the SQLite [OS Interface](https://sqlite.org/vfs.html) (aka VFS). -It replaces the default VFS with a pure Go implementation, -that is tested on Linux, macOS and Windows, -but which should also work on illumos and the various BSDs. +It replaces the default SQLite VFS with a pure Go implementation. It also exposes interfaces that should allow you to implement your own custom VFSes. \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/api.go b/vendor/github.com/ncruces/go-sqlite3/vfs/api.go index 7425096241..df4d790a4e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/api.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/api.go @@ -7,7 +7,7 @@ import "net/url" // // Use sqlite3.ErrorCode or sqlite3.ExtendedErrorCode to return specific error codes to SQLite. // -// https://www.sqlite.org/c3ref/vfs.html +// https://sqlite.org/c3ref/vfs.html type VFS interface { Open(name string, flags OpenFlag) (File, OpenFlag, error) Delete(name string, syncDir bool) error @@ -15,10 +15,10 @@ type VFS interface { FullPathname(name string) (string, error) } -// VFSParams extends VFS to with the ability to handle URI parameters +// VFSParams extends VFS with the ability to handle URI parameters // through the OpenParams method. // -// https://www.sqlite.org/c3ref/uri_boolean.html +// https://sqlite.org/c3ref/uri_boolean.html type VFSParams interface { VFS OpenParams(name string, flags OpenFlag, params url.Values) (File, OpenFlag, error) @@ -29,7 +29,7 @@ type VFSParams interface { // Use sqlite3.ErrorCode or sqlite3.ExtendedErrorCode to return specific error codes to SQLite. // In particular, sqlite3.BUSY is necessary to correctly implement lock methods. // -// https://www.sqlite.org/c3ref/io_methods.html +// https://sqlite.org/c3ref/io_methods.html type File interface { Close() error ReadAt(p []byte, off int64) (n int, err error) @@ -47,7 +47,7 @@ type File interface { // FileLockState extends File to implement the // SQLITE_FCNTL_LOCKSTATE file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntllockstate type FileLockState interface { File LockState() LockLevel @@ -56,7 +56,7 @@ type FileLockState interface { // FileSizeHint extends File to implement the // SQLITE_FCNTL_SIZE_HINT file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsizehint type FileSizeHint interface { File SizeHint(size int64) error @@ -65,16 +65,25 @@ type FileSizeHint interface { // FileHasMoved extends File to implement the // SQLITE_FCNTL_HAS_MOVED file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlhasmoved type FileHasMoved interface { File HasMoved() (bool, error) } +// FileOverwrite extends File to implement the +// SQLITE_FCNTL_OVERWRITE file control opcode. +// +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntloverwrite +type FileOverwrite interface { + File + Overwrite() error +} + // FilePowersafeOverwrite extends File to implement the // SQLITE_FCNTL_POWERSAFE_OVERWRITE file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlpowersafeoverwrite type FilePowersafeOverwrite interface { File PowersafeOverwrite() bool @@ -84,7 +93,7 @@ type FilePowersafeOverwrite interface { // FilePowersafeOverwrite extends File to implement the // SQLITE_FCNTL_COMMIT_PHASETWO file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlcommitphasetwo type FileCommitPhaseTwo interface { File CommitPhaseTwo() error @@ -94,7 +103,7 @@ type FileCommitPhaseTwo interface { // SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, SQLITE_FCNTL_COMMIT_ATOMIC_WRITE // and SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE file control opcodes. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlbeginatomicwrite type FileBatchAtomicWrite interface { File BeginAtomicWrite() error diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/clear.go b/vendor/github.com/ncruces/go-sqlite3/vfs/clear.go new file mode 100644 index 0000000000..035458e687 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/clear.go @@ -0,0 +1,9 @@ +//go:build !go1.21 + +package vfs + +func clear(b []byte) { + for i := range b { + b[i] = 0 + } +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go index 110e8b5663..02e8f06361 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go @@ -3,12 +3,12 @@ package vfs import "github.com/ncruces/go-sqlite3/internal/util" const ( - _MAX_STRING = 512 // Used for short strings: names, error messages… + _MAX_NAME = 512 // Used for short strings: names, error messages… _MAX_PATHNAME = 512 _DEFAULT_SECTOR_SIZE = 4096 ) -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html type _ErrorCode uint32 func (e _ErrorCode) Error() string { @@ -49,7 +49,7 @@ const ( // OpenFlag is a flag for the [VFS] Open method. // -// https://www.sqlite.org/c3ref/c_open_autoproxy.html +// https://sqlite.org/c3ref/c_open_autoproxy.html type OpenFlag uint32 const ( @@ -78,7 +78,7 @@ const ( // AccessFlag is a flag for the [VFS] Access method. // -// https://www.sqlite.org/c3ref/c_access_exists.html +// https://sqlite.org/c3ref/c_access_exists.html type AccessFlag uint32 const ( @@ -89,7 +89,7 @@ const ( // SyncFlag is a flag for the [File] Sync method. // -// https://www.sqlite.org/c3ref/c_sync_dataonly.html +// https://sqlite.org/c3ref/c_sync_dataonly.html type SyncFlag uint32 const ( @@ -100,7 +100,7 @@ const ( // LockLevel is a value used with [File] Lock and Unlock methods. // -// https://www.sqlite.org/c3ref/c_lock_exclusive.html +// https://sqlite.org/c3ref/c_lock_exclusive.html type LockLevel uint32 const ( @@ -146,7 +146,7 @@ const ( // DeviceCharacteristic is a flag retuned by the [File] DeviceCharacteristics method. // -// https://www.sqlite.org/c3ref/c_iocap_atomic.html +// https://sqlite.org/c3ref/c_iocap_atomic.html type DeviceCharacteristic uint32 const ( @@ -167,7 +167,7 @@ const ( IOCAP_BATCH_ATOMIC DeviceCharacteristic = 0x00004000 ) -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html type _FcntlOpcode uint32 const ( diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go index 84d1368e2c..160a949489 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go @@ -9,7 +9,6 @@ import ( "path/filepath" "runtime" "syscall" - "time" ) type vfsOS struct{} @@ -124,11 +123,10 @@ func (vfsOS) OpenParams(name string, flags OpenFlag, params url.Values) (File, O type vfsFile struct { *os.File - lockTimeout time.Duration - lock LockLevel - psow bool - syncDir bool - readOnly bool + lock LockLevel + psow bool + syncDir bool + readOnly bool } var ( diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go b/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go index e83530eb4d..3815fd2914 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go @@ -1,11 +1,6 @@ package vfs -import ( - "os" - "time" - - "github.com/ncruces/go-sqlite3/internal/util" -) +import "github.com/ncruces/go-sqlite3/internal/util" const ( _PENDING_BYTE = 0x40000000 @@ -48,7 +43,7 @@ func (f *vfsFile) Lock(lock LockLevel) error { if f.lock != LOCK_NONE { panic(util.AssertErr()) } - if rc := osGetSharedLock(f.File, f.lockTimeout); rc != _OK { + if rc := osGetSharedLock(f.File); rc != _OK { return rc } f.lock = LOCK_SHARED @@ -59,7 +54,7 @@ func (f *vfsFile) Lock(lock LockLevel) error { if f.lock != LOCK_SHARED { panic(util.AssertErr()) } - if rc := osGetReservedLock(f.File, f.lockTimeout); rc != _OK { + if rc := osGetReservedLock(f.File); rc != _OK { return rc } f.lock = LOCK_RESERVED @@ -77,7 +72,7 @@ func (f *vfsFile) Lock(lock LockLevel) error { } f.lock = LOCK_PENDING } - if rc := osGetExclusiveLock(f.File, f.lockTimeout); rc != _OK { + if rc := osGetExclusiveLock(f.File); rc != _OK { return rc } f.lock = LOCK_EXCLUSIVE @@ -133,18 +128,3 @@ func (f *vfsFile) CheckReservedLock() (bool, error) { } return osCheckReservedLock(f.File) } - -func osGetReservedLock(file *os.File, timeout time.Duration) _ErrorCode { - // Acquire the RESERVED lock. - return osWriteLock(file, _RESERVED_BYTE, 1, timeout) -} - -func osGetPendingLock(file *os.File) _ErrorCode { - // Acquire the PENDING lock. - return osWriteLock(file, _PENDING_BYTE, 1, 0) -} - -func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { - // Test the RESERVED lock. - return osCheckLock(file, _RESERVED_BYTE, 1) -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go index 2f04d3b4b7..0fccfc57f1 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go @@ -1,4 +1,4 @@ -//go:build freebsd || openbsd || netbsd || dragonfly || (darwin && sqlite3_bsd) +//go:build (freebsd || openbsd || netbsd || dragonfly || sqlite3_flock) && !sqlite3_nosys package vfs @@ -20,16 +20,16 @@ func osUnlock(file *os.File, start, len int64) _ErrorCode { } func osLock(file *os.File, how int, timeout time.Duration, def _ErrorCode) _ErrorCode { + before := time.Now() var err error for { err = unix.Flock(int(file.Fd()), how) if errno, _ := err.(unix.Errno); errno != unix.EAGAIN { break } - if timeout < time.Millisecond { + if timeout <= 0 || timeout < time.Since(before) { break } - timeout -= time.Millisecond time.Sleep(time.Millisecond) } return osLockErrorCode(err, def) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go index 9043971147..1b032a8daa 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go @@ -1,4 +1,4 @@ -//go:build !sqlite3_bsd +//go:build !sqlite3_flock && !sqlite3_nosys package vfs diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go index 216138062c..a19d29dec4 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go @@ -1,3 +1,5 @@ +//go:build !sqlite3_nosys + package vfs import ( diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go new file mode 100644 index 0000000000..d2beefb97c --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go @@ -0,0 +1,33 @@ +//go:build !(linux || darwin || windows || freebsd || openbsd || netbsd || dragonfly || illumos) || sqlite3_nosys + +package vfs + +import "os" + +func osGetSharedLock(file *os.File) _ErrorCode { + return _IOERR_RDLOCK +} + +func osGetReservedLock(file *os.File) _ErrorCode { + return _IOERR_LOCK +} + +func osGetPendingLock(file *os.File) _ErrorCode { + return _IOERR_LOCK +} + +func osGetExclusiveLock(file *os.File) _ErrorCode { + return _IOERR_LOCK +} + +func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode { + return _IOERR_RDLOCK +} + +func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { + return _IOERR_UNLOCK +} + +func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { + return false, _IOERR_CHECKRESERVEDLOCK +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go index 27179d48e3..d3aa3cebca 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go @@ -1,4 +1,4 @@ -//go:build linux || illumos +//go:build (linux || illumos) && !sqlite3_nosys package vfs @@ -27,16 +27,16 @@ func osLock(file *os.File, typ int16, start, len int64, timeout time.Duration, d Start: start, Len: len, } + before := time.Now() var err error for { err = unix.FcntlFlock(file.Fd(), unix.F_OFD_SETLK, &lock) if errno, _ := err.(unix.Errno); errno != unix.EAGAIN { break } - if timeout < time.Millisecond { + if timeout <= 0 || timeout < time.Since(before) { break } - timeout -= time.Millisecond time.Sleep(time.Millisecond) } return osLockErrorCode(err, def) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go new file mode 100644 index 0000000000..1621c0998b --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go @@ -0,0 +1,36 @@ +//go:build !unix || sqlite3_nosys + +package vfs + +import ( + "io/fs" + "os" +) + +func osAccess(path string, flags AccessFlag) error { + fi, err := os.Stat(path) + if err != nil { + return err + } + if flags == ACCESS_EXISTS { + return nil + } + + const ( + S_IREAD = 0400 + S_IWRITE = 0200 + S_IEXEC = 0100 + ) + + var want fs.FileMode = S_IREAD + if flags == ACCESS_READWRITE { + want |= S_IWRITE + } + if fi.IsDir() { + want |= S_IEXEC + } + if fi.Mode()&want != want { + return fs.ErrPermission + } + return nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_other.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go similarity index 63% rename from vendor/github.com/ncruces/go-sqlite3/vfs/os_other.go rename to vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go index 23fe3b42fc..60c92182cb 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_other.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go @@ -1,4 +1,4 @@ -//go:build !linux && (!darwin || sqlite3_bsd) +//go:build !(linux || darwin) || sqlite3_flock || sqlite3_nosys package vfs @@ -7,10 +7,6 @@ import ( "os" ) -func osSync(file *os.File, fullsync, dataonly bool) error { - return file.Sync() -} - func osAllocate(file *os.File, size int64) error { off, err := file.Seek(0, io.SeekEnd) if err != nil { diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go new file mode 100644 index 0000000000..ac4904773b --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go @@ -0,0 +1,14 @@ +//go:build !unix || sqlite3_nosys + +package vfs + +import "os" + +func osSetMode(file *os.File, modeof string) error { + fi, err := os.Stat(modeof) + if err != nil { + return err + } + file.Chmod(fi.Mode()) + return nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go new file mode 100644 index 0000000000..9a66081cf1 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go @@ -0,0 +1,12 @@ +//go:build !windows || sqlite3_nosys + +package vfs + +import ( + "io/fs" + "os" +) + +func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) { + return os.OpenFile(name, flag, perm) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go new file mode 100644 index 0000000000..6ea6aa1d16 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go @@ -0,0 +1,9 @@ +//go:build !(linux || darwin) || sqlite3_flock || sqlite3_nosys + +package vfs + +import "os" + +func osSync(file *os.File, fullsync, dataonly bool) error { + return file.Sync() +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go index 345bbbf671..bf4b44efd6 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go @@ -1,20 +1,14 @@ -//go:build unix +//go:build unix && !sqlite3_nosys package vfs import ( - "io/fs" "os" "syscall" - "time" "golang.org/x/sys/unix" ) -func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) { - return os.OpenFile(name, flag, perm) -} - func osAccess(path string, flags AccessFlag) error { var access uint32 // unix.F_OK switch flags { @@ -37,64 +31,3 @@ func osSetMode(file *os.File, modeof string) error { } return nil } - -func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode { - // Test the PENDING lock before acquiring a new SHARED lock. - if pending, _ := osCheckLock(file, _PENDING_BYTE, 1); pending { - return _BUSY - } - // Acquire the SHARED lock. - return osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout) -} - -func osGetExclusiveLock(file *os.File, timeout time.Duration) _ErrorCode { - if timeout == 0 { - timeout = time.Millisecond - } - - // Acquire the EXCLUSIVE lock. - return osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout) -} - -func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode { - if state >= LOCK_EXCLUSIVE { - // Downgrade to a SHARED lock. - if rc := osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0); rc != _OK { - // In theory, the downgrade to a SHARED cannot fail because another - // process is holding an incompatible lock. If it does, this - // indicates that the other process is not following the locking - // protocol. If this happens, return _IOERR_RDLOCK. Returning - // BUSY would confuse the upper layer. - return _IOERR_RDLOCK - } - } - // Release the PENDING and RESERVED locks. - return osUnlock(file, _PENDING_BYTE, 2) -} - -func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { - // Release all locks. - return osUnlock(file, 0, 0) -} - -func osLockErrorCode(err error, def _ErrorCode) _ErrorCode { - if err == nil { - return _OK - } - if errno, ok := err.(unix.Errno); ok { - switch errno { - case - unix.EACCES, - unix.EAGAIN, - unix.EBUSY, - unix.EINTR, - unix.ENOLCK, - unix.EDEADLK, - unix.ETIMEDOUT: - return _BUSY - case unix.EPERM: - return _PERM - } - } - return def -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go new file mode 100644 index 0000000000..b57a032b0e --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go @@ -0,0 +1,82 @@ +//go:build (linux || darwin || freebsd || openbsd || netbsd || dragonfly || illumos) && !sqlite3_nosys + +package vfs + +import ( + "os" + "time" + + "golang.org/x/sys/unix" +) + +func osGetSharedLock(file *os.File) _ErrorCode { + // Test the PENDING lock before acquiring a new SHARED lock. + if pending, _ := osCheckLock(file, _PENDING_BYTE, 1); pending { + return _BUSY + } + // Acquire the SHARED lock. + return osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0) +} + +func osGetReservedLock(file *os.File) _ErrorCode { + // Acquire the RESERVED lock. + return osWriteLock(file, _RESERVED_BYTE, 1, 0) +} + +func osGetPendingLock(file *os.File) _ErrorCode { + // Acquire the PENDING lock. + return osWriteLock(file, _PENDING_BYTE, 1, 0) +} + +func osGetExclusiveLock(file *os.File) _ErrorCode { + // Acquire the EXCLUSIVE lock. + return osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, time.Millisecond) +} + +func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode { + if state >= LOCK_EXCLUSIVE { + // Downgrade to a SHARED lock. + if rc := osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0); rc != _OK { + // In theory, the downgrade to a SHARED cannot fail because another + // process is holding an incompatible lock. If it does, this + // indicates that the other process is not following the locking + // protocol. If this happens, return _IOERR_RDLOCK. Returning + // BUSY would confuse the upper layer. + return _IOERR_RDLOCK + } + } + // Release the PENDING and RESERVED locks. + return osUnlock(file, _PENDING_BYTE, 2) +} + +func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { + // Release all locks. + return osUnlock(file, 0, 0) +} + +func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { + // Test the RESERVED lock. + return osCheckLock(file, _RESERVED_BYTE, 1) +} + +func osLockErrorCode(err error, def _ErrorCode) _ErrorCode { + if err == nil { + return _OK + } + if errno, ok := err.(unix.Errno); ok { + switch errno { + case + unix.EACCES, + unix.EAGAIN, + unix.EBUSY, + unix.EINTR, + unix.ENOLCK, + unix.EDEADLK, + unix.ETIMEDOUT: + return _BUSY + case unix.EPERM: + return _PERM + } + } + return def +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go index e94291654e..e2e2c5591d 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go @@ -1,3 +1,5 @@ +//go:build !sqlite3_nosys + package vfs import ( @@ -25,40 +27,9 @@ func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) { return os.NewFile(uintptr(r), name), nil } -func osAccess(path string, flags AccessFlag) error { - fi, err := os.Stat(path) - if err != nil { - return err - } - if flags == ACCESS_EXISTS { - return nil - } - - var want fs.FileMode = windows.S_IRUSR - if flags == ACCESS_READWRITE { - want |= windows.S_IWUSR - } - if fi.IsDir() { - want |= windows.S_IXUSR - } - if fi.Mode()&want != want { - return fs.ErrPermission - } - return nil -} - -func osSetMode(file *os.File, modeof string) error { - fi, err := os.Stat(modeof) - if err != nil { - return err - } - file.Chmod(fi.Mode()) - return nil -} - -func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode { +func osGetSharedLock(file *os.File) _ErrorCode { // Acquire the PENDING lock temporarily before acquiring a new SHARED lock. - rc := osReadLock(file, _PENDING_BYTE, 1, timeout) + rc := osReadLock(file, _PENDING_BYTE, 1, 0) if rc == _OK { // Acquire the SHARED lock. @@ -70,16 +41,22 @@ func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode { return rc } -func osGetExclusiveLock(file *os.File, timeout time.Duration) _ErrorCode { - if timeout == 0 { - timeout = time.Millisecond - } +func osGetReservedLock(file *os.File) _ErrorCode { + // Acquire the RESERVED lock. + return osWriteLock(file, _RESERVED_BYTE, 1, 0) +} + +func osGetPendingLock(file *os.File) _ErrorCode { + // Acquire the PENDING lock. + return osWriteLock(file, _PENDING_BYTE, 1, 0) +} +func osGetExclusiveLock(file *os.File) _ErrorCode { // Release the SHARED lock. osUnlock(file, _SHARED_FIRST, _SHARED_SIZE) // Acquire the EXCLUSIVE lock. - rc := osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout) + rc := osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, time.Millisecond) if rc != _OK { // Reacquire the SHARED lock. @@ -125,6 +102,11 @@ func osReleaseLock(file *os.File, state LockLevel) _ErrorCode { return _OK } +func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { + // Test the RESERVED lock. + return osCheckLock(file, _RESERVED_BYTE, 1) +} + func osUnlock(file *os.File, start, len uint32) _ErrorCode { err := windows.UnlockFileEx(windows.Handle(file.Fd()), 0, len, 0, &windows.Overlapped{Offset: start}) @@ -138,6 +120,7 @@ func osUnlock(file *os.File, start, len uint32) _ErrorCode { } func osLock(file *os.File, flags, start, len uint32, timeout time.Duration, def _ErrorCode) _ErrorCode { + before := time.Now() var err error for { err = windows.LockFileEx(windows.Handle(file.Fd()), flags, @@ -145,11 +128,16 @@ func osLock(file *os.File, flags, start, len uint32, timeout time.Duration, def if errno, _ := err.(windows.Errno); errno != windows.ERROR_LOCK_VIOLATION { break } - if timeout < time.Millisecond { + if timeout <= 0 || timeout < time.Since(before) { + break + } + if err := windows.TimeBeginPeriod(1); err != nil { break } - timeout -= time.Millisecond time.Sleep(time.Millisecond) + if err := windows.TimeEndPeriod(1); err != nil { + break + } } return osLockErrorCode(err, def) } diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go b/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go index 33bc54b3b4..7009444985 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go @@ -12,7 +12,7 @@ var ( // If there is no match, nil is returned. // If name is empty, the default VFS is returned. // -// https://www.sqlite.org/c3ref/vfs_find.html +// https://sqlite.org/c3ref/vfs_find.html func Find(name string) VFS { if name == "" || name == "os" { return vfsOS{} @@ -24,7 +24,7 @@ func Find(name string) VFS { // Register registers a VFS. // -// https://www.sqlite.org/c3ref/vfs_find.html +// https://sqlite.org/c3ref/vfs_find.html func Register(name string, vfs VFS) { if name == "" || name == "os" { return @@ -39,7 +39,7 @@ func Register(name string, vfs VFS) { // Unregister unregisters a VFS. // -// https://www.sqlite.org/c3ref/vfs_find.html +// https://sqlite.org/c3ref/vfs_find.html func Unregister(name string) { vfsRegistryMtx.Lock() defer vfsRegistryMtx.Unlock() diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go index e50bacffc8..820f4dccd8 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go @@ -23,7 +23,6 @@ func ExportHostFunctions(env wazero.HostModuleBuilder) wazero.HostModuleBuilder util.ExportFuncIIJ(env, "go_localtime", vfsLocaltime) util.ExportFuncIIII(env, "go_randomness", vfsRandomness) util.ExportFuncIII(env, "go_sleep", vfsSleep) - util.ExportFuncIII(env, "go_current_time", vfsCurrentTime) util.ExportFuncIII(env, "go_current_time_64", vfsCurrentTime64) util.ExportFuncIIIII(env, "go_full_pathname", vfsFullPathname) util.ExportFuncIIII(env, "go_delete", vfsDelete) @@ -44,35 +43,8 @@ func ExportHostFunctions(env wazero.HostModuleBuilder) wazero.HostModuleBuilder return env } -type vfsKey struct{} -type vfsState struct { - files []File -} - -// NewContext is an internal API users need not call directly. -// -// NewContext creates a new context to hold [api.Module] specific VFS data. -// The context should be passed to any [api.Function] calls that might -// generate VFS host callbacks. -// The returned [io.Closer] should be closed after the [api.Module] is closed, -// to release any associated resources. -func NewContext(ctx context.Context) (context.Context, io.Closer) { - vfs := new(vfsState) - return context.WithValue(ctx, vfsKey{}, vfs), vfs -} - -func (vfs *vfsState) Close() error { - for _, f := range vfs.files { - if f != nil { - f.Close() - } - } - vfs.files = nil - return nil -} - func vfsFind(ctx context.Context, mod api.Module, zVfsName uint32) uint32 { - name := util.ReadString(mod, zVfsName, _MAX_STRING) + name := util.ReadString(mod, zVfsName, _MAX_NAME) if vfs := Find(name); vfs != nil && vfs != (vfsOS{}) { return 1 } @@ -111,12 +83,6 @@ func vfsSleep(ctx context.Context, mod api.Module, pVfs, nMicro uint32) _ErrorCo return _OK } -func vfsCurrentTime(ctx context.Context, mod api.Module, pVfs, prNow uint32) _ErrorCode { - day := julianday.Float(time.Now()) - util.WriteFloat64(mod, prNow, day) - return _OK -} - func vfsCurrentTime64(ctx context.Context, mod api.Module, pVfs, piNow uint32) _ErrorCode { day, nsec := julianday.Date(time.Now()) msec := day*86_400_000 + nsec/1_000_000 @@ -183,6 +149,10 @@ func vfsOpen(ctx context.Context, mod api.Module, pVfs, zPath, pFile uint32, fla file, flags, err = vfs.Open(path, flags) } + if err != nil { + return vfsErrorCode(err, _CANTOPEN) + } + if file, ok := file.(FilePowersafeOverwrite); ok { if !parsed { params = vfsURIParameters(ctx, mod, zPath, flags) @@ -192,14 +162,10 @@ func vfsOpen(ctx context.Context, mod api.Module, pVfs, zPath, pFile uint32, fla } } - if err != nil { - return vfsErrorCode(err, _CANTOPEN) - } - - vfsFileRegister(ctx, mod, pFile, file) if pOutFlags != 0 { util.WriteUint32(mod, pOutFlags, uint32(flags)) } + vfsFileRegister(ctx, mod, pFile, file) return _OK } @@ -291,14 +257,6 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl return _OK } - case _FCNTL_LOCK_TIMEOUT: - if file, ok := file.(*vfsFile); ok { - millis := file.lockTimeout.Milliseconds() - file.lockTimeout = time.Duration(util.ReadUint32(mod, pArg)) * time.Millisecond - util.WriteUint32(mod, pArg, uint32(millis)) - return _OK - } - case _FCNTL_POWERSAFE_OVERWRITE: if file, ok := file.(FilePowersafeOverwrite); ok { switch util.ReadUint32(mod, pArg) { @@ -336,6 +294,12 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl return vfsErrorCode(err, _IOERR_FSTAT) } + case _FCNTL_OVERWRITE: + if file, ok := file.(FileOverwrite); ok { + err := file.Overwrite() + return vfsErrorCode(err, _IOERR) + } + case _FCNTL_COMMIT_PHASETWO: if file, ok := file.(FileCommitPhaseTwo); ok { err := file.CommitPhaseTwo() @@ -360,10 +324,8 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl } // Consider also implementing these opcodes (in use by SQLite): - // _FCNTL_PDB // _FCNTL_BUSYHANDLER // _FCNTL_CHUNK_SIZE - // _FCNTL_OVERWRITE // _FCNTL_PRAGMA // _FCNTL_SYNC return _NOTFOUND @@ -402,7 +364,7 @@ func vfsURIParameters(ctx context.Context, mod api.Module, zPath uint32, flags O if stack[0] == 0 { return params } - key := util.ReadString(mod, uint32(stack[0]), _MAX_STRING) + key := util.ReadString(mod, uint32(stack[0]), _MAX_NAME) if params.Has(key) { continue } @@ -415,7 +377,7 @@ func vfsURIParameters(ctx context.Context, mod api.Module, zPath uint32, flags O if params == nil { params = url.Values{} } - params.Set(key, util.ReadString(mod, uint32(stack[0]), _MAX_STRING)) + params.Set(key, util.ReadString(mod, uint32(stack[0]), _MAX_NAME)) } } @@ -423,7 +385,7 @@ func vfsGet(mod api.Module, pVfs uint32) VFS { var name string if pVfs != 0 { const zNameOffset = 16 - name = util.ReadString(mod, util.ReadUint32(mod, pVfs+zNameOffset), _MAX_STRING) + name = util.ReadString(mod, util.ReadUint32(mod, pVfs+zNameOffset), _MAX_NAME) } if vfs := Find(name); vfs != nil { return vfs @@ -431,40 +393,22 @@ func vfsGet(mod api.Module, pVfs uint32) VFS { panic(util.NoVFSErr + util.ErrorString(name)) } -func vfsFileNew(vfs *vfsState, file File) uint32 { - // Find an empty slot. - for id, f := range vfs.files { - if f == nil { - vfs.files[id] = file - return uint32(id) - } - } - - // Add a new slot. - vfs.files = append(vfs.files, file) - return uint32(len(vfs.files) - 1) -} - func vfsFileRegister(ctx context.Context, mod api.Module, pFile uint32, file File) { const fileHandleOffset = 4 - id := vfsFileNew(ctx.Value(vfsKey{}).(*vfsState), file) + id := util.AddHandle(ctx, file) util.WriteUint32(mod, pFile+fileHandleOffset, id) } func vfsFileGet(ctx context.Context, mod api.Module, pFile uint32) File { const fileHandleOffset = 4 - vfs := ctx.Value(vfsKey{}).(*vfsState) id := util.ReadUint32(mod, pFile+fileHandleOffset) - return vfs.files[id] + return util.GetHandle(ctx, id).(File) } func vfsFileClose(ctx context.Context, mod api.Module, pFile uint32) error { const fileHandleOffset = 4 - vfs := ctx.Value(vfsKey{}).(*vfsState) id := util.ReadUint32(mod, pFile+fileHandleOffset) - file := vfs.files[id] - vfs.files[id] = nil - return file.Close() + return util.DelHandle(ctx, id) } func vfsErrorCode(err error, def _ErrorCode) _ErrorCode { @@ -477,9 +421,3 @@ func vfsErrorCode(err error, def _ErrorCode) _ErrorCode { } return def } - -func clear(b []byte) { - for i := range b { - b[i] = 0 - } -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vtab.go b/vendor/github.com/ncruces/go-sqlite3/vtab.go new file mode 100644 index 0000000000..f5bddf7e6f --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vtab.go @@ -0,0 +1,605 @@ +package sqlite3 + +import ( + "context" + "reflect" + + "github.com/ncruces/go-sqlite3/internal/util" + "github.com/tetratelabs/wazero/api" +) + +// CreateModule registers a new virtual table module name. +// If create is nil, the virtual table is eponymous. +// +// https://sqlite.org/c3ref/create_module.html +func CreateModule[T VTab](db *Conn, name string, create, connect VTabConstructor[T]) error { + var flags int + + const ( + VTAB_CREATOR = 0x01 + VTAB_DESTROYER = 0x02 + VTAB_UPDATER = 0x04 + VTAB_RENAMER = 0x08 + VTAB_OVERLOADER = 0x10 + VTAB_CHECKER = 0x20 + VTAB_TX = 0x40 + VTAB_SAVEPOINTER = 0x80 + ) + + if create != nil { + flags |= VTAB_CREATOR + } + + vtab := reflect.TypeOf(connect).Out(0) + if implements[VTabDestroyer](vtab) { + flags |= VTAB_DESTROYER + } + if implements[VTabUpdater](vtab) { + flags |= VTAB_UPDATER + } + if implements[VTabRenamer](vtab) { + flags |= VTAB_RENAMER + } + if implements[VTabOverloader](vtab) { + flags |= VTAB_OVERLOADER + } + if implements[VTabChecker](vtab) { + flags |= VTAB_CHECKER + } + if implements[VTabTx](vtab) { + flags |= VTAB_TX + } + if implements[VTabSavepointer](vtab) { + flags |= VTAB_SAVEPOINTER + } + + defer db.arena.mark()() + namePtr := db.arena.string(name) + modulePtr := util.AddHandle(db.ctx, module[T]{create, connect}) + r := db.call("sqlite3_create_module_go", uint64(db.handle), + uint64(namePtr), uint64(flags), uint64(modulePtr)) + return db.error(r) +} + +func implements[T any](typ reflect.Type) bool { + var ptr *T + return typ.Implements(reflect.TypeOf(ptr).Elem()) +} + +// DeclareVtab declares the schema of a virtual table. +// +// https://sqlite.org/c3ref/declare_vtab.html +func (c *Conn) DeclareVtab(sql string) error { + defer c.arena.mark()() + sqlPtr := c.arena.string(sql) + r := c.call("sqlite3_declare_vtab", uint64(c.handle), uint64(sqlPtr)) + return c.error(r) +} + +// IndexConstraintOp is a virtual table constraint operator code. +// +// https://sqlite.org/c3ref/c_vtab_constraint_support.html +type VtabConfigOption uint8 + +const ( + VTAB_CONSTRAINT_SUPPORT VtabConfigOption = 1 + VTAB_INNOCUOUS VtabConfigOption = 2 + VTAB_DIRECTONLY VtabConfigOption = 3 + VTAB_USES_ALL_SCHEMAS VtabConfigOption = 4 +) + +// VtabConfig configures various facets of the virtual table interface. +// +// https://sqlite.org/c3ref/vtab_config.html +func (c *Conn) VtabConfig(op VtabConfigOption, args ...any) error { + var i uint64 + if op == VTAB_CONSTRAINT_SUPPORT && len(args) > 0 { + if b, ok := args[0].(bool); ok && b { + i = 1 + } + } + r := c.call("sqlite3_vtab_config_go", uint64(c.handle), uint64(op), i) + return c.error(r) +} + +// VTabConstructor is a virtual table constructor function. +type VTabConstructor[T VTab] func(db *Conn, module, schema, table string, arg ...string) (T, error) + +type module[T VTab] [2]VTabConstructor[T] + +// A VTab describes a particular instance of the virtual table. +// A VTab may optionally implement [io.Closer] to free resources. +// +// https://sqlite.org/c3ref/vtab.html +type VTab interface { + // https://sqlite.org/vtab.html#xbestindex + BestIndex(*IndexInfo) error + // https://sqlite.org/vtab.html#xopen + Open() (VTabCursor, error) +} + +// A VTabDestroyer allows a virtual table to drop persistent state. +type VTabDestroyer interface { + VTab + // https://sqlite.org/vtab.html#sqlite3_module.xDestroy + Destroy() error +} + +// A VTabUpdater allows a virtual table to be updated. +type VTabUpdater interface { + VTab + // https://sqlite.org/vtab.html#xupdate + Update(arg ...Value) (rowid int64, err error) +} + +// A VTabRenamer allows a virtual table to be renamed. +type VTabRenamer interface { + VTab + // https://sqlite.org/vtab.html#xrename + Rename(new string) error +} + +// A VTabOverloader allows a virtual table to overload SQL functions. +type VTabOverloader interface { + VTab + // https://sqlite.org/vtab.html#xfindfunction + FindFunction(arg int, name string) (ScalarFunction, IndexConstraintOp) +} + +// A VTabChecker allows a virtual table to report errors +// to the PRAGMA integrity_check PRAGMA quick_check commands. +// +// Integrity should return an error if it finds problems in the content of the virtual table, +// but should avoid returning a (wrapped) [Error], [ErrorCode] or [ExtendedErrorCode], +// as those indicate the Integrity method itself encountered problems +// while trying to evaluate the virtual table content. +type VTabChecker interface { + VTab + // https://sqlite.org/vtab.html#xintegrity + Integrity(schema, table string, flags int) error +} + +// A VTabTx allows a virtual table to implement +// transactions with two-phase commit. +// +// Anything that is required as part of a commit that may fail +// should be performed in the Sync() callback. +// Current versions of SQLite ignore any errors +// returned by Commit() and Rollback(). +type VTabTx interface { + VTab + // https://sqlite.org/vtab.html#xBegin + Begin() error + // https://sqlite.org/vtab.html#xsync + Sync() error + // https://sqlite.org/vtab.html#xcommit + Commit() error + // https://sqlite.org/vtab.html#xrollback + Rollback() error +} + +// A VTabSavepointer allows a virtual table to implement +// nested transactions. +// +// https://sqlite.org/vtab.html#xsavepoint +type VTabSavepointer interface { + VTabTx + Savepoint(id int) error + Release(id int) error + RollbackTo(id int) error +} + +// A VTabCursor describes cursors that point +// into the virtual table and are used +// to loop through the virtual table. +// A VTabCursor may optionally implement +// [io.Closer] to free resources. +// +// http://sqlite.org/c3ref/vtab_cursor.html +type VTabCursor interface { + // https://sqlite.org/vtab.html#xfilter + Filter(idxNum int, idxStr string, arg ...Value) error + // https://sqlite.org/vtab.html#xnext + Next() error + // https://sqlite.org/vtab.html#xeof + EOF() bool + // https://sqlite.org/vtab.html#xcolumn + Column(ctx *Context, n int) error + // https://sqlite.org/vtab.html#xrowid + RowID() (int64, error) +} + +// An IndexInfo describes virtual table indexing information. +// +// https://sqlite.org/c3ref/index_info.html +type IndexInfo struct { + // Inputs + Constraint []IndexConstraint + OrderBy []IndexOrderBy + ColumnsUsed int64 + // Outputs + ConstraintUsage []IndexConstraintUsage + IdxNum int + IdxStr string + IdxFlags IndexScanFlag + OrderByConsumed bool + EstimatedCost float64 + EstimatedRows int64 + // Internal + c *Conn + handle uint32 +} + +// An IndexConstraint describes virtual table indexing constraint information. +// +// https://sqlite.org/c3ref/index_info.html +type IndexConstraint struct { + Column int + Op IndexConstraintOp + Usable bool +} + +// An IndexOrderBy describes virtual table indexing order by information. +// +// https://sqlite.org/c3ref/index_info.html +type IndexOrderBy struct { + Column int + Desc bool +} + +// An IndexConstraintUsage describes how virtual table indexing constraints will be used. +// +// https://sqlite.org/c3ref/index_info.html +type IndexConstraintUsage struct { + ArgvIndex int + Omit bool +} + +// RHSValue returns the value of the right-hand operand of a constraint +// if the right-hand operand is known. +// +// https://sqlite.org/c3ref/vtab_rhs_value.html +func (idx *IndexInfo) RHSValue(column int) (Value, error) { + defer idx.c.arena.mark()() + valPtr := idx.c.arena.new(ptrlen) + r := idx.c.call("sqlite3_vtab_rhs_value", + uint64(idx.handle), uint64(column), uint64(valPtr)) + if err := idx.c.error(r); err != nil { + return Value{}, err + } + return Value{ + sqlite: idx.c.sqlite, + handle: util.ReadUint32(idx.c.mod, valPtr), + }, nil +} + +func (idx *IndexInfo) load() { + // https://sqlite.org/c3ref/index_info.html + mod := idx.c.mod + ptr := idx.handle + + idx.Constraint = make([]IndexConstraint, util.ReadUint32(mod, ptr+0)) + idx.ConstraintUsage = make([]IndexConstraintUsage, util.ReadUint32(mod, ptr+0)) + idx.OrderBy = make([]IndexOrderBy, util.ReadUint32(mod, ptr+8)) + + constraintPtr := util.ReadUint32(mod, ptr+4) + for i := range idx.Constraint { + idx.Constraint[i] = IndexConstraint{ + Column: int(int32(util.ReadUint32(mod, constraintPtr+0))), + Op: IndexConstraintOp(util.ReadUint8(mod, constraintPtr+4)), + Usable: util.ReadUint8(mod, constraintPtr+5) != 0, + } + constraintPtr += 12 + } + + orderByPtr := util.ReadUint32(mod, ptr+12) + for i := range idx.OrderBy { + idx.OrderBy[i] = IndexOrderBy{ + Column: int(int32(util.ReadUint32(mod, orderByPtr+0))), + Desc: util.ReadUint8(mod, orderByPtr+4) != 0, + } + orderByPtr += 8 + } + + idx.EstimatedCost = util.ReadFloat64(mod, ptr+40) + idx.EstimatedRows = int64(util.ReadUint64(mod, ptr+48)) + idx.ColumnsUsed = int64(util.ReadUint64(mod, ptr+64)) +} + +func (idx *IndexInfo) save() { + // https://sqlite.org/c3ref/index_info.html + mod := idx.c.mod + ptr := idx.handle + + usagePtr := util.ReadUint32(mod, ptr+16) + for _, usage := range idx.ConstraintUsage { + util.WriteUint32(mod, usagePtr+0, uint32(usage.ArgvIndex)) + if usage.Omit { + util.WriteUint8(mod, usagePtr+4, 1) + } + usagePtr += 8 + } + + util.WriteUint32(mod, ptr+20, uint32(idx.IdxNum)) + if idx.IdxStr != "" { + util.WriteUint32(mod, ptr+24, idx.c.newString(idx.IdxStr)) + util.WriteUint32(mod, ptr+28, 1) // needToFreeIdxStr + } + if idx.OrderByConsumed { + util.WriteUint32(mod, ptr+32, 1) + } + util.WriteFloat64(mod, ptr+40, idx.EstimatedCost) + util.WriteUint64(mod, ptr+48, uint64(idx.EstimatedRows)) + util.WriteUint32(mod, ptr+56, uint32(idx.IdxFlags)) +} + +// IndexConstraintOp is a virtual table constraint operator code. +// +// https://sqlite.org/c3ref/c_index_constraint_eq.html +type IndexConstraintOp uint8 + +const ( + INDEX_CONSTRAINT_EQ IndexConstraintOp = 2 + INDEX_CONSTRAINT_GT IndexConstraintOp = 4 + INDEX_CONSTRAINT_LE IndexConstraintOp = 8 + INDEX_CONSTRAINT_LT IndexConstraintOp = 16 + INDEX_CONSTRAINT_GE IndexConstraintOp = 32 + INDEX_CONSTRAINT_MATCH IndexConstraintOp = 64 + INDEX_CONSTRAINT_LIKE IndexConstraintOp = 65 + INDEX_CONSTRAINT_GLOB IndexConstraintOp = 66 + INDEX_CONSTRAINT_REGEXP IndexConstraintOp = 67 + INDEX_CONSTRAINT_NE IndexConstraintOp = 68 + INDEX_CONSTRAINT_ISNOT IndexConstraintOp = 69 + INDEX_CONSTRAINT_ISNOTNULL IndexConstraintOp = 70 + INDEX_CONSTRAINT_ISNULL IndexConstraintOp = 71 + INDEX_CONSTRAINT_IS IndexConstraintOp = 72 + INDEX_CONSTRAINT_LIMIT IndexConstraintOp = 73 + INDEX_CONSTRAINT_OFFSET IndexConstraintOp = 74 + INDEX_CONSTRAINT_FUNCTION IndexConstraintOp = 150 +) + +// IndexScanFlag is a virtual table scan flag. +// +// https://sqlite.org/c3ref/c_index_scan_unique.html +type IndexScanFlag uint32 + +const ( + INDEX_SCAN_UNIQUE IndexScanFlag = 1 +) + +func vtabModuleCallback(i int) func(_ context.Context, _ api.Module, _, _, _, _, _ uint32) uint32 { + return func(ctx context.Context, mod api.Module, pMod, argc, argv, ppVTab, pzErr uint32) uint32 { + arg := make([]reflect.Value, 1+argc) + arg[0] = reflect.ValueOf(ctx.Value(connKey{})) + + for i := uint32(0); i < argc; i++ { + ptr := util.ReadUint32(mod, argv+i*ptrlen) + arg[i+1] = reflect.ValueOf(util.ReadString(mod, ptr, _MAX_SQL_LENGTH)) + } + + module := vtabGetHandle(ctx, mod, pMod) + res := reflect.ValueOf(module).Index(i).Call(arg) + err, _ := res[1].Interface().(error) + if err == nil { + vtabPutHandle(ctx, mod, ppVTab, res[0].Interface()) + } + + return vtabError(ctx, mod, pzErr, _PTR_ERROR, err) + } +} + +func vtabDisconnectCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + err := vtabDelHandle(ctx, mod, pVTab) + return vtabError(ctx, mod, 0, _PTR_ERROR, err) +} + +func vtabDestroyCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabDestroyer) + err := vtab.Destroy() + if cerr := vtabDelHandle(ctx, mod, pVTab); err == nil { + err = cerr + } + return vtabError(ctx, mod, 0, _PTR_ERROR, err) +} + +func vtabBestIndexCallback(ctx context.Context, mod api.Module, pVTab, pIdxInfo uint32) uint32 { + var info IndexInfo + info.handle = pIdxInfo + info.c = ctx.Value(connKey{}).(*Conn) + info.load() + + vtab := vtabGetHandle(ctx, mod, pVTab).(VTab) + err := vtab.BestIndex(&info) + + info.save() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabUpdateCallback(ctx context.Context, mod api.Module, pVTab, argc, argv, pRowID uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabUpdater) + + db := ctx.Value(connKey{}).(*Conn) + args := callbackArgs(db, argc, argv) + rowID, err := vtab.Update(args...) + if err == nil { + util.WriteUint64(mod, pRowID, uint64(rowID)) + } + + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabRenameCallback(ctx context.Context, mod api.Module, pVTab, zNew uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabRenamer) + err := vtab.Rename(util.ReadString(mod, zNew, _MAX_NAME)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabFindFuncCallback(ctx context.Context, mod api.Module, pVTab, nArg, zName, pxFunc uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabOverloader) + fn, op := vtab.FindFunction(int(nArg), util.ReadString(mod, zName, _MAX_NAME)) + if fn != nil { + handle := util.AddHandle(ctx, fn) + util.WriteUint32(mod, pxFunc, handle) + if op == 0 { + op = 1 + } + } + return uint32(op) +} + +func vtabIntegrityCallback(ctx context.Context, mod api.Module, pVTab, zSchema, zTabName, mFlags, pzErr uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabChecker) + schema := util.ReadString(mod, zSchema, _MAX_NAME) + table := util.ReadString(mod, zTabName, _MAX_NAME) + err := vtab.Integrity(schema, table, int(mFlags)) + // xIntegrity should return OK - even if it finds problems in the content of the virtual table. + // https://sqlite.org/vtab.html#xintegrity + vtabError(ctx, mod, pzErr, _PTR_ERROR, err) + _, code := errorCode(err, _OK) + return code +} + +func vtabBeginCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Begin() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabSyncCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Sync() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabCommitCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Commit() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabRollbackCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Rollback() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabSavepointCallback(ctx context.Context, mod api.Module, pVTab, id uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabSavepointer) + err := vtab.Savepoint(int(id)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabReleaseCallback(ctx context.Context, mod api.Module, pVTab, id uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabSavepointer) + err := vtab.Release(int(id)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabRollbackToCallback(ctx context.Context, mod api.Module, pVTab, id uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabSavepointer) + err := vtab.RollbackTo(int(id)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func cursorOpenCallback(ctx context.Context, mod api.Module, pVTab, ppCur uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTab) + + cursor, err := vtab.Open() + if err == nil { + vtabPutHandle(ctx, mod, ppCur, cursor) + } + + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func cursorCloseCallback(ctx context.Context, mod api.Module, pCur uint32) uint32 { + err := vtabDelHandle(ctx, mod, pCur) + return vtabError(ctx, mod, 0, _VTAB_ERROR, err) +} + +func cursorFilterCallback(ctx context.Context, mod api.Module, pCur, idxNum, idxStr, argc, argv uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + db := ctx.Value(connKey{}).(*Conn) + args := callbackArgs(db, argc, argv) + var idxName string + if idxStr != 0 { + idxName = util.ReadString(mod, idxStr, _MAX_NAME) + } + err := cursor.Filter(int(idxNum), idxName, args...) + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +func cursorEOFCallback(ctx context.Context, mod api.Module, pCur uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + if cursor.EOF() { + return 1 + } + return 0 +} + +func cursorNextCallback(ctx context.Context, mod api.Module, pCur uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + err := cursor.Next() + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +func cursorColumnCallback(ctx context.Context, mod api.Module, pCur, pCtx, n uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + db := ctx.Value(connKey{}).(*Conn) + err := cursor.Column(&Context{db, pCtx}, int(n)) + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +func cursorRowIDCallback(ctx context.Context, mod api.Module, pCur, pRowID uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + + rowID, err := cursor.RowID() + if err == nil { + util.WriteUint64(mod, pRowID, uint64(rowID)) + } + + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +const ( + _PTR_ERROR = iota + _VTAB_ERROR + _CURSOR_ERROR +) + +func vtabError(ctx context.Context, mod api.Module, ptr, kind uint32, err error) uint32 { + msg, code := errorCode(err, ERROR) + if msg != "" && ptr != 0 { + switch kind { + case _VTAB_ERROR: + ptr = ptr + 8 // zErrMsg + case _CURSOR_ERROR: + ptr = util.ReadUint32(mod, ptr) + 8 // pVtab->zErrMsg + } + db := ctx.Value(connKey{}).(*Conn) + if ptr := util.ReadUint32(mod, ptr); ptr != 0 { + db.free(ptr) + } + util.WriteUint32(mod, ptr, db.newString(msg)) + } + return code +} + +func vtabGetHandle(ctx context.Context, mod api.Module, ptr uint32) any { + const handleOffset = 4 + handle := util.ReadUint32(mod, ptr-handleOffset) + return util.GetHandle(ctx, handle) +} + +func vtabDelHandle(ctx context.Context, mod api.Module, ptr uint32) error { + const handleOffset = 4 + handle := util.ReadUint32(mod, ptr-handleOffset) + return util.DelHandle(ctx, handle) +} + +func vtabPutHandle(ctx context.Context, mod api.Module, pptr uint32, val any) { + const handleOffset = 4 + handle := util.AddHandle(ctx, val) + ptr := util.ReadUint32(mod, pptr) + util.WriteUint32(mod, ptr-handleOffset, handle) +} diff --git a/vendor/github.com/ncruces/julianday/julianday.go b/vendor/github.com/ncruces/julianday/julianday.go index 4aa5243e17..d7d0e1960f 100644 --- a/vendor/github.com/ncruces/julianday/julianday.go +++ b/vendor/github.com/ncruces/julianday/julianday.go @@ -47,7 +47,7 @@ func Float(t time.Time) float64 { return float64(day) + float64(nsec)/nsec_per_day } -// Float returns the Julian date for t as a string. +// Format returns the Julian date for t as a string. // // This has nanosecond precision. func Format(t time.Time) string { @@ -87,7 +87,7 @@ func FloatTime(date float64) time.Time { return Time(int64(day), int64(nsec)) } -// Parse parses a formatted Julian date and returns the time value it represents. +// Parse parses a formatted Julian date and returns the UTC Time it represents. // // This has nanosecond precision. func Parse(s string) (time.Time, error) { diff --git a/vendor/github.com/tetratelabs/wazero/Makefile b/vendor/github.com/tetratelabs/wazero/Makefile index 5c7eae416f..26d4c9e187 100644 --- a/vendor/github.com/tetratelabs/wazero/Makefile +++ b/vendor/github.com/tetratelabs/wazero/Makefile @@ -212,6 +212,12 @@ check: # This makes sure the intepreter can be used. Most often the package that can # drift here is "platform" or "sysfs": # +# Ensure we build on plan9. See #1578 + @GOARCH=amd64 GOOS=plan9 go build ./... +# Ensure we build on gojs. See #1526. + @GOARCH=wasm GOOS=js go build ./... +# Ensure we build on gojs. See #1526. + @GOARCH=wasm GOOS=wasip1 go build ./... # Ensure we build on windows: @GOARCH=amd64 GOOS=windows go build ./... # Ensure we build on an arbitrary operating system: diff --git a/vendor/github.com/tetratelabs/wazero/RATIONALE.md b/vendor/github.com/tetratelabs/wazero/RATIONALE.md index 32a0da20e6..94f5de2512 100644 --- a/vendor/github.com/tetratelabs/wazero/RATIONALE.md +++ b/vendor/github.com/tetratelabs/wazero/RATIONALE.md @@ -235,7 +235,7 @@ rt := wazero.NewRuntimeConfig() // initialized properly There are a few drawbacks to this, notably some work for maintainers. * Interfaces are decoupled from the structs implementing them, which means the signature has to be repeated twice. * Interfaces have to be documented and guarded at time of use, that 3rd party implementations aren't supported. -* As of Golang 1.18, interfaces are still [not well supported](https://github.com/golang/go/issues/5860) in godoc. +* As of Golang 1.21, interfaces are still [not well supported](https://github.com/golang/go/issues/5860) in godoc. ## Config @@ -616,6 +616,135 @@ act differently and document `ModuleConfig` is more about emulating, not necessa ## File systems +### Motivation on `sys.FS` + +The `sys.FS` abstraction in wazero was created because of limitations in +`fs.FS`, and `fs.File` in Go. Compilers targeting `wasip1` may access +functionality that writes new files. The ability to overcome this was requested +even before wazero was named this, via issue #21 in March 2021. + +A month later, golang/go#45757 was raised by someone else on the same topic. As +of July 2023, this has not resolved to a writeable file system abstraction. + +Over the next year more use cases accumulated, consolidated in March 2022 into +#390. This closed in January 2023 with a milestone of providing more +functionality, limited to users giving a real directory. This didn't yet expose +a file abstraction for general purpose use. Internally, this used `os.File`. +However, a wasm module instance is a virtual machine. Only supporting `os.File` +breaks sand-boxing use cases. Moreover, `os.File` is not an interface. Even +though this abstracts functionality, it does allow interception use cases. + +Hence, a few days later in January 2023, we had more issues asking to expose an +abstraction, #1013 and later #1532, on use cases like masking access to files. +In other words, the use case requests never stopped, and aren't solved by +exposing only real files. + +In summary, the primary motivation for exposing a replacement for `fs.FS` and +`fs.File` was around repetitive use case requests for years, around +interception and the ability to create new files, both virtual and real files. +While some use cases are solved with real files, not all are. Regardless, an +interface approach is necessary to ensure users can intercept I/O operations. + +### Why doesn't `sys.File` have a `Fd()` method? + +There are many features we could expose. We could make File expose underlying +file descriptors in case they are supported, for integration of system calls +that accept multiple ones, namely `poll` for multiplexing. This special case is +described in a subsequent section. + +As noted above, users have been asking for a file abstraction for over two +years, and a common answer was to wait. Making users wait is a problem, +especially so long. Good reasons to make people wait are stabilization. Edge +case features are not a great reason to hold abstractions from users. + +Another reason is implementation difficulty. Go did not attempt to abstract +file descriptors. For example, unlike `fs.ReadFile` there is no `fs.FdFile` +interface. Most likely, this is because file descriptors are an implementation +detail of common features. Programming languages, including Go, do not require +end users to know about file descriptors. Types such as `fs.File` can be used +without any knowledge of them. Implementations may or may not have file +descriptors. For example, in Go, `os.DirFS` has underlying file descriptors +while `embed.FS` does not. + +Despite this, some may want to expose a non-standard interface because +`os.File` has `Fd() uintptr` to return a file descriptor. Mainly, this is +handy to integrate with `syscall` package functions (on `GOOS` values that +declare them). Notice, though that `uintptr` is unsafe and not an abstraction. +Close inspection will find some `os.File` types internally use `poll.FD` +instead, yet this is not possible to use abstractly because that type is not +exposed. For example, `plan9` uses a different type than `poll.FD`. In other +words, even in real files, `Fd()` is not wholly portable, despite it being +useful on many operating systems with the `syscall` package. + +The reasons above, why Go doesn't abstract `FdFile` interface are a subset of +reasons why `sys.File` does not. If we exposed `File.Fd()` we not only would +have to declare all the edge cases that Go describes including impact of +finalizers, we would have to describe these in terms of virtualized files. +Then, we would have to reason with this value vs our existing virtualized +`sys.FileTable`, mapping whatever type we return to keys in that table, also +in consideration of garbage collection impact. The combination of issues like +this could lead down a path of not implementing a file system abstraction at +all, and instead a weak key mapped abstraction of the `syscall` package. Once +we finished with all the edge cases, we would have lost context of the original +reason why we started.. simply to allow file write access! + +When wazero attempts to do more than what the Go programming language team, it +has to be carefully evaluated, to: +* Be possible to implement at least for `os.File` backed files +* Not be confusing or cognitively hard for virtual file systems and normal use. +* Affordable: custom code is solely the responsible by the core team, a much + smaller group of individuals than who maintain the Go programming language. + +Due to problems well known in Go, consideration of the end users who constantly +ask for basic file system functionality, and the difficulty virtualizing file +descriptors at multiple levels, we don't expose `Fd()` and likely won't ever +expose `Fd()` on `sys.File`. + +### Why does `sys.File` have a `Poll()` method, while `sys.FS` does not? + +wazero exposes `File.Poll` which allows one-at-a-time poll use cases, +requested by multiple users. This not only includes abstract tests such as +Go 1.21 `GOOS=wasip1`, but real use cases including python and container2wasm +repls, as well listen sockets. The main use cases is non-blocking poll on a +single file. Being a single file, this has no risk of problems such as +head-of-line blocking, even when emulated. + +The main use case of multi-poll are bidirectional network services, something +not used in `GOOS=wasip1` standard libraries, but could be in the future. +Moving forward without a multi-poller allows wazero to expose its file system +abstraction instead of continuing to hold back it back for edge cases. We'll +continue discussion below regardless, as rationale was requested. + +You can loop through multiple `sys.File`, using `File.Poll` to see if an event +is ready, but there is a head-of-line blocking problem. If a long timeout is +used, bad luck could have a file that has nothing to read or write before one +that does. This could cause more blocking than necessary, even if you could +poll the others just after with a zero timeout. What's worse than this is if +unlimited blocking was used (`timeout=-1`). The host implementations could use +goroutines to avoid this, but interrupting a "forever" poll is problematic. All +of these are reasons to consider a multi-poll API, but do not require exporting +`File.Fd()`. + +Should multi-poll becomes critical, `sys.FS` could expose a `Poll` function +like below, despite it being the non-portable, complicated if possible to +implement on all platforms and virtual file systems. +```go +ready, errno := fs.Poll([]sys.PollFile{{f1, sys.POLLIN}, {f2, sys.POLLOUT}}, timeoutMillis) +``` + +A real filesystem could handle this by using an approach like the internal +`unix.Poll` function in Go, passing file descriptors on unix platforms, or +returning `sys.ENOSYS` for unsupported operating systems. Implementation for +virtual files could have a strategy around timeout to avoid the worst case of +head-of-line blocking (unlimited timeout). + +Let's remember that when designing abstractions, it is not best to add an +interface for everything. Certainly, Go doesn't, as evidenced by them not +exposing `poll.FD` in `os.File`! Such a multi-poll could be limited to +built-in filesystems in the wazero repository, avoiding complexity of trying to +support and test this abstractly. This would still permit multiplexing for CLI +users, and also permit single file polling as exists now. + ### Why doesn't wazero implement the working directory? An early design of wazero's API included a `WithWorkDirFS` which allowed @@ -1270,19 +1399,18 @@ as for regular file descriptors: data is assumed to be present and a success is written back to the result buffer. However, if the reader is detected to read from `os.Stdin`, -a special code path is followed, invoking `platform.Select()`. +a special code path is followed, invoking `sysfs.poll()`. -`platform.Select()` is a wrapper for `select(2)` on POSIX systems, +`sysfs.poll()` is a wrapper for `poll(2)` on POSIX systems, and it is emulated on Windows. -### Select on POSIX +### Poll on POSIX -On POSIX systems,`select(2)` allows to wait for incoming data on a file +On POSIX systems, `poll(2)` allows to wait for incoming data on a file descriptor, and block until either data becomes available or the timeout -expires. It is not surprising that `select(2)` and `poll(2)` have lot in common: -the main difference is how the file descriptor parameters are passed. +expires. -Usage of `platform.Select()` is only reserved for the standard input case, because +Usage of `syfs.poll()` is currently only reserved for standard input, because 1. it is really only necessary to handle interactive input: otherwise, there is no way in Go to peek from Standard Input without actually @@ -1291,11 +1419,11 @@ Usage of `platform.Select()` is only reserved for the standard input case, becau 2. if `Stdin` is connected to a pipe, it is ok in most cases to return with success immediately; -3. `platform.Select()` is currently a blocking call, irrespective of goroutines, +3. `syfs.poll()` is currently a blocking call, irrespective of goroutines, because the underlying syscall is; thus, it is better to limit its usage. So, if the subscription is for `os.Stdin` and the handle is detected -to correspond to an interactive session, then `platform.Select()` will be +to correspond to an interactive session, then `sysfs.poll()` will be invoked with a the `Stdin` handle *and* the timeout. This also means that in this specific case, the timeout is uninterruptible, @@ -1303,35 +1431,46 @@ unless data becomes available on `Stdin` itself. ### Select on Windows -On Windows `platform.Select()` cannot be delegated to a single +On Windows `sysfs.poll()` cannot be delegated to a single syscall, because there is no single syscall to handle sockets, pipes and regular files. Instead, we emulate its behavior for the cases that are currently -of interest. +of interest. - For regular files, we _always_ report them as ready, as [most operating systems do anyway][async-io-windows]. -- For pipes, we iterate on the given `readfds` -and we invoke [`PeekNamedPipe`][peeknamedpipe]. We currently ignore -`writefds` and `exceptfds` for pipes. In particular, -`Stdin`, when present, is set to the `readfds` FdSet. +- For pipes, we invoke [`PeekNamedPipe`][peeknamedpipe] +for each file handle we detect is a pipe open for reading. +We currently ignore pipes open for writing. - Notably, we include also support for sockets using the [WinSock -implementation of `select`][winsock-select], but instead -of relying on the timeout argument of the `select` function, +implementation of `poll`][wsapoll], but instead +of relying on the timeout argument of the `WSAPoll` function, we set a 0-duration timeout so that it behaves like a peek. This way, we can check for regular files all at once, -at the beginning of the function, then we poll pipes and +at the beginning of the function, then we poll pipes and sockets periodically using a cancellable `time.Tick`, which plays nicely with the rest of the Go runtime. +### Impact of blocking + +Because this is a blocking syscall, it will also block the carrier thread of +the goroutine, preventing any means to support context cancellation directly. + +There are ways to obviate this issue. We outline here one idea, that is however +not currently implemented. A common approach to support context cancellation is +to add a signal file descriptor to the set, e.g. the read-end of a pipe or an +eventfd on Linux. When the context is canceled, we may unblock a Select call by +writing to the fd, causing it to return immediately. This however requires to +do a bit of housekeeping to hide the "special" FD from the end-user. + [poll_oneoff]: https://github.com/WebAssembly/wasi-poll#why-is-the-function-called-poll_oneoff [async-io-windows]: https://tinyclouds.org/iocp_links [peeknamedpipe]: https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe -[winsock-select]: https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-select +[wsapoll]: https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll ## Signed encoding of integer global constant initializers diff --git a/vendor/github.com/tetratelabs/wazero/config.go b/vendor/github.com/tetratelabs/wazero/config.go index 8fcfb5fa2b..70219b055f 100644 --- a/vendor/github.com/tetratelabs/wazero/config.go +++ b/vendor/github.com/tetratelabs/wazero/config.go @@ -11,10 +11,10 @@ import ( "time" "github.com/tetratelabs/wazero/api" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/engine/compiler" "github.com/tetratelabs/wazero/internal/engine/interpreter" "github.com/tetratelabs/wazero/internal/filecache" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/internal/internalapi" "github.com/tetratelabs/wazero/internal/platform" internalsock "github.com/tetratelabs/wazero/internal/sock" @@ -846,7 +846,7 @@ func (c *moduleConfig) toSysContext() (sysCtx *internalsys.Context, err error) { environ = append(environ, result) } - var fs []fsapi.FS + var fs []experimentalsys.FS var guestPaths []string if f, ok := c.fsConfig.(*fsConfig); ok { fs, guestPaths = f.preopens() diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/dir.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go similarity index 62% rename from vendor/github.com/tetratelabs/wazero/internal/fsapi/dir.go rename to vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go index 6e99b1b5d0..0b997cb8fc 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/dir.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go @@ -1,11 +1,9 @@ -package fsapi +package sys import ( "fmt" "io/fs" - "time" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" ) @@ -22,7 +20,7 @@ type FileType = fs.FileMode // - This extends `dirent` defined in POSIX with some fields defined by // Linux. See https://man7.org/linux/man-pages/man3/readdir.3.html and // https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/dirent.h.html -// - This has a subset of fields defined in Stat_t. Notably, there is no +// - This has a subset of fields defined in sys.Stat_t. Notably, there is no // field corresponding to Stat_t.Dev because that value will be constant // for all files in a directory. To get the Dev value, call File.Stat on // the directory File.Readdir was called on. @@ -59,51 +57,36 @@ func (DirFile) IsAppend() bool { } // SetAppend implements File.SetAppend -func (DirFile) SetAppend(bool) experimentalsys.Errno { - return experimentalsys.EISDIR -} - -// IsNonblock implements File.IsNonblock -func (DirFile) IsNonblock() bool { - return false -} - -// SetNonblock implements File.SetNonblock -func (DirFile) SetNonblock(bool) experimentalsys.Errno { - return experimentalsys.EISDIR +func (DirFile) SetAppend(bool) Errno { + return EISDIR } // IsDir implements File.IsDir -func (DirFile) IsDir() (bool, experimentalsys.Errno) { +func (DirFile) IsDir() (bool, Errno) { return true, 0 } // Read implements File.Read -func (DirFile) Read([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR +func (DirFile) Read([]byte) (int, Errno) { + return 0, EISDIR } // Pread implements File.Pread -func (DirFile) Pread([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR -} - -// PollRead implements File.PollRead -func (DirFile) PollRead(*time.Duration) (ready bool, errno experimentalsys.Errno) { - return false, experimentalsys.ENOSYS +func (DirFile) Pread([]byte, int64) (int, Errno) { + return 0, EISDIR } // Write implements File.Write -func (DirFile) Write([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR +func (DirFile) Write([]byte) (int, Errno) { + return 0, EISDIR } // Pwrite implements File.Pwrite -func (DirFile) Pwrite([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR +func (DirFile) Pwrite([]byte, int64) (int, Errno) { + return 0, EISDIR } // Truncate implements File.Truncate -func (DirFile) Truncate(int64) experimentalsys.Errno { - return experimentalsys.EISDIR +func (DirFile) Truncate(int64) Errno { + return EISDIR } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go index 81baadd0d9..2389494960 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go @@ -35,6 +35,7 @@ const ( ENOENT ENOSYS ENOTDIR + ERANGE ENOTEMPTY ENOTSOCK ENOTSUP @@ -79,6 +80,8 @@ func (e Errno) Error() string { return "functionality not supported" case ENOTDIR: return "not a directory or a symbolic link to a directory" + case ERANGE: + return "result too large" case ENOTEMPTY: return "directory not empty" case ENOTSOCK: diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/file.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/file.go new file mode 100644 index 0000000000..f8f2e5b128 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/file.go @@ -0,0 +1,317 @@ +package sys + +import "github.com/tetratelabs/wazero/sys" + +// File is a writeable fs.File bridge backed by syscall functions needed for ABI +// including WASI and runtime.GOOS=js. +// +// Implementations should embed UnimplementedFile for forward compatability. Any +// unsupported method or parameter should return ENOSYS. +// +// # Errors +// +// All methods that can return an error return a Errno, which is zero +// on success. +// +// Restricting to Errno matches current WebAssembly host functions, +// which are constrained to well-known error codes. For example, `GOOS=js` maps +// hard coded values and panics otherwise. More commonly, WASI maps syscall +// errors to u32 numeric values. +// +// # Notes +// +// - You must call Close to avoid file resource conflicts. For example, +// Windows cannot delete the underlying directory while a handle to it +// remains open. +// - A writable filesystem abstraction is not yet implemented as of Go 1.20. +// See https://github.com/golang/go/issues/45757 +type File interface { + // Dev returns the device ID (Stat_t.Dev) of this file, zero if unknown or + // an error retrieving it. + // + // # Errors + // + // Possible errors are those from Stat, except ENOSYS should not + // be returned. Zero should be returned if there is no implementation. + // + // # Notes + // + // - Implementations should cache this result. + // - This combined with Ino can implement os.SameFile. + Dev() (uint64, Errno) + + // Ino returns the serial number (Stat_t.Ino) of this file, zero if unknown + // or an error retrieving it. + // + // # Errors + // + // Possible errors are those from Stat, except ENOSYS should not + // be returned. Zero should be returned if there is no implementation. + // + // # Notes + // + // - Implementations should cache this result. + // - This combined with Dev can implement os.SameFile. + Ino() (sys.Inode, Errno) + + // IsDir returns true if this file is a directory or an error there was an + // error retrieving this information. + // + // # Errors + // + // Possible errors are those from Stat, except ENOSYS should not + // be returned. false should be returned if there is no implementation. + // + // # Notes + // + // - Implementations should cache this result. + IsDir() (bool, Errno) + + // IsAppend returns true if the file was opened with O_APPEND, or + // SetAppend was successfully enabled on this file. + // + // # Notes + // + // - This might not match the underlying state of the file descriptor if + // the file was not opened via OpenFile. + IsAppend() bool + + // SetAppend toggles the append mode (O_APPEND) of this file. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - There is no `O_APPEND` for `fcntl` in POSIX, so implementations may + // have to re-open the underlying file to apply this. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html + SetAppend(enable bool) Errno + + // Stat is similar to syscall.Fstat. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.Fstat and `fstatat` with `AT_FDCWD` in POSIX. + // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html + // - A fs.FileInfo backed implementation sets atim, mtim and ctim to the + // same value. + // - Windows allows you to stat a closed directory. + Stat() (sys.Stat_t, Errno) + + // Read attempts to read all bytes in the file into `buf`, and returns the + // count read even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not readable. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like io.Reader and `read` in POSIX, preferring semantics of + // io.Reader. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html + // - Unlike io.Reader, there is no io.EOF returned on end-of-file. To + // read the file completely, the caller must repeat until `n` is zero. + Read(buf []byte) (n int, errno Errno) + + // Pread attempts to read all bytes in the file into `p`, starting at the + // offset `off`, and returns the count read even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not readable. + // - EINVAL: the offset was negative. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like io.ReaderAt and `pread` in POSIX, preferring semantics + // of io.ReaderAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html + // - Unlike io.ReaderAt, there is no io.EOF returned on end-of-file. To + // read the file completely, the caller must repeat until `n` is zero. + Pread(buf []byte, off int64) (n int, errno Errno) + + // Seek attempts to set the next offset for Read or Write and returns the + // resulting absolute offset or an error. + // + // # Parameters + // + // The `offset` parameters is interpreted in terms of `whence`: + // - io.SeekStart: relative to the start of the file, e.g. offset=0 sets + // the next Read or Write to the beginning of the file. + // - io.SeekCurrent: relative to the current offset, e.g. offset=16 sets + // the next Read or Write 16 bytes past the prior. + // - io.SeekEnd: relative to the end of the file, e.g. offset=-1 sets the + // next Read or Write to the last byte in the file. + // + // # Behavior when a directory + // + // The only supported use case for a directory is seeking to `offset` zero + // (`whence` = io.SeekStart). This should have the same behavior as + // os.File, which resets any internal state used by Readdir. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not readable. + // - EINVAL: the offset was negative. + // + // # Notes + // + // - This is like io.Seeker and `fseek` in POSIX, preferring semantics + // of io.Seeker. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html + Seek(offset int64, whence int) (newOffset int64, errno Errno) + + // Readdir reads the contents of the directory associated with file and + // returns a slice of up to n Dirent values in an arbitrary order. This is + // a stateful function, so subsequent calls return any next values. + // + // If n > 0, Readdir returns at most n entries or an error. + // If n <= 0, Readdir returns all remaining entries or an error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file was closed or not a directory. + // - ENOENT: the directory could not be read (e.g. deleted). + // + // # Notes + // + // - This is like `Readdir` on os.File, but unlike `readdir` in POSIX. + // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html + // - Unlike os.File, there is no io.EOF returned on end-of-directory. To + // read the directory completely, the caller must repeat until the + // count read (`len(dirents)`) is less than `n`. + // - See /RATIONALE.md for design notes. + Readdir(n int) (dirents []Dirent, errno Errno) + + // Write attempts to write all bytes in `p` to the file, and returns the + // count written even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file was closed, not writeable, or a directory. + // + // # Notes + // + // - This is like io.Writer and `write` in POSIX, preferring semantics of + // io.Writer. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html + Write(buf []byte) (n int, errno Errno) + + // Pwrite attempts to write all bytes in `p` to the file at the given + // offset `off`, and returns the count written even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not writeable. + // - EINVAL: the offset was negative. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like io.WriterAt and `pwrite` in POSIX, preferring semantics + // of io.WriterAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html + Pwrite(buf []byte, off int64) (n int, errno Errno) + + // Truncate truncates a file to a specified length. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // - EINVAL: the `size` is negative. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like syscall.Ftruncate and `ftruncate` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html + // - Windows does not error when calling Truncate on a closed file. + Truncate(size int64) Errno + + // Sync synchronizes changes to the file. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.Fsync and `fsync` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html + // - This returns with no error instead of ENOSYS when + // unimplemented. This prevents fake filesystems from erring. + // - Windows does not error when calling Sync on a closed file. + Sync() Errno + + // Datasync synchronizes the data of a file. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.Fdatasync and `fdatasync` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html + // - This returns with no error instead of ENOSYS when + // unimplemented. This prevents fake filesystems from erring. + // - As this is commonly missing, some implementations dispatch to Sync. + Datasync() Errno + + // Utimens set file access and modification times of this file, at + // nanosecond precision. + // + // # Parameters + // + // The `atim` and `mtim` parameters refer to access and modification time + // stamps as defined in sys.Stat_t. To retain one or the other, substitute + // it with the pseudo-timestamp UTIME_OMIT. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.UtimesNano and `futimens` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html + // - Windows requires files to be open with O_RDWR, which means you + // cannot use this to update timestamps on a directory (EPERM). + Utimens(atim, mtim int64) Errno + + // Close closes the underlying file. + // + // A zero Errno is returned if unimplemented or success. + // + // # Notes + // + // - This is like syscall.Close and `close` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html + Close() Errno +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/fs.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go similarity index 67% rename from vendor/github.com/tetratelabs/wazero/internal/fsapi/fs.go rename to vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go index 50bf61687d..1ce99cef18 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/fs.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go @@ -1,10 +1,8 @@ -package fsapi +package sys import ( "io/fs" - "syscall" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" ) @@ -34,11 +32,11 @@ type FS interface { // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` or `flag` is invalid. - // - sys.EISDIR: the path was a directory, but flag included O_RDWR or + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` or `flag` is invalid. + // - EISDIR: the path was a directory, but flag included O_RDWR or // O_WRONLY - // - sys.ENOENT: `path` doesn't exist and `flag` doesn't contain O_CREAT. + // - ENOENT: `path` doesn't exist and `flag` doesn't contain O_CREAT. // // # Constraints on the returned file // @@ -59,15 +57,15 @@ type FS interface { // - Implications of permissions when O_CREAT are described in Chmod notes. // - This is like `open` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html - OpenFile(path string, flag Oflag, perm fs.FileMode) (File, experimentalsys.Errno) + OpenFile(path string, flag Oflag, perm fs.FileMode) (File, Errno) // Lstat gets file status without following symbolic links. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.ENOENT: `path` doesn't exist. + // - ENOSYS: the implementation does not support this function. + // - ENOENT: `path` doesn't exist. // // # Notes // @@ -79,15 +77,15 @@ type FS interface { // same value. // - When the path is a symbolic link, the stat returned is for the link, // not the file it refers to. - Lstat(path string) (sys.Stat_t, experimentalsys.Errno) + Lstat(path string) (sys.Stat_t, Errno) // Stat gets file status. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.ENOENT: `path` doesn't exist. + // - ENOSYS: the implementation does not support this function. + // - ENOENT: `path` doesn't exist. // // # Notes // @@ -99,17 +97,17 @@ type FS interface { // same value. // - When the path is a symbolic link, the stat returned is for the file // it refers to. - Stat(path string) (sys.Stat_t, experimentalsys.Errno) + Stat(path string) (sys.Stat_t, Errno) // Mkdir makes a directory. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.EEXIST: `path` exists and is a directory. - // - sys.ENOTDIR: `path` exists and is a file. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - EEXIST: `path` exists and is a directory. + // - ENOTDIR: `path` exists and is a file. // // # Notes // @@ -118,16 +116,16 @@ type FS interface { // - This is like `mkdir` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html // - Implications of permissions are described in Chmod notes. - Mkdir(path string, perm fs.FileMode) experimentalsys.Errno + Mkdir(path string, perm fs.FileMode) Errno // Chmod changes the mode of the file. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.ENOENT: `path` does not exist. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - ENOENT: `path` does not exist. // // # Notes // @@ -138,19 +136,19 @@ type FS interface { // - Windows ignores the execute bit, and any permissions come back as // group and world. For example, chmod of 0400 reads back as 0444, and // 0700 0666. Also, permissions on directories aren't supported at all. - Chmod(path string, perm fs.FileMode) experimentalsys.Errno + Chmod(path string, perm fs.FileMode) Errno // Rename renames file or directory. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `from` or `to` is invalid. - // - sys.ENOENT: `from` or `to` don't exist. - // - sys.ENOTDIR: `from` is a directory and `to` exists as a file. - // - sys.EISDIR: `from` is a file and `to` exists as a directory. - // - sys.ENOTEMPTY: `both from` and `to` are existing directory, but + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `from` or `to` is invalid. + // - ENOENT: `from` or `to` don't exist. + // - ENOTDIR: `from` is a directory and `to` exists as a file. + // - EISDIR: `from` is a file and `to` exists as a directory. + // - ENOTEMPTY: `both from` and `to` are existing directory, but // `to` is not empty. // // # Notes @@ -160,18 +158,18 @@ type FS interface { // - This is like `rename` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html // - Windows doesn't let you overwrite an existing directory. - Rename(from, to string) experimentalsys.Errno + Rename(from, to string) Errno // Rmdir removes a directory. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.ENOENT: `path` doesn't exist. - // - sys.ENOTDIR: `path` exists, but isn't a directory. - // - sys.ENOTEMPTY: `path` exists, but isn't empty. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - ENOENT: `path` doesn't exist. + // - ENOTDIR: `path` exists, but isn't a directory. + // - ENOTEMPTY: `path` exists, but isn't empty. // // # Notes // @@ -179,18 +177,18 @@ type FS interface { // file system. // - This is like `rmdir` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html - // - As of Go 1.19, Windows maps sys.ENOTDIR to sys.ENOENT. - Rmdir(path string) experimentalsys.Errno + // - As of Go 1.19, Windows maps ENOTDIR to ENOENT. + Rmdir(path string) Errno // Unlink removes a directory entry. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.ENOENT: `path` doesn't exist. - // - sys.EISDIR: `path` exists, but is a directory. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - ENOENT: `path` doesn't exist. + // - EISDIR: `path` exists, but is a directory. // // # Notes // @@ -201,7 +199,7 @@ type FS interface { // - On Windows, syscall.Unlink doesn't delete symlink to directory unlike other platforms. Implementations might // want to combine syscall.RemoveDirectory with syscall.Unlink in order to delete such links on Windows. // See https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-removedirectorya - Unlink(path string) experimentalsys.Errno + Unlink(path string) Errno // Link creates a "hard" link from oldPath to newPath, in contrast to a // soft link (via Symlink). @@ -209,10 +207,10 @@ type FS interface { // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EPERM: `oldPath` is invalid. - // - sys.ENOENT: `oldPath` doesn't exist. - // - sys.EISDIR: `newPath` exists, but is a directory. + // - ENOSYS: the implementation does not support this function. + // - EPERM: `oldPath` is invalid. + // - ENOENT: `oldPath` doesn't exist. + // - EISDIR: `newPath` exists, but is a directory. // // # Notes // @@ -220,7 +218,7 @@ type FS interface { // file system. // - This is like `link` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html - Link(oldPath, newPath string) experimentalsys.Errno + Link(oldPath, newPath string) Errno // Symlink creates a "soft" link from oldPath to newPath, in contrast to a // hard link (via Link). @@ -228,9 +226,9 @@ type FS interface { // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EPERM: `oldPath` or `newPath` is invalid. - // - sys.EEXIST: `newPath` exists. + // - ENOSYS: the implementation does not support this function. + // - EPERM: `oldPath` or `newPath` is invalid. + // - EEXIST: `newPath` exists. // // # Notes // @@ -244,17 +242,17 @@ type FS interface { // See https://github.com/bytecodealliance/cap-std/blob/v1.0.4/cap-std/src/fs/dir.rs#L404-L409 // for how others implement this. // - Symlinks in Windows requires `SeCreateSymbolicLinkPrivilege`. - // Otherwise, sys.EPERM results. + // Otherwise, EPERM results. // See https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/create-symbolic-links - Symlink(oldPath, linkName string) experimentalsys.Errno + Symlink(oldPath, linkName string) Errno // Readlink reads the contents of a symbolic link. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. // // # Notes // @@ -265,32 +263,31 @@ type FS interface { // - On Windows, the path separator is different from other platforms, // but to provide consistent results to Wasm, this normalizes to a "/" // separator. - Readlink(path string) (string, experimentalsys.Errno) + Readlink(path string) (string, Errno) // Utimens set file access and modification times on a path relative to // this file system, at nanosecond precision. // // # Parameters // - // The `times` parameter includes the access and modification timestamps to - // assign. Special syscall.Timespec NSec values UTIME_NOW and UTIME_OMIT - // may be specified instead of real timestamps. A nil `times` parameter - // behaves the same as if both were set to UTIME_NOW. If the path is a - // symbolic link, the target of expanding that link is updated. + // If the path is a symbolic link, the target of expanding that link is + // updated. + // + // The `atim` and `mtim` parameters refer to access and modification time + // stamps as defined in sys.Stat_t. To retain one or the other, substitute + // it with the pseudo-timestamp UTIME_OMIT. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.EEXIST: `path` exists and is a directory. - // - sys.ENOTDIR: `path` exists and is a file. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - EEXIST: `path` exists and is a directory. + // - ENOTDIR: `path` exists and is a file. // // # Notes // // - This is like syscall.UtimesNano and `utimensat` with `AT_FDCWD` in // POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html - Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno - // TODO: change impl to not use syscall package, - // possibly by being just a pair of int64s.. + Utimens(path string, atim, mtim int64) Errno } diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/oflag.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go similarity index 99% rename from vendor/github.com/tetratelabs/wazero/internal/fsapi/oflag.go rename to vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go index eac4fc9874..39ebd378f6 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/oflag.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go @@ -1,4 +1,4 @@ -package fsapi +package sys // Oflag are flags used for FS.OpenFile. Values, including zero, should not be // interpreted numerically. Instead, use by constants prefixed with 'O_' with diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go index aa6eb23d80..d28f6faa03 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go @@ -1,51 +1,59 @@ +//go:build !plan9 + package sys import "syscall" -func syscallToErrno(errno syscall.Errno) Errno { +func syscallToErrno(err error) (Errno, bool) { + errno, ok := err.(syscall.Errno) + if !ok { + return 0, false + } switch errno { case 0: - return 0 + return 0, true case syscall.EACCES: - return EACCES + return EACCES, true case syscall.EAGAIN: - return EAGAIN + return EAGAIN, true case syscall.EBADF: - return EBADF + return EBADF, true case syscall.EEXIST: - return EEXIST + return EEXIST, true case syscall.EFAULT: - return EFAULT + return EFAULT, true case syscall.EINTR: - return EINTR + return EINTR, true case syscall.EINVAL: - return EINVAL + return EINVAL, true case syscall.EIO: - return EIO + return EIO, true case syscall.EISDIR: - return EISDIR + return EISDIR, true case syscall.ELOOP: - return ELOOP + return ELOOP, true case syscall.ENAMETOOLONG: - return ENAMETOOLONG + return ENAMETOOLONG, true case syscall.ENOENT: - return ENOENT + return ENOENT, true case syscall.ENOSYS: - return ENOSYS + return ENOSYS, true case syscall.ENOTDIR: - return ENOTDIR + return ENOTDIR, true + case syscall.ERANGE: + return ERANGE, true case syscall.ENOTEMPTY: - return ENOTEMPTY + return ENOTEMPTY, true case syscall.ENOTSOCK: - return ENOTSOCK + return ENOTSOCK, true case syscall.ENOTSUP: - return ENOTSUP + return ENOTSUP, true case syscall.EPERM: - return EPERM + return EPERM, true case syscall.EROFS: - return EROFS + return EROFS, true default: - return EIO + return EIO, true } } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go index 56c8441d95..8a88ed7658 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go @@ -2,15 +2,12 @@ package sys -import "syscall" - func errorToErrno(err error) Errno { - switch err := err.(type) { - case Errno: - return err - case syscall.Errno: - return syscallToErrno(err) - default: - return EIO + if errno, ok := err.(Errno); ok { + return errno + } + if errno, ok := syscallToErrno(err); ok { + return errno } + return EIO } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go new file mode 100644 index 0000000000..0e454f0acb --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go @@ -0,0 +1,5 @@ +package sys + +func syscallToErrno(err error) (Errno, bool) { + return 0, false +} diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go index 4c512133a4..761a1f9dc2 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go @@ -54,7 +54,8 @@ func errorToErrno(err error) Errno { case _ERROR_NEGATIVE_SEEK, _ERROR_INVALID_NAME: return EINVAL } - return syscallToErrno(err) + errno, _ := syscallToErrno(err) + return errno default: return EIO } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/time.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/time.go new file mode 100644 index 0000000000..4f3e01fefb --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/time.go @@ -0,0 +1,10 @@ +package sys + +import "math" + +// UTIME_OMIT is a special constant for use in updating times via FS.Utimens +// or File.Utimens. When used for atim or mtim, the value is retained. +// +// Note: This may be implemented via a stat when the underlying filesystem +// does not support this value. +const UTIME_OMIT int64 = math.MinInt64 diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go new file mode 100644 index 0000000000..d853d9e8f4 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go @@ -0,0 +1,160 @@ +package sys + +import ( + "io/fs" + + "github.com/tetratelabs/wazero/sys" +) + +// UnimplementedFS is an FS that returns ENOSYS for all functions, +// This should be embedded to have forward compatible implementations. +type UnimplementedFS struct{} + +// OpenFile implements FS.OpenFile +func (UnimplementedFS) OpenFile(path string, flag Oflag, perm fs.FileMode) (File, Errno) { + return nil, ENOSYS +} + +// Lstat implements FS.Lstat +func (UnimplementedFS) Lstat(path string) (sys.Stat_t, Errno) { + return sys.Stat_t{}, ENOSYS +} + +// Stat implements FS.Stat +func (UnimplementedFS) Stat(path string) (sys.Stat_t, Errno) { + return sys.Stat_t{}, ENOSYS +} + +// Readlink implements FS.Readlink +func (UnimplementedFS) Readlink(path string) (string, Errno) { + return "", ENOSYS +} + +// Mkdir implements FS.Mkdir +func (UnimplementedFS) Mkdir(path string, perm fs.FileMode) Errno { + return ENOSYS +} + +// Chmod implements FS.Chmod +func (UnimplementedFS) Chmod(path string, perm fs.FileMode) Errno { + return ENOSYS +} + +// Rename implements FS.Rename +func (UnimplementedFS) Rename(from, to string) Errno { + return ENOSYS +} + +// Rmdir implements FS.Rmdir +func (UnimplementedFS) Rmdir(path string) Errno { + return ENOSYS +} + +// Link implements FS.Link +func (UnimplementedFS) Link(_, _ string) Errno { + return ENOSYS +} + +// Symlink implements FS.Symlink +func (UnimplementedFS) Symlink(_, _ string) Errno { + return ENOSYS +} + +// Unlink implements FS.Unlink +func (UnimplementedFS) Unlink(path string) Errno { + return ENOSYS +} + +// Utimens implements FS.Utimens +func (UnimplementedFS) Utimens(path string, atim, mtim int64) Errno { + return ENOSYS +} + +// UnimplementedFile is a File that returns ENOSYS for all functions, +// except where no-op are otherwise documented. +// +// This should be embedded to have forward compatible implementations. +type UnimplementedFile struct{} + +// Dev implements File.Dev +func (UnimplementedFile) Dev() (uint64, Errno) { + return 0, 0 +} + +// Ino implements File.Ino +func (UnimplementedFile) Ino() (sys.Inode, Errno) { + return 0, 0 +} + +// IsDir implements File.IsDir +func (UnimplementedFile) IsDir() (bool, Errno) { + return false, 0 +} + +// IsAppend implements File.IsAppend +func (UnimplementedFile) IsAppend() bool { + return false +} + +// SetAppend implements File.SetAppend +func (UnimplementedFile) SetAppend(bool) Errno { + return ENOSYS +} + +// Stat implements File.Stat +func (UnimplementedFile) Stat() (sys.Stat_t, Errno) { + return sys.Stat_t{}, ENOSYS +} + +// Read implements File.Read +func (UnimplementedFile) Read([]byte) (int, Errno) { + return 0, ENOSYS +} + +// Pread implements File.Pread +func (UnimplementedFile) Pread([]byte, int64) (int, Errno) { + return 0, ENOSYS +} + +// Seek implements File.Seek +func (UnimplementedFile) Seek(int64, int) (int64, Errno) { + return 0, ENOSYS +} + +// Readdir implements File.Readdir +func (UnimplementedFile) Readdir(int) (dirents []Dirent, errno Errno) { + return nil, ENOSYS +} + +// Write implements File.Write +func (UnimplementedFile) Write([]byte) (int, Errno) { + return 0, ENOSYS +} + +// Pwrite implements File.Pwrite +func (UnimplementedFile) Pwrite([]byte, int64) (int, Errno) { + return 0, ENOSYS +} + +// Truncate implements File.Truncate +func (UnimplementedFile) Truncate(int64) Errno { + return ENOSYS +} + +// Sync implements File.Sync +func (UnimplementedFile) Sync() Errno { + return 0 // not ENOSYS +} + +// Datasync implements File.Datasync +func (UnimplementedFile) Datasync() Errno { + return 0 // not ENOSYS +} + +// Utimens implements File.Utimens +func (UnimplementedFile) Utimens(int64, int64) Errno { + return ENOSYS +} + +// Close implements File.Close +func (UnimplementedFile) Close() (errno Errno) { return } diff --git a/vendor/github.com/tetratelabs/wazero/fsconfig.go b/vendor/github.com/tetratelabs/wazero/fsconfig.go index 560da0b37d..c28909e19e 100644 --- a/vendor/github.com/tetratelabs/wazero/fsconfig.go +++ b/vendor/github.com/tetratelabs/wazero/fsconfig.go @@ -3,7 +3,7 @@ package wazero import ( "io/fs" - "github.com/tetratelabs/wazero/internal/fsapi" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/sys" "github.com/tetratelabs/wazero/internal/sysfs" ) @@ -135,7 +135,7 @@ type FSConfig interface { type fsConfig struct { // fs are the currently configured filesystems. - fs []fsapi.FS + fs []experimentalsys.FS // guestPaths are the user-supplied names of the filesystems, retained for // error messages and fmt.Stringer. guestPaths []string @@ -152,7 +152,7 @@ func NewFSConfig() FSConfig { // clone makes a deep copy of this module config. func (c *fsConfig) clone() *fsConfig { ret := *c // copy except slice and maps which share a ref - ret.fs = make([]fsapi.FS, 0, len(c.fs)) + ret.fs = make([]experimentalsys.FS, 0, len(c.fs)) ret.fs = append(ret.fs, c.fs...) ret.guestPaths = make([]string, 0, len(c.guestPaths)) ret.guestPaths = append(ret.guestPaths, c.guestPaths...) @@ -165,21 +165,26 @@ func (c *fsConfig) clone() *fsConfig { // WithDirMount implements FSConfig.WithDirMount func (c *fsConfig) WithDirMount(dir, guestPath string) FSConfig { - return c.withMount(sysfs.NewDirFS(dir), guestPath) + return c.WithSysFSMount(sysfs.DirFS(dir), guestPath) } // WithReadOnlyDirMount implements FSConfig.WithReadOnlyDirMount func (c *fsConfig) WithReadOnlyDirMount(dir, guestPath string) FSConfig { - return c.withMount(sysfs.NewReadFS(sysfs.NewDirFS(dir)), guestPath) + return c.WithSysFSMount(&sysfs.ReadFS{FS: sysfs.DirFS(dir)}, guestPath) } // WithFSMount implements FSConfig.WithFSMount func (c *fsConfig) WithFSMount(fs fs.FS, guestPath string) FSConfig { - return c.withMount(sysfs.Adapt(fs), guestPath) + var adapted experimentalsys.FS + if fs != nil { + adapted = &sysfs.AdaptFS{FS: fs} + } + return c.WithSysFSMount(adapted, guestPath) } -func (c *fsConfig) withMount(fs fsapi.FS, guestPath string) FSConfig { - if _, ok := fs.(fsapi.UnimplementedFS); ok { +// WithSysFSMount implements sysfs.FSConfig +func (c *fsConfig) WithSysFSMount(fs experimentalsys.FS, guestPath string) FSConfig { + if _, ok := fs.(experimentalsys.UnimplementedFS); ok { return c // don't add fake paths. } cleaned := sys.StripPrefixesAndTrailingSlash(guestPath) @@ -187,7 +192,7 @@ func (c *fsConfig) withMount(fs fsapi.FS, guestPath string) FSConfig { if i, ok := ret.guestPathToFS[cleaned]; ok { ret.fs[i] = fs ret.guestPaths[i] = guestPath - } else { + } else if fs != nil { ret.guestPathToFS[cleaned] = len(ret.fs) ret.fs = append(ret.fs, fs) ret.guestPaths = append(ret.guestPaths, guestPath) @@ -197,12 +202,12 @@ func (c *fsConfig) withMount(fs fsapi.FS, guestPath string) FSConfig { // preopens returns the possible nil index-correlated preopened filesystems // with guest paths. -func (c *fsConfig) preopens() ([]fsapi.FS, []string) { +func (c *fsConfig) preopens() ([]experimentalsys.FS, []string) { preopenCount := len(c.fs) if preopenCount == 0 { return nil, nil } - fs := make([]fsapi.FS, len(c.fs)) + fs := make([]experimentalsys.FS, len(c.fs)) copy(fs, c.fs) guestPaths := make([]string, len(c.guestPaths)) copy(guestPaths, c.guestPaths) diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go index 033b70cb7d..9d28ae17b0 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go @@ -7,15 +7,12 @@ import ( "math" "path" "strings" - "syscall" "unsafe" "github.com/tetratelabs/wazero/api" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" "github.com/tetratelabs/wazero/internal/sys" - "github.com/tetratelabs/wazero/internal/sysfs" "github.com/tetratelabs/wazero/internal/wasip1" "github.com/tetratelabs/wazero/internal/wasm" sysapi "github.com/tetratelabs/wazero/sys" @@ -415,7 +412,7 @@ func fdFilestatGetFunc(mod api.Module, fd int32, resultBuf uint32) experimentals return writeFilestat(buf, &st, filetype) } -func getExtendedWasiFiletype(file fsapi.File, fm fs.FileMode) (ftype uint8) { +func getExtendedWasiFiletype(file experimentalsys.File, fm fs.FileMode) (ftype uint8) { ftype = getWasiFiletype(fm) if ftype == wasip1.FILETYPE_UNKNOWN { if _, ok := file.(socketapi.TCPSock); ok { @@ -503,50 +500,55 @@ func fdFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) ex return experimentalsys.EBADF } - times, errno := toTimes(atim, mtim, fstFlags) + atim, mtim, errno := toTimes(sys.WalltimeNanos, atim, mtim, fstFlags) if errno != 0 { return errno } // Try to update the file timestamps by file-descriptor. - errno = f.File.Utimens(×) + errno = f.File.Utimens(atim, mtim) // Fall back to path based, despite it being less precise. switch errno { case experimentalsys.EPERM, experimentalsys.ENOSYS: - errno = f.FS.Utimens(f.Name, ×) + errno = f.FS.Utimens(f.Name, atim, mtim) } return errno } -func toTimes(atim, mtime int64, fstFlags uint16) (times [2]syscall.Timespec, errno experimentalsys.Errno) { +func toTimes(walltime func() int64, atim, mtim int64, fstFlags uint16) (int64, int64, experimentalsys.Errno) { // times[0] == atim, times[1] == mtim + var nowTim int64 + // coerce atim into a timespec if set, now := fstFlags&wasip1.FstflagsAtim != 0, fstFlags&wasip1.FstflagsAtimNow != 0; set && now { - errno = experimentalsys.EINVAL - return + return 0, 0, experimentalsys.EINVAL } else if set { - times[0] = syscall.NsecToTimespec(atim) + // atim is already correct } else if now { - times[0].Nsec = sysfs.UTIME_NOW + nowTim = walltime() + atim = nowTim } else { - times[0].Nsec = sysfs.UTIME_OMIT + atim = experimentalsys.UTIME_OMIT } // coerce mtim into a timespec if set, now := fstFlags&wasip1.FstflagsMtim != 0, fstFlags&wasip1.FstflagsMtimNow != 0; set && now { - errno = experimentalsys.EINVAL - return + return 0, 0, experimentalsys.EINVAL } else if set { - times[1] = syscall.NsecToTimespec(mtime) + // mtim is already correct } else if now { - times[1].Nsec = sysfs.UTIME_NOW + if nowTim != 0 { + mtim = nowTim + } else { + mtim = walltime() + } } else { - times[1].Nsec = sysfs.UTIME_OMIT + mtim = experimentalsys.UTIME_OMIT } - return + return atim, mtim, 0 } // fdPread is the WASI function named FdPreadName which reads from a file @@ -745,11 +747,11 @@ var fdRead = newHostFunc( // preader tracks an offset across multiple reads. type preader struct { - f fsapi.File + f experimentalsys.File offset int64 } -// Read implements the same function as documented on fsapi.File. +// Read implements the same function as documented on sys.File. func (w *preader) Read(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // less overhead on zero-length reads. @@ -942,7 +944,7 @@ const largestDirent = int64(math.MaxUint32 - wasip1.DirentSize) // // `bufToWrite` is the amount of memory needed to write direntCount, which // includes up to wasip1.DirentSize of a last truncated entry. -func maxDirents(dirents []fsapi.Dirent, bufLen uint32) (bufToWrite uint32, direntCount int, truncatedLen uint32) { +func maxDirents(dirents []experimentalsys.Dirent, bufLen uint32) (bufToWrite uint32, direntCount int, truncatedLen uint32) { lenRemaining := bufLen for i := range dirents { if lenRemaining == 0 { @@ -991,7 +993,7 @@ func maxDirents(dirents []fsapi.Dirent, bufLen uint32) (bufToWrite uint32, diren // writeDirents writes the directory entries to the buffer, which is pre-sized // based on maxDirents. truncatedEntryLen means the last is written without its // name. -func writeDirents(buf []byte, dirents []fsapi.Dirent, d_next uint64, direntCount int, truncatedLen uint32) { +func writeDirents(buf []byte, dirents []experimentalsys.Dirent, d_next uint64, direntCount int, truncatedLen uint32) { pos := uint32(0) skipNameI := -1 @@ -1233,11 +1235,11 @@ func fdWriteFn(_ context.Context, mod api.Module, params []uint64) experimentals // pwriter tracks an offset across multiple writes. type pwriter struct { - f fsapi.File + f experimentalsys.File offset int64 } -// Write implements the same function as documented on fsapi.File. +// Write implements the same function as documented on sys.File. func (w *pwriter) Write(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // less overhead on zero-length writes. @@ -1445,7 +1447,7 @@ func pathFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) sys := mod.(*wasm.ModuleInstance).Sys fsc := sys.FS() - times, errno := toTimes(atim, mtim, fstFlags) + atim, mtim, errno := toTimes(sys.WalltimeNanos, atim, mtim, fstFlags) if errno != 0 { return errno } @@ -1457,14 +1459,14 @@ func pathFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) symlinkFollow := flags&wasip1.LOOKUP_SYMLINK_FOLLOW != 0 if symlinkFollow { - return preopen.Utimens(pathName, ×) + return preopen.Utimens(pathName, atim, mtim) } // Otherwise, we need to emulate don't follow by opening the file by path. - if f, errno := preopen.OpenFile(pathName, syscall.O_WRONLY, 0); errno != 0 { + if f, errno := preopen.OpenFile(pathName, experimentalsys.O_WRONLY, 0); errno != 0 { return errno } else { defer f.Close() - return f.Utimens(×) + return f.Utimens(atim, mtim) } } @@ -1595,7 +1597,7 @@ func pathOpenFn(_ context.Context, mod api.Module, params []uint64) experimental } fileOpenFlags := openFlags(dirflags, oflags, fdflags, rights) - isDir := fileOpenFlags&fsapi.O_DIRECTORY != 0 + isDir := fileOpenFlags&experimentalsys.O_DIRECTORY != 0 if isDir && oflags&wasip1.O_CREAT != 0 { return experimentalsys.EINVAL // use pathCreateDirectory! @@ -1642,7 +1644,7 @@ func pathOpenFn(_ context.Context, mod api.Module, params []uint64) experimental // // See https://github.com/WebAssembly/wasi-libc/blob/659ff414560721b1660a19685110e484a081c3d4/libc-bottom-half/sources/at_fdcwd.c // See https://linux.die.net/man/2/openat -func atPath(fsc *sys.FSContext, mem api.Memory, fd int32, p, pathLen uint32) (fsapi.FS, string, experimentalsys.Errno) { +func atPath(fsc *sys.FSContext, mem api.Memory, fd int32, p, pathLen uint32) (experimentalsys.FS, string, experimentalsys.Errno) { b, ok := mem.Read(p, pathLen) if !ok { return nil, "", experimentalsys.EFAULT @@ -1696,15 +1698,15 @@ func preopenPath(fsc *sys.FSContext, fd int32) (string, experimentalsys.Errno) { } } -func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags fsapi.Oflag) { +func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags experimentalsys.Oflag) { if dirflags&wasip1.LOOKUP_SYMLINK_FOLLOW == 0 { - openFlags |= fsapi.O_NOFOLLOW + openFlags |= experimentalsys.O_NOFOLLOW } if oflags&wasip1.O_DIRECTORY != 0 { - openFlags |= fsapi.O_DIRECTORY + openFlags |= experimentalsys.O_DIRECTORY return // Early return for directories as the rest of flags doesn't make sense for it. } else if oflags&wasip1.O_EXCL != 0 { - openFlags |= fsapi.O_EXCL + openFlags |= experimentalsys.O_EXCL } // Because we don't implement rights, we partially rely on the open flags // to determine the mode in which the file will be opened. This will create @@ -1713,30 +1715,30 @@ func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags fsapi // which sets O_CREAT but does not give read or write permissions will // successfully create a file when running with wazero, but might get a // permission denied error on other runtimes. - defaultMode := fsapi.O_RDONLY + defaultMode := experimentalsys.O_RDONLY if oflags&wasip1.O_TRUNC != 0 { - openFlags |= fsapi.O_TRUNC - defaultMode = fsapi.O_RDWR + openFlags |= experimentalsys.O_TRUNC + defaultMode = experimentalsys.O_RDWR } if oflags&wasip1.O_CREAT != 0 { - openFlags |= fsapi.O_CREAT - defaultMode = fsapi.O_RDWR + openFlags |= experimentalsys.O_CREAT + defaultMode = experimentalsys.O_RDWR } if fdflags&wasip1.FD_NONBLOCK != 0 { - openFlags |= fsapi.O_NONBLOCK + openFlags |= experimentalsys.O_NONBLOCK } if fdflags&wasip1.FD_APPEND != 0 { - openFlags |= fsapi.O_APPEND - defaultMode = fsapi.O_RDWR + openFlags |= experimentalsys.O_APPEND + defaultMode = experimentalsys.O_RDWR } if fdflags&wasip1.FD_DSYNC != 0 { - openFlags |= fsapi.O_DSYNC + openFlags |= experimentalsys.O_DSYNC } if fdflags&wasip1.FD_RSYNC != 0 { - openFlags |= fsapi.O_RSYNC + openFlags |= experimentalsys.O_RSYNC } if fdflags&wasip1.FD_SYNC != 0 { - openFlags |= fsapi.O_SYNC + openFlags |= experimentalsys.O_SYNC } // Since rights were discontinued in wasi, we only interpret RIGHT_FD_WRITE @@ -1748,11 +1750,11 @@ func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags fsapi const rw = r | w switch { case (rights & rw) == rw: - openFlags |= fsapi.O_RDWR + openFlags |= experimentalsys.O_RDWR case (rights & w) == w: - openFlags |= fsapi.O_WRONLY + openFlags |= experimentalsys.O_WRONLY case (rights & r) == r: - openFlags |= fsapi.O_RDONLY + openFlags |= experimentalsys.O_RDONLY default: openFlags |= defaultMode } @@ -1794,6 +1796,10 @@ func pathReadlinkFn(_ context.Context, mod api.Module, params []uint64) experime return errno } + if len(dst) > int(bufLen) { + return experimentalsys.ERANGE + } + if ok := mem.WriteString(buf, dst); !ok { return experimentalsys.EFAULT } diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go index aed08b7bea..d09f30245b 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go @@ -6,6 +6,7 @@ import ( "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" internalsys "github.com/tetratelabs/wazero/internal/sys" "github.com/tetratelabs/wazero/internal/wasip1" "github.com/tetratelabs/wazero/internal/wasm" @@ -46,7 +47,6 @@ type event struct { eventType byte userData []byte errno wasip1.Errno - outOffset uint32 } func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno { @@ -90,16 +90,16 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno var blockingStdinSubs []*event // The timeout is initialized at max Duration, the loop will find the minimum. var timeout time.Duration = 1<<63 - 1 - // Count of all the clock subscribers that have been already written back to outBuf. - clockEvents := uint32(0) - // Count of all the non-clock subscribers that have been already written back to outBuf. - readySubs := uint32(0) + // Count of all the subscriptions that have been already written back to outBuf. + // nevents*32 returns at all times the offset where the next event should be written: + // this way we ensure that there are no gaps between records. + nevents := uint32(0) // Layout is subscription_u: Union // https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#subscription_u for i := uint32(0); i < nsubscriptions; i++ { inOffset := i * 48 - outOffset := i * 32 + outOffset := nevents * 32 eventType := inBuf[inOffset+8] // +8 past userdata // +8 past userdata +8 contents_offset @@ -110,12 +110,10 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno eventType: eventType, userData: userData, errno: wasip1.ErrnoSuccess, - outOffset: outOffset, } switch eventType { case wasip1.EventTypeClock: // handle later - clockEvents++ newTimeout, err := processClockEvent(argBuf) if err != 0 { return err @@ -125,7 +123,8 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno timeout = newTimeout } // Ack the clock event to the outBuf. - writeEvent(outBuf, evt) + writeEvent(outBuf[outOffset:], evt) + nevents++ case wasip1.EventTypeFdRead: fd := int32(le.Uint32(argBuf)) if fd < 0 { @@ -133,16 +132,15 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno } if file, ok := fsc.LookupFile(fd); !ok { evt.errno = wasip1.ErrnoBadf - writeEvent(outBuf, evt) - readySubs++ - continue - } else if fd == internalsys.FdStdin && !file.File.IsNonblock() { - // if the fd is Stdin, and it is in non-blocking mode, + writeEvent(outBuf[outOffset:], evt) + nevents++ + } else if fd != internalsys.FdStdin && file.File.IsNonblock() { + writeEvent(outBuf[outOffset:], evt) + nevents++ + } else { + // if the fd is Stdin, and it is in blocking mode, // do not ack yet, append to a slice for delayed evaluation. blockingStdinSubs = append(blockingStdinSubs, evt) - } else { - writeEvent(outBuf, evt) - readySubs++ } case wasip1.EventTypeFdWrite: fd := int32(le.Uint32(argBuf)) @@ -154,47 +152,46 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno } else { evt.errno = wasip1.ErrnoBadf } - readySubs++ - writeEvent(outBuf, evt) + nevents++ + writeEvent(outBuf[outOffset:], evt) default: return sys.EINVAL } } - // If there are subscribers with data ready, we have already written them to outBuf, - // and we don't need to wait for the timeout: clear it. - if readySubs != 0 { - timeout = 0 + sysCtx := mod.(*wasm.ModuleInstance).Sys + if nevents == nsubscriptions { + // We already wrote back all the results. We already wrote this number + // earlier to offset `resultNevents`. + // We only need to observe the timeout (nonzero if there are clock subscriptions) + // and return. + if timeout > 0 { + sysCtx.Nanosleep(int64(timeout)) + } + return 0 } // If there are blocking stdin subscribers, check for data with given timeout. - if len(blockingStdinSubs) > 0 { - stdin, ok := fsc.LookupFile(internalsys.FdStdin) - if !ok { - return sys.EBADF - } - // Wait for the timeout to expire, or for some data to become available on Stdin. - stdinReady, errno := stdin.File.PollRead(&timeout) - if errno != 0 { - return errno - } - if stdinReady { - // stdin has data ready to for reading, write back all the events - for i := range blockingStdinSubs { - readySubs++ - evt := blockingStdinSubs[i] - evt.errno = 0 - writeEvent(outBuf, evt) - } + stdin, ok := fsc.LookupFile(internalsys.FdStdin) + if !ok { + return sys.EBADF + } + // Wait for the timeout to expire, or for some data to become available on Stdin. + + if stdinReady, errno := stdin.File.Poll(fsapi.POLLIN, int32(timeout.Milliseconds())); errno != 0 { + return errno + } else if stdinReady { + // stdin has data ready to for reading, write back all the events + for i := range blockingStdinSubs { + evt := blockingStdinSubs[i] + evt.errno = 0 + writeEvent(outBuf[nevents*32:], evt) + nevents++ } - } else { - // No subscribers, just wait for the given timeout. - sysCtx := mod.(*wasm.ModuleInstance).Sys - sysCtx.Nanosleep(int64(timeout)) } - if readySubs != nsubscriptions { - if !mod.Memory().WriteUint32Le(resultNevents, readySubs+clockEvents) { + if nevents != nsubscriptions { + if !mod.Memory().WriteUint32Le(resultNevents, nevents) { return sys.EFAULT } } @@ -234,9 +231,9 @@ func processClockEvent(inBuf []byte) (time.Duration, sys.Errno) { // writeEvent writes the event corresponding to the processed subscription. // https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-event-struct func writeEvent(outBuf []byte, evt *event) { - copy(outBuf[evt.outOffset:], evt.userData) // userdata - outBuf[evt.outOffset+8] = byte(evt.errno) // uint16, but safe as < 255 - outBuf[evt.outOffset+9] = 0 - le.PutUint32(outBuf[evt.outOffset+10:], uint32(evt.eventType)) + copy(outBuf, evt.userData) // userdata + outBuf[8] = byte(evt.errno) // uint16, but safe as < 255 + outBuf[9] = 0 + le.PutUint32(outBuf[10:], uint32(evt.eventType)) // TODO: When FD events are supported, write outOffset+16 } diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go index a3c20ad586..756c0d3913 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go @@ -2,7 +2,6 @@ package wasi_snapshot_preview1 import ( "context" - "syscall" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/experimental/sys" @@ -175,11 +174,11 @@ func sockShutdownFn(_ context.Context, mod api.Module, params []uint64) sys.Errn switch how { case wasip1.SD_RD | wasip1.SD_WR: - sysHow = syscall.SHUT_RD | syscall.SHUT_WR + sysHow = socketapi.SHUT_RD | socketapi.SHUT_WR case wasip1.SD_RD: - sysHow = syscall.SHUT_RD + sysHow = socketapi.SHUT_RD case wasip1.SD_WR: - sysHow = syscall.SHUT_WR + sysHow = socketapi.SHUT_WR default: return sys.EINVAL } diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go index a4a220596b..6c52cc4bcd 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go @@ -29,8 +29,10 @@ func main() { } case "sock": // TODO: undefined: net.FileListener + // See https://github.com/tinygo-org/tinygo/pull/2748 case "nonblock": // TODO: undefined: syscall.SetNonblock + // See https://github.com/tinygo-org/tinygo/issues/3840 } } diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go index ca07a716d2..f8b76fa448 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go @@ -48,6 +48,10 @@ type ( // as the underlying memory region is accessed by assembly directly by using // codesElement0Address. functions []function + + // Keep a reference to the compiled module to prevent the GC from reclaiming + // it while the code may still be needed. + module *compiledModule } // callEngine holds context per moduleEngine.Call, and shared across all the @@ -130,11 +134,13 @@ type ( // initialFn is the initial function for this call engine. initialFn *function + // Keep a reference to the compiled module to prevent the GC from reclaiming + // it while the code may still be needed. + module *compiledModule + // stackIterator provides a way to iterate over the stack for Listeners. // It is setup and valid only during a call to a Listener hook. stackIterator stackIterator - - ensureTermination bool } // moduleContext holds the per-function call specific module information. @@ -264,12 +270,27 @@ type ( } compiledModule struct { - executable asm.CodeSegment - functions []compiledFunction - source *wasm.Module + // The data that need to be accessed by compiledFunction.parent are + // separated in an embedded field because we use finalizers to manage + // the lifecycle of compiledModule instances and having cyclic pointers + // prevents the Go runtime from calling them, which results in memory + // leaks since the memory mapped code segments cannot be released. + // + // The indirection guarantees that the finalizer set on compiledModule + // instances can run when all references are gone, and the Go GC can + // manage to reclaim the compiledCode when all compiledFunction objects + // referencing it have been freed. + *compiledCode + functions []compiledFunction + ensureTermination bool } + compiledCode struct { + source *wasm.Module + executable asm.CodeSegment + } + // compiledFunction corresponds to a function in a module (not instantiated one). This holds the machine code // compiled by wazero compiler. compiledFunction struct { @@ -282,7 +303,7 @@ type ( index wasm.Index goFunc interface{} listener experimental.FunctionListener - parent *compiledModule + parent *compiledCode sourceOffsetMap sourceOffsetMap } @@ -355,13 +376,13 @@ const ( functionSize = 40 // Offsets for wasm.ModuleInstance. - moduleInstanceGlobalsOffset = 32 - moduleInstanceMemoryOffset = 56 - moduleInstanceTablesOffset = 64 - moduleInstanceEngineOffset = 88 - moduleInstanceTypeIDsOffset = 104 - moduleInstanceDataInstancesOffset = 128 - moduleInstanceElementInstancesOffset = 152 + moduleInstanceGlobalsOffset = 24 + moduleInstanceMemoryOffset = 48 + moduleInstanceTablesOffset = 56 + moduleInstanceEngineOffset = 80 + moduleInstanceTypeIDsOffset = 96 + moduleInstanceDataInstancesOffset = 120 + moduleInstanceElementInstancesOffset = 144 // Offsets for wasm.TableInstance. tableInstanceTableOffset = 0 @@ -496,13 +517,6 @@ func (e *engine) Close() (err error) { e.mux.Lock() defer e.mux.Unlock() // Releasing the references to compiled codes including the memory-mapped machine codes. - - for i := range e.codes { - for j := range e.codes[i].functions { - e.codes[i].functions[j].parent = nil - } - } - e.codes = nil return } @@ -523,9 +537,11 @@ func (e *engine) CompileModule(_ context.Context, module *wasm.Module, listeners var withGoFunc bool localFuncs, importedFuncs := len(module.FunctionSection), module.ImportFunctionCount cm := &compiledModule{ + compiledCode: &compiledCode{ + source: module, + }, functions: make([]compiledFunction, localFuncs), ensureTermination: ensureTermination, - source: module, } if localFuncs == 0 { @@ -559,7 +575,7 @@ func (e *engine) CompileModule(_ context.Context, module *wasm.Module, listeners funcIndex := wasm.Index(i) compiledFn := &cm.functions[i] compiledFn.executableOffset = executable.Size() - compiledFn.parent = cm + compiledFn.parent = cm.compiledCode compiledFn.index = importedFuncs + funcIndex if i < ln { compiledFn.listener = listeners[i] @@ -628,6 +644,8 @@ func (e *engine) NewModuleEngine(module *wasm.Module, instance *wasm.ModuleInsta parent: c, } } + + me.module = cm return me, nil } @@ -638,11 +656,17 @@ func (e *moduleEngine) ResolveImportedFunction(index, indexInImportedModule wasm e.functions[index] = imported.functions[indexInImportedModule] } +// ResolveImportedMemory implements wasm.ModuleEngine. +func (e *moduleEngine) ResolveImportedMemory(wasm.ModuleEngine) {} + // FunctionInstanceReference implements the same method as documented on wasm.ModuleEngine. func (e *moduleEngine) FunctionInstanceReference(funcIndex wasm.Index) wasm.Reference { return uintptr(unsafe.Pointer(&e.functions[funcIndex])) } +// DoneInstantiation implements wasm.ModuleEngine. +func (e *moduleEngine) DoneInstantiation() {} + // NewFunction implements wasm.ModuleEngine. func (e *moduleEngine) NewFunction(index wasm.Index) api.Function { return e.newFunction(&e.functions[index]) @@ -657,24 +681,20 @@ func (e *moduleEngine) newFunction(f *function) api.Function { } // LookupFunction implements the same method as documented on wasm.ModuleEngine. -func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (f api.Function, err error) { +func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (*wasm.ModuleInstance, wasm.Index) { if tableOffset >= uint32(len(t.References)) || t.Type != wasm.RefTypeFuncref { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } rawPtr := t.References[tableOffset] if rawPtr == 0 { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } tf := functionFromUintptr(rawPtr) if tf.typeID != typeId { - err = wasmruntime.ErrRuntimeIndirectCallTypeMismatch - return + panic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch) } - f = e.newFunction(tf) - return + return tf.moduleInstance, tf.parent.index } // functionFromUintptr resurrects the original *function from the given uintptr @@ -720,7 +740,7 @@ func (ce *callEngine) CallWithStack(ctx context.Context, stack []uint64) error { func (ce *callEngine) call(ctx context.Context, params, results []uint64) (_ []uint64, err error) { m := ce.initialFn.moduleInstance - if ce.ensureTermination { + if ce.module.ensureTermination { select { case <-ctx.Done(): // If the provided context is already done, close the call context @@ -741,12 +761,14 @@ func (ce *callEngine) call(ctx context.Context, params, results []uint64) (_ []u // If the module closed during the call, and the call didn't err for another reason, set an ExitError. err = m.FailIfClosed() } + // Ensure that the compiled module will never be GC'd before this method returns. + runtime.KeepAlive(ce.module) }() ft := ce.initialFn.funcType ce.initializeStack(ft, params) - if ce.ensureTermination { + if ce.module.ensureTermination { done := m.CloseModuleOnCanceledOrTimeout(ctx) defer done() } @@ -946,24 +968,24 @@ func newEngine(enabledFeatures api.CoreFeatures, fileCache filecache.Cache) *eng // // By declaring these values as `var`, slices created via `make([]..., var)` // will never be allocated on stack [1]. This means accessing these slices via -// raw pointers is safe: As of version 1.18, Go's garbage collector never relocates +// raw pointers is safe: As of version 1.21, Go's garbage collector never relocates // heap-allocated objects (aka no compaction of memory [2]). // // On Go upgrades, re-validate heap-allocation via `go build -gcflags='-m' ./internal/engine/compiler/...`. // -// [1] https://github.com/golang/go/blob/68ecdc2c70544c303aa923139a5f16caf107d955/src/cmd/compile/internal/escape/utils.go#L206-L208 -// [2] https://github.com/golang/go/blob/68ecdc2c70544c303aa923139a5f16caf107d955/src/runtime/mgc.go#L9 +// [1] https://github.com/golang/go/blob/c19c4c566c63818dfd059b352e52c4710eecf14d/src/cmd/compile/internal/escape/utils.go#L213-L215 +// [2] https://github.com/golang/go/blob/c19c4c566c63818dfd059b352e52c4710eecf14d/src/runtime/mgc.go#L9 // [3] https://mayurwadekar2.medium.com/escape-analysis-in-golang-ee40a1c064c1 // [4] https://medium.com/@yulang.chu/go-stack-or-heap-2-slices-which-keep-in-stack-have-limitation-of-size-b3f3adfd6190 var initialStackSize uint64 = 512 func (e *moduleEngine) newCallEngine(stackSize uint64, fn *function) *callEngine { ce := &callEngine{ - stack: make([]uint64, stackSize), - archContext: newArchContext(), - initialFn: fn, - moduleContext: moduleContext{fn: fn}, - ensureTermination: fn.parent.parent.ensureTermination, + stack: make([]uint64, stackSize), + archContext: newArchContext(), + initialFn: fn, + moduleContext: moduleContext{fn: fn}, + module: e.module, } stackHeader := (*reflect.SliceHeader)(unsafe.Pointer(&ce.stack)) diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go index e6b3b0e914..37e481bdb6 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go @@ -17,6 +17,7 @@ import ( func (e *engine) deleteCompiledModule(module *wasm.Module) { e.mux.Lock() defer e.mux.Unlock() + delete(e.codes, module.ID) // Note: we do not call e.Cache.Delete, as the lifetime of @@ -158,14 +159,18 @@ func deserializeCompiledModule(wazeroVersion string, reader io.ReadCloser, modul ensureTermination := header[cachedVersionEnd] != 0 functionsNum := binary.LittleEndian.Uint32(header[len(header)-4:]) - cm = &compiledModule{functions: make([]compiledFunction, functionsNum), ensureTermination: ensureTermination} + cm = &compiledModule{ + compiledCode: new(compiledCode), + functions: make([]compiledFunction, functionsNum), + ensureTermination: ensureTermination, + } imported := module.ImportFunctionCount var eightBytes [8]byte for i := uint32(0); i < functionsNum; i++ { f := &cm.functions[i] - f.parent = cm + f.parent = cm.compiledCode // Read the stack pointer ceil. if f.stackPointerCeil, err = readUint64(reader, &eightBytes); err != nil { diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go index 2555ae3c6e..7de2b33189 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go @@ -1088,7 +1088,7 @@ func (c *amd64Compiler) compileAdd(o *wazeroir.UnionOperation) error { return err } - x1 := c.locationStack.peek() // Note this is peek, pop! + x1 := c.locationStack.peek() // Note this is peek! if err := c.compileEnsureOnRegister(x1); err != nil { return err } @@ -1125,7 +1125,7 @@ func (c *amd64Compiler) compileSub(o *wazeroir.UnionOperation) error { return err } - x1 := c.locationStack.peek() // Note this is peek, pop! + x1 := c.locationStack.peek() // Note this is peek! if err := c.compileEnsureOnRegister(x1); err != nil { return err } @@ -3499,7 +3499,7 @@ func (c *amd64Compiler) compileStoreImpl(offsetConst uint32, inst asm.Instructio reg, err := c.compileMemoryAccessCeilSetup(offsetConst, targetSizeInBytes) if err != nil { - return nil + return err } c.assembler.CompileRegisterToMemoryWithIndex( diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go b/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go index ad3e7f7603..8f0db3c75f 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go @@ -442,6 +442,12 @@ func (e *moduleEngine) ResolveImportedFunction(index, indexInImportedModule wasm e.functions[index] = imported.functions[indexInImportedModule] } +// ResolveImportedMemory implements wasm.ModuleEngine. +func (e *moduleEngine) ResolveImportedMemory(wasm.ModuleEngine) {} + +// DoneInstantiation implements wasm.ModuleEngine. +func (e *moduleEngine) DoneInstantiation() {} + // FunctionInstanceReference implements the same method as documented on wasm.ModuleEngine. func (e *moduleEngine) FunctionInstanceReference(funcIndex wasm.Index) wasm.Reference { return uintptr(unsafe.Pointer(&e.functions[funcIndex])) @@ -456,25 +462,20 @@ func (e *moduleEngine) NewFunction(index wasm.Index) (ce api.Function) { } // LookupFunction implements the same method as documented on wasm.ModuleEngine. -func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (f api.Function, err error) { +func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (*wasm.ModuleInstance, wasm.Index) { if tableOffset >= uint32(len(t.References)) { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } rawPtr := t.References[tableOffset] if rawPtr == 0 { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } tf := functionFromUintptr(rawPtr) if tf.typeID != typeId { - err = wasmruntime.ErrRuntimeIndirectCallTypeMismatch - return + panic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch) } - - f = e.newCallEngine(tf) - return + return tf.moduleInstance, tf.parent.index } // Definition implements the same method as documented on api.Function. @@ -4113,7 +4114,6 @@ func (ce *callEngine) callNativeFuncWithListener(ctx context.Context, m *wasm.Mo // popMemoryOffset takes a memory offset off the stack for use in load and store instructions. // As the top of stack value is 64-bit, this ensures it is in range before returning it. func (ce *callEngine) popMemoryOffset(op *wazeroir.UnionOperation) uint32 { - // TODO: Document what 'us' is and why we expect to look at value 1. offset := op.U2 + ce.popValue() if offset > math.MaxUint32 { panic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess) diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go b/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go index f40d4155a8..0640b22712 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go +++ b/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go @@ -1,77 +1,17 @@ package fsapi -import ( - "syscall" - "time" +import experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/sys" -) - -// File is a writeable fs.File bridge backed by syscall functions needed for ABI -// including WASI and runtime.GOOS=js. -// -// Implementations should embed UnimplementedFile for forward compatability. Any -// unsupported method or parameter should return ENOSYS. -// -// # Errors -// -// All methods that can return an error return a Errno, which is zero -// on success. -// -// Restricting to Errno matches current WebAssembly host functions, -// which are constrained to well-known error codes. For example, `GOOS=js` maps -// hard coded values and panics otherwise. More commonly, WASI maps syscall -// errors to u32 numeric values. +// File includes methods not yet ready to document for end users, notably +// non-blocking functionality. // -// # Notes -// -// - You must call Close to avoid file resource conflicts. For example, -// Windows cannot delete the underlying directory while a handle to it -// remains open. -// - A writable filesystem abstraction is not yet implemented as of Go 1.20. -// See https://github.com/golang/go/issues/45757 +// Particularly, Poll is subject to debate. For example, whether a user should +// be able to choose how to implement timeout or not. Currently, this interface +// allows the user to choose to sleep or use native polling, and which choice +// they make impacts thread behavior as summarized here: +// https://github.com/tetratelabs/wazero/pull/1606#issuecomment-1665475516 type File interface { - // Dev returns the device ID (Stat_t.Dev) of this file, zero if unknown or - // an error retrieving it. - // - // # Errors - // - // Possible errors are those from Stat, except ENOSYS should not - // be returned. Zero should be returned if there is no implementation. - // - // # Notes - // - // - Implementations should cache this result. - // - This combined with Ino can implement os.SameFile. - Dev() (uint64, experimentalsys.Errno) - - // Ino returns the serial number (Stat_t.Ino) of this file, zero if unknown - // or an error retrieving it. - // - // # Errors - // - // Possible errors are those from Stat, except ENOSYS should not - // be returned. Zero should be returned if there is no implementation. - // - // # Notes - // - // - Implementations should cache this result. - // - This combined with Dev can implement os.SameFile. - Ino() (sys.Inode, experimentalsys.Errno) - - // IsDir returns true if this file is a directory or an error there was an - // error retrieving this information. - // - // # Errors - // - // Possible errors are those from Stat, except ENOSYS should not - // be returned. false should be returned if there is no implementation. - // - // # Notes - // - // - Implementations should cache this result. - IsDir() (bool, experimentalsys.Errno) + experimentalsys.File // IsNonblock returns true if the file was opened with O_NONBLOCK, or // SetNonblock was successfully enabled on this file. @@ -96,272 +36,34 @@ type File interface { // POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html SetNonblock(enable bool) experimentalsys.Errno - // IsAppend returns true if the file was opened with fsapi.O_APPEND, or - // SetAppend was successfully enabled on this file. - // - // # Notes - // - // - This might not match the underlying state of the file descriptor if - // the file was not opened via OpenFile. - IsAppend() bool - - // SetAppend toggles the append mode (fsapi.O_APPEND) of this file. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - There is no `O_APPEND` for `fcntl` in POSIX, so implementations may - // have to re-open the underlying file to apply this. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html - SetAppend(enable bool) experimentalsys.Errno - - // Stat is similar to syscall.Fstat. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.Fstat and `fstatat` with `AT_FDCWD` in POSIX. - // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html - // - A fs.FileInfo backed implementation sets atim, mtim and ctim to the - // same value. - // - Windows allows you to stat a closed directory. - Stat() (sys.Stat_t, experimentalsys.Errno) - - // Read attempts to read all bytes in the file into `buf`, and returns the - // count read even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not readable. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like io.Reader and `read` in POSIX, preferring semantics of - // io.Reader. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html - // - Unlike io.Reader, there is no io.EOF returned on end-of-file. To - // read the file completely, the caller must repeat until `n` is zero. - Read(buf []byte) (n int, errno experimentalsys.Errno) - - // Pread attempts to read all bytes in the file into `p`, starting at the - // offset `off`, and returns the count read even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not readable. - // - EINVAL: the offset was negative. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like io.ReaderAt and `pread` in POSIX, preferring semantics - // of io.ReaderAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html - // - Unlike io.ReaderAt, there is no io.EOF returned on end-of-file. To - // read the file completely, the caller must repeat until `n` is zero. - Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) - - // Seek attempts to set the next offset for Read or Write and returns the - // resulting absolute offset or an error. + // Poll returns if the file has data ready to be read or written. // // # Parameters // - // The `offset` parameters is interpreted in terms of `whence`: - // - io.SeekStart: relative to the start of the file, e.g. offset=0 sets - // the next Read or Write to the beginning of the file. - // - io.SeekCurrent: relative to the current offset, e.g. offset=16 sets - // the next Read or Write 16 bytes past the prior. - // - io.SeekEnd: relative to the end of the file, e.g. offset=-1 sets the - // next Read or Write to the last byte in the file. - // - // # Behavior when a directory - // - // The only supported use case for a directory is seeking to `offset` zero - // (`whence` = io.SeekStart). This should have the same behavior as - // os.File, which resets any internal state used by Readdir. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not readable. - // - EINVAL: the offset was negative. - // - // # Notes - // - // - This is like io.Seeker and `fseek` in POSIX, preferring semantics - // of io.Seeker. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html - Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) - - // PollRead returns if the file has data ready to be read or an error. + // The `flag` parameter determines which event to await, such as POLLIN, + // POLLOUT, or a combination like `POLLIN|POLLOUT`. // - // # Parameters + // The `timeoutMillis` parameter is how long to block for an event, or + // interrupted, in milliseconds. There are two special values: + // - zero returns immediately + // - any negative value blocks any amount of time // - // The `timeout` parameter when nil blocks up to forever. + // # Results // - // # Errors + // `ready` means there was data ready to read or written. False can mean no + // event was ready or `errno` is not zero. // - // A zero Errno is success. The below are expected otherwise: + // A zero `errno` is success. The below are expected otherwise: // - ENOSYS: the implementation does not support this function. + // - ENOTSUP: the implementation does not the flag combination. + // - EINTR: the call was interrupted prior to an event. // // # Notes // // - This is like `poll` in POSIX, for a single file. // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html // - No-op files, such as those which read from /dev/null, should return - // immediately true to avoid hangs (because data will never become - // available). - PollRead(timeout *time.Duration) (ready bool, errno experimentalsys.Errno) - - // Readdir reads the contents of the directory associated with file and - // returns a slice of up to n Dirent values in an arbitrary order. This is - // a stateful function, so subsequent calls return any next values. - // - // If n > 0, Readdir returns at most n entries or an error. - // If n <= 0, Readdir returns all remaining entries or an error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file was closed or not a directory. - // - ENOENT: the directory could not be read (e.g. deleted). - // - // # Notes - // - // - This is like `Readdir` on os.File, but unlike `readdir` in POSIX. - // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html - // - Unlike os.File, there is no io.EOF returned on end-of-directory. To - // read the directory completely, the caller must repeat until the - // count read (`len(dirents)`) is less than `n`. - // - See /RATIONALE.md for design notes. - Readdir(n int) (dirents []Dirent, errno experimentalsys.Errno) - - // Write attempts to write all bytes in `p` to the file, and returns the - // count written even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file was closed, not writeable, or a directory. - // - // # Notes - // - // - This is like io.Writer and `write` in POSIX, preferring semantics of - // io.Writer. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html - Write(buf []byte) (n int, errno experimentalsys.Errno) - - // Pwrite attempts to write all bytes in `p` to the file at the given - // offset `off`, and returns the count written even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not writeable. - // - EINVAL: the offset was negative. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like io.WriterAt and `pwrite` in POSIX, preferring semantics - // of io.WriterAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html - Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) - - // Truncate truncates a file to a specified length. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - EINVAL: the `size` is negative. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like syscall.Ftruncate and `ftruncate` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html - // - Windows does not error when calling Truncate on a closed file. - Truncate(size int64) experimentalsys.Errno - - // Sync synchronizes changes to the file. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.Fsync and `fsync` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html - // - This returns with no error instead of ENOSYS when - // unimplemented. This prevents fake filesystems from erring. - // - Windows does not error when calling Sync on a closed file. - Sync() experimentalsys.Errno - - // Datasync synchronizes the data of a file. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.Fdatasync and `fdatasync` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html - // - This returns with no error instead of ENOSYS when - // unimplemented. This prevents fake filesystems from erring. - // - As this is commonly missing, some implementations dispatch to Sync. - Datasync() experimentalsys.Errno - - // Utimens set file access and modification times of this file, at - // nanosecond precision. - // - // # Parameters - // - // The `times` parameter includes the access and modification timestamps to - // assign. Special syscall.Timespec NSec values UTIME_NOW and UTIME_OMIT may be - // specified instead of real timestamps. A nil `times` parameter behaves the - // same as if both were set to UTIME_NOW. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.UtimesNano and `futimens` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html - // - Windows requires files to be open with fsapi.O_RDWR, which means you - // cannot use this to update timestamps on a directory (EPERM). - Utimens(times *[2]syscall.Timespec) experimentalsys.Errno - - // Close closes the underlying file. - // - // A zero Errno is returned if unimplemented or success. - // - // # Notes - // - // - This is like syscall.Close and `close` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html - Close() experimentalsys.Errno + // immediately true, as data will never become available. + // - See /RATIONALE.md for detailed notes including impact of blocking. + Poll(flag Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) } diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go b/vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go new file mode 100644 index 0000000000..25f7c5711b --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go @@ -0,0 +1,20 @@ +package fsapi + +// Pflag are bit flags used for File.Poll. Values, including zero, should not +// be interpreted numerically. Instead, use by constants prefixed with 'POLL'. +// +// # Notes +// +// - This is like `pollfd.events` flags for `poll` in POSIX. See +// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html +type Pflag uint32 + +// Only define bitflags we support and are needed by `poll_oneoff` in wasip1 +// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#eventrwflags +const ( + // POLLIN is a read event. + POLLIN Pflag = 1 << iota + + // POLLOUT is a write event. + POLLOUT +) diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go b/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go index b31cbd13f5..99d9c2db34 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go +++ b/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go @@ -1,193 +1,27 @@ package fsapi -import ( - "io/fs" - "syscall" - "time" +import experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/sys" -) - -// UnimplementedFS is an FS that returns ENOSYS for all functions, -// This should be embedded to have forward compatible implementations. -type UnimplementedFS struct{} - -// String implements fmt.Stringer -func (UnimplementedFS) String() string { - return "Unimplemented:/" -} - -// Open implements the same method as documented on fs.FS -func (UnimplementedFS) Open(name string) (fs.File, error) { - return nil, &fs.PathError{Op: "open", Path: name, Err: experimentalsys.ENOSYS} -} - -// OpenFile implements FS.OpenFile -func (UnimplementedFS) OpenFile(path string, flag Oflag, perm fs.FileMode) (File, experimentalsys.Errno) { - return nil, experimentalsys.ENOSYS -} - -// Lstat implements FS.Lstat -func (UnimplementedFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { - return sys.Stat_t{}, experimentalsys.ENOSYS -} - -// Stat implements FS.Stat -func (UnimplementedFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { - return sys.Stat_t{}, experimentalsys.ENOSYS -} - -// Readlink implements FS.Readlink -func (UnimplementedFS) Readlink(path string) (string, experimentalsys.Errno) { - return "", experimentalsys.ENOSYS -} - -// Mkdir implements FS.Mkdir -func (UnimplementedFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Chmod implements FS.Chmod -func (UnimplementedFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Rename implements FS.Rename -func (UnimplementedFS) Rename(from, to string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Rmdir implements FS.Rmdir -func (UnimplementedFS) Rmdir(path string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Link implements FS.Link -func (UnimplementedFS) Link(_, _ string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Symlink implements FS.Symlink -func (UnimplementedFS) Symlink(_, _ string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Unlink implements FS.Unlink -func (UnimplementedFS) Unlink(path string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Utimens implements FS.Utimens -func (UnimplementedFS) Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Truncate implements FS.Truncate -func (UnimplementedFS) Truncate(string, int64) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// UnimplementedFile is a File that returns ENOSYS for all functions, -// except where no-op are otherwise documented. -// -// This should be embedded to have forward compatible implementations. -type UnimplementedFile struct{} - -// Dev implements File.Dev -func (UnimplementedFile) Dev() (uint64, experimentalsys.Errno) { - return 0, 0 -} - -// Ino implements File.Ino -func (UnimplementedFile) Ino() (sys.Inode, experimentalsys.Errno) { - return 0, 0 -} - -// IsDir implements File.IsDir -func (UnimplementedFile) IsDir() (bool, experimentalsys.Errno) { - return false, 0 +func Adapt(f experimentalsys.File) File { + if f, ok := f.(File); ok { + return f + } + return unimplementedFile{f} } -// IsAppend implements File.IsAppend -func (UnimplementedFile) IsAppend() bool { - return false -} - -// SetAppend implements File.SetAppend -func (UnimplementedFile) SetAppend(bool) experimentalsys.Errno { - return experimentalsys.ENOSYS -} +type unimplementedFile struct{ experimentalsys.File } // IsNonblock implements File.IsNonblock -func (UnimplementedFile) IsNonblock() bool { +func (unimplementedFile) IsNonblock() bool { return false } // SetNonblock implements File.SetNonblock -func (UnimplementedFile) SetNonblock(bool) experimentalsys.Errno { +func (unimplementedFile) SetNonblock(bool) experimentalsys.Errno { return experimentalsys.ENOSYS } -// Stat implements File.Stat -func (UnimplementedFile) Stat() (sys.Stat_t, experimentalsys.Errno) { - return sys.Stat_t{}, experimentalsys.ENOSYS -} - -// Read implements File.Read -func (UnimplementedFile) Read([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Pread implements File.Pread -func (UnimplementedFile) Pread([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Seek implements File.Seek -func (UnimplementedFile) Seek(int64, int) (int64, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Readdir implements File.Readdir -func (UnimplementedFile) Readdir(int) (dirents []Dirent, errno experimentalsys.Errno) { - return nil, experimentalsys.ENOSYS -} - -// PollRead implements File.PollRead -func (UnimplementedFile) PollRead(*time.Duration) (ready bool, errno experimentalsys.Errno) { +// Poll implements File.Poll +func (unimplementedFile) Poll(Pflag, int32) (ready bool, errno experimentalsys.Errno) { return false, experimentalsys.ENOSYS } - -// Write implements File.Write -func (UnimplementedFile) Write([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Pwrite implements File.Pwrite -func (UnimplementedFile) Pwrite([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Truncate implements File.Truncate -func (UnimplementedFile) Truncate(int64) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Sync implements File.Sync -func (UnimplementedFile) Sync() experimentalsys.Errno { - return 0 // not ENOSYS -} - -// Datasync implements File.Datasync -func (UnimplementedFile) Datasync() experimentalsys.Errno { - return 0 // not ENOSYS -} - -// Utimens implements File.Utimens -func (UnimplementedFile) Utimens(*[2]syscall.Timespec) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Close implements File.Close -func (UnimplementedFile) Close() (errno experimentalsys.Errno) { return } diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go deleted file mode 100644 index 1017c805ac..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build !windows - -package platform - -// Set adds the given fd to the set. -func (f *FdSet) Set(fd int) { - f.Bits[fd/nfdbits] |= (1 << (uintptr(fd) % nfdbits)) -} - -// Clear removes the given fd from the set. -func (f *FdSet) Clear(fd int) { - f.Bits[fd/nfdbits] &^= (1 << (uintptr(fd) % nfdbits)) -} - -// IsSet returns true when fd is in the set. -func (f *FdSet) IsSet(fd int) bool { - return f.Bits[fd/nfdbits]&(1<<(uintptr(fd)%nfdbits)) != 0 -} - -// Zero clears the set. -func (f *FdSet) Zero() { - for i := range f.Bits { - f.Bits[i] = 0 - } -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go deleted file mode 100644 index da52339cbc..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go +++ /dev/null @@ -1,8 +0,0 @@ -package platform - -import "syscall" - -const nfdbits = 0x20 - -// FdSet re-exports syscall.FdSet with utility methods. -type FdSet syscall.FdSet diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go deleted file mode 100644 index f392caf4c1..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go +++ /dev/null @@ -1,8 +0,0 @@ -package platform - -import "syscall" - -const nfdbits = 0x40 - -// FdSet re-exports syscall.FdSet with utility methods. -type FdSet syscall.FdSet diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go deleted file mode 100644 index ad9cf09109..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !darwin && !linux && !windows - -package platform - -const nfdbits = 0x40 - -// FdSet mocks syscall.FdSet on systems that do not support it. -type FdSet struct { - Bits [16]int64 -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go deleted file mode 100644 index 60773ed54a..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go +++ /dev/null @@ -1,239 +0,0 @@ -package platform - -import ( - "syscall" - "unsafe" -) - -var procGetNamedPipeInfo = kernel32.NewProc("GetNamedPipeInfo") - -// Maximum number of fds in a WinSockFdSet. -const _FD_SETSIZE = 64 - -// WinSockFdSet implements the FdSet representation that is used internally by WinSock. -// -// Note: this representation is quite different from the one used in most POSIX implementations -// where a bitfield is usually implemented; instead on Windows we have a simpler array+count pair. -// Notice that because it keeps a count of the inserted handles, the first argument of select -// in WinSock is actually ignored. -// -// The implementation of the Set, Clear, IsSet, Zero, methods follows exactly -// the real implementation found in WinSock2.h, e.g. see: -// https://github.com/microsoft/win32metadata/blob/ef7725c75c6b39adfdc13ba26fb1d89ac954449a/generation/WinSDK/RecompiledIdlHeaders/um/WinSock2.h#L124-L175 -type WinSockFdSet struct { - // count is the number of used slots used in the handles slice. - count uint64 - // handles is the array of handles. This is called "array" in the WinSock implementation - // and it has a fixed length of _FD_SETSIZE. - handles [_FD_SETSIZE]syscall.Handle -} - -// FdSet implements the same methods provided on other plaforms. -// -// Note: the implementation is very different from POSIX; Windows provides -// POSIX select only for sockets. We emulate a select for other APIs in the sysfs -// package, but we still want to use the "real" select in the case of sockets. -// So, we keep separate FdSets for sockets, pipes and regular files, so that we can -// handle them separately. For instance sockets can be used directly in winsock select. -type FdSet struct { - sockets WinSockFdSet - pipes WinSockFdSet - regular WinSockFdSet -} - -// SetAll overwrites all the fields in f with the fields in g. -func (f *FdSet) SetAll(g *FdSet) { - if f == nil { - return - } - f.sockets = g.sockets - f.pipes = g.pipes - f.regular = g.regular -} - -// Sockets returns a WinSockFdSet containing the handles in this FdSet that are sockets. -func (f *FdSet) Sockets() *WinSockFdSet { - if f == nil { - return nil - } - return &f.sockets -} - -// Regular returns a WinSockFdSet containing the handles in this FdSet that are regular files. -func (f *FdSet) Regular() *WinSockFdSet { - if f == nil { - return nil - } - return &f.regular -} - -// Pipes returns a WinSockFdSet containing the handles in this FdSet that are pipes. -func (f *FdSet) Pipes() *WinSockFdSet { - if f == nil { - return nil - } - return &f.pipes -} - -// getFdSetFor returns a pointer to the right fd set for the given fd. -// It checks the type for fd and returns the field for pipes, regular or sockets -// to simplify code. -// -// For instance, if fd is a socket and it must be set if f.pipes, instead -// of writing: -// -// if isSocket(fd) { -// f.sockets.Set(fd) -// } -// -// It is possible to write: -// -// f.getFdSetFor(fd).Set(fd) -func (f *FdSet) getFdSetFor(fd int) *WinSockFdSet { - h := syscall.Handle(fd) - t, err := syscall.GetFileType(h) - if err != nil { - return nil - } - switch t { - case syscall.FILE_TYPE_CHAR, syscall.FILE_TYPE_DISK: - return &f.regular - case syscall.FILE_TYPE_PIPE: - if isSocket(h) { - return &f.sockets - } else { - return &f.pipes - } - default: - return nil - } -} - -// Set adds the given fd to the set. -func (f *FdSet) Set(fd int) { - if s := f.getFdSetFor(fd); s != nil { - s.Set(fd) - } -} - -// Clear removes the given fd from the set. -func (f *FdSet) Clear(fd int) { - if s := f.getFdSetFor(fd); s != nil { - s.Clear(fd) - } -} - -// IsSet returns true when fd is in the set. -func (f *FdSet) IsSet(fd int) bool { - if s := f.getFdSetFor(fd); s != nil { - return s.IsSet(fd) - } - return false -} - -// Copy returns a copy of this FdSet. It returns nil, if the FdSet is nil. -func (f *FdSet) Copy() *FdSet { - if f == nil { - return nil - } - return &FdSet{ - sockets: f.sockets, - pipes: f.pipes, - regular: f.regular, - } -} - -// Zero clears the set. It returns 0 if the FdSet is nil. -func (f *FdSet) Count() int { - if f == nil { - return 0 - } - return f.sockets.Count() + f.regular.Count() + f.pipes.Count() -} - -// Zero clears the set. -func (f *FdSet) Zero() { - if f == nil { - return - } - f.sockets.Zero() - f.regular.Zero() - f.pipes.Zero() -} - -// Set adds the given fd to the set. -func (f *WinSockFdSet) Set(fd int) { - if f.count < _FD_SETSIZE { - f.handles[f.count] = syscall.Handle(fd) - f.count++ - } -} - -// Clear removes the given fd from the set. -func (f *WinSockFdSet) Clear(fd int) { - h := syscall.Handle(fd) - for i := uint64(0); i < f.count; i++ { - if f.handles[i] == h { - for ; i < f.count-1; i++ { - f.handles[i] = f.handles[i+1] - } - f.count-- - break - } - } -} - -// IsSet returns true when fd is in the set. -func (f *WinSockFdSet) IsSet(fd int) bool { - h := syscall.Handle(fd) - for i := uint64(0); i < f.count; i++ { - if f.handles[i] == h { - return true - } - } - return false -} - -// Zero clears the set. -func (f *WinSockFdSet) Zero() { - if f == nil { - return - } - f.handles = [64]syscall.Handle{} - f.count = 0 -} - -// Count returns the number of values that are set in the fd set. -func (f *WinSockFdSet) Count() int { - if f == nil { - return 0 - } - return int(f.count) -} - -// Copy returns a copy of the fd set or nil if it is nil. -func (f *WinSockFdSet) Copy() *WinSockFdSet { - if f == nil { - return nil - } - copy := *f - return © -} - -// Get returns the handle at the given index. -func (f *WinSockFdSet) Get(index int) syscall.Handle { - return f.handles[index] -} - -// isSocket returns true if the given file handle -// is a pipe. -func isSocket(fd syscall.Handle) bool { - r, _, errno := syscall.SyscallN( - procGetNamedPipeInfo.Addr(), - uintptr(fd), - uintptr(unsafe.Pointer(nil)), - uintptr(unsafe.Pointer(nil)), - uintptr(unsafe.Pointer(nil)), - uintptr(unsafe.Pointer(nil))) - return r == 0 || errno != 0 -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go b/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go index c49d1fbb22..ca17aa39ee 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go @@ -5,25 +5,24 @@ import ( "net" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) // TCPSock is a pseudo-file representing a TCP socket. type TCPSock interface { - fsapi.File + sys.File Accept() (TCPConn, sys.Errno) } // TCPConn is a pseudo-file representing a TCP connection. type TCPConn interface { - fsapi.File + sys.File // Recvfrom only supports the flag sysfs.MSG_PEEK - // TODO: document this like fsapi.File with known sys.Errno + // TODO: document this like sys.File with known sys.Errno Recvfrom(p []byte, flags int) (n int, errno sys.Errno) - // TODO: document this like fsapi.File with known sys.Errno + // TODO: document this like sys.File with known sys.Errno Shutdown(how int) sys.Errno } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go new file mode 100644 index 0000000000..30cdb9f926 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go @@ -0,0 +1,11 @@ +//go:build !plan9 && !js + +package sock + +import "syscall" + +const ( + SHUT_RD = syscall.SHUT_RD + SHUT_RDWR = syscall.SHUT_RDWR + SHUT_WR = syscall.SHUT_WR +) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go new file mode 100644 index 0000000000..76ec031efa --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go @@ -0,0 +1,10 @@ +//go:build plan9 || js + +package sock + +// plan9/js doesn't declare these constants +const ( + SHUT_RD = 1 << iota + SHUT_WR + SHUT_RDWR = SHUT_RD | SHUT_WR +) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go b/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go index f85e2ff24e..332a952626 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go @@ -48,7 +48,7 @@ type FileEntry struct { IsPreopen bool // FS is the filesystem associated with the pre-open. - FS fsapi.FS + FS sys.FS // File is always non-nil. File fsapi.File @@ -91,7 +91,7 @@ func (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) { return f.direntCache, 0 } -// DirentCache is a caching abstraction of fsapi.File Readdir. +// DirentCache is a caching abstraction of sys.File Readdir. // // This is special-cased for "wasi_snapshot_preview1.fd_readdir", and may be // unneeded, or require changes, to support preview1 or preview2. @@ -99,7 +99,7 @@ func (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) { // described below, any may need to be re-read. This accepts any positions // in the cache, rather than track the position of the last dirent. // - dot entries ("." and "..") must be returned. See /RATIONALE.md for why. -// - An fsapi.Dirent Name is variable length, it could exceed memory size and +// - An sys.Dirent Name is variable length, it could exceed memory size and // need to be re-read. // - Multiple dirents may be returned. It is more efficient to read from the // underlying file in bulk vs one-at-a-time. @@ -110,17 +110,17 @@ func (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) { // approach is sometimes called a sliding window. type DirentCache struct { // f is the underlying file - f fsapi.File + f sys.File // dotEntries are the "." and ".." entries added when the directory is // initialized. - dotEntries []fsapi.Dirent + dotEntries []sys.Dirent // dirents are the potentially unread directory entries. // // Internal detail: nil is different from zero length. Zero length is an // exhausted directory (eof). nil means the re-read. - dirents []fsapi.Dirent + dirents []sys.Dirent // countRead is the total count of dirents read since last rewind. countRead uint64 @@ -132,28 +132,28 @@ type DirentCache struct { } // synthesizeDotEntries generates a slice of the two elements "." and "..". -func synthesizeDotEntries(f *FileEntry) ([]fsapi.Dirent, sys.Errno) { +func synthesizeDotEntries(f *FileEntry) ([]sys.Dirent, sys.Errno) { dotIno, errno := f.File.Ino() if errno != 0 { return nil, errno } - result := [2]fsapi.Dirent{} - result[0] = fsapi.Dirent{Name: ".", Ino: dotIno, Type: fs.ModeDir} + result := [2]sys.Dirent{} + result[0] = sys.Dirent{Name: ".", Ino: dotIno, Type: fs.ModeDir} // See /RATIONALE.md for why we don't attempt to get an inode for ".." and // why in wasi-libc this won't fan-out either. - result[1] = fsapi.Dirent{Name: "..", Ino: 0, Type: fs.ModeDir} + result[1] = sys.Dirent{Name: "..", Ino: 0, Type: fs.ModeDir} return result[:], 0 } // exhaustedDirents avoids allocating empty slices. -var exhaustedDirents = [0]fsapi.Dirent{} +var exhaustedDirents = [0]sys.Dirent{} -// Read is similar to and returns the same errors as `Readdir` on fsapi.File. +// Read is similar to and returns the same errors as `Readdir` on sys.File. // The main difference is this caches entries returned, resulting in multiple // valid positions to read from. // // When zero, `pos` means rewind to the beginning of this directory. This -// implies a rewind (Seek to zero on the underlying fsapi.File), unless the +// implies a rewind (Seek to zero on the underlying sys.File), unless the // initial entries are still cached. // // When non-zero, `pos` is the zero based index of all dirents returned since @@ -162,9 +162,9 @@ var exhaustedDirents = [0]fsapi.Dirent{} // described on DirentCache documentation. // // Up to `n` entries are cached and returned. When `n` exceeds the cache, the -// difference are read from the underlying fsapi.File via `Readdir`. EOF is +// difference are read from the underlying sys.File via `Readdir`. EOF is // when `len(dirents)` returned are less than `n`. -func (d *DirentCache) Read(pos uint64, n uint32) (dirents []fsapi.Dirent, errno sys.Errno) { +func (d *DirentCache) Read(pos uint64, n uint32) (dirents []sys.Dirent, errno sys.Errno) { switch { case pos > d.countRead: // farther than read or negative coerced to uint64. return nil, sys.ENOENT @@ -239,7 +239,7 @@ func (d *DirentCache) Read(pos uint64, n uint32) (dirents []fsapi.Dirent, errno } // cachedDirents returns up to `n` dirents from the cache. -func (d *DirentCache) cachedDirents(n uint32) []fsapi.Dirent { +func (d *DirentCache) cachedDirents(n uint32) []sys.Dirent { direntCount := uint32(len(d.dirents)) switch { case direntCount == 0: @@ -252,7 +252,7 @@ func (d *DirentCache) cachedDirents(n uint32) []fsapi.Dirent { type FSContext struct { // rootFS is the root ("/") mount. - rootFS fsapi.FS + rootFS sys.FS // openedFiles is a map of file descriptor numbers (>=FdPreopen) to open files // (or directories) and defaults to empty. @@ -269,9 +269,9 @@ type FileTable = descriptor.Table[int32, *FileEntry] // // TODO: This is only used by GOOS=js and tests: Remove when we remove GOOS=js // (after Go 1.22 is released). -func (c *FSContext) RootFS() fsapi.FS { +func (c *FSContext) RootFS() sys.FS { if rootFS := c.rootFS; rootFS == nil { - return fsapi.UnimplementedFS{} + return sys.UnimplementedFS{} } else { return rootFS } @@ -284,11 +284,11 @@ func (c *FSContext) LookupFile(fd int32) (*FileEntry, bool) { // OpenFile opens the file into the table and returns its file descriptor. // The result must be closed by CloseFile or Close. -func (c *FSContext) OpenFile(fs fsapi.FS, path string, flag fsapi.Oflag, perm fs.FileMode) (int32, sys.Errno) { +func (c *FSContext) OpenFile(fs sys.FS, path string, flag sys.Oflag, perm fs.FileMode) (int32, sys.Errno) { if f, errno := fs.OpenFile(path, flag, perm); errno != 0 { return 0, errno } else { - fe := &FileEntry{FS: fs, File: f} + fe := &FileEntry{FS: fs, File: fsapi.Adapt(f)} if path == "/" || path == "." { fe.Name = "" } else { @@ -330,8 +330,8 @@ func (c *FSContext) Renumber(from, to int32) sys.Errno { return 0 } -// SockAccept accepts a socketapi.TCPConn into the file table and returns -// its file descriptor. +// SockAccept accepts a sock.TCPConn into the file table and returns its file +// descriptor. func (c *FSContext) SockAccept(sockFD int32, nonblock bool) (int32, sys.Errno) { var sock socketapi.TCPSock if e, ok := c.LookupFile(sockFD); !ok || !e.IsPreopen { @@ -340,18 +340,20 @@ func (c *FSContext) SockAccept(sockFD int32, nonblock bool) (int32, sys.Errno) { return 0, sys.EBADF // Not a sock } - var conn socketapi.TCPConn - var errno sys.Errno - if conn, errno = sock.Accept(); errno != 0 { + conn, errno := sock.Accept() + if errno != 0 { return 0, errno - } else if nonblock { - if errno = conn.SetNonblock(true); errno != 0 { + } + + fe := &FileEntry{File: fsapi.Adapt(conn)} + + if nonblock { + if errno = fe.File.SetNonblock(true); errno != 0 { _ = conn.Close() return 0, errno } } - fe := &FileEntry{File: conn} if newFD, ok := c.openedFiles.Insert(fe); !ok { return 0, sys.EBADF } else { @@ -391,7 +393,7 @@ func (c *FSContext) Close() (err error) { func (c *Context) InitFSContext( stdin io.Reader, stdout, stderr io.Writer, - fs []fsapi.FS, guestPaths []string, + fs []sys.FS, guestPaths []string, tcpListeners []*net.TCPListener, ) (err error) { inFile, err := stdinFileEntry(stdin) @@ -427,7 +429,7 @@ func (c *Context) InitFSContext( } for _, tl := range tcpListeners { - c.fsc.openedFiles.Insert(&FileEntry{IsPreopen: true, File: sysfs.NewTCPListenerFile(tl)}) + c.fsc.openedFiles.Insert(&FileEntry{IsPreopen: true, File: fsapi.Adapt(sysfs.NewTCPListenerFile(tl))}) } return nil } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go b/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go index 011a5a4dc5..fe233d29ea 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go @@ -1,126 +1,124 @@ package sys import ( - "syscall" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/sys" ) -// compile-time check to ensure lazyDir implements fsapi.File. -var _ fsapi.File = (*lazyDir)(nil) +// compile-time check to ensure lazyDir implements sys.File. +var _ experimentalsys.File = (*lazyDir)(nil) type lazyDir struct { - fsapi.DirFile + experimentalsys.DirFile - fs fsapi.FS - f fsapi.File + fs experimentalsys.FS + f experimentalsys.File } -// Dev implements the same method as documented on fsapi.File -func (r *lazyDir) Dev() (uint64, experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Dev implements the same method as documented on sys.File +func (d *lazyDir) Dev() (uint64, experimentalsys.Errno) { + if f, ok := d.file(); !ok { return 0, experimentalsys.EBADF } else { return f.Dev() } } -// Ino implements the same method as documented on fsapi.File -func (r *lazyDir) Ino() (sys.Inode, experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Ino implements the same method as documented on sys.File +func (d *lazyDir) Ino() (sys.Inode, experimentalsys.Errno) { + if f, ok := d.file(); !ok { return 0, experimentalsys.EBADF } else { return f.Ino() } } -// IsDir implements the same method as documented on fsapi.File -func (r *lazyDir) IsDir() (bool, experimentalsys.Errno) { +// IsDir implements the same method as documented on sys.File +func (d *lazyDir) IsDir() (bool, experimentalsys.Errno) { // Note: we don't return a constant because we don't know if this is really // backed by a dir, until the first call. - if f, ok := r.file(); !ok { + if f, ok := d.file(); !ok { return false, experimentalsys.EBADF } else { return f.IsDir() } } -// IsAppend implements the same method as documented on fsapi.File -func (r *lazyDir) IsAppend() bool { +// IsAppend implements the same method as documented on sys.File +func (d *lazyDir) IsAppend() bool { return false } -// SetAppend implements the same method as documented on fsapi.File -func (r *lazyDir) SetAppend(bool) experimentalsys.Errno { +// SetAppend implements the same method as documented on sys.File +func (d *lazyDir) SetAppend(bool) experimentalsys.Errno { return experimentalsys.EISDIR } -// Seek implements the same method as documented on fsapi.File -func (r *lazyDir) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Seek implements the same method as documented on sys.File +func (d *lazyDir) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { + if f, ok := d.file(); !ok { return 0, experimentalsys.EBADF } else { return f.Seek(offset, whence) } } -// Stat implements the same method as documented on fsapi.File -func (r *lazyDir) Stat() (sys.Stat_t, experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Stat implements the same method as documented on sys.File +func (d *lazyDir) Stat() (sys.Stat_t, experimentalsys.Errno) { + if f, ok := d.file(); !ok { return sys.Stat_t{}, experimentalsys.EBADF } else { return f.Stat() } } -// Readdir implements the same method as documented on fsapi.File -func (r *lazyDir) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Readdir implements the same method as documented on sys.File +func (d *lazyDir) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { + if f, ok := d.file(); !ok { return nil, experimentalsys.EBADF } else { return f.Readdir(n) } } -// Sync implements the same method as documented on fsapi.File -func (r *lazyDir) Sync() experimentalsys.Errno { - if f, ok := r.file(); !ok { +// Sync implements the same method as documented on sys.File +func (d *lazyDir) Sync() experimentalsys.Errno { + if f, ok := d.file(); !ok { return experimentalsys.EBADF } else { return f.Sync() } } -// Datasync implements the same method as documented on fsapi.File -func (r *lazyDir) Datasync() experimentalsys.Errno { - if f, ok := r.file(); !ok { +// Datasync implements the same method as documented on sys.File +func (d *lazyDir) Datasync() experimentalsys.Errno { + if f, ok := d.file(); !ok { return experimentalsys.EBADF } else { return f.Datasync() } } -// Utimens implements the same method as documented on fsapi.File -func (r *lazyDir) Utimens(times *[2]syscall.Timespec) experimentalsys.Errno { - if f, ok := r.file(); !ok { +// Utimens implements the same method as documented on sys.File +func (d *lazyDir) Utimens(atim, mtim int64) experimentalsys.Errno { + if f, ok := d.file(); !ok { return experimentalsys.EBADF } else { - return f.Utimens(times) + return f.Utimens(atim, mtim) } } // file returns the underlying file or false if it doesn't exist. -func (r *lazyDir) file() (fsapi.File, bool) { - if f := r.f; r.f != nil { +func (d *lazyDir) file() (experimentalsys.File, bool) { + if f := d.f; d.f != nil { return f, true } var errno experimentalsys.Errno - r.f, errno = r.fs.OpenFile(".", fsapi.O_RDONLY, 0) + d.f, errno = d.fs.OpenFile(".", experimentalsys.O_RDONLY, 0) switch errno { case 0: - return r.f, true + return d.f, true case experimentalsys.ENOENT: return nil, false default: @@ -129,10 +127,25 @@ func (r *lazyDir) file() (fsapi.File, bool) { } // Close implements fs.File -func (r *lazyDir) Close() experimentalsys.Errno { - f := r.f +func (d *lazyDir) Close() experimentalsys.Errno { + f := d.f if f == nil { return 0 // never opened } return f.Close() } + +// IsNonblock implements the same method as documented on fsapi.File +func (d *lazyDir) IsNonblock() bool { + return false +} + +// SetNonblock implements the same method as documented on fsapi.File +func (d *lazyDir) SetNonblock(bool) experimentalsys.Errno { + return experimentalsys.EISDIR +} + +// Poll implements the same method as documented on fsapi.File +func (d *lazyDir) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) { + return false, experimentalsys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go b/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go index b153e32c19..32c33661eb 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go @@ -3,7 +3,6 @@ package sys import ( "io" "os" - "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" @@ -19,7 +18,7 @@ type StdinFile struct { io.Reader } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *StdinFile) Read(buf []byte) (int, experimentalsys.Errno) { n, err := f.Reader.Read(buf) return n, experimentalsys.UnwrapOSError(err) @@ -31,7 +30,7 @@ type writerFile struct { w io.Writer } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *writerFile) Write(buf []byte) (int, experimentalsys.Errno) { n, err := f.w.Write(buf) return n, experimentalsys.UnwrapOSError(err) @@ -44,13 +43,16 @@ type noopStdinFile struct { noopStdioFile } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (noopStdinFile) Read([]byte) (int, experimentalsys.Errno) { return 0, 0 // Always EOF } -// PollRead implements the same method as documented on fsapi.File -func (noopStdinFile) PollRead(*time.Duration) (ready bool, errno experimentalsys.Errno) { +// Poll implements the same method as documented on fsapi.File +func (noopStdinFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) { + if flag != fsapi.POLLIN { + return false, experimentalsys.ENOTSUP + } return true, 0 // always ready to read nothing } @@ -60,28 +62,43 @@ type noopStdoutFile struct { noopStdioFile } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (noopStdoutFile) Write(buf []byte) (int, experimentalsys.Errno) { return len(buf), 0 // same as io.Discard } type noopStdioFile struct { - fsapi.UnimplementedFile + experimentalsys.UnimplementedFile } -// Stat implements the same method as documented on fsapi.File +// Stat implements the same method as documented on sys.File func (noopStdioFile) Stat() (sys.Stat_t, experimentalsys.Errno) { return sys.Stat_t{Mode: modeDevice, Nlink: 1}, 0 } -// IsDir implements the same method as documented on fsapi.File +// IsDir implements the same method as documented on sys.File func (noopStdioFile) IsDir() (bool, experimentalsys.Errno) { return false, 0 } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (noopStdioFile) Close() (errno experimentalsys.Errno) { return } +// IsNonblock implements the same method as documented on fsapi.File +func (noopStdioFile) IsNonblock() bool { + return false +} + +// SetNonblock implements the same method as documented on fsapi.File +func (noopStdioFile) SetNonblock(bool) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Poll implements the same method as documented on fsapi.File +func (noopStdioFile) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) { + return false, experimentalsys.ENOSYS +} + func stdinFileEntry(r io.Reader) (*FileEntry, error) { if r == nil { return &FileEntry{Name: "stdin", IsPreopen: true, File: &noopStdinFile{}}, nil diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go b/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go index aedd7c7035..12279ee495 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go @@ -7,7 +7,7 @@ import ( "net" "time" - "github.com/tetratelabs/wazero/internal/fsapi" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/sys" ) @@ -110,11 +110,11 @@ func (c *Context) RandSource() io.Reader { } // DefaultContext returns Context with no values set except a possible nil -// fsapi.FS. +// sys.FS. // // Note: This is only used for testing. -func DefaultContext(fs fsapi.FS) *Context { - if sysCtx, err := NewContext(0, nil, nil, nil, nil, nil, nil, nil, 0, nil, 0, nil, nil, []fsapi.FS{fs}, []string{""}, nil); err != nil { +func DefaultContext(fs experimentalsys.FS) *Context { + if sysCtx, err := NewContext(0, nil, nil, nil, nil, nil, nil, nil, 0, nil, 0, nil, nil, []experimentalsys.FS{fs}, []string{""}, nil); err != nil { panic(fmt.Errorf("BUG: DefaultContext should never error: %w", err)) } else { return sysCtx @@ -135,7 +135,7 @@ func NewContext( nanotimeResolution sys.ClockResolution, nanosleep sys.Nanosleep, osyield sys.Osyield, - fs []fsapi.FS, guestPaths []string, + fs []experimentalsys.FS, guestPaths []string, tcpListeners []*net.TCPListener, ) (sysCtx *Context, err error) { sysCtx = &Context{args: args, environ: environ} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go index 75d70888c8..51a9a54804 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go @@ -6,45 +6,39 @@ import ( "path" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/sys" ) -// Adapt adapts the input to fsapi.FS unless it is already one. Use NewDirFS instead -// of os.DirFS as it handles interop issues such as windows support. -// -// Note: This performs no flag verification on OpenFile. fsapi.FS cannot read -// flags as there is no parameter to pass them through with. Moreover, fsapi.FS -// documentation does not require the file to be present. In summary, we can't -// enforce flag behavior. -func Adapt(fs fs.FS) fsapi.FS { - if fs == nil { - return fsapi.UnimplementedFS{} - } - if sys, ok := fs.(fsapi.FS); ok { - return sys - } - return &adapter{fs: fs} +type AdaptFS struct { + FS fs.FS } -type adapter struct { - fsapi.UnimplementedFS - fs fs.FS +// String implements fmt.Stringer +func (a *AdaptFS) String() string { + return fmt.Sprintf("%v", a.FS) } -// String implements fmt.Stringer -func (a *adapter) String() string { - return fmt.Sprintf("%v", a.fs) +// OpenFile implements the same method as documented on sys.FS +func (a *AdaptFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(a.FS, cleanPath(path), flag, perm) } -// OpenFile implements the same method as documented on fsapi.FS -func (a *adapter) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(a.fs, cleanPath(path), flag, perm) +// Lstat implements the same method as documented on sys.FS +func (a *AdaptFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { + // At this time, we make the assumption sys.FS instances do not support + // symbolic links, therefore Lstat is the same as Stat. This is obviously + // not true, but until FS.FS has a solid story for how to handle symlinks, + // we are better off not making a decision that would be difficult to + // revert later on. + // + // For further discussions on the topic, see: + // https://github.com/golang/go/issues/49580 + return a.Stat(path) } -// Stat implements the same method as documented on fsapi.FS -func (a *adapter) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { - f, errno := a.OpenFile(path, fsapi.O_RDONLY, 0) +// Stat implements the same method as documented on sys.FS +func (a *AdaptFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { + f, errno := a.OpenFile(path, experimentalsys.O_RDONLY, 0) if errno != 0 { return sys.Stat_t{}, errno } @@ -52,17 +46,49 @@ func (a *adapter) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { return f.Stat() } -// Lstat implements the same method as documented on fsapi.FS -func (a *adapter) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { - // At this time, we make the assumption that fsapi.FS instances do not support - // symbolic links, therefore Lstat is the same as Stat. This is obviously - // not true but until fsapi.FS has a solid story for how to handle symlinks we - // are better off not making a decision that would be difficult to revert - // later on. - // - // For further discussions on the topic, see: - // https://github.com/golang/go/issues/49580 - return a.Stat(path) +// Readlink implements the same method as documented on sys.FS +func (a *AdaptFS) Readlink(string) (string, experimentalsys.Errno) { + return "", experimentalsys.ENOSYS +} + +// Mkdir implements the same method as documented on sys.FS +func (a *AdaptFS) Mkdir(string, fs.FileMode) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Chmod implements the same method as documented on sys.FS +func (a *AdaptFS) Chmod(string, fs.FileMode) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Rename implements the same method as documented on sys.FS +func (a *AdaptFS) Rename(string, string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Rmdir implements the same method as documented on sys.FS +func (a *AdaptFS) Rmdir(string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Link implements the same method as documented on sys.FS +func (a *AdaptFS) Link(string, string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Symlink implements the same method as documented on sys.FS +func (a *AdaptFS) Symlink(string, string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Unlink implements the same method as documented on sys.FS +func (a *AdaptFS) Unlink(string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Utimens implements the same method as documented on sys.FS +func (a *AdaptFS) Utimens(string, int64, int64) experimentalsys.Errno { + return experimentalsys.ENOSYS } func cleanPath(name string) string { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go index 5a217394b3..f9823287cf 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go @@ -4,15 +4,14 @@ import ( "io" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) -func adjustReaddirErr(f fsapi.File, isClosed bool, err error) sys.Errno { +func adjustReaddirErr(f sys.File, isClosed bool, err error) sys.Errno { if err == io.EOF { return 0 // e.g. Readdir on darwin returns io.EOF, but linux doesn't. } else if errno := sys.UnwrapOSError(err); errno != 0 { errno = dirError(f, isClosed, errno) - // Comply with errors allowed on fsapi.File Readdir + // Comply with errors allowed on sys.File Readdir switch errno { case sys.EINVAL: // os.File Readdir can return this return sys.EBADF diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go index c908d6c550..05d5b647ea 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go @@ -3,15 +3,13 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/sys" ) -func NewDirFS(dir string) fsapi.FS { +func DirFS(dir string) experimentalsys.FS { return &dirFS{ dir: dir, cleanedDir: ensureTrailingPathSeparator(dir), @@ -25,8 +23,11 @@ func ensureTrailingPathSeparator(dir string) string { return dir } +// dirFS is not exported because the input fields must be maintained together. +// This is likely why os.DirFS doesn't, either! type dirFS struct { - fsapi.UnimplementedFS + experimentalsys.UnimplementedFS + dir string // cleanedDir is for easier OS-specific concatenation, as it always has // a trailing path separator. @@ -38,22 +39,22 @@ func (d *dirFS) String() string { return d.dir } -// OpenFile implements the same method as documented on fsapi.FS -func (d *dirFS) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { +// OpenFile implements the same method as documented on sys.FS +func (d *dirFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { return OpenOSFile(d.join(path), flag, perm) } -// Lstat implements the same method as documented on fsapi.FS +// Lstat implements the same method as documented on sys.FS func (d *dirFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { return lstat(d.join(path)) } -// Stat implements the same method as documented on fsapi.FS +// Stat implements the same method as documented on sys.FS func (d *dirFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { return stat(d.join(path)) } -// Mkdir implements the same method as documented on fsapi.FS +// Mkdir implements the same method as documented on sys.FS func (d *dirFS) Mkdir(path string, perm fs.FileMode) (errno experimentalsys.Errno) { err := os.Mkdir(d.join(path), perm) if errno = experimentalsys.UnwrapOSError(err); errno == experimentalsys.ENOTDIR { @@ -62,19 +63,19 @@ func (d *dirFS) Mkdir(path string, perm fs.FileMode) (errno experimentalsys.Errn return } -// Chmod implements the same method as documented on fsapi.FS +// Chmod implements the same method as documented on sys.FS func (d *dirFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { err := os.Chmod(d.join(path), perm) return experimentalsys.UnwrapOSError(err) } -// Rename implements the same method as documented on fsapi.FS +// Rename implements the same method as documented on sys.FS func (d *dirFS) Rename(from, to string) experimentalsys.Errno { from, to = d.join(from), d.join(to) return rename(from, to) } -// Readlink implements the same method as documented on fsapi.FS +// Readlink implements the same method as documented on sys.FS func (d *dirFS) Readlink(path string) (string, experimentalsys.Errno) { // Note: do not use syscall.Readlink as that causes race on Windows. // In any case, syscall.Readlink does almost the same logic as os.Readlink. @@ -85,28 +86,23 @@ func (d *dirFS) Readlink(path string) (string, experimentalsys.Errno) { return platform.ToPosixPath(dst), 0 } -// Link implements the same method as documented on fsapi.FS +// Link implements the same method as documented on sys.FS func (d *dirFS) Link(oldName, newName string) experimentalsys.Errno { err := os.Link(d.join(oldName), d.join(newName)) return experimentalsys.UnwrapOSError(err) } -// Rmdir implements the same method as documented on fsapi.FS +// Rmdir implements the same method as documented on sys.FS func (d *dirFS) Rmdir(path string) experimentalsys.Errno { return rmdir(d.join(path)) } -func rmdir(path string) experimentalsys.Errno { - err := syscall.Rmdir(path) - return experimentalsys.UnwrapOSError(err) -} - -// Unlink implements the same method as documented on fsapi.FS +// Unlink implements the same method as documented on sys.FS func (d *dirFS) Unlink(path string) (err experimentalsys.Errno) { return unlink(d.join(path)) } -// Symlink implements the same method as documented on fsapi.FS +// Symlink implements the same method as documented on sys.FS func (d *dirFS) Symlink(oldName, link string) experimentalsys.Errno { // Note: do not resolve `oldName` relative to this dirFS. The link result is always resolved // when dereference the `link` on its usage (e.g. readlink, read, etc). @@ -115,9 +111,9 @@ func (d *dirFS) Symlink(oldName, link string) experimentalsys.Errno { return experimentalsys.UnwrapOSError(err) } -// Utimens implements the same method as documented on fsapi.FS -func (d *dirFS) Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { - return Utimens(d.join(path), times) +// Utimens implements the same method as documented on sys.FS +func (d *dirFS) Utimens(path string, atim, mtim int64) experimentalsys.Errno { + return utimens(d.join(path), atim, mtim) } func (d *dirFS) join(path string) string { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go index b3285cab65..9a77205bb5 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go @@ -4,6 +4,7 @@ import ( "io" "io/fs" "os" + "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" @@ -20,11 +21,11 @@ func NewStdioFile(stdin bool, f fs.File) (fsapi.File, error) { } else { mode = st.Mode() } - var flag fsapi.Oflag + var flag experimentalsys.Oflag if stdin { - flag = fsapi.O_RDONLY + flag = experimentalsys.O_RDONLY } else { - flag = fsapi.O_WRONLY + flag = experimentalsys.O_WRONLY } var file fsapi.File if of, ok := f.(*os.File); ok { @@ -36,14 +37,14 @@ func NewStdioFile(stdin bool, f fs.File) (fsapi.File, error) { return &stdioFile{File: file, st: sys.Stat_t{Mode: mode, Nlink: 1}}, nil } -func OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (*os.File, experimentalsys.Errno) { - if flag&fsapi.O_DIRECTORY != 0 && flag&(fsapi.O_WRONLY|fsapi.O_RDWR) != 0 { +func OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (*os.File, experimentalsys.Errno) { + if flag&experimentalsys.O_DIRECTORY != 0 && flag&(experimentalsys.O_WRONLY|experimentalsys.O_RDWR) != 0 { return nil, experimentalsys.EISDIR // invalid to open a directory writeable } return openFile(path, flag, perm) } -func OpenOSFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { +func OpenOSFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { f, errno := OpenFile(path, flag, perm) if errno != 0 { return nil, errno @@ -51,8 +52,8 @@ func OpenOSFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, ex return newOsFile(path, flag, perm, f), 0 } -func OpenFSFile(fs fs.FS, path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { - if flag&fsapi.O_DIRECTORY != 0 && flag&(fsapi.O_WRONLY|fsapi.O_RDWR) != 0 { +func OpenFSFile(fs fs.FS, path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { + if flag&experimentalsys.O_DIRECTORY != 0 && flag&(experimentalsys.O_WRONLY|experimentalsys.O_RDWR) != 0 { return nil, experimentalsys.EISDIR // invalid to open a directory writeable } f, err := fs.Open(path) @@ -60,7 +61,7 @@ func OpenFSFile(fs fs.FS, path string, flag fsapi.Oflag, perm fs.FileMode) (fsap return nil, errno } // Don't return an os.File because the path is not absolute. osFile needs - // the path to be real and certain fs.File impls are subrooted. + // the path to be real and certain FS.File impls are subrooted. return &fsFile{fs: fs, name: path, file: f}, 0 } @@ -94,7 +95,7 @@ func (f *stdioFile) Close() experimentalsys.Errno { // implementation. Notably, this does not have access to the full file path. // so certain operations can't be supported, such as inode lookups on Windows. type fsFile struct { - fsapi.UnimplementedFile + experimentalsys.UnimplementedFile // fs is the file-system that opened the file, or nil when wrapped for // pre-opens like stdio. @@ -120,17 +121,17 @@ type fsFile struct { } type cachedStat struct { - // dev is the same as fsapi.Stat_t Dev. + // dev is the same as sys.Stat_t Dev. dev uint64 - // dev is the same as fsapi.Stat_t Ino. + // dev is the same as sys.Stat_t Ino. ino sys.Inode - // isDir is fsapi.Stat_t Mode masked with fs.ModeDir + // isDir is sys.Stat_t Mode masked with fs.ModeDir isDir bool } -// cachedStat returns the cacheable parts of fsapi.Stat_t or an error if they +// cachedStat returns the cacheable parts of sys.Stat_t or an error if they // couldn't be retrieved. func (f *fsFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno experimentalsys.Errno) { if f.cachedSt == nil { @@ -141,35 +142,35 @@ func (f *fsFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno expe return f.cachedSt.dev, f.cachedSt.ino, f.cachedSt.isDir, 0 } -// Dev implements the same method as documented on fsapi.File +// Dev implements the same method as documented on sys.File func (f *fsFile) Dev() (uint64, experimentalsys.Errno) { dev, _, _, errno := f.cachedStat() return dev, errno } -// Ino implements the same method as documented on fsapi.File +// Ino implements the same method as documented on sys.File func (f *fsFile) Ino() (sys.Inode, experimentalsys.Errno) { _, ino, _, errno := f.cachedStat() return ino, errno } -// IsDir implements the same method as documented on fsapi.File +// IsDir implements the same method as documented on sys.File func (f *fsFile) IsDir() (bool, experimentalsys.Errno) { _, _, isDir, errno := f.cachedStat() return isDir, errno } -// IsAppend implements the same method as documented on fsapi.File +// IsAppend implements the same method as documented on sys.File func (f *fsFile) IsAppend() bool { return false } -// SetAppend implements the same method as documented on fsapi.File +// SetAppend implements the same method as documented on sys.File func (f *fsFile) SetAppend(bool) (errno experimentalsys.Errno) { return fileError(f, f.closed, experimentalsys.ENOSYS) } -// Stat implements the same method as documented on fsapi.File +// Stat implements the same method as documented on sys.File func (f *fsFile) Stat() (sys.Stat_t, experimentalsys.Errno) { if f.closed { return sys.Stat_t{}, experimentalsys.EBADF @@ -185,7 +186,7 @@ func (f *fsFile) Stat() (sys.Stat_t, experimentalsys.Errno) { return st, errno } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *fsFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { if n, errno = read(f.file, buf); errno != 0 { // Defer validation overhead until we've already had an error. @@ -194,7 +195,7 @@ func (f *fsFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pread implements the same method as documented on fsapi.File +// Pread implements the same method as documented on sys.File func (f *fsFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if ra, ok := f.file.(io.ReaderAt); ok { if n, errno = pread(ra, buf, off); errno != 0 { @@ -233,7 +234,7 @@ func (f *fsFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errn return } -// Seek implements the same method as documented on fsapi.File +// Seek implements the same method as documented on sys.File func (f *fsFile) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { // If this is a directory, and we're attempting to seek to position zero, // we have to re-open the file to ensure the directory state is reset. @@ -256,12 +257,12 @@ func (f *fsFile) Seek(offset int64, whence int) (newOffset int64, errno experime return } -// Readdir implements the same method as documented on fsapi.File +// Readdir implements the same method as documented on sys.File // // Notably, this uses readdirFile or fs.ReadDirFile if available. This does not // return inodes on windows. -func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { - // Windows lets you Readdir after close, fs.File also may not implement +func (f *fsFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { + // Windows lets you Readdir after close, FS.File also may not implement // close in a meaningful way. read our closed field to return consistent // results. if f.closed { @@ -277,7 +278,7 @@ func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E } if of, ok := f.file.(readdirFile); ok { - // We can't use f.name here because it is the path up to the fsapi.FS, + // We can't use f.name here because it is the path up to the sys.FS, // not necessarily the real path. For this reason, Windows may not be // able to populate inodes. However, Darwin and Linux will. if dirents, errno = readdir(of, "", n); errno != 0 { @@ -286,17 +287,17 @@ func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E return } - // Try with fs.ReadDirFile which is available on api.FS implementations - // like embed:fs. + // Try with FS.ReadDirFile which is available on api.FS implementations + // like embed:FS. if rdf, ok := f.file.(fs.ReadDirFile); ok { entries, e := rdf.ReadDir(n) if errno = adjustReaddirErr(f, f.closed, e); errno != 0 { return } - dirents = make([]fsapi.Dirent, 0, len(entries)) + dirents = make([]experimentalsys.Dirent, 0, len(entries)) for _, e := range entries { // By default, we don't attempt to read inode data - dirents = append(dirents, fsapi.Dirent{Name: e.Name(), Type: e.Type()}) + dirents = append(dirents, experimentalsys.Dirent{Name: e.Name(), Type: e.Type()}) } } else { errno = experimentalsys.EBADF // not a directory @@ -304,7 +305,7 @@ func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E return } -// Write implements the same method as documented on fsapi.File. +// Write implements the same method as documented on sys.File. func (f *fsFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { if w, ok := f.file.(io.Writer); ok { if n, errno = write(w, buf); errno != 0 { @@ -317,7 +318,7 @@ func (f *fsFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pwrite implements the same method as documented on fsapi.File. +// Pwrite implements the same method as documented on sys.File. func (f *fsFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if wa, ok := f.file.(io.WriterAt); ok { if n, errno = pwrite(wa, buf, off); errno != 0 { @@ -330,7 +331,7 @@ func (f *fsFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Err return } -// Close implements the same method as documented on fsapi.File. +// Close implements the same method as documented on sys.File. func (f *fsFile) Close() experimentalsys.Errno { if f.closed { return 0 @@ -343,8 +344,23 @@ func (f *fsFile) close() experimentalsys.Errno { return experimentalsys.UnwrapOSError(f.file.Close()) } +// IsNonblock implements the same method as documented on fsapi.File +func (f *fsFile) IsNonblock() bool { + return false +} + +// SetNonblock implements the same method as documented on fsapi.File +func (f *fsFile) SetNonblock(bool) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Poll implements the same method as documented on fsapi.File +func (f *fsFile) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) { + return false, experimentalsys.ENOSYS +} + // dirError is used for commands that work against a directory, but not a file. -func dirError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { +func dirError(f experimentalsys.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { if vErrno := validate(f, isClosed, false, true); vErrno != 0 { return vErrno } @@ -352,7 +368,7 @@ func dirError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experime } // fileError is used for commands that work against a file, but not a directory. -func fileError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { +func fileError(f experimentalsys.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { if vErrno := validate(f, isClosed, true, false); vErrno != 0 { return vErrno } @@ -360,7 +376,7 @@ func fileError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experim } // validate is used to making syscalls which will fail. -func validate(f fsapi.File, isClosed, wantFile, wantDir bool) experimentalsys.Errno { +func validate(f experimentalsys.File, isClosed, wantFile, wantDir bool) experimentalsys.Errno { if isClosed { return experimentalsys.EBADF } @@ -426,13 +442,13 @@ type readdirFile interface { } // readdir uses readdirFile.Readdir, special casing windows when path !="". -func readdir(f readdirFile, path string, n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { +func readdir(f readdirFile, path string, n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { fis, e := f.Readdir(n) if errno = experimentalsys.UnwrapOSError(e); errno != 0 { return } - dirents = make([]fsapi.Dirent, 0, len(fis)) + dirents = make([]experimentalsys.Dirent, 0, len(fis)) // linux/darwin won't have to fan out to lstat, but windows will. var ino sys.Inode @@ -443,7 +459,7 @@ func readdir(f readdirFile, path string, n int) (dirents []fsapi.Dirent, errno e if ino, errno = inoFromFileInfo(path, t); errno != 0 { return } - dirents = append(dirents, fsapi.Dirent{Name: t.Name(), Ino: ino, Type: t.Mode().Type()}) + dirents = append(dirents, experimentalsys.Dirent{Name: t.Name(), Ino: ino, Type: t.Mode().Type()}) } return } @@ -465,3 +481,40 @@ func pwrite(w io.WriterAt, buf []byte, off int64) (n int, errno experimentalsys. n, err := w.WriteAt(buf, off) return n, experimentalsys.UnwrapOSError(err) } + +func chtimes(path string, atim, mtim int64) (errno experimentalsys.Errno) { //nolint:unused + // When both inputs are omitted, there is nothing to change. + if atim == experimentalsys.UTIME_OMIT && mtim == experimentalsys.UTIME_OMIT { + return + } + + // UTIME_OMIT is expensive until progress is made in Go, as it requires a + // stat to read-back the value to re-apply. + // - https://github.com/golang/go/issues/32558. + // - https://go-review.googlesource.com/c/go/+/219638 (unmerged) + var st sys.Stat_t + if atim == experimentalsys.UTIME_OMIT || mtim == experimentalsys.UTIME_OMIT { + if st, errno = stat(path); errno != 0 { + return + } + } + + var atime, mtime time.Time + if atim == experimentalsys.UTIME_OMIT { + atime = epochNanosToTime(st.Atim) + mtime = epochNanosToTime(mtim) + } else if mtim == experimentalsys.UTIME_OMIT { + atime = epochNanosToTime(atim) + mtime = epochNanosToTime(st.Mtim) + } else { + atime = epochNanosToTime(atim) + mtime = epochNanosToTime(mtim) + } + return experimentalsys.UnwrapOSError(os.Chtimes(path, atime, mtime)) +} + +func epochNanosToTime(epochNanos int64) time.Time { //nolint:unused + seconds := epochNanos / 1e9 + nanos := epochNanos % 1e9 + return time.Unix(seconds, nanos) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go index 6023fa9b76..b27b2bc45f 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go @@ -9,7 +9,6 @@ import ( "runtime" "testing" gofstest "testing/fstest" - "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" @@ -54,7 +53,7 @@ func TestRegularFileSetNonblock(t *testing.T) { defer r.Close() defer w.Close() - rF := newOsFile("", fsapi.O_RDONLY, 0, r) + rF := newOsFile("", experimentalsys.O_RDONLY, 0, r) errno := rF.SetNonblock(true) require.EqualErrno(t, 0, errno) @@ -78,13 +77,13 @@ func TestReadFdNonblock(t *testing.T) { defer w.Close() fd := r.Fd() - err = setNonblock(fd, true) - require.NoError(t, err) + errno := setNonblock(fd, true) + require.EqualErrno(t, 0, errno) // Read from the file without ever writing to it should not block. buf := make([]byte, 8) - _, e := readFd(fd, buf) - require.EqualErrno(t, experimentalsys.EAGAIN, e) + _, errno = readFd(fd, buf) + require.EqualErrno(t, experimentalsys.EAGAIN, errno) } func TestWriteFdNonblock(t *testing.T) { @@ -95,9 +94,9 @@ func TestWriteFdNonblock(t *testing.T) { defer w.Close() fd := w.Fd() - err = setNonblock(fd, true) + errno := setNonblock(fd, true) - require.NoError(t, err) + require.EqualErrno(t, 0, errno) // Create a buffer (the content is not relevant) buf := make([]byte, 1024) @@ -125,7 +124,7 @@ func TestFileSetAppend(t *testing.T) { require.NoError(t, os.WriteFile(fPath, []byte("0123456789"), 0o600)) // Open without APPEND. - f, errno := OpenOSFile(fPath, fsapi.O_RDWR, 0o600) + f, errno := OpenOSFile(fPath, experimentalsys.O_RDWR, 0o600) require.EqualErrno(t, 0, errno) require.False(t, f.IsAppend()) @@ -186,7 +185,7 @@ func TestFileIno(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - d, errno := OpenFSFile(tc.fs, ".", fsapi.O_RDONLY, 0) + d, errno := OpenFSFile(tc.fs, ".", experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -200,7 +199,7 @@ func TestFileIno(t *testing.T) { } t.Run("OS", func(t *testing.T) { - d, errno := OpenOSFile(tmpDir, fsapi.O_RDONLY, 0) + d, errno := OpenOSFile(tmpDir, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -213,16 +212,15 @@ func TestFileIno(t *testing.T) { }) } -// statSetsIno returns true if this will set fsapi.Stat_t Ino on stat. The +// statSetsIno returns true if this will set sys.Stat_t Ino on stat. The // reverse doesn't mean it won't. Rather it is inconsistent. This is needed -// because Windows on Go 1.18 sometimes, but not always returns non-zero inode. +// because Windows on Go 1.19 sometimes, but not always returns non-zero inode. func statSetsIno() bool { if runtime.GOOS != "windows" { return true } else { // Go can read the inode via a Windows file handle, but it is - // inconsistent on Go 1.18. - // TODO: check on 1.19 can! + // inconsistent on Go 1.19. return platform.IsAtLeastGo120 } } @@ -244,7 +242,7 @@ func TestFileIsDir(t *testing.T) { t.Run(tc.name, func(t *testing.T) { t.Run("file", func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, wazeroFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, wazeroFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -254,7 +252,7 @@ func TestFileIsDir(t *testing.T) { }) t.Run("dir", func(t *testing.T) { - d, errno := OpenFSFile(tc.fs, ".", fsapi.O_RDONLY, 0) + d, errno := OpenFSFile(tc.fs, ".", experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -266,7 +264,7 @@ func TestFileIsDir(t *testing.T) { } t.Run("OS dir", func(t *testing.T) { - d, errno := OpenOSFile(t.TempDir(), fsapi.O_RDONLY, 0) + d, errno := OpenOSFile(t.TempDir(), experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -294,7 +292,7 @@ func TestFileReadAndPread(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, wazeroFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, wazeroFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -320,7 +318,9 @@ func TestFileReadAndPread(t *testing.T) { } } -func TestFilePollRead(t *testing.T) { +func TestFilePoll_POLLIN(t *testing.T) { + pflag := fsapi.POLLIN + // Test using os.Pipe as it is known to support poll. r, w, err := os.Pipe() require.NoError(t, err) @@ -330,10 +330,10 @@ func TestFilePollRead(t *testing.T) { rF, err := NewStdioFile(true, r) require.NoError(t, err) buf := make([]byte, 10) - timeout := time.Duration(0) // return immediately + timeout := int32(0) // return immediately // When there's nothing in the pipe, it isn't ready. - ready, errno := rF.PollRead(&timeout) + ready, errno := rF.Poll(pflag, timeout) require.EqualErrno(t, 0, errno) require.False(t, ready) @@ -343,7 +343,7 @@ func TestFilePollRead(t *testing.T) { require.NoError(t, err) // We should now be able to poll ready - ready, errno = rF.PollRead(&timeout) + ready, errno = rF.Poll(pflag, timeout) require.EqualErrno(t, 0, errno) require.True(t, ready) @@ -354,13 +354,32 @@ func TestFilePollRead(t *testing.T) { require.Equal(t, expected, buf[:len(expected)]) } -func requireRead(t *testing.T, f fsapi.File, buf []byte) { +func TestFilePoll_POLLOUT(t *testing.T) { + pflag := fsapi.POLLOUT + + // Test using os.Pipe as it is known to support poll. + r, w, err := os.Pipe() + require.NoError(t, err) + defer r.Close() + defer w.Close() + + wF, err := NewStdioFile(false, w) + require.NoError(t, err) + timeout := int32(0) // return immediately + + // We don't yet implement write blocking. + ready, errno := wF.Poll(pflag, timeout) + require.EqualErrno(t, experimentalsys.ENOTSUP, errno) + require.False(t, ready) +} + +func requireRead(t *testing.T, f experimentalsys.File, buf []byte) { n, errno := f.Read(buf) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) } -func requirePread(t *testing.T, f fsapi.File, buf []byte, off int64) { +func requirePread(t *testing.T, f experimentalsys.File, buf []byte, off int64) { n, errno := f.Pread(buf, off) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) @@ -384,7 +403,7 @@ func TestFileRead_empty(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -417,7 +436,7 @@ func TestFilePread_Unsupported(t *testing.T) { embedFS, err := fs.Sub(testdata, "testdata") require.NoError(t, err) - f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -431,20 +450,20 @@ func TestFileRead_Errors(t *testing.T) { path := path.Join(t.TempDir(), emptyFile) // Open the file write-only - flag := fsapi.O_WRONLY | fsapi.O_CREAT + flag := experimentalsys.O_WRONLY | experimentalsys.O_CREAT f := requireOpenFile(t, path, flag, 0o600) defer f.Close() buf := make([]byte, 5) tests := []struct { name string - fn func(fsapi.File) experimentalsys.Errno + fn func(experimentalsys.File) experimentalsys.Errno }{ - {name: "Read", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Read", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Read(buf) return errno }}, - {name: "Pread", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Pread", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Pread(buf, 0) return errno }}, @@ -470,19 +489,19 @@ func TestFileSeek(t *testing.T) { tests := []struct { name string - openFile func(string) (fsapi.File, experimentalsys.Errno) + openFile func(string) (experimentalsys.File, experimentalsys.Errno) }{ - {name: "fsFile os.DirFS", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(dirFS, name, fsapi.O_RDONLY, 0) + {name: "fsFile os.DirFS", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(dirFS, name, experimentalsys.O_RDONLY, 0) }}, - {name: "fsFile embed.api.FS", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(embedFS, name, fsapi.O_RDONLY, 0) + {name: "fsFile embed.api.FS", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(embedFS, name, experimentalsys.O_RDONLY, 0) }}, - {name: "fsFile fstest.MapFS", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(mapFS, name, fsapi.O_RDONLY, 0) + {name: "fsFile fstest.MapFS", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(mapFS, name, experimentalsys.O_RDONLY, 0) }}, - {name: "osFile", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenOSFile(path.Join(tmpDir, name), fsapi.O_RDONLY, 0o666) + {name: "osFile", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenOSFile(path.Join(tmpDir, name), experimentalsys.O_RDONLY, 0o666) }}, } @@ -560,7 +579,7 @@ func TestFileSeek(t *testing.T) { require.Equal(t, direntCount, len(dirents)) }) - seekToZero := func(f fsapi.File) experimentalsys.Errno { + seekToZero := func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Seek(0, io.SeekStart) return errno } @@ -569,7 +588,7 @@ func TestFileSeek(t *testing.T) { } } -func requireSeek(t *testing.T, f fsapi.File, off int64, whence int) int64 { +func requireSeek(t *testing.T, f experimentalsys.File, off int64, whence int) int64 { n, errno := f.Seek(off, whence) require.EqualErrno(t, 0, errno) return n @@ -591,7 +610,7 @@ func TestFileSeek_empty(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -614,7 +633,7 @@ func TestFileSeek_Unsupported(t *testing.T) { embedFS, err := fs.Sub(testdata, "testdata") require.NoError(t, err) - f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -623,10 +642,10 @@ func TestFileSeek_Unsupported(t *testing.T) { } func TestFileWriteAndPwrite(t *testing.T) { - // fsapi.FS doesn't support writes, and there is no other built-in + // sys.FS doesn't support writes, and there is no other built-in // implementation except os.File. path := path.Join(t.TempDir(), wazeroFile) - f := requireOpenFile(t, path, fsapi.O_RDWR|fsapi.O_CREAT, 0o600) + f := requireOpenFile(t, path, experimentalsys.O_RDWR|experimentalsys.O_CREAT, 0o600) defer f.Close() text := "wazero" @@ -663,36 +682,36 @@ func TestFileWriteAndPwrite(t *testing.T) { require.Equal(t, "wazerowazeroero", string(b)) } -func requireWrite(t *testing.T, f fsapi.File, buf []byte) { +func requireWrite(t *testing.T, f experimentalsys.File, buf []byte) { n, errno := f.Write(buf) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) } -func requirePwrite(t *testing.T, f fsapi.File, buf []byte, off int64) { +func requirePwrite(t *testing.T, f experimentalsys.File, buf []byte, off int64) { n, errno := f.Pwrite(buf, off) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) } func TestFileWrite_empty(t *testing.T) { - // fsapi.FS doesn't support writes, and there is no other built-in + // sys.FS doesn't support writes, and there is no other built-in // implementation except os.File. path := path.Join(t.TempDir(), emptyFile) - f := requireOpenFile(t, path, fsapi.O_RDWR|fsapi.O_CREAT, 0o600) + f := requireOpenFile(t, path, experimentalsys.O_RDWR|experimentalsys.O_CREAT, 0o600) defer f.Close() tests := []struct { name string - fn func(fsapi.File, []byte) (int, experimentalsys.Errno) + fn func(experimentalsys.File, []byte) (int, experimentalsys.Errno) }{ - {name: "Write", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Write", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Write(buf) }}, - {name: "Pwrite from zero", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Pwrite from zero", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Pwrite(buf, 0) }}, - {name: "Pwrite from 3", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Pwrite from 3", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Pwrite(buf, 3) }}, } @@ -719,19 +738,19 @@ func TestFileWrite_Unsupported(t *testing.T) { embedFS, err := fs.Sub(testdata, "testdata") require.NoError(t, err) - // Use fsapi.O_RDWR so that it fails due to type not flags - f, errno := OpenFSFile(&maskFS{embedFS}, wazeroFile, fsapi.O_RDWR, 0) + // Use sys.O_RDWR so that it fails due to type not flags + f, errno := OpenFSFile(&maskFS{embedFS}, wazeroFile, experimentalsys.O_RDWR, 0) require.EqualErrno(t, 0, errno) defer f.Close() tests := []struct { name string - fn func(fsapi.File, []byte) (int, experimentalsys.Errno) + fn func(experimentalsys.File, []byte) (int, experimentalsys.Errno) }{ - {name: "Write", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Write", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Write(buf) }}, - {name: "Pwrite", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Pwrite", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Pwrite(buf, 0) }}, } @@ -756,20 +775,20 @@ func TestFileWrite_Errors(t *testing.T) { require.NoError(t, of.Close()) // Open the file read-only - flag := fsapi.O_RDONLY + flag := experimentalsys.O_RDONLY f := requireOpenFile(t, path, flag, 0o600) defer f.Close() buf := []byte("wazero") tests := []struct { name string - fn func(fsapi.File) experimentalsys.Errno + fn func(experimentalsys.File) experimentalsys.Errno }{ - {name: "Write", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Write", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Write(buf) return errno }}, - {name: "Pwrite", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Pwrite", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Pwrite(buf, 0) return errno }}, @@ -790,30 +809,30 @@ func TestFileWrite_Errors(t *testing.T) { } func TestFileSync_NoError(t *testing.T) { - testSync_NoError(t, fsapi.File.Sync) + testSync_NoError(t, experimentalsys.File.Sync) } func TestFileDatasync_NoError(t *testing.T) { - testSync_NoError(t, fsapi.File.Datasync) + testSync_NoError(t, experimentalsys.File.Datasync) } -func testSync_NoError(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) { +func testSync_NoError(t *testing.T, sync func(experimentalsys.File) experimentalsys.Errno) { roPath := "file_test.go" - ro, errno := OpenFSFile(embedFS, roPath, fsapi.O_RDONLY, 0) + ro, errno := OpenFSFile(embedFS, roPath, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer ro.Close() rwPath := path.Join(t.TempDir(), "datasync") - rw, errno := OpenOSFile(rwPath, fsapi.O_CREAT|fsapi.O_RDWR, 0o600) + rw, errno := OpenOSFile(rwPath, experimentalsys.O_CREAT|experimentalsys.O_RDWR, 0o600) require.EqualErrno(t, 0, errno) defer rw.Close() tests := []struct { name string - f fsapi.File + f experimentalsys.File }{ - {name: "UnimplementedFile", f: fsapi.UnimplementedFile{}}, - {name: "File of read-only fs.File", f: ro}, + {name: "UnimplementedFile", f: experimentalsys.UnimplementedFile{}}, + {name: "File of read-only FS.File", f: ro}, {name: "File of os.File", f: rw}, } @@ -827,20 +846,20 @@ func testSync_NoError(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) } func TestFileSync(t *testing.T) { - testSync(t, fsapi.File.Sync) + testSync(t, experimentalsys.File.Sync) } func TestFileDatasync(t *testing.T) { - testSync(t, fsapi.File.Datasync) + testSync(t, experimentalsys.File.Datasync) } // testSync doesn't guarantee sync works because the operating system may // sync anyway. There is no test in Go for syscall.Fdatasync, but closest is // similar to below. Effectively, this only tests that things don't error. -func testSync(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) { +func testSync(t *testing.T, sync func(experimentalsys.File) experimentalsys.Errno) { // Even though it is invalid, try to sync a directory dPath := t.TempDir() - d := requireOpenFile(t, dPath, fsapi.O_RDONLY, 0) + d := requireOpenFile(t, dPath, experimentalsys.O_RDONLY, 0) defer d.Close() errno := sync(d) @@ -848,7 +867,7 @@ func testSync(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) { fPath := path.Join(dPath, t.Name()) - f := requireOpenFile(t, fPath, fsapi.O_RDWR|fsapi.O_CREAT, 0o600) + f := requireOpenFile(t, fPath, experimentalsys.O_RDWR|experimentalsys.O_CREAT, 0o600) defer f.Close() expected := "hello world!" @@ -929,7 +948,7 @@ func TestFileTruncate(t *testing.T) { }) } - truncateToZero := func(f fsapi.File) experimentalsys.Errno { + truncateToZero := func(f experimentalsys.File) experimentalsys.Errno { return f.Truncate(0) } @@ -965,11 +984,11 @@ func TestFileUtimens(t *testing.T) { testUtimens(t, true) - testEBADFIfFileClosed(t, func(f fsapi.File) experimentalsys.Errno { - return f.Utimens(nil) + testEBADFIfFileClosed(t, func(f experimentalsys.File) experimentalsys.Errno { + return f.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) }) - testEBADFIfDirClosed(t, func(d fsapi.File) experimentalsys.Errno { - return d.Utimens(nil) + testEBADFIfDirClosed(t, func(d experimentalsys.File) experimentalsys.Errno { + return d.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) }) } @@ -997,7 +1016,7 @@ func TestNewStdioFile(t *testing.T) { tests := []struct { name string - f fsapi.File + f experimentalsys.File // Depending on how the tests run, os.Stdin won't necessarily be a char // device. We compare against an os.File, to account for this. expectedType fs.FileMode @@ -1042,9 +1061,9 @@ func TestNewStdioFile(t *testing.T) { } } -func testEBADFIfDirClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Errno) bool { +func testEBADFIfDirClosed(t *testing.T, fn func(experimentalsys.File) experimentalsys.Errno) bool { return t.Run("EBADF if dir closed", func(t *testing.T) { - d := requireOpenFile(t, t.TempDir(), fsapi.O_RDONLY, 0o755) + d := requireOpenFile(t, t.TempDir(), experimentalsys.O_RDONLY, 0o755) // close the directory underneath require.EqualErrno(t, 0, d.Close()) @@ -1053,7 +1072,7 @@ func testEBADFIfDirClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Errn }) } -func testEBADFIfFileClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Errno) bool { +func testEBADFIfFileClosed(t *testing.T, fn func(experimentalsys.File) experimentalsys.Errno) bool { return t.Run("EBADF if file closed", func(t *testing.T) { tmpDir := t.TempDir() @@ -1066,24 +1085,24 @@ func testEBADFIfFileClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Err }) } -func testEISDIR(t *testing.T, fn func(fsapi.File) experimentalsys.Errno) bool { +func testEISDIR(t *testing.T, fn func(experimentalsys.File) experimentalsys.Errno) bool { return t.Run("EISDIR if directory", func(t *testing.T) { - f := requireOpenFile(t, os.TempDir(), fsapi.O_RDONLY|fsapi.O_DIRECTORY, 0o666) + f := requireOpenFile(t, os.TempDir(), experimentalsys.O_RDONLY|experimentalsys.O_DIRECTORY, 0o666) defer f.Close() require.EqualErrno(t, experimentalsys.EISDIR, fn(f)) }) } -func openForWrite(t *testing.T, path string, content []byte) fsapi.File { +func openForWrite(t *testing.T, path string, content []byte) experimentalsys.File { require.NoError(t, os.WriteFile(path, content, 0o0666)) - f := requireOpenFile(t, path, fsapi.O_RDWR, 0o666) + f := requireOpenFile(t, path, experimentalsys.O_RDWR, 0o666) _, errno := f.Write(content) require.EqualErrno(t, 0, errno) return f } -func requireOpenFile(t *testing.T, path string, flag fsapi.Oflag, perm fs.FileMode) fsapi.File { +func requireOpenFile(t *testing.T, path string, flag experimentalsys.Oflag, perm fs.FileMode) experimentalsys.File { f, errno := OpenOSFile(path, flag, perm) require.EqualErrno(t, 0, errno) return f diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go index 4ed51a9fe9..92eaf35423 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go @@ -1,4 +1,4 @@ -//go:build unix || darwin || linux +//go:build unix package sysfs @@ -13,6 +13,11 @@ const ( nonBlockingFileWriteSupported = true ) +func rmdir(path string) sys.Errno { + err := syscall.Rmdir(path) + return sys.UnwrapOSError(err) +} + // readFd exposes syscall.Read. func readFd(fd uintptr, buf []byte) (int, sys.Errno) { if len(buf) == 0 { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go index eb8b5537fc..e74a8e4dd9 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go @@ -1,14 +1,22 @@ -//go:build !unix && !linux && !darwin && !windows +//go:build !unix && !windows package sysfs -import "github.com/tetratelabs/wazero/experimental/sys" +import ( + "os" + + "github.com/tetratelabs/wazero/experimental/sys" +) const ( nonBlockingFileReadSupported = false nonBlockingFileWriteSupported = false ) +func rmdir(path string) sys.Errno { + return sys.UnwrapOSError(os.Remove(path)) +} + // readFd returns ENOSYS on unsupported platforms. func readFd(fd uintptr, buf []byte) (int, sys.Errno) { return -1, sys.ENOSYS diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go index c07d2b92a1..3ad9648e65 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go @@ -81,3 +81,8 @@ func peekNamedPipe(handle syscall.Handle) (uint32, syscall.Errno) { 0) // [out, optional] LPDWORD lpBytesLeftThisMessage return totalBytesAvail, errno } + +func rmdir(path string) sys.Errno { + err := syscall.Rmdir(path) + return sys.UnwrapOSError(err) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go index 9144126b61..1f670ca116 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go @@ -1,53 +1,14 @@ +//go:build linux || darwin + package sysfs import ( "syscall" - "time" "unsafe" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/sys" + "github.com/tetratelabs/wazero/experimental/sys" ) -const ( - // UTIME_NOW is a special syscall.Timespec NSec value used to set the - // file's timestamp to a value close to, but not greater than the current - // system time. - UTIME_NOW = _UTIME_NOW - - // UTIME_OMIT is a special syscall.Timespec NSec value used to avoid - // setting the file's timestamp. - UTIME_OMIT = _UTIME_OMIT -) - -// Utimens set file access and modification times on a path resolved to the -// current working directory, at nanosecond precision. -// -// # Parameters -// -// The `times` parameter includes the access and modification timestamps to -// assign. Special syscall.Timespec NSec values UTIME_NOW and UTIME_OMIT may be -// specified instead of real timestamps. A nil `times` parameter behaves the -// same as if both were set to UTIME_NOW. If the path is a symbolic link, the -// target of expanding that link is updated. -// -// # Errors -// -// A zero sys.Errno is success. The below are expected otherwise: -// - sys.ENOSYS: the implementation does not support this function. -// - sys.EINVAL: `path` is invalid. -// - sys.EEXIST: `path` exists and is a directory. -// - sys.ENOTDIR: `path` exists and is a file. -// -// # Notes -// -// - This is like syscall.UtimesNano and `utimensat` with `AT_FDCWD` in -// POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html -func Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { - err := utimens(path, times) - return experimentalsys.UnwrapOSError(err) -} - func timesToPtr(times *[2]syscall.Timespec) unsafe.Pointer { //nolint:unused if times != nil { return unsafe.Pointer(×[0]) @@ -55,67 +16,22 @@ func timesToPtr(times *[2]syscall.Timespec) unsafe.Pointer { //nolint:unused return unsafe.Pointer(nil) } -func utimensPortable(path string, times *[2]syscall.Timespec) error { //nolint:unused - // Handle when both inputs are current system time. - if times == nil || times[0].Nsec == UTIME_NOW && times[1].Nsec == UTIME_NOW { - ts := nowTimespec() - return syscall.UtimesNano(path, []syscall.Timespec{ts, ts}) - } - +func timesToTimespecs(atim int64, mtim int64) (times *[2]syscall.Timespec) { // When both inputs are omitted, there is nothing to change. - if times[0].Nsec == UTIME_OMIT && times[1].Nsec == UTIME_OMIT { - return nil - } - - // Handle when neither input are special values - if times[0].Nsec != UTIME_NOW && times[1].Nsec != UTIME_NOW && - times[0].Nsec != UTIME_OMIT && times[1].Nsec != UTIME_OMIT { - return syscall.UtimesNano(path, times[:]) + if atim == sys.UTIME_OMIT && mtim == sys.UTIME_OMIT { + return } - // Now, either atim or mtim is a special value, but not both. - - // Now, either one of the inputs is a special value, or neither. This means - // we don't have a risk of re-reading the clock or re-doing stat. - if atim, err := normalizeTimespec(path, times, 0); err != 0 { - return err - } else if mtim, err := normalizeTimespec(path, times, 1); err != 0 { - return err + times = &[2]syscall.Timespec{} + if atim == sys.UTIME_OMIT { + times[0] = syscall.Timespec{Nsec: _UTIME_OMIT} + times[1] = syscall.NsecToTimespec(mtim) + } else if mtim == sys.UTIME_OMIT { + times[0] = syscall.NsecToTimespec(atim) + times[1] = syscall.Timespec{Nsec: _UTIME_OMIT} } else { - return syscall.UtimesNano(path, []syscall.Timespec{atim, mtim}) - } -} - -func normalizeTimespec(path string, times *[2]syscall.Timespec, i int) (ts syscall.Timespec, err experimentalsys.Errno) { //nolint:unused - switch times[i].Nsec { - case UTIME_NOW: // declined in Go per golang/go#31880. - ts = nowTimespec() - return - case UTIME_OMIT: - // UTIME_OMIT is expensive until progress is made in Go, as it requires a - // stat to read-back the value to re-apply. - // - https://github.com/golang/go/issues/32558. - // - https://go-review.googlesource.com/c/go/+/219638 (unmerged) - var st sys.Stat_t - if st, err = stat(path); err != 0 { - return - } - switch i { - case 0: - ts = syscall.NsecToTimespec(st.Atim) - case 1: - ts = syscall.NsecToTimespec(st.Mtim) - default: - panic("BUG") - } - return - default: // not special - ts = times[i] - return + times[0] = syscall.NsecToTimespec(atim) + times[1] = syscall.NsecToTimespec(mtim) } -} - -func nowTimespec() syscall.Timespec { //nolint:unused - now := time.Now().UnixNano() - return syscall.NsecToTimespec(now) + return } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go index a5663ede3c..88e4008f0a 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go @@ -2,13 +2,14 @@ package sysfs import ( "syscall" - _ "unsafe" // for go:linkname + _ "unsafe" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" ) const ( _AT_FDCWD = -0x2 _AT_SYMLINK_NOFOLLOW = 0x0020 - _UTIME_NOW = -1 _UTIME_OMIT = -2 ) @@ -16,20 +17,25 @@ const ( //go:linkname utimensat syscall.utimensat func utimensat(dirfd int, path string, times *[2]syscall.Timespec, flags int) error -func utimens(path string, times *[2]syscall.Timespec) error { +func utimens(path string, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } var flags int - return utimensat(_AT_FDCWD, path, times, flags) + return experimentalsys.UnwrapOSError(utimensat(_AT_FDCWD, path, times, flags)) } -func futimens(fd uintptr, times *[2]syscall.Timespec) error { +func futimens(fd uintptr, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } _p0 := timesToPtr(times) // Warning: futimens only exists since High Sierra (10.13). _, _, e1 := syscall_syscall6(libc_futimens_trampoline_addr, fd, uintptr(_p0), 0, 0, 0, 0) - if e1 != 0 { - return e1 - } - return nil + return experimentalsys.UnwrapOSError(e1) } // libc_futimens_trampoline_addr is the address of the diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go index 5008ca8140..3ec68537be 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go @@ -3,28 +3,38 @@ package sysfs import ( "syscall" "unsafe" - _ "unsafe" // for go:linkname + _ "unsafe" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" ) const ( _AT_FDCWD = -0x64 - _UTIME_NOW = (1 << 30) - 1 _UTIME_OMIT = (1 << 30) - 2 ) -func utimens(path string, times *[2]syscall.Timespec) (err error) { +func utimens(path string, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } + var flags int var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return + _p0, err := syscall.BytePtrFromString(path) + if err == nil { + err = utimensat(_AT_FDCWD, uintptr(unsafe.Pointer(_p0)), times, flags) } - return utimensat(_AT_FDCWD, uintptr(unsafe.Pointer(_p0)), times, flags) + return experimentalsys.UnwrapOSError(err) } // On linux, implement futimens via utimensat with the NUL path. -func futimens(fd uintptr, times *[2]syscall.Timespec) error { - return utimensat(int(fd), 0 /* NUL */, times, 0) +func futimens(fd uintptr, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } + return experimentalsys.UnwrapOSError(utimensat(int(fd), 0 /* NUL */, times, 0)) } // utimensat is like syscall.utimensat special-cased to accept a NUL string for the path value. diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go index 2816cb84ee..c78a16b407 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go @@ -3,22 +3,14 @@ package sysfs import ( - "syscall" - "github.com/tetratelabs/wazero/experimental/sys" ) -// Define values even if not used except as sentinels. -const ( - _UTIME_NOW = -1 - _UTIME_OMIT = -2 -) - -func utimens(path string, times *[2]syscall.Timespec) error { - return utimensPortable(path, times) +func utimens(path string, atim, mtim int64) sys.Errno { + return chtimes(path, atim, mtim) } -func futimens(fd uintptr, times *[2]syscall.Timespec) error { +func futimens(fd uintptr, atim, mtim int64) error { // Go exports syscall.Futimes, which is microsecond granularity, and // WASI tests expect nanosecond. We don't yet have a way to invoke the // futimens syscall portably. diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go index 26d9c2a425..3a5289b70b 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go @@ -2,24 +2,16 @@ package sysfs import ( "syscall" - "time" "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/platform" ) -// Define values even if not used except as sentinels. -const ( - _UTIME_NOW = -1 - _UTIME_OMIT = -2 - SupportsSymlinkNoFollow = false -) - -func utimens(path string, times *[2]syscall.Timespec) error { - return utimensPortable(path, times) +func utimens(path string, atim, mtim int64) sys.Errno { + return chtimes(path, atim, mtim) } -func futimens(fd uintptr, times *[2]syscall.Timespec) error { +func futimens(fd uintptr, atim, mtim int64) error { // Before Go 1.20, ERROR_INVALID_HANDLE was returned for too many reasons. // Kick out so that callers can use path-based operations instead. if !platform.IsAtLeastGo120 { @@ -27,9 +19,9 @@ func futimens(fd uintptr, times *[2]syscall.Timespec) error { } // Per docs, zero isn't a valid timestamp as it cannot be differentiated - // from nil. In both cases, it is a marker like syscall.UTIME_OMIT. + // from nil. In both cases, it is a marker like sys.UTIME_OMIT. // See https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-setfiletime - a, w := timespecToFiletime(times) + a, w := timespecToFiletime(atim, mtim) if a == nil && w == nil { return nil // both omitted, so nothing to change @@ -42,32 +34,16 @@ func futimens(fd uintptr, times *[2]syscall.Timespec) error { return syscall.SetFileTime(h, nil, a, w) } -func timespecToFiletime(times *[2]syscall.Timespec) (a, w *syscall.Filetime) { - // Handle when both inputs are current system time. - if times == nil || times[0].Nsec == UTIME_NOW && times[1].Nsec == UTIME_NOW { - now := time.Now().UnixNano() - ft := syscall.NsecToFiletime(now) - return &ft, &ft - } - - // Now, either one of the inputs is current time, or neither. This - // means we don't have a risk of re-reading the clock. - a = timespecToFileTime(times, 0) - w = timespecToFileTime(times, 1) +func timespecToFiletime(atim, mtim int64) (a, w *syscall.Filetime) { + a = timespecToFileTime(atim) + w = timespecToFileTime(mtim) return } -func timespecToFileTime(times *[2]syscall.Timespec, i int) *syscall.Filetime { - if times[i].Nsec == UTIME_OMIT { +func timespecToFileTime(tim int64) *syscall.Filetime { + if tim == sys.UTIME_OMIT { return nil } - - var nsec int64 - if times[i].Nsec == UTIME_NOW { - nsec = time.Now().UnixNano() - } else { - nsec = syscall.TimespecToNsec(times[i]) - } - ft := syscall.NsecToFiletime(nsec) + ft := syscall.NsecToFiletime(tim) return &ft } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go new file mode 100644 index 0000000000..703f113660 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go @@ -0,0 +1,22 @@ +//go:build !windows && !plan9 + +package sysfs + +import ( + "io/fs" + "syscall" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/sys" +) + +func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { + switch v := info.Sys().(type) { + case *sys.Stat_t: + return v.Ino, 0 + case *syscall.Stat_t: + return v.Ino, 0 + default: + return 0, 0 + } +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go new file mode 100644 index 0000000000..9c669a475c --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go @@ -0,0 +1,15 @@ +package sysfs + +import ( + "io/fs" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/sys" +) + +func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { + if v, ok := info.Sys().(*sys.Stat_t); ok { + return v.Ino, 0 + } + return 0, 0 +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go new file mode 100644 index 0000000000..d163b3601e --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go @@ -0,0 +1,28 @@ +package sysfs + +import ( + "io/fs" + "path" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/sys" +) + +// inoFromFileInfo uses stat to get the inode information of the file. +func inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) { + if v, ok := info.Sys().(*sys.Stat_t); ok { + return v.Ino, 0 + } + if dirPath == "" { + // This is a FS.File backed implementation which doesn't have access to + // the original file path. + return + } + // Ino is no not in Win32FileAttributeData + inoPath := path.Clean(path.Join(dirPath, info.Name())) + var st sys.Stat_t + if st, errno = lstat(inoPath); errno == 0 { + ino = st.Ino + } + return +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go new file mode 100644 index 0000000000..8e94e5922f --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go @@ -0,0 +1,11 @@ +package sysfs + +import "github.com/tetratelabs/wazero/experimental/sys" + +func setNonblock(fd uintptr, enable bool) sys.Errno { + return sys.ENOSYS +} + +func isNonblock(f *osFile) bool { + return false +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go index fdee885aa3..07fb15cf12 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go @@ -1,17 +1,17 @@ -//go:build !windows +//go:build !windows && !plan9 package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -func setNonblock(fd uintptr, enable bool) error { - return syscall.SetNonblock(int(fd), enable) +func setNonblock(fd uintptr, enable bool) sys.Errno { + return sys.UnwrapOSError(syscall.SetNonblock(int(fd), enable)) } func isNonblock(f *osFile) bool { - return f.flag&fsapi.O_NONBLOCK == fsapi.O_NONBLOCK + return f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go index 3acbf2721f..eb38ea5afa 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go @@ -1,17 +1,15 @@ -//go:build windows - package sysfs import ( "io/fs" "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -func setNonblock(fd uintptr, enable bool) error { +func setNonblock(fd uintptr, enable bool) sys.Errno { // We invoke the syscall, but this is currently no-op. - return syscall.SetNonblock(syscall.Handle(fd), enable) + return sys.UnwrapOSError(syscall.SetNonblock(syscall.Handle(fd), enable)) } func isNonblock(f *osFile) bool { @@ -21,5 +19,5 @@ func isNonblock(f *osFile) bool { if errno == 0 { isValid = st.Mode&fs.ModeNamedPipe != 0 } - return isValid && f.flag&fsapi.O_NONBLOCK == fsapi.O_NONBLOCK + return isValid && f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go index e6c3b06c28..be6d2c35f6 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go @@ -3,35 +3,35 @@ package sysfs import ( "os" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) // toOsOpenFlag converts the input to the flag parameter of os.OpenFile -func toOsOpenFlag(oflag fsapi.Oflag) (flag int) { +func toOsOpenFlag(oflag sys.Oflag) (flag int) { // First flags are exclusive - switch oflag & (fsapi.O_RDONLY | fsapi.O_RDWR | fsapi.O_WRONLY) { - case fsapi.O_RDONLY: + switch oflag & (sys.O_RDONLY | sys.O_RDWR | sys.O_WRONLY) { + case sys.O_RDONLY: flag |= os.O_RDONLY - case fsapi.O_RDWR: + case sys.O_RDWR: flag |= os.O_RDWR - case fsapi.O_WRONLY: + case sys.O_WRONLY: flag |= os.O_WRONLY } // Run down the flags defined in the os package - if oflag&fsapi.O_APPEND != 0 { + if oflag&sys.O_APPEND != 0 { flag |= os.O_APPEND } - if oflag&fsapi.O_CREAT != 0 { + if oflag&sys.O_CREAT != 0 { flag |= os.O_CREATE } - if oflag&fsapi.O_EXCL != 0 { + if oflag&sys.O_EXCL != 0 { flag |= os.O_EXCL } - if oflag&fsapi.O_SYNC != 0 { + if oflag&sys.O_SYNC != 0 { flag |= os.O_SYNC } - if oflag&fsapi.O_TRUNC != 0 { + if oflag&sys.O_TRUNC != 0 { flag |= os.O_TRUNC } return withSyscallOflag(oflag, flag) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go index 82275393b5..a4f54ca2cc 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go @@ -3,22 +3,22 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_DSYNC | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { flag |= syscall.O_DIRECTORY } - if oflag&fsapi.O_DSYNC != 0 { + if oflag&sys.O_DSYNC != 0 { flag |= syscall.O_DSYNC } - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } // syscall.O_RSYNC not defined on darwin diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go index e91da95dfa..42adaa2140 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go @@ -3,20 +3,20 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_NOFOLLOW | sys.O_NONBLOCK -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { flag |= syscall.O_DIRECTORY } // syscall.O_DSYNC not defined on darwin - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } // syscall.O_RSYNC not defined on darwin diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go index bfa9a23e19..7f4915480c 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go @@ -3,25 +3,25 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_DSYNC | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK | fsapi.O_RSYNC +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK | sys.O_RSYNC -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { flag |= syscall.O_DIRECTORY } - if oflag&fsapi.O_DSYNC != 0 { + if oflag&sys.O_DSYNC != 0 { flag |= syscall.O_DSYNC } - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } - if oflag&fsapi.O_RSYNC != 0 { + if oflag&sys.O_RSYNC != 0 { flag |= syscall.O_RSYNC } return flag diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go index 4e886fb550..9ae1e2bcdb 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go @@ -7,14 +7,13 @@ import ( "os" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) -// openFile is like os.OpenFile except it accepts a fsapi.Oflag and returns +// openFile is like os.OpenFile except it accepts a sys.Oflag and returns // sys.Errno. A zero sys.Errno is success. -func openFile(path string, oflag fsapi.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { +func openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { f, err := os.OpenFile(path, toOsOpenFlag(oflag), perm) - // Note: This does not return a fsapi.File because fsapi.FS that returns + // Note: This does not return a sys.File because sys.FS that returns // one may want to hide the real OS path. For example, this is needed for // pre-opens. return f, sys.UnwrapOSError(err) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go index 6589ddac3f..bdf7dd84d2 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go @@ -5,26 +5,26 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_DSYNC | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK | fsapi.O_RSYNC +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK | sys.O_RSYNC -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { // See https://github.com/illumos/illumos-gate/blob/edd580643f2cf1434e252cd7779e83182ea84945/usr/src/uts/common/sys/fcntl.h#L90 flag |= 0x1000000 } - if oflag&fsapi.O_DSYNC != 0 { + if oflag&sys.O_DSYNC != 0 { flag |= syscall.O_DSYNC } - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } - if oflag&fsapi.O_RSYNC != 0 { + if oflag&sys.O_RSYNC != 0 { flag |= syscall.O_RSYNC } return flag diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go index 9b925949aa..9f7a6d0885 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go @@ -2,11 +2,13 @@ package sysfs -import "github.com/tetratelabs/wazero/internal/fsapi" +import ( + "github.com/tetratelabs/wazero/experimental/sys" +) -const supportedSyscallOflag = fsapi.Oflag(0) +const supportedSyscallOflag = sys.Oflag(0) -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { +func withSyscallOflag(oflag sys.Oflag, flag int) int { // O_DIRECTORY not defined // O_DSYNC not defined // O_NOFOLLOW not defined diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go index bc7a7f7d0c..bcfbfbcd6b 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go @@ -8,12 +8,11 @@ import ( "unsafe" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/internal/platform" ) -func openFile(path string, oflag fsapi.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { - isDir := oflag&fsapi.O_DIRECTORY > 0 +func openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { + isDir := oflag&sys.O_DIRECTORY > 0 flag := toOsOpenFlag(oflag) // TODO: document why we are opening twice @@ -55,14 +54,14 @@ func openFile(path string, oflag fsapi.Oflag, perm fs.FileMode) (*os.File, sys.E return f, errno } -const supportedSyscallOflag = fsapi.O_NONBLOCK +const supportedSyscallOflag = sys.O_NONBLOCK // Map to synthetic values here https://github.com/golang/go/blob/go1.20/src/syscall/types_windows.go#L34-L48 -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { +func withSyscallOflag(oflag sys.Oflag, flag int) int { // O_DIRECTORY not defined in windows // O_DSYNC not defined in windows // O_NOFOLLOW not defined in windows - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } // O_RSYNC not defined in windows diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go index e39c92566c..13bd418f24 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go @@ -5,16 +5,13 @@ import ( "io/fs" "os" "runtime" - "syscall" - "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" - "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/sys" ) -func newOsFile(path string, flag fsapi.Oflag, perm fs.FileMode, f *os.File) fsapi.File { +func newOsFile(path string, flag experimentalsys.Oflag, perm fs.FileMode, f *os.File) fsapi.File { // Windows cannot read files written to a directory after it was opened. // This was noticed in #1087 in zig tests. Use a flag instead of a // different type. @@ -26,7 +23,7 @@ func newOsFile(path string, flag fsapi.Oflag, perm fs.FileMode, f *os.File) fsap // implement api.File. type osFile struct { path string - flag fsapi.Oflag + flag experimentalsys.Oflag perm fs.FileMode file *os.File fd uintptr @@ -44,7 +41,7 @@ type osFile struct { cachedSt *cachedStat } -// cachedStat returns the cacheable parts of fsapi.Stat_t or an error if they +// cachedStat returns the cacheable parts of sys.Stat_t or an error if they // couldn't be retrieved. func (f *osFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno experimentalsys.Errno) { if f.cachedSt == nil { @@ -55,19 +52,19 @@ func (f *osFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno expe return f.cachedSt.dev, f.cachedSt.ino, f.cachedSt.isDir, 0 } -// Dev implements the same method as documented on fsapi.File +// Dev implements the same method as documented on sys.File func (f *osFile) Dev() (uint64, experimentalsys.Errno) { dev, _, _, errno := f.cachedStat() return dev, errno } -// Ino implements the same method as documented on fsapi.File +// Ino implements the same method as documented on sys.File func (f *osFile) Ino() (sys.Inode, experimentalsys.Errno) { _, ino, _, errno := f.cachedStat() return ino, errno } -// IsDir implements the same method as documented on fsapi.File +// IsDir implements the same method as documented on sys.File func (f *osFile) IsDir() (bool, experimentalsys.Errno) { _, _, isDir, errno := f.cachedStat() return isDir, errno @@ -75,19 +72,19 @@ func (f *osFile) IsDir() (bool, experimentalsys.Errno) { // IsAppend implements File.IsAppend func (f *osFile) IsAppend() bool { - return f.flag&fsapi.O_APPEND == fsapi.O_APPEND + return f.flag&experimentalsys.O_APPEND == experimentalsys.O_APPEND } -// SetAppend implements the same method as documented on fsapi.File +// SetAppend implements the same method as documented on sys.File func (f *osFile) SetAppend(enable bool) (errno experimentalsys.Errno) { if enable { - f.flag |= fsapi.O_APPEND + f.flag |= experimentalsys.O_APPEND } else { - f.flag &= ^fsapi.O_APPEND + f.flag &= ^experimentalsys.O_APPEND } // Clear any create flag, as we are re-opening, not re-creating. - f.flag &= ^fsapi.O_CREAT + f.flag &= ^experimentalsys.O_CREAT // appendMode (bool) cannot be changed later, so we have to re-open the // file. https://github.com/golang/go/blob/go1.20/src/os/file_unix.go#L60 @@ -99,7 +96,7 @@ var _ reopenFile = (*fsFile)(nil).reopen func (f *osFile) reopen() (errno experimentalsys.Errno) { // Clear any create flag, as we are re-opening, not re-creating. - f.flag &= ^fsapi.O_CREAT + f.flag &= ^experimentalsys.O_CREAT _ = f.close() f.file, errno = OpenFile(f.path, f.flag, f.perm) @@ -114,17 +111,17 @@ func (f *osFile) IsNonblock() bool { // SetNonblock implements the same method as documented on fsapi.File func (f *osFile) SetNonblock(enable bool) (errno experimentalsys.Errno) { if enable { - f.flag |= fsapi.O_NONBLOCK + f.flag |= experimentalsys.O_NONBLOCK } else { - f.flag &= ^fsapi.O_NONBLOCK + f.flag &= ^experimentalsys.O_NONBLOCK } - if err := setNonblock(f.fd, enable); err != nil { - return fileError(f, f.closed, experimentalsys.UnwrapOSError(err)) + if errno = setNonblock(f.fd, enable); errno != 0 { + return fileError(f, f.closed, errno) } return 0 } -// Stat implements the same method as documented on fsapi.File +// Stat implements the same method as documented on sys.File func (f *osFile) Stat() (sys.Stat_t, experimentalsys.Errno) { if f.closed { return sys.Stat_t{}, experimentalsys.EBADF @@ -140,7 +137,7 @@ func (f *osFile) Stat() (sys.Stat_t, experimentalsys.Errno) { return st, errno } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *osFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // Short-circuit 0-len reads. @@ -157,7 +154,7 @@ func (f *osFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pread implements the same method as documented on fsapi.File +// Pread implements the same method as documented on sys.File func (f *osFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if n, errno = pread(f.file, buf, off); errno != 0 { // Defer validation overhead until we've already had an error. @@ -166,14 +163,14 @@ func (f *osFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errn return } -// Seek implements the same method as documented on fsapi.File +// Seek implements the same method as documented on sys.File func (f *osFile) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { if newOffset, errno = seek(f.file, offset, whence); errno != 0 { // Defer validation overhead until we've already had an error. errno = fileError(f, f.closed, errno) // If the error was trying to rewind a directory, re-open it. Notably, - // seeking to zero on a directory doesn't work on Windows with Go 1.18. + // seeking to zero on a directory doesn't work on Windows with Go 1.19. if errno == experimentalsys.EISDIR && offset == 0 && whence == io.SeekStart { errno = 0 f.reopenDir = true @@ -182,23 +179,14 @@ func (f *osFile) Seek(offset int64, whence int) (newOffset int64, errno experime return } -// PollRead implements the same method as documented on fsapi.File -func (f *osFile) PollRead(timeout *time.Duration) (ready bool, errno experimentalsys.Errno) { - fdSet := platform.FdSet{} - fd := int(f.fd) - fdSet.Set(fd) - nfds := fd + 1 // See https://man7.org/linux/man-pages/man2/select.2.html#:~:text=condition%20has%20occurred.-,nfds,-This%20argument%20should - count, err := _select(nfds, &fdSet, nil, nil, timeout) - if errno = experimentalsys.UnwrapOSError(err); errno != 0 { - // Defer validation overhead until we've already had an error. - errno = fileError(f, f.closed, errno) - } - return count > 0, errno +// Poll implements the same method as documented on fsapi.File +func (f *osFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) { + return poll(f.fd, flag, timeoutMillis) } // Readdir implements File.Readdir. Notably, this uses "Readdir", not // "ReadDir", from os.File. -func (f *osFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { +func (f *osFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { if f.reopenDir { // re-open the directory if needed. f.reopenDir = false if errno = adjustReaddirErr(f, f.closed, f.reopen()); errno != 0 { @@ -212,7 +200,7 @@ func (f *osFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E return } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *osFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // Short-circuit 0-len writes. @@ -226,7 +214,7 @@ func (f *osFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pwrite implements the same method as documented on fsapi.File +// Pwrite implements the same method as documented on sys.File func (f *osFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if n, errno = pwrite(f.file, buf, off); errno != 0 { // Defer validation overhead until we've already had an error. @@ -235,7 +223,7 @@ func (f *osFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Err return } -// Truncate implements the same method as documented on fsapi.File +// Truncate implements the same method as documented on sys.File func (f *osFile) Truncate(size int64) (errno experimentalsys.Errno) { if errno = experimentalsys.UnwrapOSError(f.file.Truncate(size)); errno != 0 { // Defer validation overhead until we've already had an error. @@ -244,27 +232,27 @@ func (f *osFile) Truncate(size int64) (errno experimentalsys.Errno) { return } -// Sync implements the same method as documented on fsapi.File +// Sync implements the same method as documented on sys.File func (f *osFile) Sync() experimentalsys.Errno { return fsync(f.file) } -// Datasync implements the same method as documented on fsapi.File +// Datasync implements the same method as documented on sys.File func (f *osFile) Datasync() experimentalsys.Errno { return datasync(f.file) } -// Utimens implements the same method as documented on fsapi.File -func (f *osFile) Utimens(times *[2]syscall.Timespec) experimentalsys.Errno { +// Utimens implements the same method as documented on sys.File +func (f *osFile) Utimens(atim, mtim int64) experimentalsys.Errno { if f.closed { return experimentalsys.EBADF } - err := futimens(f.fd, times) + err := futimens(f.fd, atim, mtim) return experimentalsys.UnwrapOSError(err) } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *osFile) Close() experimentalsys.Errno { if f.closed { return 0 diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go new file mode 100644 index 0000000000..f5c9829529 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go @@ -0,0 +1,18 @@ +//go:build windows || linux || darwin + +package sysfs + +import ( + "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" +) + +// poll implements `Poll` as documented on sys.File via a file descriptor. +func poll(fd uintptr, flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) { + if flag != fsapi.POLLIN { + return false, sys.ENOTSUP + } + fds := []pollFd{newPollFd(fd, _POLLIN, 0)} + count, errno := _poll(fds, timeoutMillis) + return count > 0, errno +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go new file mode 100644 index 0000000000..1f7f890937 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go @@ -0,0 +1,55 @@ +package sysfs + +import ( + "unsafe" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +// pollFd is the struct to query for file descriptor events using poll. +type pollFd struct { + // fd is the file descriptor. + fd int32 + // events is a bitmap containing the requested events. + events int16 + // revents is a bitmap containing the returned events. + revents int16 +} + +// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors. +func newPollFd(fd uintptr, events, revents int16) pollFd { + return pollFd{fd: int32(fd), events: events, revents: revents} +} + +// _POLLIN subscribes a notification when any readable data is available. +const _POLLIN = 0x0001 + +// _poll implements poll on Darwin via the corresponding libc function. +func _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) { + var fdptr *pollFd + nfds := len(fds) + if nfds > 0 { + fdptr = &fds[0] + } + n1, _, err := syscall_syscall6( + libc_poll_trampoline_addr, + uintptr(unsafe.Pointer(fdptr)), + uintptr(nfds), + uintptr(int(timeoutMillis)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil))) + return int(n1), sys.UnwrapOSError(err) +} + +// libc_poll_trampoline_addr is the address of the +// `libc_poll_trampoline` symbol, defined in `poll_darwin.s`. +// +// We use this to invoke the syscall through syscall_syscall6 imported below. +var libc_poll_trampoline_addr uintptr + +// Imports the select symbol from libc as `libc_poll`. +// +// Note: CGO mechanisms are used in darwin regardless of the CGO_ENABLED value +// or the "cgo" build flag. See /RATIONALE.md for why. +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s new file mode 100644 index 0000000000..e04fca583b --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s @@ -0,0 +1,8 @@ +// lifted from golang.org/x/sys unix +#include "textflag.h" + +TEXT libc_poll_trampoline<>(SB), NOSPLIT, $0-0 + JMP libc_poll(SB) + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go new file mode 100644 index 0000000000..dab7bb2cab --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go @@ -0,0 +1,57 @@ +package sysfs + +import ( + "syscall" + "time" + "unsafe" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +// pollFd is the struct to query for file descriptor events using poll. +type pollFd struct { + // fd is the file descriptor. + fd int32 + // events is a bitmap containing the requested events. + events int16 + // revents is a bitmap containing the returned events. + revents int16 +} + +// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors. +func newPollFd(fd uintptr, events, revents int16) pollFd { + return pollFd{fd: int32(fd), events: events, revents: revents} +} + +// _POLLIN subscribes a notification when any readable data is available. +const _POLLIN = 0x0001 + +// _poll implements poll on Linux via ppoll. +func _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) { + var ts syscall.Timespec + if timeoutMillis >= 0 { + ts = syscall.NsecToTimespec(int64(time.Duration(timeoutMillis) * time.Millisecond)) + } + return ppoll(fds, &ts) +} + +// ppoll is a poll variant that allows to subscribe to a mask of signals. +// However, we do not need such mask, so the corresponding argument is always nil. +func ppoll(fds []pollFd, timespec *syscall.Timespec) (n int, err sys.Errno) { + var fdptr *pollFd + nfd := len(fds) + if nfd != 0 { + fdptr = &fds[0] + } + + n1, _, errno := syscall.Syscall6( + uintptr(syscall.SYS_PPOLL), + uintptr(unsafe.Pointer(fdptr)), + uintptr(nfd), + uintptr(unsafe.Pointer(timespec)), + uintptr(unsafe.Pointer(nil)), // sigmask is currently always ignored + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil))) + + return int(n1), sys.UnwrapOSError(errno) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go new file mode 100644 index 0000000000..ebe8a6fa92 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go @@ -0,0 +1,13 @@ +//go:build !linux && !darwin && !windows + +package sysfs + +import ( + "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" +) + +// poll implements `Poll` as documented on fsapi.File via a file descriptor. +func poll(uintptr, fsapi.Pflag, int32) (bool, sys.Errno) { + return false, sys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go new file mode 100644 index 0000000000..82c8b2bafd --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go @@ -0,0 +1,224 @@ +package sysfs + +import ( + "syscall" + "time" + "unsafe" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +var ( + procWSAPoll = modws2_32.NewProc("WSAPoll") + procGetNamedPipeInfo = kernel32.NewProc("GetNamedPipeInfo") +) + +const ( + // _POLLRDNORM subscribes to normal data for read. + _POLLRDNORM = 0x0100 + // _POLLRDBAND subscribes to priority band (out-of-band) data for read. + _POLLRDBAND = 0x0200 + // _POLLIN subscribes a notification when any readable data is available. + _POLLIN = (_POLLRDNORM | _POLLRDBAND) +) + +// pollFd is the struct to query for file descriptor events using poll. +type pollFd struct { + // fd is the file descriptor. + fd uintptr + // events is a bitmap containing the requested events. + events int16 + // revents is a bitmap containing the returned events. + revents int16 +} + +// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors. +func newPollFd(fd uintptr, events, revents int16) pollFd { + return pollFd{fd: fd, events: events, revents: revents} +} + +// pollInterval is the interval between each calls to peekNamedPipe in selectAllHandles +const pollInterval = 100 * time.Millisecond + +// _poll implements poll on Windows, for a subset of cases. +// +// fds may contain any number of file handles, but regular files and pipes are only processed for _POLLIN. +// Stdin is a pipe, thus it is checked for readiness when present. Pipes are checked using PeekNamedPipe. +// Regular files always immediately reported as ready, regardless their actual state and timeouts. +// +// If n==0 it will wait for the given timeout duration, but it will return sys.ENOSYS if timeout is nil, +// i.e. it won't block indefinitely. The given ctx is used to allow for cancellation, +// and it is currently used only in tests. +// +// The implementation actually polls every 100 milliseconds (pollInterval) until it reaches the +// given timeout (in millis). +// +// The duration may be negative, in which case it will wait indefinitely. The given ctx is +// used to allow for cancellation, and it is currently used only in tests. +func _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) { + if fds == nil { + return -1, sys.ENOSYS + } + + regular, pipes, sockets, errno := partionByFtype(fds) + nregular := len(regular) + if errno != 0 { + return -1, errno + } + + // Ticker that emits at every pollInterval. + tick := time.NewTicker(pollInterval) + tickCh := tick.C + defer tick.Stop() + + // Timer that expires after the given duration. + // Initialize afterCh as nil: the select below will wait forever. + var afterCh <-chan time.Time + if timeoutMillis >= 0 { + // If duration is not nil, instantiate the timer. + after := time.NewTimer(time.Duration(timeoutMillis) * time.Millisecond) + defer after.Stop() + afterCh = after.C + } + + npipes, nsockets, errno := peekAll(pipes, sockets) + if errno != 0 { + return -1, errno + } + count := nregular + npipes + nsockets + if count > 0 { + return count, 0 + } + + for { + select { + case <-afterCh: + return 0, 0 + case <-tickCh: + npipes, nsockets, errno := peekAll(pipes, sockets) + if errno != 0 { + return -1, errno + } + count = nregular + npipes + nsockets + if count > 0 { + return count, 0 + } + } + } +} + +func peekAll(pipes, sockets []pollFd) (npipes, nsockets int, errno sys.Errno) { + npipes, errno = peekPipes(pipes) + if errno != 0 { + return + } + + // Invoke wsaPoll with a 0-timeout to avoid blocking. + // Timeouts are handled in pollWithContext instead. + nsockets, errno = wsaPoll(sockets, 0) + if errno != 0 { + return + } + + count := npipes + nsockets + if count > 0 { + return + } + + return +} + +func peekPipes(fds []pollFd) (n int, errno sys.Errno) { + for _, fd := range fds { + bytes, errno := peekNamedPipe(syscall.Handle(fd.fd)) + if errno != 0 { + return -1, sys.UnwrapOSError(errno) + } + if bytes > 0 { + n++ + } + } + return +} + +// wsaPoll is the WSAPoll function from winsock2. +// +// See https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll +func wsaPoll(fds []pollFd, timeout int) (n int, errno sys.Errno) { + if len(fds) > 0 { + sockptr := &fds[0] + ns, _, e := syscall.SyscallN( + procWSAPoll.Addr(), + uintptr(unsafe.Pointer(sockptr)), + uintptr(len(fds)), + uintptr(timeout)) + if e != 0 { + return -1, sys.UnwrapOSError(e) + } + n = int(ns) + } + return +} + +// ftype is a type of file that can be handled by poll. +type ftype uint8 + +const ( + ftype_regular ftype = iota + ftype_pipe + ftype_socket +) + +// partionByFtype checks the type of each fd in fds and returns 3 distinct partitions +// for regular files, named pipes and sockets. +func partionByFtype(fds []pollFd) (regular, pipe, socket []pollFd, errno sys.Errno) { + for _, pfd := range fds { + t, errno := ftypeOf(pfd.fd) + if errno != 0 { + return nil, nil, nil, errno + } + switch t { + case ftype_regular: + regular = append(regular, pfd) + case ftype_pipe: + pipe = append(pipe, pfd) + case ftype_socket: + socket = append(socket, pfd) + } + } + return +} + +// ftypeOf checks the type of fd and return the corresponding ftype. +func ftypeOf(fd uintptr) (ftype, sys.Errno) { + h := syscall.Handle(fd) + t, err := syscall.GetFileType(h) + if err != nil { + return 0, sys.UnwrapOSError(err) + } + switch t { + case syscall.FILE_TYPE_CHAR, syscall.FILE_TYPE_DISK: + return ftype_regular, 0 + case syscall.FILE_TYPE_PIPE: + if isSocket(h) { + return ftype_socket, 0 + } else { + return ftype_pipe, 0 + } + default: + return ftype_regular, 0 + } +} + +// isSocket returns true if the given file handle +// is a pipe. +func isSocket(fd syscall.Handle) bool { + r, _, errno := syscall.SyscallN( + procGetNamedPipeInfo.Addr(), + uintptr(fd), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil))) + return r == 0 || errno != 0 +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go index 1e96e2b4dd..59e331a298 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go @@ -2,57 +2,25 @@ package sysfs import ( "io/fs" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) -// NewReadFS is used to mask an existing fsapi.FS for reads. Notably, this allows -// the CLI to do read-only mounts of directories the host user can write, but -// doesn't want the guest wasm to. For example, Python libraries shouldn't be -// written to at runtime by the python wasm file. -func NewReadFS(fs fsapi.FS) fsapi.FS { - if _, ok := fs.(*readFS); ok { - return fs - } else if _, ok = fs.(fsapi.UnimplementedFS); ok { - return fs // unimplemented is read-only - } - return &readFS{fs} -} - -type readFS struct { - fsapi.FS -} - -// OpenFile implements the same method as documented on fsapi.FS -func (r *readFS) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { - // TODO: Once the real implementation is complete, move the below to - // /RATIONALE.md. Doing this while the type is unstable creates - // documentation drift as we expect a lot of reshaping meanwhile. - // - // Callers of this function expect to either open a valid file handle, or - // get an error, if they can't. We want to return ENOSYS if opened for - // anything except reads. - // - // Instead, we could return a fake no-op file on O_WRONLY. However, this - // hurts observability because a later write error to that file will be on - // a different source code line than the root cause which is opening with - // an unsupported flag. - // - // The tricky part is os.RD_ONLY is typically defined as zero, so while the - // parameter is named flag, the part about opening read vs write isn't a - // typical bitflag. We can't compare against zero anyway, because even if - // there isn't a current flag to OR in with that, there may be in the - // future. What we do instead is mask the flags about read/write mode and - // check if they are the opposite of read or not. - switch flag & (fsapi.O_RDONLY | fsapi.O_WRONLY | fsapi.O_RDWR) { - case fsapi.O_WRONLY, fsapi.O_RDWR: - if flag&fsapi.O_DIRECTORY != 0 { +type ReadFS struct { + experimentalsys.FS +} + +// OpenFile implements the same method as documented on sys.FS +func (r *ReadFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { + // Mask the mutually exclusive bits as they determine write mode. + switch flag & (experimentalsys.O_RDONLY | experimentalsys.O_WRONLY | experimentalsys.O_RDWR) { + case experimentalsys.O_WRONLY, experimentalsys.O_RDWR: + // Return the correct error if a directory was opened for write. + if flag&experimentalsys.O_DIRECTORY != 0 { return nil, experimentalsys.EISDIR } return nil, experimentalsys.ENOSYS - default: // fsapi.O_RDONLY (or no flag) so we are ok! + default: // sys.O_RDONLY (integer zero) so we are ok! } f, errno := r.FS.OpenFile(path, flag, perm) @@ -62,80 +30,80 @@ func (r *readFS) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsap return &readFile{f}, 0 } -// Mkdir implements the same method as documented on fsapi.FS -func (r *readFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno { +// Mkdir implements the same method as documented on sys.FS +func (r *ReadFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno { return experimentalsys.EROFS } -// Chmod implements the same method as documented on fsapi.FS -func (r *readFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { +// Chmod implements the same method as documented on sys.FS +func (r *ReadFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { return experimentalsys.EROFS } -// Rename implements the same method as documented on fsapi.FS -func (r *readFS) Rename(from, to string) experimentalsys.Errno { +// Rename implements the same method as documented on sys.FS +func (r *ReadFS) Rename(from, to string) experimentalsys.Errno { return experimentalsys.EROFS } -// Rmdir implements the same method as documented on fsapi.FS -func (r *readFS) Rmdir(path string) experimentalsys.Errno { +// Rmdir implements the same method as documented on sys.FS +func (r *ReadFS) Rmdir(path string) experimentalsys.Errno { return experimentalsys.EROFS } -// Link implements the same method as documented on fsapi.FS -func (r *readFS) Link(_, _ string) experimentalsys.Errno { +// Link implements the same method as documented on sys.FS +func (r *ReadFS) Link(_, _ string) experimentalsys.Errno { return experimentalsys.EROFS } -// Symlink implements the same method as documented on fsapi.FS -func (r *readFS) Symlink(_, _ string) experimentalsys.Errno { +// Symlink implements the same method as documented on sys.FS +func (r *ReadFS) Symlink(_, _ string) experimentalsys.Errno { return experimentalsys.EROFS } -// Unlink implements the same method as documented on fsapi.FS -func (r *readFS) Unlink(path string) experimentalsys.Errno { +// Unlink implements the same method as documented on sys.FS +func (r *ReadFS) Unlink(path string) experimentalsys.Errno { return experimentalsys.EROFS } -// Utimens implements the same method as documented on fsapi.FS -func (r *readFS) Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { +// Utimens implements the same method as documented on sys.FS +func (r *ReadFS) Utimens(path string, atim, mtim int64) experimentalsys.Errno { return experimentalsys.EROFS } // compile-time check to ensure readFile implements api.File. -var _ fsapi.File = (*readFile)(nil) +var _ experimentalsys.File = (*readFile)(nil) type readFile struct { - fsapi.File + experimentalsys.File } -// Write implements the same method as documented on fsapi.File. +// Write implements the same method as documented on sys.File. func (r *readFile) Write([]byte) (int, experimentalsys.Errno) { return 0, r.writeErr() } -// Pwrite implements the same method as documented on fsapi.File. +// Pwrite implements the same method as documented on sys.File. func (r *readFile) Pwrite([]byte, int64) (n int, errno experimentalsys.Errno) { return 0, r.writeErr() } -// Truncate implements the same method as documented on fsapi.File. +// Truncate implements the same method as documented on sys.File. func (r *readFile) Truncate(int64) experimentalsys.Errno { return r.writeErr() } -// Sync implements the same method as documented on fsapi.File. +// Sync implements the same method as documented on sys.File. func (r *readFile) Sync() experimentalsys.Errno { return experimentalsys.EBADF } -// Datasync implements the same method as documented on fsapi.File. +// Datasync implements the same method as documented on sys.File. func (r *readFile) Datasync() experimentalsys.Errno { return experimentalsys.EBADF } -// Utimens implements the same method as documented on fsapi.File. -func (r *readFile) Utimens(*[2]syscall.Timespec) experimentalsys.Errno { +// Utimens implements the same method as documented on sys.File. +func (r *readFile) Utimens(int64, int64) experimentalsys.Errno { return experimentalsys.EBADF } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go index 5ec22539e4..f7d84ef7ae 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build !windows && !plan9 package sysfs diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go new file mode 100644 index 0000000000..474cc7595e --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go @@ -0,0 +1,14 @@ +package sysfs + +import ( + "os" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +func rename(from, to string) sys.Errno { + if from == to { + return 0 + } + return sys.UnwrapOSError(os.Rename(from, to)) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go deleted file mode 100644 index ac0861fda4..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go +++ /dev/null @@ -1,36 +0,0 @@ -package sysfs - -import ( - "time" - - "github.com/tetratelabs/wazero/internal/platform" -) - -// _select exposes the select(2) syscall. This is named as such to avoid -// colliding with they keyword select while not exporting the function. -// -// # Notes on Parameters -// -// For convenience, we expose a pointer to a time.Duration instead of a pointer to a syscall.Timeval. -// It must be a pointer because `nil` means "wait forever". -// -// However, notice that select(2) may mutate the pointed Timeval on some platforms, -// for instance if the call returns early. -// -// This implementation *will not* update the pointed time.Duration value accordingly. -// -// See also: https://github.com/golang/sys/blob/master/unix/syscall_unix_test.go#L606-L617 -// -// # Notes on the Syscall -// -// Because this is a blocking syscall, it will also block the carrier thread of the goroutine, -// preventing any means to support context cancellation directly. -// -// There are ways to obviate this issue. We outline here one idea, that is however not currently implemented. -// A common approach to support context cancellation is to add a signal file descriptor to the set, -// e.g. the read-end of a pipe or an eventfd on Linux. -// When the context is canceled, we may unblock a Select call by writing to the fd, causing it to return immediately. -// This however requires to do a bit of housekeeping to hide the "special" FD from the end-user. -func _select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - return syscall_select(n, r, w, e, timeout) -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go deleted file mode 100644 index eabf4f455b..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go +++ /dev/null @@ -1,45 +0,0 @@ -package sysfs - -import ( - "syscall" - "time" - "unsafe" - - "github.com/tetratelabs/wazero/internal/platform" -) - -// syscall_select invokes select on Darwin, with the given timeout Duration. -// We implement our own version instead of relying on syscall.Select because the latter -// only returns the error and discards the result. -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - var t *syscall.Timeval - if timeout != nil { - tv := syscall.NsecToTimeval(timeout.Nanoseconds()) - t = &tv - } - result, _, errno := syscall_syscall6( - libc_select_trampoline_addr, - uintptr(n), - uintptr(unsafe.Pointer(r)), - uintptr(unsafe.Pointer(w)), - uintptr(unsafe.Pointer(e)), - uintptr(unsafe.Pointer(t)), - 0) - res := int(result) - if errno == 0 { - return res, nil - } - return res, errno -} - -// libc_select_trampoline_addr is the address of the -// `libc_select_trampoline` symbol, defined in `select_darwin.s`. -// -// We use this to invoke the syscall through syscall_syscall6 imported below. -var libc_select_trampoline_addr uintptr - -// Imports the select symbol from libc as `libc_select`. -// -// Note: CGO mechanisms are used in darwin regardless of the CGO_ENABLED value -// or the "cgo" build flag. See /RATIONALE.md for why. -//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s deleted file mode 100644 index 16e65e8ec6..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s +++ /dev/null @@ -1,8 +0,0 @@ -// lifted from golang.org/x/sys unix -#include "textflag.h" - -TEXT libc_select_trampoline<>(SB), NOSPLIT, $0-0 - JMP libc_select(SB) - -GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 -DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go deleted file mode 100644 index aae5e48f66..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go +++ /dev/null @@ -1,18 +0,0 @@ -package sysfs - -import ( - "syscall" - "time" - - "github.com/tetratelabs/wazero/internal/platform" -) - -// syscall_select invokes select on Unix (unless Darwin), with the given timeout Duration. -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - var t *syscall.Timeval - if timeout != nil { - tv := syscall.NsecToTimeval(timeout.Nanoseconds()) - t = &tv - } - return syscall.Select(n, (*syscall.FdSet)(r), (*syscall.FdSet)(w), (*syscall.FdSet)(e), t) -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go deleted file mode 100644 index 400df900e6..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build !darwin && !linux && !windows - -package sysfs - -import ( - "time" - - "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/platform" -) - -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - return -1, sys.ENOSYS -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go deleted file mode 100644 index b5c1a1bdb1..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go +++ /dev/null @@ -1,173 +0,0 @@ -package sysfs - -import ( - "context" - "syscall" - "time" - "unsafe" - - "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/platform" -) - -// pollInterval is the interval between each calls to peekNamedPipe in selectAllHandles -const pollInterval = 100 * time.Millisecond - -// zeroDuration is the zero value for time.Duration. It is used in selectAllHandles. -var zeroDuration = time.Duration(0) - -// syscall_select emulates the select syscall on Windows, for a subset of cases. -// -// r, w, e may contain any number of file handles, but regular files and pipes are only processed for r (Read). -// Stdin is a pipe, thus it is checked for readiness when present. Pipes are checked using PeekNamedPipe. -// Regular files always immediately report as ready, regardless their actual state and timeouts. -// -// If n==0 it will wait for the given timeout duration, but it will return sys.ENOSYS if timeout is nil, -// i.e. it won't block indefinitely. -// -// Note: ideas taken from https://stackoverflow.com/questions/6839508/test-if-stdin-has-input-for-c-windows-and-or-linux -// PeekNamedPipe: https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - if n == 0 { - // Don't block indefinitely. - if timeout == nil { - return -1, sys.ENOSYS - } - time.Sleep(*timeout) - return 0, nil - } - - n, errno := selectAllHandles(context.TODO(), r, w, e, timeout) - if errno == 0 { - return n, nil - } - return n, errno -} - -// selectAllHandles emulates a general-purpose POSIX select on Windows. -// -// The implementation actually polls every 100 milliseconds until it reaches the given duration. -// The duration may be nil, in which case it will wait undefinely. The given ctx is -// used to allow for cancellation, and it is currently used only in tests. -// -// As indicated in the man page for select [1], r, w, e are modified upon completion: -// -// "Upon successful completion, the pselect() or select() function shall modify the objects pointed to by the readfds, -// writefds, and errorfds arguments to indicate which file descriptors are ready for reading, ready for writing, -// or have an error condition pending, respectively, and shall return the total number of ready descriptors in all the output sets" -// -// However, for our purposes, this may be pedantic because currently we do not check the values of r, w, e -// after the invocation of select; thus, this behavior may be subject to change in the future for the sake of simplicity. -// -// [1]: https://linux.die.net/man/3/select -func selectAllHandles(ctx context.Context, r, w, e *platform.FdSet, duration *time.Duration) (n int, errno sys.Errno) { - r2, w2, e2 := r.Copy(), w.Copy(), e.Copy() - n, errno = peekAllHandles(r2, w2, e2) - // Short circuit when there is an error, there is data or the duration is zero. - if errno != 0 || n > 0 || (duration != nil && *duration == time.Duration(0)) { - r.SetAll(r2) - w.SetAll(w2) - e.SetAll(e2) - return - } - - // Ticker that emits at every pollInterval. - tick := time.NewTicker(pollInterval) - tickCh := tick.C - defer tick.Stop() - - // Timer that expires after the given duration. - // Initialize afterCh as nil: the select below will wait forever. - var afterCh <-chan time.Time - if duration != nil { - // If duration is not nil, instantiate the timer. - after := time.NewTimer(*duration) - defer after.Stop() - afterCh = after.C - } - - for { - select { - case <-ctx.Done(): - r.Zero() - w.Zero() - e.Zero() - return - case <-afterCh: - r.Zero() - w.Zero() - e.Zero() - return - case <-tickCh: - r2, w2, e2 = r.Copy(), w.Copy(), e.Copy() - n, errno = peekAllHandles(r2, w2, e2) - if errno != 0 || n > 0 { - r.SetAll(r2) - w.SetAll(w2) - e.SetAll(e2) - return - } - } - } -} - -func peekAllHandles(r, w, e *platform.FdSet) (int, sys.Errno) { - // pipes are not checked on w, e - w.Pipes().Zero() - e.Pipes().Zero() - - // peek pipes only for reading - errno := peekAllPipes(r.Pipes()) - if errno != 0 { - return 0, errno - } - - _, errno = winsock_select(r.Sockets(), w.Sockets(), e.Sockets(), &zeroDuration) - if errno != 0 { - return 0, errno - } - - return r.Count() + w.Count() + e.Count(), 0 -} - -func peekAllPipes(pipeHandles *platform.WinSockFdSet) sys.Errno { - ready := &platform.WinSockFdSet{} - for i := 0; i < pipeHandles.Count(); i++ { - h := pipeHandles.Get(i) - bytes, errno := peekNamedPipe(h) - if bytes > 0 { - ready.Set(int(h)) - } - if errno != 0 { - return sys.UnwrapOSError(errno) - } - } - *pipeHandles = *ready - return 0 -} - -func winsock_select(r, w, e *platform.WinSockFdSet, timeout *time.Duration) (int, sys.Errno) { - if r.Count() == 0 && w.Count() == 0 && e.Count() == 0 { - return 0, 0 - } - - var t *syscall.Timeval - if timeout != nil { - tv := syscall.NsecToTimeval(timeout.Nanoseconds()) - t = &tv - } - - rp := unsafe.Pointer(r) - wp := unsafe.Pointer(w) - ep := unsafe.Pointer(e) - tp := unsafe.Pointer(t) - - r0, _, err := syscall.SyscallN( - procselect.Addr(), - uintptr(0), // the first argument is ignored and exists only for compat with BSD sockets. - uintptr(rp), - uintptr(wp), - uintptr(ep), - uintptr(tp)) - return int(r0), sys.UnwrapOSError(err) -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go index ea59409943..af739a9082 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go @@ -5,7 +5,6 @@ import ( "os" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" "github.com/tetratelabs/wazero/sys" ) @@ -18,10 +17,10 @@ func NewTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock { // baseSockFile implements base behavior for all TCPSock, TCPConn files, // regardless the platform. type baseSockFile struct { - fsapi.UnimplementedFile + experimentalsys.UnimplementedFile } -var _ fsapi.File = (*baseSockFile)(nil) +var _ experimentalsys.File = (*baseSockFile)(nil) // IsDir implements the same method as documented on File.IsDir func (*baseSockFile) IsDir() (bool, experimentalsys.Errno) { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go index 2509a17303..3698f560e0 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go @@ -7,6 +7,7 @@ import ( "syscall" "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" ) @@ -41,8 +42,9 @@ var _ socketapi.TCPSock = (*tcpListenerFile)(nil) type tcpListenerFile struct { baseSockFile - fd uintptr - addr *net.TCPAddr + fd uintptr + addr *net.TCPAddr + nonblock bool } // Accept implements the same method as documented on socketapi.TCPSock @@ -55,12 +57,7 @@ func (f *tcpListenerFile) Accept() (socketapi.TCPConn, sys.Errno) { return &tcpConnFile{fd: uintptr(nfd)}, 0 } -// SetNonblock implements the same method as documented on fsapi.File -func (f *tcpListenerFile) SetNonblock(enabled bool) sys.Errno { - return sys.UnwrapOSError(setNonblock(f.fd, enabled)) -} - -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *tcpListenerFile) Close() sys.Errno { return sys.UnwrapOSError(syscall.Close(int(f.fd))) } @@ -70,12 +67,29 @@ func (f *tcpListenerFile) Addr() *net.TCPAddr { return f.addr } +// SetNonblock implements the same method as documented on fsapi.File +func (f *tcpListenerFile) SetNonblock(enabled bool) sys.Errno { + f.nonblock = enabled + return sys.UnwrapOSError(setNonblock(f.fd, enabled)) +} + +// IsNonblock implements the same method as documented on fsapi.File +func (f *tcpListenerFile) IsNonblock() bool { + return f.nonblock +} + +// Poll implements the same method as documented on fsapi.File +func (f *tcpListenerFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS +} + var _ socketapi.TCPConn = (*tcpConnFile)(nil) type tcpConnFile struct { baseSockFile - fd uintptr + fd uintptr + nonblock bool // closed is true when closed was called. This ensures proper sys.EBADF closed bool @@ -89,12 +103,7 @@ func newTcpConn(tc *net.TCPConn) socketapi.TCPConn { return &tcpConnFile{fd: f.Fd()} } -// SetNonblock implements the same method as documented on fsapi.File -func (f *tcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { - return sys.UnwrapOSError(setNonblock(f.fd, enabled)) -} - -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *tcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { n, err := syscall.Read(int(f.fd), buf) if err != nil { @@ -105,7 +114,7 @@ func (f *tcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { return n, errno } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *tcpConnFile) Write(buf []byte) (n int, errno sys.Errno) { n, err := syscall.Write(int(f.fd), buf) if err != nil { @@ -127,7 +136,7 @@ func (f *tcpConnFile) Recvfrom(p []byte, flags int) (n int, errno sys.Errno) { return n, errno } -// Shutdown implements the same method as documented on fsapi.Conn +// Shutdown implements the same method as documented on sys.Conn func (f *tcpConnFile) Shutdown(how int) sys.Errno { var err error switch how { @@ -141,7 +150,7 @@ func (f *tcpConnFile) Shutdown(how int) sys.Errno { return sys.UnwrapOSError(err) } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *tcpConnFile) Close() sys.Errno { return f.close() } @@ -153,3 +162,19 @@ func (f *tcpConnFile) close() sys.Errno { f.closed = true return sys.UnwrapOSError(syscall.Shutdown(int(f.fd), syscall.SHUT_RDWR)) } + +// SetNonblock implements the same method as documented on fsapi.File +func (f *tcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { + f.nonblock = enabled + return sys.UnwrapOSError(setNonblock(f.fd, enabled)) +} + +// IsNonblock implements the same method as documented on fsapi.File +func (f *tcpConnFile) IsNonblock() bool { + return f.nonblock +} + +// Poll implements the same method as documented on fsapi.File +func (f *tcpConnFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go index 8e0ab92e54..ed275e6290 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go @@ -5,11 +5,10 @@ package sysfs import ( "net" "syscall" - "time" "unsafe" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/platform" + "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" ) @@ -19,8 +18,6 @@ const ( MSG_PEEK = 0x2 // _FIONBIO is the flag to set the O_NONBLOCK flag on socket handles using ioctlsocket. _FIONBIO = 0x8004667e - // _WASWOULDBLOCK corresponds to syscall.EWOULDBLOCK in WinSock. - _WASWOULDBLOCK = 10035 ) var ( @@ -28,12 +25,8 @@ var ( modws2_32 = syscall.NewLazyDLL("ws2_32.dll") // procrecvfrom exposes recvfrom from WinSock. procrecvfrom = modws2_32.NewProc("recvfrom") - // procaccept exposes accept from WinSock. - procaccept = modws2_32.NewProc("accept") // procioctlsocket exposes ioctlsocket from WinSock. procioctlsocket = modws2_32.NewProc("ioctlsocket") - // procselect exposes select from WinSock. - procselect = modws2_32.NewProc("select") ) // recvfrom exposes the underlying syscall in Windows. @@ -92,6 +85,16 @@ func syscallConnControl(conn syscall.Conn, fn func(fd uintptr) (int, sys.Errno)) return } +func _pollSock(conn syscall.Conn, flag fsapi.Pflag, timeoutMillis int32) (bool, sys.Errno) { + if flag != fsapi.POLLIN { + return false, sys.ENOTSUP + } + n, errno := syscallConnControl(conn, func(fd uintptr) (int, sys.Errno) { + return _poll([]pollFd{newPollFd(fd, _POLLIN, 0)}, timeoutMillis) + }) + return n > 0, errno +} + // newTCPListenerFile is a constructor for a socketapi.TCPSock. // // Note: currently the Windows implementation of socketapi.TCPSock @@ -101,9 +104,7 @@ func syscallConnControl(conn syscall.Conn, fn func(fd uintptr) (int, sys.Errno)) // standard library, instead of invoke syscalls/Win32 APIs // because they are sensibly different from Unix's. func newTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock { - w := &winTcpListenerFile{tl: tl} - _ = w.SetNonblock(true) - return w + return &winTcpListenerFile{tl: tl} } var _ socketapi.TCPSock = (*winTcpListenerFile)(nil) @@ -118,17 +119,11 @@ type winTcpListenerFile struct { // Accept implements the same method as documented on socketapi.TCPSock func (f *winTcpListenerFile) Accept() (socketapi.TCPConn, sys.Errno) { - // Ensure we have an incoming connection using winsock_select. - n, errno := syscallConnControl(f.tl, func(fd uintptr) (int, sys.Errno) { - fdSet := platform.WinSockFdSet{} - fdSet.Set(int(fd)) - t := time.Duration(0) - return winsock_select(&fdSet, nil, nil, &t) - }) - - // Otherwise return immediately. - if n == 0 || errno != 0 { - return nil, sys.EAGAIN + // Ensure we have an incoming connection using winsock_select, otherwise return immediately. + if f.nonblock { + if ready, errno := _pollSock(f.tl, fsapi.POLLIN, 0); !ready || errno != 0 { + return nil, sys.EAGAIN + } } // Accept normally blocks goroutines, but we @@ -141,7 +136,20 @@ func (f *winTcpListenerFile) Accept() (socketapi.TCPConn, sys.Errno) { } } -// IsNonblock implements File.IsNonblock +// Close implements the same method as documented on sys.File +func (f *winTcpListenerFile) Close() sys.Errno { + if !f.closed { + return sys.UnwrapOSError(f.tl.Close()) + } + return 0 +} + +// Addr is exposed for testing. +func (f *winTcpListenerFile) Addr() *net.TCPAddr { + return f.tl.Addr().(*net.TCPAddr) +} + +// IsNonblock implements the same method as documented on fsapi.File func (f *winTcpListenerFile) IsNonblock() bool { return f.nonblock } @@ -155,17 +163,9 @@ func (f *winTcpListenerFile) SetNonblock(enabled bool) sys.Errno { return errno } -// Close implements the same method as documented on fsapi.File -func (f *winTcpListenerFile) Close() sys.Errno { - if !f.closed { - return sys.UnwrapOSError(f.tl.Close()) - } - return 0 -} - -// Addr is exposed for testing. -func (f *winTcpListenerFile) Addr() *net.TCPAddr { - return f.tl.Addr().(*net.TCPAddr) +// Poll implements the same method as documented on fsapi.File +func (f *winTcpListenerFile) Poll(fsapi.Pflag, int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS } var _ socketapi.TCPConn = (*winTcpConnFile)(nil) @@ -189,20 +189,7 @@ func newTcpConn(tc *net.TCPConn) socketapi.TCPConn { return &winTcpConnFile{tc: tc} } -// SetNonblock implements the same method as documented on fsapi.File -func (f *winTcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { - _, errno = syscallConnControl(f.tc, func(fd uintptr) (int, sys.Errno) { - return 0, sys.UnwrapOSError(setNonblockSocket(syscall.Handle(fd), enabled)) - }) - return -} - -// IsNonblock implements File.IsNonblock -func (f *winTcpConnFile) IsNonblock() bool { - return f.nonblock -} - -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *winTcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { if len(buf) == 0 { return 0, 0 // Short-circuit 0-len reads. @@ -221,7 +208,7 @@ func (f *winTcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { return } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *winTcpConnFile) Write(buf []byte) (n int, errno sys.Errno) { if nonBlockingFileWriteSupported && f.IsNonblock() { return syscallConnControl(f.tc, func(fd uintptr) (int, sys.Errno) { @@ -248,7 +235,7 @@ func (f *winTcpConnFile) Recvfrom(p []byte, flags int) (n int, errno sys.Errno) }) } -// Shutdown implements the same method as documented on fsapi.Conn +// Shutdown implements the same method as documented on sys.Conn func (f *winTcpConnFile) Shutdown(how int) sys.Errno { // FIXME: can userland shutdown listeners? var err error @@ -265,7 +252,7 @@ func (f *winTcpConnFile) Shutdown(how int) sys.Errno { return sys.UnwrapOSError(err) } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *winTcpConnFile) Close() sys.Errno { return f.close() } @@ -277,3 +264,22 @@ func (f *winTcpConnFile) close() sys.Errno { f.closed = true return f.Shutdown(syscall.SHUT_RDWR) } + +// IsNonblock implements the same method as documented on fsapi.File +func (f *winTcpConnFile) IsNonblock() bool { + return f.nonblock +} + +// SetNonblock implements the same method as documented on fsapi.File +func (f *winTcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { + f.nonblock = true + _, errno = syscallConnControl(f.tc, func(fd uintptr) (int, sys.Errno) { + return 0, sys.UnwrapOSError(setNonblockSocket(syscall.Handle(fd), enabled)) + }) + return +} + +// Poll implements the same method as documented on fsapi.File +func (f *winTcpConnFile) Poll(fsapi.Pflag, int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go index aeb7419716..254e204cd9 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go @@ -5,7 +5,6 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" @@ -36,14 +35,3 @@ func stat(path string) (sys.Stat_t, experimentalsys.Errno) { func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } - -func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { - switch v := info.Sys().(type) { - case *sys.Stat_t: - return v.Ino, 0 - case *syscall.Stat_t: - return v.Ino, 0 - default: - return 0, 0 - } -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go index 426b2850a4..fd289756de 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go @@ -8,7 +8,6 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" @@ -39,14 +38,3 @@ func stat(path string) (sys.Stat_t, experimentalsys.Errno) { func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } - -func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { - switch v := info.Sys().(type) { - case *sys.Stat_t: - return v.Ino, 0 - case *syscall.Stat_t: - return v.Ino, 0 - default: - return 0, 0 - } -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go index b220041582..4b05a89772 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go @@ -5,7 +5,6 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" @@ -39,10 +38,3 @@ func stat(path string) (sys.Stat_t, experimentalsys.Errno) { func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } - -func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { - if st, ok := info.Sys().(*syscall.Stat_t); ok { - return st.Ino, 0 - } - return 0, 0 -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go index db28300bf4..4456dd7828 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go @@ -4,7 +4,6 @@ package sysfs import ( "io/fs" - "path" "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" @@ -77,22 +76,6 @@ func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } -// inoFromFileInfo uses stat to get the inode information of the file. -func inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) { - if dirPath == "" { - // This is a fs.File backed implementation which doesn't have access to - // the original file path. - return - } - // Ino is no not in Win32FileAttributeData - inoPath := path.Clean(path.Join(dirPath, info.Name())) - var st sys.Stat_t - if st, errno = lstat(inoPath); errno == 0 { - ino = st.Ino - } - return -} - func statHandle(h syscall.Handle) (sys.Stat_t, experimentalsys.Errno) { winFt, err := syscall.GetFileType(h) if err != nil { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go index 0f05ba7764..f288eb25bd 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go @@ -11,7 +11,7 @@ func fsync(f *os.File) sys.Errno { // Coerce error performing stat on a directory to 0, as it won't work // on Windows. switch errno { - case sys.EACCES /* Go 1.20 */, sys.EBADF /* Go 1.18 */ : + case sys.EACCES /* Go 1.20 */, sys.EBADF /* Go 1.19 */ : if st, err := f.Stat(); err == nil && st.IsDir() { errno = 0 } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go index 4f20b00ea2..4f7dbe3fe7 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build !windows && !plan9 package sysfs diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go new file mode 100644 index 0000000000..16ed06ab2a --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go @@ -0,0 +1,12 @@ +package sysfs + +import ( + "syscall" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +func unlink(name string) sys.Errno { + err := syscall.Remove(name) + return sys.UnwrapOSError(err) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go index e247809eec..be31c7b911 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go @@ -1,5 +1,3 @@ -//go:build windows - package sysfs import ( diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go b/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go index b4af415083..701c2aa4f2 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go @@ -296,6 +296,8 @@ func ToErrno(errno sys.Errno) Errno { return ErrnoNosys case sys.ENOTDIR: return ErrnoNotdir + case sys.ERANGE: + return ErrnoRange case sys.ENOTEMPTY: return ErrnoNotempty case sys.ENOTSOCK: diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go index 0d03243283..3d483807e4 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go @@ -36,6 +36,9 @@ type Engine interface { // ModuleEngine implements function calls for a given module. type ModuleEngine interface { + // DoneInstantiation is called at the end of the instantiation of the module. + DoneInstantiation() + // NewFunction returns an api.Function for the given function pointed by the given Index. NewFunction(index Index) api.Function @@ -45,8 +48,11 @@ type ModuleEngine interface { // - `importedModuleEngine` is the ModuleEngine for the imported ModuleInstance. ResolveImportedFunction(index, indexInImportedModule Index, importedModuleEngine ModuleEngine) - // LookupFunction returns the api.Function created from the function in the function table at the given offset. - LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) (api.Function, error) + // ResolveImportedMemory is called when this module imports a memory from another module. + ResolveImportedMemory(importedModuleEngine ModuleEngine) + + // LookupFunction returns the FunctionModule and the Index of the function in the returned ModuleInstance at the given offset in the table. + LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) (*ModuleInstance, Index) // FunctionInstanceReference returns Reference for the given Index for a FunctionInstance. The returned values are used by // the initialization via ElementSegment. diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go index ba65e9a2e3..ded246660d 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go @@ -35,7 +35,6 @@ const ( // // See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#-hrefsyntax-instr-controlmathsfbrl OpcodeBr Opcode = 0x0c - // ^^ TODO: Add a diagram to help explain br l means that branch into AFTER l for non-loop labels OpcodeBrIf Opcode = 0x0d OpcodeBrTable Opcode = 0x0e diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go index 3e2e21dcd9..ea313e1348 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "sync/atomic" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/sys" @@ -12,7 +11,7 @@ import ( // FailIfClosed returns a sys.ExitError if CloseWithExitCode was called. func (m *ModuleInstance) FailIfClosed() (err error) { - if closed := atomic.LoadUint64(&m.Closed); closed != 0 { + if closed := m.Closed.Load(); closed != 0 { switch closed & exitCodeFlagMask { case exitCodeFlagResourceClosed: case exitCodeFlagResourceNotClosed: @@ -108,7 +107,7 @@ func (m *ModuleInstance) CloseWithExitCode(ctx context.Context, exitCode uint32) // IsClosed implements the same method as documented on api.Module. func (m *ModuleInstance) IsClosed() bool { - return atomic.LoadUint64(&m.Closed) != 0 + return m.Closed.Load() != 0 } func (m *ModuleInstance) closeWithExitCodeWithoutClosingResource(exitCode uint32) (err error) { @@ -140,15 +139,14 @@ const ( func (m *ModuleInstance) setExitCode(exitCode uint32, flag exitCodeFlag) bool { closed := flag | uint64(exitCode)<<32 // Store exitCode as high-order bits. - return atomic.CompareAndSwapUint64(&m.Closed, 0, closed) + return m.Closed.CompareAndSwap(0, closed) } // ensureResourcesClosed ensures that resources assigned to ModuleInstance is released. // Only one call will happen per module, due to external atomic guards on Closed. func (m *ModuleInstance) ensureResourcesClosed(ctx context.Context) (err error) { if closeNotifier := m.CloseNotifier; closeNotifier != nil { // experimental - closed := atomic.LoadUint64(&m.Closed) - closeNotifier.CloseNotify(ctx, uint32(closed>>32)) + closeNotifier.CloseNotify(ctx, uint32(m.Closed.Load()>>32)) m.CloseNotifier = nil } diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go new file mode 100644 index 0000000000..442d26a224 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go @@ -0,0 +1,73 @@ +package wasm + +import ( + "context" + "fmt" + + "github.com/tetratelabs/wazero/api" + "github.com/tetratelabs/wazero/internal/internalapi" +) + +// LookupFunction looks up the table by the given index, and returns the api.Function implementation if found, +// otherwise this panics according to the same semantics as call_indirect instruction. +// Currently, this is only used by emscripten which needs to do call_indirect-like operation in the host function. +func (m *ModuleInstance) LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) api.Function { + fm, index := m.Engine.LookupFunction(t, typeId, tableOffset) + if source := fm.Source; source.IsHostModule { + // This case, the found function is a host function stored in the table. Generally, Engine.NewFunction are only + // responsible for calling Wasm-defined functions (not designed for calling Go functions!). Hence we need to wrap + // the host function as a special case. + def := &source.FunctionDefinitionSection[index] + goF := source.CodeSection[index].GoFunc + switch typed := goF.(type) { + case api.GoFunction: + // GoFunction doesn't need looked up module. + return &lookedUpGoFunction{def: def, g: goFunctionAsGoModuleFunction(typed)} + case api.GoModuleFunction: + return &lookedUpGoFunction{def: def, lookedUpModule: m, g: typed} + default: + panic(fmt.Sprintf("unexpected GoFunc type: %T", goF)) + } + } else { + return fm.Engine.NewFunction(index) + } +} + +// lookedUpGoFunction implements lookedUpGoModuleFunction. +type lookedUpGoFunction struct { + internalapi.WazeroOnly + def *FunctionDefinition + // lookedUpModule is the *ModuleInstance from which this Go function is looked up, i.e. owner of the table. + lookedUpModule *ModuleInstance + g api.GoModuleFunction +} + +// goFunctionAsGoModuleFunction converts api.GoFunction to api.GoModuleFunction which ignores the api.Module argument. +func goFunctionAsGoModuleFunction(g api.GoFunction) api.GoModuleFunction { + return api.GoModuleFunc(func(ctx context.Context, _ api.Module, stack []uint64) { + g.Call(ctx, stack) + }) +} + +// Definition implements api.Function. +func (l *lookedUpGoFunction) Definition() api.FunctionDefinition { return l.def } + +// Call implements api.Function. +func (l *lookedUpGoFunction) Call(ctx context.Context, params ...uint64) ([]uint64, error) { + typ := l.def.Functype + stackSize := typ.ParamNumInUint64 + rn := typ.ResultNumInUint64 + if rn > stackSize { + stackSize = rn + } + stack := make([]uint64, stackSize) + copy(stack, params) + return stack[:rn], l.CallWithStack(ctx, stack) +} + +// CallWithStack implements api.Function. +func (l *lookedUpGoFunction) CallWithStack(ctx context.Context, stack []uint64) error { + // The Go host function always needs to access caller's module, in this case the one holding the table. + l.g.Call(ctx, l.lookedUpModule, stack) + return nil +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go index e853d7fa48..d45d1e0c18 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "fmt" "sync" + "sync/atomic" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/internal/close" @@ -71,17 +72,6 @@ type ( ModuleInstance struct { internalapi.WazeroOnlyType - // Closed is used both to guard moduleEngine.CloseWithExitCode and to store the exit code. - // - // The update value is closedType + exitCode << 32. This ensures an exit code of zero isn't mistaken for never closed. - // - // Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations. - // See /RATIONALE.md - // - // TODO: Retype this to atomic.Unit64 when Go 1.18 is no longer supported. Until then, keep Closed at the top of - // this struct. See PR #1299 for an implementation and discussion. - Closed uint64 - ModuleName string Exports map[string]*Export Globals []*GlobalInstance @@ -116,6 +106,14 @@ type ( // security implications. Sys *internalsys.Context + // Closed is used both to guard moduleEngine.CloseWithExitCode and to store the exit code. + // + // The update value is closedType + exitCode << 32. This ensures an exit code of zero isn't mistaken for never closed. + // + // Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations. + // See /RATIONALE.md + Closed atomic.Uint64 + // CodeCloser is non-nil when the code should be closed after this module. CodeCloser api.Closer @@ -143,7 +141,6 @@ type ( Val uint64 // ValHi is only used for vector type globals, and holds the higher bits of the vector. ValHi uint64 - // ^^ TODO: this should be guarded with atomics when mutable } // FunctionTypeID is a uniquely assigned integer for a function type. @@ -156,8 +153,14 @@ type ( const maximumFunctionTypes = 1 << 27 // GetFunctionTypeID is used by emscripten. -func (m *ModuleInstance) GetFunctionTypeID(t *FunctionType) (FunctionTypeID, error) { - return m.s.GetFunctionTypeID(t) +func (m *ModuleInstance) GetFunctionTypeID(t *FunctionType) FunctionTypeID { + id, err := m.s.GetFunctionTypeID(t) + if err != nil { + // This is not recoverable in practice since the only error GetFunctionTypeID returns is + // when there's too many function types in the store. + panic(err) + } + return id } func (m *ModuleInstance) buildElementInstances(elements []ElementSegment) { @@ -383,6 +386,8 @@ func (s *Store) instantiate( return nil, fmt.Errorf("start %s failed: %w", module.funcDesc(SectionIDFunction, funcIdx), err) } } + + m.Engine.DoneInstantiation() return } @@ -451,6 +456,7 @@ func (m *ModuleInstance) resolveImports(module *Module) (err error) { return } m.MemoryInstance = importedMemory + m.Engine.ResolveImportedMemory(importedModule.Engine) case ExternTypeGlobal: expected := i.DescGlobal importedGlobal := importedModule.Globals[imported.Index] diff --git a/vendor/github.com/tetratelabs/wazero/runtime.go b/vendor/github.com/tetratelabs/wazero/runtime.go index 70c63cdaa6..c416be71e5 100644 --- a/vendor/github.com/tetratelabs/wazero/runtime.go +++ b/vendor/github.com/tetratelabs/wazero/runtime.go @@ -159,7 +159,6 @@ func NewRuntimeWithConfig(ctx context.Context, rConfig RuntimeConfig) Runtime { engine = config.newEngine(ctx, config.enabledFeatures, nil) } store := wasm.NewStore(config.enabledFeatures, engine) - zero := uint64(0) return &runtime{ cache: cacheImpl, store: store, @@ -168,7 +167,6 @@ func NewRuntimeWithConfig(ctx context.Context, rConfig RuntimeConfig) Runtime { memoryCapacityFromMax: config.memoryCapacityFromMax, dwarfDisabled: config.dwarfDisabled, storeCustomSections: config.storeCustomSections, - closed: &zero, ensureTermination: config.ensureTermination, } } @@ -189,7 +187,7 @@ type runtime struct { // // Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations. // See /RATIONALE.md - closed *uint64 + closed atomic.Uint64 ensureTermination bool } @@ -259,7 +257,7 @@ func buildFunctionListeners(ctx context.Context, internal *wasm.Module) ([]exper // failIfClosed returns an error if CloseWithExitCode was called implicitly (by Close) or explicitly. func (r *runtime) failIfClosed() error { - if closed := atomic.LoadUint64(r.closed); closed != 0 { + if closed := r.closed.Load(); closed != 0 { return fmt.Errorf("runtime closed with exit_code(%d)", uint32(closed>>32)) } return nil @@ -362,7 +360,7 @@ func (r *runtime) Close(ctx context.Context) error { // Note: it also marks the internal `closed` field func (r *runtime) CloseWithExitCode(ctx context.Context, exitCode uint32) error { closed := uint64(1) + uint64(exitCode)<<32 // Store exitCode as high-order bits. - if !atomic.CompareAndSwapUint64(r.closed, 0, closed) { + if !r.closed.CompareAndSwap(0, closed) { return nil } err := r.store.CloseWithExitCode(ctx, exitCode) diff --git a/vendor/golang.org/x/sync/errgroup/go120.go b/vendor/golang.org/x/sync/errgroup/go120.go index 7d419d3760..f93c740b63 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 1795c18ace..88ce33434e 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/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go index 58c6bfc70f..6200876fb2 100644 --- a/vendor/golang.org/x/sys/unix/fcntl.go +++ b/vendor/golang.org/x/sys/unix/fcntl.go @@ -2,7 +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 +//go:build dragonfly || freebsd || linux || netbsd 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 0d12c0851a..dbe680eab8 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/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index cbe24150a7..6202638bae 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -519,6 +519,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 +561,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)_/ || diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 6f328e3a55..a00c3e5450 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -316,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_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index a5e1c10e34..0f85e29e62 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) } @@ -1302,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) { diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index d2882ee04f..b25343c71a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -166,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) { diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 60c8142d49..21974af064 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -158,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_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index d99d05f1bc..b473038c61 100644 --- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -1104,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/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 9c00cbf512..c73cfe2f10 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -486,7 +486,6 @@ const ( BPF_F_ANY_ALIGNMENT = 0x2 BPF_F_BEFORE = 0x8 BPF_F_ID = 0x20 - BPF_F_LINK = 0x2000 BPF_F_NETFILTER_IP_DEFRAG = 0x1 BPF_F_QUERY_EFFECTIVE = 0x1 BPF_F_REPLACE = 0x4 @@ -1802,6 +1801,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 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index faca7a557b..1488d27128 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -37,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 { 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 88bfc28857..a1d061597c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -584,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) 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 4cbeff171b..41b5617316 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 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 b8a67b99af..5b2a740977 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -584,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) 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 1123f27571..4019a656f6 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 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 af50a65c0c..f6eda1344a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -584,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) 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 82badae39f..ac4af24f90 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 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 8fb4ff36a7..55df20ae9d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -584,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) 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 24d7eecb93..f77d532121 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 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 f469a83ee6..8c1155cbc0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -584,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) 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 9a498a0677..fae140b62c 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 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 c26ca2e1aa..7cc80c58d9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -584,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) 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 1f224aa416..9d1e0ff06d 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 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 bcc920dd25..0688737f49 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -584,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) 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 87a79c7095..da115f9a4b 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 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 997bcd55ae..bbf8399ff5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -2671,6 +2671,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 @@ -2715,6 +2716,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 @@ -2725,6 +2731,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 @@ -2742,6 +2760,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 @@ -2762,6 +2782,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 @@ -2778,6 +2799,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 @@ -2866,6 +2889,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 @@ -2901,6 +2926,7 @@ const ( BPF_CORE_ENUMVAL_EXISTS = 0xa BPF_CORE_ENUMVAL_VALUE = 0xb BPF_CORE_TYPE_MATCHES = 0xc + BPF_F_TIMER_ABS = 0x1 ) const ( @@ -2979,6 +3005,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 diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index fb6cfd0462..47dc579676 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -155,6 +155,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //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 diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index db6282e00a..146a1f0196 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -184,6 +184,7 @@ var ( 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") @@ -330,6 +331,7 @@ var ( 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") @@ -1605,6 +1607,15 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { 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 { @@ -2879,6 +2890,14 @@ func RemoveDirectory(path *uint16) (err error) { 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 { diff --git a/vendor/modules.txt b/vendor/modules.txt index fd2ad5ced9..c9285229a6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -518,14 +518,14 @@ github.com/moloch--/asciicast # github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945 ## explicit; go 1.17 github.com/moloch--/memmod -# github.com/ncruces/go-sqlite3 v0.7.2 -## explicit; go 1.19 +# github.com/ncruces/go-sqlite3 v0.11.0 +## explicit; go 1.21 github.com/ncruces/go-sqlite3 github.com/ncruces/go-sqlite3/driver github.com/ncruces/go-sqlite3/embed github.com/ncruces/go-sqlite3/internal/util github.com/ncruces/go-sqlite3/vfs -# github.com/ncruces/julianday v0.1.5 +# github.com/ncruces/julianday v1.0.0 ## explicit; go 1.17 github.com/ncruces/julianday # github.com/pierrec/lz4/v4 v4.1.18 @@ -668,8 +668,8 @@ github.com/tailscale/wireguard-go/tun # github.com/tcnksm/go-httpstat v0.2.0 ## explicit github.com/tcnksm/go-httpstat -# github.com/tetratelabs/wazero v1.3.1 -## explicit; go 1.18 +# github.com/tetratelabs/wazero v1.5.0 +## explicit; go 1.19 github.com/tetratelabs/wazero github.com/tetratelabs/wazero/api github.com/tetratelabs/wazero/experimental @@ -799,10 +799,10 @@ golang.org/x/net/ipv6 golang.org/x/net/proxy golang.org/x/net/route golang.org/x/net/trace -# golang.org/x/sync v0.4.0 -## explicit; go 1.17 +# golang.org/x/sync v0.5.0 +## explicit; go 1.18 golang.org/x/sync/errgroup -# golang.org/x/sys v0.14.0 +# golang.org/x/sys v0.15.0 ## explicit; go 1.18 golang.org/x/sys/cpu golang.org/x/sys/execabs

    sxJVH1pvicqJA{l3$zkw3qJdG_@rVT%)F0v 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%0DOr~G)z7f1nR<($k z5t;VeEd(HyV$L5~!2 zZ%1;kvwlX5$fs&xG7Tij^S?{^KheGL@poH|_k&f6uw*plum3DmB+cIi*m@I=PKx8G z!XG`B0X^4Hq%%VQF#6C8YBz9%uYFNBO@iY*C%na6saY$P@f(k!;qV1FV!p@Dv z08R26TR>SRVDFl|DT_l6AQ+MSUq0))r|#1m_>p`GV3}|bBhyrQ;)j)|L^@p?SOT*n z!bYc^IBs=~pOsFROm#ZnV-$MgWH>L7fMIkxCV(+@d@&SMNc2(!@c6g;guupqY=ob1 z!u%eyv6_)lAQPE>oJe|FS{{vw8DZo*CCte9=#j&;ZZcuUCmn{7GaQdx2{U5(;C|5> z|2KYV=l+fW7O+|gm$@p!NhD^R&Z*#D+fc#k@fU}%V@pTI?rnW|kUb25&x5ZW5n_dZ zB6iN@b5f*CoAJWgaN?+@!-JiG5v}1L?MW9n?G%i-3d0CuuabBS3YfJJj}y3zo}5@# z!O)2*u9Qol3kEYIw);uyxMP0Hj4F&T+9E?1fcdAII(*p^T+uh)@LG1z42Z7TYz63ByJWyB^$F!?ta@r`oh=(O7X@-NIe5t=Ef-18^tOkc;Eso>@D4DOAu z_B)rt2wLz#7{Gpaxta$w#&YPf3r#Kj>IvH^bM#$@z5IQBQam zqaiLYx-j`XZ2h<1l)%{PeZXW_-qEe9VIHzT@RAG9;aCjKIybLd0}&BruT8wCJ`-}m zMLfagWGdnhQ9SMOza63Wj-p;n#bIU7B5dbB>SGZfFj8x=6~bXPkfqzA^0Uj+<>YhVzrEm~=Ia#tC7d!MwB&)oK&7?qvi9L@0z9N%8Yp${i zj5JDMq?ff7j932@)HXv&=3zt05!}Me@Dkp+6;dj34X84MiR{D zX`(eEHl}A;-hi;IVGJ9lmtJz%aYp8NV1xz#OK9I_x`ZTX=xr&fpohMT z20CVY!X6F<82>2DT6ZvZ9~P#F{6?@!R+r+rGF>noqvlG`Ci70p>++sGqk#1B;^Xq{`djrdGQeuoVb4Fzd!$$i-oKuVe`chOI8EwT zR&VoiFcwgcMdBUp^W&#S`axGlBpzYs2^XwcNHd6SSH{6+tQJG^`i7Bs;>HqKJ=k=w zBy1XtgW0`#`@--rBRi1<&kELirM1Hvp)$-m!w9q+ZbLw-?#JHh%1q-8zkN>&;mLzu*8^RC1{}LSZ2%ld@8QsI@cb)Q08APbDQ2zW4 zB554&6n2Dxup0-f(LX$j!_b8Gc;~`FXOjoXgxsI^kE;2?el`!GXp{bfDpY4LSZ-ZzNKO6l3xAUr8@e z<)C#DATe$MMuf|oq|b=qNzgKWHd@iQ#=YQM(~c?~KOcq$RSkbROWRF2)kYv(s;5=NBW&t{CmT#m9iOv8yOut{uNr3<7aLYV7i`JGl5zp)3VFa2 z3VYH4)*EIOx+i?`G^QNFSK%b?Jr#%IrXfAG;z%&5ct|QM4m)d+$q_-;wvbe7h#juB z;-ph6j_*Y_deR9+6_^+#jT`d(E% z;58Ur%O`%(3fP2!fyJoOz>fnAVT19UKvu+CrQu(FOE!OHNO=tmCZCs=4KZqq(?j9o z!D^7xPddaylxQw16WDsQtb!n4S5`=xca+AHr{|F@G%4Cb(r)?97oK|jn#Zl~u~tma z9&OiU9U#U&AhAAq3+>OnV78?E6XPf`#>|nSXn{%>@nqU2WO|~BUrrx<5n|DL=@0xAy z!w9E?;cjf+3(dcKwz&@@oHpmKD!s7oEP^&waI!kV>kacVEJ6T(hLA=Z-e#e`^w*mf z>bE`FdZD-a8rx&0xi%{NmH{JWcET@`JFfCoBh|UM(JW6(+{5XLO{mPEvxQKG7(p-i%J)mFcV* zoi4$Jwy?53y1YKRR4glO99|v=B9tNMV~w#p>bnaYkT)-1zNURoRjKh|JGID=uc$gp{l>WavmaoKY+fVTjMXQY6VYejD86+p?#jQYH3-JyVDQzfVLR)LFcdG zJzE>+#4t1Sl+mjbv=M0umQG@k7#H4iDDo< zZFG?i3Ka016(4{}p~W;b1+rDO$wxJY!N(Uf4c^N;rDAy|F6i&X1G-GTATc_aDawwV zz>mO;KuCOUN-2S!5-tlmtxrSpV~ln7sXyBKlsY5oA%r@nrCMmo!W*y% z)UTLmWdf@US*WPN&`S9cm$58NKOtO)tKRg#yZrONQgNHlV?V{MS4%XNvqBnLO&|zM zBnG5SVk~gIFKLn&!}%Q_A!k_bkVDcWFFFNBIdS*y^dpGud151=wkOjGhx^L>5EMc- zUk@}l5daKxepCqY7>6AK$cjS9eJMwWly|Ar18QI*B5uV?pQH#(QWTP(c;zE+wy(a%FEcr^iPb8HN{m& z46}wMe*27)Nq-Ea2O?%|`uiCUrgIa~e0Xa7-?<GU^7GyIq!G5Augu~RZ-;mX=>Xy(RAvXB@>Fa>S(PaqE8)_RwyGIJ5MBl+0yCv^lB0!IyYL9s+v=7}&DVgbp6;uzT4Z>Z%)Z!^l zpnY_*S7TA*rF`$D_zU9eoYILNd-DUA^1bWX`!5xQe_hJ=>+Aa5W&K>r_gq>}A1(HL zB3`!xWKM<~zz@7IR8q<;@A5U9w3uF6X6H{PFe0cue73@;ek`fm=6?*dW>lOv*J5K& zKMYic6c`%;p77StaovF*0+Y?%s$?3x7vD2k7C43qdorUF^eLK=S@!V#gD{7H(!4`s zh04c&B_>qy%Fvq_lXzhxk>ysr{6>-|#h3uvZDBhcE}XA?5BZ||Fwk*ml6i(LIx^5; zZUw#KA<)hRg8w8SH5T=%<|IF~ZS)%Uv~`p_1nGH%kFa&*j74o7d-c|_H{Ck=p7~o{ zcM?@!J8bQ$sXNIMf^vIvahTW7V+a68*fA==8pd)&!=W-ZY-Wq%bS^4Qq^Ha<^In6Q zUk%J0I={Wl927yX8NlE0E<1>3Q0X=R2Vx&sf5CUgB#tvBv&pFFOc2ssUSaPl>d1%J z^JPm1NTcu)%x5>h4o#%+_K#Lb?VV(f4AZn#9 z$Rwb8Hs)C1xHYU?${r_9VqgLRv~dqZF&SWUwY+cn@mh=50_sKzKd{FG>;o=bS?^C+ex5qh^ zER1s`_Q~4fxFFzFd<8n?>m`MXcW;5YD4?q72CJbM3&;-pP=_zZRQ7%kSj;Ms_JeUi zVYjWPCab#gIEO&4w;az&!a%;~nnLOTdC^s?Jup>#>&utmdE%@~`JwpL92EQ#j&!RD z6S+N|a90!V-{uM94{DIwv zXh;%ZAKQe~W@_{D^fGFEFth~kw+$`*P=*wLk2e7QP=vItl9h)WMM%?f50bII@+}Xr zS2_Hgk8AF`MkNv(Ta47-HZ>}TYHt0e|2_rB2c>R>g$!Q7I`5Vn^+p6OWJrlbwj$Q8 z&sgX%nI}XDQedA8{$~Pcp=DX7bu~IvpM4q?LHtfGlCp=&ul=QzS9~hvX63avl_Jfs zid`Ai8(|eWMZjh@G^@_Vwx#4@VhQU}k*hk<-Y)EPt#U7I2RY0?%@A1w&1SiH`$V;ed*Fxu& zbq?pTAhYIgO*@PP0gTbS@j0B zRgXo2!43lQxqPaFBL-W_rxIPW85d^?;x5e~WlKmI;w%Q+l};r%Nj5>3rI?#yzN=86 ziK(0T0=V}?<*f<@M)ZZX&s!xJXA8BR-i>m{uf5}jp^utJ_%b!`b& zOXy*Y$Q%z^k6=)S)k7Ng!rm6=TWtEDa`24alDprBCCEgvbS+BwXgG=CB+7hyY4#IL z454eJEiMre3f+ z>w1X6$HT`$$u-f;U)baWqkWKv?oJ2o%0w{iD;ix^d;~1xZU;%lbmVift^0rfx$dlCf0J>X`vUdUu>XU80Hh6u{Y~~_ z?#AZPUi?F|&4V>M7>}^Ya5pxO_TmrDHvf;a7G3Vf=FwjK!?Vpd4Tih1d9)Y*$h7(Y zG-Lba#tYeg1%Q&RX$B0t!ujJ#7q$N+K|g4$I)t%odHWCm+baM5o93nA{l-80xj!Uy zR0e`>IiR}SNrm}moCpj_WuOOYu9W<5B)k-BKKovN948`6-RTr$vQ>Et`zeSZyuM|v zIJnIGme%ww+8@Wauz66X#T`( z^BH$nx8!bYj`3cD5g9qJAPgoDQQiBLh&rLUh^Wy#;BDP}NKb?;Lm>WAhcqDJ#ggP9W1Txc#Lip@<#b;l+m*tpmYekuZT_*NN`<+@_o z!7E|hGp#^H#DxmK6VP!8vjw+si5MaUg}rdZZO}aA!^zeS$xs~G^aCogA3%^0 z{&OFp;!2v9+6jveM?V^~;lfc1#|JLcA@2^D%{heuv!6jNhc;@==7I7aUrO;gbbjlR3Z2)&+eGD5G*pbNpCN>5_u0A_3l zn4S6wkMGt9ooWXmlcT@DW288=mBJqAp6sr+5WsXVkrd?5Z~ack9&yM%2$cWOB>S}F zeogikSkL%@TK>%V{L+%UHQBrQr)QhbI3UxKyEWOn`ESoQ|If37;ciX#_B#CMs(H&^ z?oZmI$Z=^uD04%}UHObe2HN0)w=)Ex9UuNJfCR^sX;N*cyDol2iya(0SnN{K&JnHB zO$K{tZhAWwJKhy6cCI2d(8(|uQB`N4jb(U+AZre|mwP~T^Cz+>2mYU6tb(XfSx_wC zNwr<`R+JTVIFpjiwtlI6V89{B7a*3WjAk2w!l*v)Q&`)>FSOHMUGt)IBmsBrH>~#I z(UF9{M!H6ma+Bak+MF6DHUTo$+i<1Jsu+GcopaMVe6t7TY@#sN91%3eCp-H@{JV-M=oCYQ7Va=)`yf+KR zPep`l9Jqx@oHHG#+yyL;!CQmpRLE1dewZZp1c3T^?)Ci+s zrPhhQvQjf5Fnv|uwkRp!R7l2SBDCrwL-;?3(hmPcO4UH(iYTh$=v<9y6d+Q@Kw5fx zoStPAEHbtZj5t^&>hMSx6r18uv+`H3>4xm>;D&5e{tB>Ds?TsZ{$2&*qDy*T^O#H~ zvP^4;_|iqdj)YChlr{Y&>h0>MT*Rdo`Im5)^0ghlR=XKpLQuQ8#pkpaS&ZC^s02x? zqKZG&slnrP%?ewH^=rB4i$L`xKgugY6dM3Rj#QQ9gAk9{5kxim0PRn*Nm2MVUr)&{ z#q?AtTH8&wvJ6}6%f)C>`_q3Nvpl0a*jdy(OT&tkL+1M?Qf_*KZ#vk5QSkI$(?#!9Y529KL{4EU;!B)*KQbei;(b?wL0R5&#Lg z%{Yl;Zic07D2QPqkbw4n%INkm1MI^#Xo9ytsL3_co_iv|^N(a7&0`Nh59mywB~ zv_ZvJec*uIGB&sR8cl*%hMiaX=w>sf3d5nOY&8GA+_virW>4g!FY?l#;ml7Ldm?lNeSU*Dd$G;4{A_GEkSKcla|sQY)NA3-j)AiP8Ru%9KWS0yMzn=Wh{OvtHSzt~KwzWb1lCLKh)LI^} z_Qkp@y+XYySH!)!FRB4->O}3-kMauL4?|M@_90BPDv_j7Zt1wa%Z}NaxnqRS^`R0; zpzjX^hAiC*NFk4OHE`tgO!@n4jCu_(N6?6@2vqpx|XsVI%BWh%1>_{VHJmQBhMI*DsW;YZxG9(rnnKnT#Lt}HUl!?FI zm(GVGV<$I?1*!A(znIvr5yXGz)E~_lqbYDm>}~Rjj6nm=-g>oaCf-GV%Y0uxFGu(uJnO75 zhWCkf<72Hf} zFHR^h#5>0@8v5j&b8gSz=x(FfEARjURj^p*4yjnK!Ux<%X;N*|-y z#&@!gTpE05F>mpx&=-(Gd#0TC=HI52usI_2d`7`MqKXAYBQfSMi6O4|x%UPLEarRk z&<3;PS{yq7X2AtT&FGaZ43GmNz@_zG!OatWxYW^Fy$gtzJ08ARX8%yQNNpKL$jWJ| z;Pf7TQ%8?KUaJiQnf{nZzGwVSt$gSZssC^dyk$s>e$=7@#%4Hyg$z#?Hn4m&8G6U4 zwG_??|1b#IV8q!@avx4&bOzs1U%{2hH{d3 z#=kyPHlG>-iTSMjp%y!$aQv3G1`79E22$K-iSv2L_+k1LbC~l}u4PBwqKo>#neEk#j#*v@Jz7=mSF9?xSDt%6!t9V@C;Ow+#E|QI#2-l9MJi^ZYf(z z9%}GU9BRPOhCXRXJV@jW9t2$An1cay1IJEsX4Qz8YcAh>bNS|9eEF0#%&6WFvXflp zim0PS`3tSU4@5lrX1+_ve&p+N%`y1IPv~?SDo4QDm1^7M_u`s}%km19<){&&!oP`} zds>>n@S8}Sl%M_ykXRTzs4%#S_ZYk&1~=2NceOihq+vHO_#rSj1p%)ULRg`3N|Y~f zkJy}m$19f!Vgiw05RU=d3?4_ipr2@Zs(M-fdhfAmPfbgdW0_49RcDH2hA4<-UVs^b zOkIj21WDezS2p8}fuj4cgbLqPaX!6Ib%xgbJq$^@KT+tT&Q9c>qh1pE?scicYl!fOr#ri%>ZlM+x&o z^{8@z2UPZy{rqba0&0PZP(ESM?AQ4XMI4tzcx?i2;EPBcqsN*LOHmagpCZO{R7WUU z+eLFH37x9g%H4^mpI#2Ew;olQD8ojxL3mB+)1d;UPYJe2pUzjHl1ELSN?wu9VETj* zCB%Gc7q8$Q#QLfbfsclfLtPPKI zQ^TY0nUw5r66ptHyYL%h^hK2fRtcIB`%@UTna>=flPnX?pOlOo48NYW=3Ex7ZN#M) z5X{?qc2z(~l@a+=@I;W-a-%{TVAS{rMnwm9u9O;uaIJAzMEG`w4J8-u!9GaNNZ!7W z5`3Jp!LNF*V|9|oZPNJdP+Ng zJ|T8uGblykSwa!cXQMnti0;um3n`n-wCrz8KrJK{^;LRIxaXu|*LUIpMduTeS;2(U zBeDGSCJ7B?#&B4z>=J7PKuASn`2mk)E85u=j6FozwpUr9d!@$eHaM?8e7i?G=m0&6 zBkF8S%1{A7$qAlOq0YPwQD{|!RvVC*_7kbm5O^aEU=B7#VKrf;f_)YqsyVUqm+un9 zL>_d8|7w4F$Cb`Z`EISdq%_iMSWh&A*c_7v z*dP>^DNUdVg-;k3ws3ru@Wfa|TA-i<4Y5v3!lH$6mvx+gomgrp<-^=n zOj0Lda5$*2sBbJ1LKS0{pY*y4i~3;EIAD@1w*4uI074w|GC%z}+E=>rPQWCt5a^gxI(p1vr& zCe-%iAx*yPdY>XgNMOknU-Z~Vp{q_*E{Y~_0WRb#{C9}|JaAC!G!F>PK`soC44Z5B zQyW?WI{Z+4;5~ukaqsLTp))KrD|!3+`rb?LW`@!En*oL&nJus+dQB zfDq1Z8#UfwM+(<^W06Z@tm-?MndM_6T^p38Nt;Pw(g@f|p`lQNl!!UN6N;5`_>b_@ z!g60-gH%7+EMTA3`j`umrfA8@lQKji1jYf4pq>rh%lnK*yitp=mYx&aLDOANCa;1F zh}xGP?2ouk_^aPBIReORv^Hho(=ckwJuy_M2FZPUxgbg5({~x948iOPB^-ks4zwVf45VVL#={q96#lT zlelCihI>pL4#eVO&{ibFiG;EjH{i9lQxWBqTu?w3p-76nD|-)P_$uWpQPDq+sb-@T zS`dBY77K2n5lvgfCOS$%o$PZHB!07r+rWy;-i7k88nCF;wv{ss3y9OJtQukK5-MJ*<%uf{xW>n;@+037w98a`Z+<>XKeU_PCml)JXR4FZkL0g< zbT}#Ufe3N(4S6w{0QzrG4$L>?6C184vVKnhGM$L2@&1FW*Yj_;1*Vl&W3o1p2j#qI#~paWNVZ4+&XhPYvZ1Q^N;e=rV!>q0hs4dx2$1LbEDb70K2*SkX|J$aSHk~%_qL^K6MW&HuPtT?<# z9FG};ArK|+TS(J{hXR058qVjFYbZC-)E^OY6U4ybA@1H1WnGKLpg|xH8p;zwFhOX6 zSLlcecHu6tkzxg85mMp0F%(QU#tO?s3P6F;PhhWEK2Mc)8tcAj4bz>{5Ho&+fv2Je zmv_4Pkv9h{eyfAOHIot5>x?Jik|ELE4J3r*jrohW1=s`-Fg=1NnO1{LLL0#QRkKrl$8-grpU)uuC0T(K$q(RzC$0`o%AV5#Nv-p|UIodd@I?^t=o$c5p7 zR8wg7DX6k2X35ME8OTDBSrCXKvmhp+e32P8FwS;@Z)nw^f)^Ex2vv5D_wa!cNKvpT zW>mITp&PnG;|({=kusl4%{lAOCPOfj9cXw&gvKMXSVs@;mx!QO-Jaw)G?cm&Bpszs zt$)4sJ`8JRi~3K2<IRtG8$A#~5E`7W8_YEtd{Z*F{>}BB!FjDs8yMy2qTiiT2P&5$hE8y% zXf?I_X86RewEIRfy;y&OutL7j@!D<8m!(7RIj6?pW;wE5`Tm;a$c8`PPy4kS*?|K} zs6aQCPQ*?`zeX&Z0s{cNT=wH%8KIlAf#Dp!!1lvm$GkE1whUSW8?+37;{ceIS5}iN zX*lmkk4P}9j0XL?jK(~o7STQbmarnbETcj86?-O;)lA~YNEI`XOsLcrnKJ#b=hZOo zo7at=zUMgE;rtS=>~k4rpR`rB&C1!Jg??jgqmM9t7+)a_(q2Y}ByIVTgdAT)8zqY% zY1nk2!O~!oNGGh4&G;cp41euxWa@G@BIRs_(K!~`8b7OKv-Z>q<9h~{tT1*qf?YTp zonxYtXILg#qhVwMDwEOlB(psXtESa3_z?|4DgnY!x>|*oHWcUnwJN_S<{1n^@X|0C z*s@HTsQ3!U7rLOCp<)9l;J(J@jWwG=D$$AJ^I6G6ZUyh&UKT(Kfn?mo$QdE&jB>tMB#E_e(~t^(u! z%mG-652x}&bsb=+l_TT+k8ajQR=Fq{@h2SnYJygeVBelew*JhMzxv&sW?mfkoYsgE z(@1Mfl#5u*Js#2;B}ii~qi;}}bEsSAK#Zi3DCkX(Hq3;^IpN;=#pJjFHTOOe60ojUkGM1|!-A=YiruE6_y2Gjxx1>O@q6aTz+uMTdm>vh7 zuq+s(yt&nU3k9aYVgMSzE1dV$3G+}L<C$d z(-E_Qv-dJ(@1ZNh$He|R1i>p4EuZ^@V1!SP^`ux~u_=-dQ*l+}4^sfny#xm6nB3V~ za$A?Qk@nbJdzQ5-I(LobB0a8om$;|u?l~v#%AN5xX@_HZcNLk~2+l?BVF_N5g$?hl%iX2RE39%F%TM>R^G&7qrbr zb(fu-ZIvsAVu8WTkiu7p?z0+#0aJ(3Pzv`ihnTThNDO=b0LChBESeBTe;KTTQjsr8 zWto>TOUw>aHBvQIYQC6NI8cuf;lPzGL&YXgP}C?NDF}vkhN#$*n75`i6;=GOsPa*G zicz$vVv}j=aLt}Iu2u@kjz{4MKoxi*bihiCCbg607IDLMW+9A_)G8MbWxg!1(5W`Q zZ51H4Wp|cH6Lp2X5GG`-1ymQaq1$55K+xF&u*bwM4=v`m`9VoJctmZ^mvOMzQsUvzFMC1u_j(J8 z7%hr<2QYFv1H5*8tyo|e@36>JJ|Q*F^uawFc*ZjDjJ5sc@&?Wkc2P1m^gy{7WT~!v zV1VM2uCYyu9lASgq?`J2Q*XXvSBy%tAIPdLVy~xy6Usxb2h3DdHdJrPUgRwi9D0Cv zRYob4oa+;e)Z%?HBW)YrhmPT#v^g<8ClHcm8ri>M_O~#;Y>I=81D9E+hNG{&gQG8P z@TV!`BOPs1L8V(nZuxw-V|<%pZED6>#VBaM5EvgcTE$+9Wro;G95L`wVlSm2iuN(> zp;yb`(^BlEF7eG8ujHwqDE7%#!lrS9)jWf?Q=Y+(TB@3F$m0GI`G#ZA8@mT0K||KO z-QZzTho%eIg!8Tn_csKLOk@h19)9$4_Nptr%bkBrpyHQh3_pTo)dW7m5|>0w=sTAL z-47u^K)8yFm5-B|Rg1VzbsXhC=@12|AKd3r_-%E3_?cTT2r zp`<3J2 zWFF4g7EvDFm=dYr!*q=&qCkoNj-p{=z`wAA^LGNTX3dn)*fq03`7y-t9eh$uZIbi(DLz;EJhL&G@IeIMo>G1>EaLaC zJ~cTGj^0369^~F9(H53;uyTQWm*bXR#l4Rq)(fk`<{S`uAZIwUqDXHF9XAzpF=9f2%)Vm6N+X1Psix9QI*G+dXgxLAp94a_#S5oLBKUs|$rV9g@#THKK-F7lt8wxCI34NB-a#S(r@u>_QPiC7Zqw?}f2 zI;qW8dw6|vl%Zfj(sUU_Tg$Qr3M(8aGVHKs^3`dW-2G6CQzhB>k`Z-2D(1L%OPr?S zJ$L-0ymLY5r*%%xfCZRoaAFJRL@ey_u^d*1vr!B2`zCWgjPHT^NxQWgH$b%bpJY*7BF4tf{6bqte5_l8EKF0Cu+ z$lRvspP&zoz}{9>P{-m=i>Ae&(rhy=Vw0w!pY6tM6SpD$rSi7oYt{5YIdYx)BqCwQ zY_0~7(FobfJl&c&hUL!u=y!$R#TsAVD)kXm5{c%+vqWcUWpj>ARm?i*)tbD5{}#2& znNxllyeYqPvL>cY=P&^+Yd2q8Pu|MriZ0jl_rINQ1N5B7I|}^6{dsr#39YMrT-CPcMlzYLPlKW{FOIXIvz9kupngA*c?(IYtj3UBCLs`_`}a8(lO*hcUyQ zpY7#z=tU$D(6?4V3@<>bqxMi&uj_ynp^<>v5u=zlqvfC3>5HnXWU>lmRtuG~H(rtEm6tMEW(xiMPDP|2ts~Os6_MU9iAb0IP%O(jIBiCxsIdf9RC+f*rU)N4 zc#2Bziap>da%c}zlz|fET(Ri(6iGOC)mwoi#3{&a%!eUP$F_XbgY6J5!5#)K!W2R* zI`4_G=-$&|7KAcBC8O5ed|)j^tCl8&ri^?iwrVmDD@phVK3dljKxdyar-2LsM~Dp* zaJG{)Y7j`?%0&R_O>Pm~c{qeSor&mvf+bW+P6lw5n^FI~>goRAItIWE(D-kDEGHg#M3WkwgZ~0n#66M>+ zG0jW)2>NWbgUHKY`xyzhP*VvjDQ>NucESx>zAZwH;c(i#iYW#A#uv45VDA`o4-05a z6q0W38R^!pDF#aH}`Uyy(ql|>1N9lV3vnf zb|3Qt;t2KS7*`a&^hKiG_KZI`%J=9rO-S&qG~TnG;pYaRxYOOEju60q!@zlgx+kMVHkWp5^6i~aJ^jzxg*0^ zWHGDeQvoP%k=*{amQgYw=v~b6Cavt&Uc+nW#RGWjp%H0Z_Wv-%5m)_o-Z6bUKce{6 zI1s`zc|%tYXge?r=8ph?PryO8y|0y z{R=3yKu8K<9axbu3N|reM50uQap{#)To%rYlB`DF>JBCnFbgLOYOvIkf(={HlL z4S2N!sNke4h&*_2*?#!?r8)skYWd3#N(RYxob&5Yf0FUz6wm^>$p%#J|G+vAAK(!Z zQ_WTihJTvx4F7s@^wMhxqt}n4>x-B9@gW4ae=X?O*GPu*uX+9YZ1roTUmvS}4gFm8 zYvAWF75F*M?cllU7ZvS!uKLyUbJee|pVP=SmX4pRex-h{`jz>)>Q_tm9sym#-V8Rd zH2#H=_;aOHA%Pv%M6mi4z4;MYHGW62YBH9Cu(tFUwMS3j{kQEjLv z6`^rAr$6Yw-e!#&+pJxggho?w1V#j?Fq~jU6<);LNcd4}!|}X} zDwQG2sI(%q0&&;vG=hX+&XVWnlUADb=LSQ4>c7d!^(*V>m)pMkT=7lMzaq*19)I4kN{iJ5 zmp=m@xe0Ufo}QHzdV*?N98ZS+JkcimHK+LPv$ z#*tT_21kAutSY@!91Z7P41gmY6qyEdrx5(X>lzAj0}o0Oa*wb+Blo_@(O>K_7tXG- zo#iV+h!%=-RnR}>4zH7#QtN7v2>eP51#tu|ixBz+Cz50`RfyXsQiGh&gmD`UJMK*L zo%XIuL5;NiOlv1@b8ssZpC2-#xoxl8C7?{F3K9#NIFkz7fm>m23z{Z9MgA7_+}-lB zd&Qyx+Y&2+XlGa&x2u~{8_n6ge_4>ni|vrO9HAKt$}R9RYLTQef&8qKk4%zIEq%cY z6qgIZ16Qlsnn6}(g@y7HESuKU%f@2J^=A2ioDlqAB|@eJAror;jg|y=Z1VXQ^GU$5 zZA6G+9+1sL|Gb7?p&Xcn`@|@>FoSZ8TT_wJjJD;ej6#Ndg>vqUv4#94ug7%!!tIdB z_9AHa;!Jpyo2d_BU)&2B%pv%H$Wqm_rUx@8afk}ouULny3Z4h!KVa4n=Zshm7ZZT3IQ{Hvi1m3YskQ{-SE)yupC_&GAuXZL!xW~80I>jp$X+{*(0&Sr? z-Y4G3cdTc)BpGd=S7tPFXjVIfYQbmqyALl`J-nj|)jFzo51+DBa(*_W)jBBXY;&_$ z5+~w@S?G52ea3bU4_ZbSR&-cZ!KNFC%3wN{oi2`AyVhPUx%5u%Bg-_c`$3Dx2~mco z`4y~z;zlxw6F_)=vLD~gyg^11Dhm4P$z7S2PWt-1S-?=dqBx|LRY4|rlEPH6^1{C< zjpWg+c->isMXePE&3yEx#v=8-NaTr67fC>i8M0j&RQD>Q9DYS6s#OEp9F9g-075NXojzH(^ zx}n+Eex@x3+s*fheZ_c;w(=QxOcIl`2`w=(VJcwHy(pEk3np=mDAM!!UDt|zL>V~# z&$!ji?=mjkC0x48cudoLUlsO;$ym_S3&irfigFACl2p)u^q#z{G0g{-sv72u$*I#k z;U`BtB#}Z8yA#T^i22?IANE5lfe&}{y?Th17bXZIL9G-a`EB|Mjxx7QRKlq8W7jBk z6DJn2`1kWfUs$)otba}#%Rs!6^NlVm^*m*gPS$Mj`+>@~j2uHNWSLb=Q0OI+$5;vSyOc07FN~Nk$FM+`Ac0@wF26fH z7d~Dm1^{*YvD5i7{ESsv2)v9cm^?k{ZRSnFQQeSh;cDw``~|vqN*-}ioJ_NzSTzbJ z>Kx~IBl8V~bij7rb{`wQRbiJ=GDfl6%WD(C{S1ypd7IjvV->tfvx}e6!^51RtR3}g zKB3mca(*O#<@n!YYKW%&7R$1PVZY&<7NUybk@wpYp9&|YM*RgRD%{0sKAMYszo;@) zSPvqJsVopO_ynA6s8kpEgv9JcS%3sS4m+aJe08fGn4n!p@HLm^P~`#@+F;JFM=JH@ ze$k$^cV7fHZ)T8Y=`>ptMX9RbKN%H$Ehl^&^SZ61AN4`KSCw-{BQ81ME-#A|d8O*wI=hyAVrLD{t_R8?l^vcYuBfkW%3}25Fds&7Oqe1PJ z>F0Z+SB5kI1yC{~JC=r%V|WfJeI(phsYt$k5zqR^N1-N%O(*W2w@g)Oe%SWx6K3}c zqoqdErM)=2KVen_&F3q_+`L8!hXQJt(gBjVL4Or$2NjQH-&qhBoWNcHt?(^;K0rG( zxdKj5f=2wMWTC8eeu@+3ot^ps*T2kut~o=u&>jsM1*6x}hb5;_wD=0@?6_UISuUW0 zQ{qaVfsUP2#G5#n=^$_iMma+}XUdQLv{+Yght#Bl$a*c3cp_>PI|H0#!21- z0)mqYXOIXq_-{mhH@jjd%ddFFf>Wekv6q?I-Pk3ws{*uYDI?Pb^P}`>OF~srYoc9H zSV5@=C^cR_`L1zR+nGT^MRgtSBx{3-Rv8sqAPo0pRJfOPM&x}V(KZMDK{mp+4P-NN z@7=rsxp&UupD|>cW#9KYO}*|wrxed{;m0w9)F&@ML((j^|A=^PBY~9N zCmn(Y-p)2MGa5Q#qyBI+9%WZfkJ%vhfC-H8lP%Y8g<#kK2ZBK<+ZqE~(F%de&iWLs zBodplz<{t$Vp!DhZK&v|LzF-aNW|{6uapTO%NNfAy)JehAjejZ=@*OS-Kjn<>VDZ1 z-IB_gxLO^ocD~7K=gn&8<(H#CMIaIOR~G+hEMnX9bq2)zGy}r-JU!KJ7;Pev5hQ|I zE_)WyFRR4}*Nj$?`~)yiS|$={MouQ>AOD}MU5JdOwWVX7NAo{$wHOQDxDn~uW^YXm zu`_cVlb!z6f;ntJk*qA(nq~&XzTD#T%aGcl^#oRJq`e6yAL&6}K$!sVbQNPlC*R`J zaH$~|5QId*W9G|jzh>Af*-CK5N;Lb;@8->jX0cWAwZK%XhntDTA%ZtbUhu0~nYo)gq=?!jGvyMmoP#Mk-mFZwh)N(#OaXH;rf)m(T!@zRkK7n2#k%K;*3) zT+d8Dt%PcZz!p<`ctx65MoDt4d=NQSb$X3UfyE{i{Zf==!@YScQKS@r6?Owg@2wDC zss=lkSG#mv8|9UMc%F1|dvHHOwg##W1>}_i3MX1~fXQ5W9W#bZNsy-OQnJHp_uZG* z0Mjp}4(!ngt`7&<5Xz_>uL&I)tx!vuj%=S|_o2t7;^3WBig0C~qIA)n*DyHF8e{IX z6)D&`f)$C>)z$`5JesF4ZE85O$GUKieu9V?s7UI#KDqPu^dEXx!qzL~{<)5}A{o!u zkKp+(Tl%4JIN4w*Ka9*DmWyF>k^<}^h=-6h`{}lL3ziE3qP*^3N|B$sDw+r1?JB~m zQ4<$BE}sm2k{37avx!H$a%wlCkwuQ!R{*dMH_FPZmt@Fi!kQQtpS+~>>lO{7zu`ep z1WV7u<-kP@*N0O-QaBt?*zh1$FhUF-1`WiOl3?k!h5W%8(;`}djC6JFI+`mDds`!2 zqh1~5^3*dp@eml`#j>5Ab;^0X6FdhhP>HqKra>&Dww%ilkGZp4*|0s0)uQ~QEQ$b^ zA4)jf9!K&bG9e=OkP~GoT?%W+=va1}B8JKj~guWn5ZZ?`;W=h*79fhK) zdVv*j>*C}{}n?(nBttxh~8vc(19M!jWVoag}JGKCup+#KA7j4eO$M29JE zD$rmxl|N(7d;0v`q!At2tjn+~!fMuKV8eZHIHX%O_!(L@{Eu0x!c-XRDNB`UwAj2= zrKhI>b1W@&wYBgLyg#K(5;r;NB7M-^*IU|3p;(unnx4rhe3DYeW$&Pp@~6Kh#9)?@ z%6t-?XIWF3&dCf$-gLSoO(NUX&Z$vW5ZnP%M>?S3Q>~oZ(ZWyFbEunq zgxBqSYgHtk0jD|EJmB=rS46V^vt8LSQNqA!v@HN|D(^f2@RAr23NY&t z{oyc9(Ou&xx@J`Jt_ndlK*M@=BHf9is3i?7!p@Ft%>6O8K1-Y;RaqW?_e6Ylf zx%^%9<97MuAJ-APSbRT=pkq#d){>skctYp+^2Evdi66P4C$KoiC;oKv6Kmm#ynf;% zzoaK{i1~>|-<%YnzF|lj4L-qk`Cr@?s|cs1H-|x~aWxfJXqW%)m+8Ewpb|eLDB=v zVWMd@aF}WXt#xfn_CfJ~-WE3t!nsROuzUtI>CiMSzl7(>&uVt-Fjwy-E?2OcmoJq+{t5P}TPyW-6zx%*Az!9tO z>I8I}0E_qyX#sS+{SvhNjg84RJ^s=cVvjn1FRh+$_5?fTdDQ&W7KUkmdil0}e&|t)UIM<<-hufl3#w-SQAPQ)Q`}1Z+Ma@8_E0QcXPDt^x<*&_(!!9 zw(*wzD^3hGLi1y?kSUYZ$CMA;ni817Z7q&};b^*t%1NxlliJvEtuH6}wo$jbhf{UO zd!OC;-nP%2&7n+~Fl){~sD%EBQW}3{$ey35iu=8V?!ac1RLz2fgG_XanMjTEz2+MSUU$Z|2l}&K$c`w|_)|wt^h3yi9QX~9+T^$-EKbi7ntSn> zQD(?Q9>=|Oclt=)Q8ImNdZ-!a*@Q#QVEJJiw2~jJ4mCR%($+R-ZXJw1%G#89(A%qU zO4>nyMC9M*zI?P<-Cr}_!dBgxE@joFORTz8?i+yA_(`{IW9hlvSB5iBaO>&%gW2_NXph^AA=xRN!t@(dzLll@D=X-f#Q+?aDQ85 z11DA|sAT3EJ{j?#u?8(+iZvOmzL>jS9L}c;afuU#+U?8vAvqfYKAm)xk-jt*RI(_@ z{qCE^r(LONO$pw>r+0x*DFgM=N36*YUmE(Dyc(la4HolY(<>f0}@!bvF;)`zhW45YX-;3pnq1?#IrI)twT(I!=4^S`ROQpr1Z zI$^<|Cth6#DR#}H3PR~MN}(bfV76bGhAaY6gqJ6WcUp&UW578p%*6<9BT#3anQ)FI zRyEkyhr_-UMnMfW1^ZRlHZFgK$|?OI8iG#?MAuP|Xk;xSo%p=k;y^7vFHL;;k;xw7 zqXxCKC~r`)pei-TD5-15_{wjtYTVt>?u4bTYTS`P@f}bUyp99Hi+mFU!lGoa=9~FYSy^JD_*_0%3tV=#-YYtqxPTP#gMT4OOSreKk_!Gdg!~u z|A#X`29#iv+C2ED05B$;!eW^+{`QrsC@jSQcj%W3HQ_IputgEffoc--F4LCP1lYmeU#GSF+Fp zDpMB7k7!Sn_`~+X2>~ya4Q^LAQ%+>q1JP?lT)K*d{gZ9np7KzRi&tQ5)^0b+U!glE z_2)QF1sEG1X6=g)=tC!rDoUgftptI^SP_=+s}z29KxWx~F`(lElY`lrasZQtfvxUKH$ec#N(=mB~uYO*XSg=;5I)mi&gZx z9h6TKa)G5(z4Dn;5Lm7foGX`tElQT0u!bLbVPFk!$E`LpuliYVBn2Y zFvK4r{6BzTr2&GKb%j~4=-CyNTgkl|1|FH0jaAjLqhWki_k0>2-#e0?+#DtI)`sK? zJ5iypWZ*lM0j~}U<;=)|hHznSN75HT70{h(zrx0jQBKOkt%=tQcH?7Vy*KHC%Dq_(jG z$IKdDM(qg7<&=T+4BItjudO{Xn-&gX3Hn9KL* z^9}F{5)*}_b7<8}Nwx36=M5@sR%tp8`4@MYjJUNdm$MV7=0pinYKlc3AiI4IamU~W zqLYwx(9XwbPf#KLL481~n;6K_Q<2X=S>hZqfogNJWt5P~N+3WfR4eW#5Ru2t)(V(J zf2;8hJ~4XAX;R{b1y5A}OWp#NkRTQag1#zFYF0^5Phg|$?Hhc6A3ZW61gr7)iOYh> zV)%!1N?B@T3#lB0Jg0Gx!->WfGwy^%GNxq>emNj%D((|FDoW0wHy6z+Ag>a`o-P%q`?r5XUB*sHo>(>bQv`FS!>!O48dxj3VI zNs_~_@k>DB^AaSg)ao26!+NVcQaiApWoo{HG$mxz{(RY;_n-o5c_{_xxadf)$rV?? z=SuMF^X&-h$_ZmzpbU7A1So?oBDIGxUO_nEhL4TcMX-X+CLP=Ar&$yUD^-^mxHSuo z26vnLOU55)1Oqmd^U1EF0J~jqVj%Chop5qq17@<$@b|K`-E>KMk~rl!S;&>-u=6D#>UpVLSPVxPLP0Ms z+9pLbAaU0A1jLf}?b;w!m%PtvU*qj_t=iYfc&@_qVP6_B3&r}R)t&^`#{voI_iy zW3KoS6>iRr3=VvTEn;K@cHpNWYBQ~)Hq&X;rtf*8n@-%4CD{&qSg35UtZ#exU$ffj z)6s&nns|e>noz$&8NEH?a$L_J{BN>dObtTQ2#wmnsAJZE@@zfyrhRc&R_a-M5FvDq zynA;Qo*^a0C#`q`xOp8nhiBv=JOfV3LlaXfQ%liFb4BK<4=o;6+Uqu&5GoHBGyURF z0rWHuF&QFhz9}ZdyC{)zwVg^3XCc@nENNp8#XI7X%Aj-`_E6aALxG$G6md*Om>lB@ zr(6;G@B`hjwgjFHSla<>i)CAD%gMusnUl?sT=v?I%db64dSkS}=oa!eY$D`;n5#1H z2Ib+nybbm>*Qg}3t4OZ7X(gGQp-Ho2P$a3r6*aPIdD#bSCDZMf*N;WBFeYcmW$M{2 zG&=LRXcX*lwPsEs4M-K=IuoLcu|<)QO%CyHp3P#2?ws=;K&JTYOwxnx_AGpZyI`sX zDU|fUxVtLNIY+h^C|!^HXPapga$TH<^5{X^I)xn(J_W(PCVSGZ7*b9{RVuC|<;VY; zU8Km=u9disb0u`Vex)Qwe*D=!n8Jl7Jve_%^q?sy8Xp1QpCJft$ivtq2wjQ5|wVI9_im(VIaEyNZ^X4N@Rl^0Wr^3?>d}B2U+|%j@YC z#muZx1{(oL2YHB$>82<4h;2 ze@Q3Knq*_()T3D0P5ug>Yjv9LQvh>Pm1Iw!SMf_u8a!RFau{9VrgNN^nK6YB0Q3ge zS$pv(TY8du5Xv=nDG|+CR)9wQo7|JPt=3+{Nu%5{RZB$Iy&%aUb$~re=+fg?2WgWN z%dnVQ&l5f24?;hXMInfSRFT>R0sZICF2BjJle5k)&3Oce`Lv!0Q66}%(IGLoT&$o$s3Ud&HMbjXWj!Wr2vHj;69B)iz~ zDQrJ4aNn~j@SdF|bw7AG zv8~HVFt0((YY=KDqfBMyHd;5jSlHUdg1cBy7Yo~U;X&y20$?<}sL1*dqfX8w7^6G{ z+I#c$FpzPH#1;8#`95pe2@{mz>@bhAa+q{h7^JQ!7n~iC4M*G~mWLJeex{EuwdV5h z+7w#Qu{Q`?o$V~*XoPL$r{sKWZ!=d5Zmu!xBPnoZtW^90^AvO>_jTX9G0czbyRmMF znd-J!DN3wEhcJL0OIKc#u7u$W^>l*|T9QH*%SFpRrI%Gbb2JXKtb2A!237)hDgU$7 z!r>36#BJr;1A;dFfT@a`}(zS5`9P|NLC{nXZby9W;ImD2z z4*zDrk+RmjiEIx?%4RTyVtAuKgM2d}?8%IobIuS6`wmCzJ$!M3T`}AphU0;_oyOY> zn{UU*vv_~smiumSBB>7s3OXdH-G>$F!fskDzKNB&B;NO}KF1YrztSFlae0Q)aIK#qj2`=+SV zHUsQ82B;R>46xrApqp$SAca4}0PzqA_K@#DW^&eKL#cl*!$MMYKJd>ylv>T(PhBdO z-w9wBf^1*Nm$7LVd$4NDyWI<`qTa~ryqA(X$p0SpeXQlwhcwfpMx6XM=%c(4q)_ZM z5i0kA%HHG5(|a3yEG5kPZ_e8nR~gK_wzYlfkE}VR=d?9YD?YHAgj?Jpl!ZdV{Im~2ULaInLt3z(zz!tWmm%(_-^1j>{J z-O8R=;EksSQ7|N!i5Mc1u(PUML(%bcWDcba1BhrH*Tku>fzR-juvhUJYk69+h|}gX z;kNk9%xxhn_cPQVJuW^od*2Nj z4Z9L|Y@4Tu*b>^U$-zumi4lhP=q+bZlDQDY%Ii3=IA?%UTxup??J9z)k$lCp*pa~> zs5guXh@*hc#k_lqzJ*?dlqCcElqdo|G!AMUzaSzu7CkYunPP$@Z z#FWlPo^gmceW8_}FR$i$gwXd5I>m96zj>7}84+3IKZaMxRig$c0kRbHllrmdAKU4f zECQ)=EXUn^(@@Y7^)wkVd>mH*brR++f5}N(PQ`DTKY@T8(UhlR4hZF}Y#dXVN+@$; zVPp;x%G~!ch0wgnn-+VLZrmP&| ziM$ZxK{^va#QGY+{B^D98Nqmpar9ms!5F!__#ca4VUDO404*>M@e%0!9wwx@6f9MO zMJZq%b&Y~_$_G*y<9YX?q2nC?q2fs*dV9uvW{i%5GCoO zO&p1CLvZ}rSVVa!$r{YtZ(SYUavyJ}j~i+2hs>fO!n4=n^WM`EjLC%W;#zOR1`a{L zqx3xk0j6sIOsgb8gYOi8hu#*?kAHN8j05U)ata(CT!14J6J9G!l4G zET*`m6h`=)nH9Gpvr6D<5tpFYm%^;P*u+cdzYOUaj9SAuFF-x-Q+)|MckGu_3(QbGK zx?P;QVF(ep-Et`4@{5inA-gA%Aqhg~q*7>z`g8yJ$sFLNwjm~^ymwLf%-i~oj!;pG z3sUY+BrOHZNs@90nh6ax`D)>;llIl+Np=BzAeGumf7WwXb6q*kZb0^@uud3o;yNkH zJg$?Drmckvo4aj;028V24WVKgbX;aDUJ}J<5GRUzQLr%M#*R(sg8@mab2Ti_Q6vUb z5;&O(>Z^8*|0t&bG%l39vtbJvJ_aF^3}~7@{Q(Yk09e(cv;sec_kwK&5!nv`Jta82 zXv9nbXn$QR(v7?=JXZ2*dy2>H89Z)pg%5ZPQ;9-XKXwqhX%jxDSVHD}64+}MBy@Y5 z@YvH}5v1+&qn-rLY2zGa=O-;-(q122&U-$KWBnQSql=du9=G_uOX2|R^MI{% zxCz=xSwTa1sB60d{?_6!7R;6%avlzeycP zz#y)y9I9s-WE9;H6u!<5*lCSIBSA`r&Ze7&<_2_Ep0%b^HVzIEDgi3MzkU@R#a=!^ zd-z0)Gy82YQrTvjxXrA}1_yQ` z_VD>E&9+$hcUq~&786sQdR%F!$m@iebG8epw`y}bB*M;Gblb;zkq<7*L;@)& zAj(P%D3zMh(C4pQz+2X0-hkg^)t%5$K6lZQY>*F?yJPZ9vNPQ1eH$vj048WcMPLbR zK#Y)jZIgj(eWfy%rE)Q}ph+I<@medskxAw)_SK3(qzerEakyB}M86IkezBjH-LX z6CuzPv3610SR_(3zMVAQ^-_Z0^y3sp$19%Z&Qt%*ZqPjqt z1fS8`l$7g1hje=;I%HPdXDKbZfq}Gw;j^!9AHK41Is3=0OK^o7a?nV*VrhEXPcuMe z>_X3Yf&aKmXb4)}_(xlZ1dv3#4!Iqzy80@w;BP>+^=ta%LBmkkU|&;f&2JhwkCHB^Et-Txw7)&o@n*cG_y7p)YEZku<>ID?N0N}$|hGdQ| z3)~0v=aA8Q{IsK#GA>Z_@rfRBGUzYk?{lCM=%mSy#(zBIK1bd7z_-v2gsj{7fTva1 z{|&-*!1=5^bN?#Ng%%gE8mw$g4wtRT9!TaeX@M&+1Q2UazGDB|p7%`l4^^XoWkQdW zgDlH8@LwSmJrFUHCeFXSTBq=e5Mn^_N9jM|LdN&Zn!l%by}rbtB*~evBl8v z$P|u3+uF`thn-)Cl|^TA0vS9%&gM<58;EV)OJbX(@^yPq{jf!GqW@K$ezSDljmUND zZi?2ukn_wA<0LlEMgt|zk1LA-sQ7=~M*Z*Y2cj z+~dpy=?YlW7LS8iqVzx=ag6<%GZ&gu*;#34C4~W>*P`*_W}*UcHYQE@9IJ zsauz{w+0_2U(R8Y2r2c=vD@hP+z1KO+9_CGg;S^PdFh`+XMEdkL8O^w^gpc` zQf_KXz!;k=bfm1$cU7&R^H4jkZ2l+}MJ$Y@F(LN3QU0CU%HgO6oW;ey8-dsDwicRd z!xT-oP;IoA# z40hvvQPLnmTNvm<30cA-#47c+D3KS@*+;5GmM}Jo_80LoC9#U*>{uM~n!&W=6gI{D zuU^&xctY8jBr#`r@EmA{tnV(13~T;0YH~MKiH7S9XFB3$EU-=)``grCY6`1rbQK@Y(OvnhqRo>Ew%zMH&5szZvMV$G*v3~6mLz!L4LP7vf z!y2dCNF33DJWO-U$G?S()y5#$mG@>$F3VlGL*N%=Xg+2dF5PH3@%7omZt#`}`C;aSvoNc!#rMdgWVOj?;{UPL({3{IIYG?llhrFa zxh)gHq~KeEL~?@~DcaJ-D=CN=>zKW!YkL86He&#cPHzDXB~U4ffQHEGOiJ$-Kier} zzNItG*uI&c?%W>b^frMw=JI1l=PdzxOUmz4R<@sl+{nu<(`h2@>9nkJVA@Ha@1b&Zm*5Swb7@%|&)!RpCUMq<10>ng=UO znl0}!Bx0h_) z0C*`6pA3laDxb{a{z`$E7&7s0i_qtM(L(bpMvDj4S$;G!OT%NToliE z(i%1MBYIWHkGmQKz?y^{@hOSSmuaApSU#BlUJ^0Ym5jvP{Ck=IOI8xDwZVcNX#7jX zW1|gVf-Baud+k7s6hxDOKAZ(xYrVW9cgnbgCP>q2IQ6oHKQlf^LM~xFTr~m6_Pc9D#~W8vPGddi8OKT%x$9wK64)I>a)p{FmuQ^Gqi)) zrw{C=H(Ub4ltrDH;2@|{F6$6}KA*_X>>H8zx*&$1Sj?M}#rWP2XkjpTG z>BbR*NGlVDL@XwoR>1iT6taxKmmk8#YS2$M-cSJ+z%R!Z&E`D^QDGHLPNfi zX}E)bOHm96v_XFen259`j0H#escWz1027qP!u9FtmeK(A+O0YpbX{*iR@O@Yn#j}4 zaxOCk*e)BO@-Z}R%nIFLKSmAA-4i8astsCEe!W{jR% zi;QOugnPw{l2GV^xRX4JA?AqEY0n2Y{UbN*P>riN6dx@X9GMq9`h zyh1@|5sGfnaVuzm!0B zge%tcP*5Nx=P384n>=hSh~|r&u%n>pmLrhx6KIlL6~?ucmni#U3dMRh;XrN@Cfpy3g4p1OMq%EWPGg_T zFCu1=k@0Rr1#ew5p~^|0pCb08E+n$r&IQY1c*6hpMDYUk&=Y%MsZBC=eS$JEO9$xY zbw&`>J9U|99X9`nb09H{QHh6#bCK3%ss)4G66{TRiv-#2!QNLVMSzdB8j_lSr=Mg& zfMRL*IWhb!4nHe^CLQP?UM&j`UaKt;q{SB8^aMz=FA3t@q#H|I72XFUl=O!sI$f(pS;aj0dkLQL^FZL>7jQz0r{6@qs` zg(#~JQ%dSXEENr)#$bM$<8Yp}W3BoL+PF%SBHIDE}r}WS*o*P3OrYuEX z=Yfl!Zf)?AJPD$w%P@M>fwF7X`S)Ru8hX(G{e}O_hIyT-<FB2DtpNkm1J zldgxH3N4#&^fZeUK7bK3C)J`R@!CK%FycWpDzb|9EC4Y?qcDBt&Spx)d5I!Euv{Xq zB*}}2Xvo>zSH#Pdh(9eMb?=tO(wmC~~AM#au6T-{%lF`Fu=dGmnSH;x1xlSt5^}g9O_8C6;4E8>pHD zeP+G22yReMTdSFvAl!_i$0<1;OIsH4*mVS=@u33X+o15lQ3xs-N{p@|>r+J`?+`&L zdQ}(fs5VGGl8OS$?tSdl;uZ*IiK0r$+oBI{bAT`?C32}nc(pLCGXU}Err0UxUKlBF zHyYW4ai zWGLl9Df4gTGihBqRIqnw9I+`w9jkCSaB%rY>#=XsO6&y?(@EOuvt(1E%)aHHD3{PG zqewaIL;i`rB3`Dn5_|p$90CbFWd&lZZMMaaJtp)^TuWJS$8O& zGkzY&{nnYX?qzu9_!tkZU#lYgCdPL|F%Xphmm`jSGqSc0k|Km6UZ6G1st|FM|;ap+J65y5qQ3^ef!lehUS%G^_4&o9yh;woP+vt%4Z!Ks)L9+^> zuFb2rA)CAJCA^Es++w6x-_RZDu^?6g5sN^EEs#BraNv=mEjAwC5R#(BLDADxd?->R zB2zXdafASpvS6xd3sDVNo*qNgCuGX^se+XWSQ`QeCYMB0I2B}nrncf@0$?9*ydeL3 zn(8=8dP2r%F_Yx!<5U)e@z^zKjrDws)U)}9fZC&xqrN$?^RU!|56t9^m!aBP~7i9E!_mFf02F7zu%%l&*^0m6M^9#t)(|=;U`fp%;0KThf7W`QB9vnjrz~HJN<}ox=?|05M?|wG zXLe?Q6)*2ZYnCnCa#?2!*GpK$UB~N8OVpBVO7e4tNaG2AvkYj?)=wq%@vmj+B5@h*Zq|Ubb@=<4&98D#t>Q1RMeZlX^6e|EUbb12!;F z_1hXE;>fU+VNfNNbWXn1k>M%f!E8NXcgx7|NGg>xIn2dhvaNwK zhwa1sz`yC)5Xrnph9M>W-|*#i{yoPJeSk1BjX|VhEVT^nge$7)%veaeAZ00a$o4~) zCmcC}{V?0Uf(hy5ll@$$-%pp!Cy^JtJcqeHL}2r9HzegWc_xHli)HDI(*zx|h?cgj zF&$UHW=mcjBGEhH94XOQeuO1*D%BhobWNUkN+lwRvx`2$Qd4*_TG_x>p5hn`%5y2@ zqoVY2CE2e`*ET7cQi-l<@U(~l2FF4~wsLipVfXxTVAyepru_-DXXN=|=%~(Y#~Mbx~j5HB+D4q zuBwbpHdmETU$K(V$hF8Jt|%WyLVm~dL!M~ktt%omsg_GhdfswbNzYsM5yDy!=2vJX z?S^?rTxnPMzX>WKR`I`2S?hz44uX8j2*jReM<6yr6^P9~IPJW_?J(Z)w*hsq2fIP$ z#h?zX@UWZ*g}%aqw3uKz3ZV(MRuJ=87{_10woa%>Lkk%yz?;%f^m!}z*rD@#Yw#Fm`h0!9X z+AD_WCKClEr#tU}O{n@AtHv{rHg<=;99rr*y(Bh+gbHCyD4y71)*+X=Fc?5;ceax;?$6C)ohb?6;9necvhQV zXTb&`AEiHZN7Zi@Fwl1E}j3Xbt1e+L=Z-M z8;jM$?p=_*7B^j@5X!<^Sscz%wLE5yw^k89dWcQ}2x4HdAdBTGtk}qc6w^SFsD}^* zKA#O5^?28`oY#pEs~mhYQEjY8Ml#U-FY5vz-Yp=IITGI(d0*4FjvO)!RQV^x2iJE$ z*lGy-i>#Ua3+jm2_0kP;YPU##VyNMHq`+W|rJ+ zh|k=Zt~sO3QDk;orzP}|Wij{aOMyx`^6)gE6nYD<7E7%6E_1h=qZDjFf*L{WuZGh5k-Q`vKpY3=R`OX z;{`n6Z(tGdHbw;{p3%WM?rObX#bQFN1fxxUq>S>@r;I)s-)FP=&bZ`ltIxIWfC_Iq zRUm@A%b($%OImMT9&*)(_xU?zGjX3i6B#76s(c%w5l(42r5pv;cRVC!2(F5vmZzz7q1j#WvHN`_4Jf6M*N(MtYKCug~;ZqZvK_@Tl zj%jkJT9jonlv!9mGp(-llE@^Jm5hs$Bi)iX04FP%6eXv3OCo1XR?3NsutmG~>uyEgQkwFi( zOBi}czjE_3;uFnLtv6H&Bmh>TvCw|lEYe}6`A$ut8awBZ8nGZbj|1WP3`6059r?0h zhNQE>F#zTwc9W63GeyyhH5K7l4CoIZuxCF_r}$?5`IZJ5Q_CO9Dj^4a!iK4R;O#*n z7}8`!#fbl$8^@lz2N&rHqky_s~zd+gr;J?;|v zA8KIUR6F@Rl-3E#*HkDMUweLw{UvdFiT>L2uX*jst?{Grg;pzF%5@rsfB_&20)s{> zz^EzfAC5`(IE&1)=bKcv8hoB{iegUa2UDAGyNOiR(kdUbZmEdqm*-|utZLK6G4E0XrP!0I*O8MhLWsIHPxa2Qm;aCum znE_!T)oZV?NS?NCYU~be=3~a$gpBHZBPOkXxL)L=rEy}niqf9JIfW(I&s1EIePs92 zG-&7m2oA4t@m}yx;yDb!r?Em@M}pTDcor7Z!hs}`b%+tx(IlvEdKHG*)H2c8!VxK1 zFh!D=Cpuq?zPnPP$0FpafNGMAkXnj*p>Z>4Y5uXx|9PU>VHsoMavIX2OM{u zU8s-7>eQb|E zF^Dj$xb6lgLEQFt1i}zUvAK+;Yc?2#MF8X6kPdH|Z!?M0`@J0qL~Z6fr&qH>Y9=i0 zGTH#CipXsT#e-H6znjV6$2(uL{4j+{rnDRg5Sm2c4njOsEUTZqzsx^)KPghoC>61= z_Jf7$M43g5MslF`L^}NjO7tg%7fSgBZ$g+WeNqQ_Mb+{IgaXuoZa{Nsy!0d=P=V-1 z7!6_o1cAo^>%?ne(7rC5_e-#GaV1|DG3$c&9x;VDErh0oiz)fKh*=lq5_u7qPbg9Z zKlByxGNpCV3w}r#BXJ?wRy8@U*%P?7vK9|?^Ij??0~1)mlElw!*rKL0M7dy043pB) z@GyZQS}-AQG_t|05T%X9+0bHwl4TEKJ~7$4#%atO4Kr#CYGtCh8d4!mU?pY zUMJkE!44phc#B3g_1>n04J`NoBCRej;LF#oyF+@J5~2eZ&ukBa_7F_Cx@H=?O!gIo z1_e$r-w;gj8jBQf;6;J=V^XAH7)p)4Ax|WNgWEc{bjTM2!Z4tKYZzjB%3&$3wUil} zoy$*9;gg`kCtVdj>8bGkPKfQ4y-Cltdc*M5!7Hq14b0wGV0<(!sqf)sz+RF^Ei5_YPPE8;yW`ezuMp7oiZb8Af(0ss|n}EvI?d^xL7pFYfX_T7y=KtXx9YiIR_UguQqZS(<%PWik65?( z!yTvcQzPW!_$4k51j*rd!PWe*2XY2{#qU>~}q z9*r?g^gJBvWz%11>t(=qPqlL@EM@NHkRTg}Ff_*Ol#c1X(4B<=NDx~pRU1Ermjf*esRG0?WI`pg`5_Y`Tlt_+@zYVPT9DGmt0+oGx-HK5*}K@W@!)F6Js z20Z~)fF$-Vs}E3#3kQQ_!nOM?Iz1t~ZL4zn*?ON$HX4uWk;B~+(sN=RG@Y*Sv!FvH7s45U4<-wkAY#@O+mq#|fO{@2 zr*LycZA7M7VU-R&)p|^_L|M6bgm_9FBDEEyJARfef!{Rl-9fGaukr}N zV-j#X#6<}#?>#OjzN88q2zkaW#tVu-2vMkw<2XE|id7tjq!xyip-yYPI9~2F79bR( z<^jP2f>dF+VUTHPY(g`%ACE|VtR!r&O6ELO-AUFHA;~IG79o+1HJUC$63Zvqj}m1Ol9kd|A}>-FApx+zh?gme zkVz4AFU1)VE=^p~2pl7lu)q+qQ9<1%D?QnqqWrvukm64`>DlMtLtvxOs#-Z!e)tw< z$4CNz9}!@Tq6iplez`0ft&fG{lUZq8tQ%4^v;J8AhY)(@)yK}=%DKWqQ}RwKo|(p~ zR&90a3!_jI%LnxGO2JpJRH&Cy2WP9yln8?-wRa#W4~pSXQw{t+3*9L4UZRq;FPq!JZ*43JdUXB<5bE@WPOrHq`;_mLHLpDp?VF&)lC|$LjBE;OHD*C(53xYjY!98h}d~K z2s}iACCJ7{RVgBYMO&JwH|9X#3-Von;F(xHUp9X-in+E}cSx`qiZQFrdA)Vf4#LWt ziIIxMhDVJ8U9$Ue&*bj6ggCXrt$$t-J?1l6uef4{SY)sW9v#4`)>Oh%lqrcRw5s9Z zhkg@I1YtnT*ey<%$r#w-o`Oyv{iVOrxvqIoM693)SHV4O4_b{x;@n?7S->378kOJ+ z*V=*h(wcs}qpsx8E=9$u$e0DCfpO}Az-WC!P>RTg8p4%#BWO4DL**uI)%)nIL&{KS zB^d1b8&Y*xR@EeQMP^x=4FDqjs&(&wcilrFx@)W*m*XKfb`(d+n@-n3u5jQH_>@nR zUok|?2Vi*rFgEg5yw7c5>ZnXSuwCpt*y0&hih9po666MhJss`ASzb?@l+3(zJf=tt z>m^NNXZ8*ZrpEx0ql3H!4$KRObG+@rA+v4|jwch&xE>r@=H}Sz7$2?!_MZe}2A2`5 zO9g~;Ea~pke4*qU;zfjJ11iiLYgfmYL$6nEbQ$ZQ-nxhlb;*LoV-_eJF9_2k<(C?y z1V5f2zDeO_rL>T;yZi9NGvIWHMY5pNDDBWAiPUwa?rj4TIyEQvf!~r(I!#9nuz0A` z0G%4UamdW;I-CG0cA|YDG9FAC7_vzz;7h1XfN8m^@{W;Bs;Y0ti2A9(Bwz&dIn{s; zh$x68bcS&abcXy{hZoQX{>6kb(HW9sonZ+lOUS3G4dmn)l10(850estE#C5r1jJtyp{(yvd^V708(dg*8oKs+Z!e7uu0?4=$%~f*Bj9awl$qr3=+Ha?_L4S z=%AAfcqk`I2dVoVJK&Uj19c^ROZj0qXG@VGnw&e)9|Slt4MsX3J~p*<@VT7^HfxQ) zXt}P5{MGa|b&`QIo6U!Nj?Jv~3Tv{dXd^sN;ruBv-n7n=h9NQY3e=ncnj8ai1_KhP zhoMi>O1&Qw-YKo3&3C{^Sjb>DF8$Q;baLd|BvdIOp9EUO!-DpZd9;j#<;A#3w5M+| zx*!D=&F7j~hq?vw>aI4})qJ+jP@+dIo#?W0I?e3hw!&EoqsCQ9RFzQ!r!-QI6Df?; zGAYO)pbIwX2E5^Ch({nAc6_EmaT2;iX;3H)lY|(>gv;q5JwZ#E8}QR8n19V|&QzAM zF&^R)%=rf9qwW0i?s-pjCO(tp!Ke-?>Tha*8`=1Ks8)73-2b;es zTXZ7TNXcng6Y_o5Fj^rcQU$rjokc1dh;fan`8?Hr@h4vyD?kHSWB(BW zQehGEB<;|G7PKNi=(V8GDnTA}^A6wm7SS+vNF*++0l%a($U)WJPR)l$ILoh=>xRS3 zo|cL>aA}PU%r`!eMGw#ZczcLZ^^@&$&+9SfsbQ4YluI>4cXE$ErUBGr+c@SdJ# z7*91C04S_Sc!nD3$if(1JJp*`D_rwvIVqU9Ti%|s(6o(1fD$G=ZCQJ2fElQ#q*Gr2 zGAbBpgxwr0qbcd=5#_t73SH7W*vcqx<5@&6j7XLL3%dk)By^UB4^NvXsky_IT*vW1 zp5=pBeWVMc&)x1#@t!U7uB5H@2%s<);Eh82(CJfrEa{LoV+ols#zE!6uyqG*v{wa# zl2_6FEU$~UBZkO548CI8gwJRK3DxPj6g(h+bxmp0oT7<>cpxnE>?lkyK~Xxbwd+tO zlxet)f)&(J)mZn<@48|WVRv<6>(uH5nTypKGFBF=llL2}&QPLQo#hgFB^6*Tug<~#f@0%8*BoUw+bm)97a+!NzwHA5r(9xW#^|csE2s*9Ba*4c1g=!1v zv=;k{c$pG(tVNMQX~m$uu$85yi1}gyLs-I}nLwWopV#u(_w~*xW3P9jj0Iq2%Gm3j zC}X*VkL!+B?wu%OUlA`;>Yes0V-_4h&d$3ype_ohg>Ip5kBe@M2QHj|Vd|T(^8b>V z3w_f$eBJ5OD&~wuX>8yMee~7gw)C*BPIDwG)>WqtrK{zUCBBC8X_uWmjn=kn-LIHF zeU-1>@J*&CN^lV@qhwDOU9!<{075n4^+J(d1t(djk>?|l-L(!$!Cj1Xd{{x)p-9vj@SWv4nGO>) zOQ*V|c+ZBR?h=!CB@UKe}DwZi&d=by{ZQ!KCk_gz^o$&Y^kN7aeWgp-J5ba?Qv` z<9HaF#I4j6Dc2NJZiv5VlT_LiQy$`D4{!D7iM$&_fg9^}XV|Y7T6+qB4RIJHNfXmy zg8y3Sl;wW-0*c)#CM<^&fV3ra5;!LUegGbGK@=ZWr*h7GqBMkCxHJx`oLYJzUr4ex zQ1LE;d4Ovkz8uHJs54UJPa4X1{*L`ry#DvwY4{mXJOs0XQiloUV zAb(=GlEuKUq}(=xhwtkH(SQsSm*An7-&4kIxSK+eu`;ai4W7DfP?uzQvEL5tT;cIt zSNsq(T?u}EI9i4`xOZCoz_Jd^s!Ovbl&m`IBr$DVoCgy-Ko}xH^-xq8ER)b^J>2Y6 zk@4|)rvt4=xY2H4@TZE5h52DZ)yn)qST2DFaR&2uRZtd^j_+&tBXfD7KF8UD2?+=c zk;^!WLwO)V*U4YdBzBSPop7sKMuMu=XNHK#2nOLcOO=K(Av2aeAIB!;*sJ%fm{K}a zN7)j(Nzq3oOK8tXR)(Zew$L^?o!rohXaS1$ba+DenwqqCP zX*hO3tUQWk$JHj;XZsEz7LIjdI(ncR0|#24C2FT!ec4F6NmJfuq{Z0hLH*D#MTl3M zR}SD%u1IYNrq&p_RJxASt+E<+W%Q3cxS&)3TcNO1o~kas zm&4RHsq-c8Sl%wl(dZ)xAl;mw33zn^4C|fN!9agS7(48l zNBUm9a8O6aK?-mzz!&|@8dmZkq@P3i;4C2|%N9EFp;m#bx!H%Y#|+-Y3`Q7~S_IhG0bu+q~!#^on6FN&G6iN{rtfgd_*<@DlBocqbyTcfvqA+gW z#m>~_0-FvkQ%d}N!1#z$ywZ{9i{tfu=;O8ix0n{EVO^VAOmxMu4^+SmkFG1=WS;ZG z4^YRj&_kT1t1HSDf?o$xTvI(AzXRlQPS+w0+p0*0Osab2Q+ZY>&`Wxew z8e>S+7^+NPW8P6kP?blhucJj{>L~VLVGC*~5{~9Jr12RfZvaCMI;gt=UwezI9HFpD zi>uGE)Lo-bhCo3DaL9-lu!cZ0_onZtl^ThZ??`9D)|N{1NAsOhp$e_Rh?mV z-Rai|T!MTn+-IMQIQS}X+gU8S5wY^AAStO7rtuRm(s^2`KF~oxN0K>4tFS3dmO9;f z+YsbPq=QKmJ;q|g^yw!Zqq(Wt!RU^T4sI`6Bqow-(it!0N?gf^fzIoIWg(to0)mw( zZUteXmJTm+dQV^__5xB@ro#tJbeJsfyP%qaWP~V31iUxZAhZ_P8-RnNF2hS+fU+{+ zP(Pv^Fi98{@8o$p%BcmQJ?-k2HHeU?x=Cgv($dn;peUc?U^*?p1dOyPlamJo(jt!Z zhJX{P3S+#d#=NnnvxQRrPj{!g(^>cRZLx6rvcG2zr>~-JCZ>g;6qo=9UaW!-aK`=E z`0CDd!o7TFGbSiWC#3lZ>3m_;WHNFQ$@4*}4(To%J9kqA2S#Ux1fa5zD!*V?BlZCx zp#w-$qNP$;1~puoK0xLe3H}aoXvJ1C-A}Nu9=VQ}@+!Il-EspuhP|ygnJsKkDkhW} z>0qcru0l>=oCeb=^1A?dp0EQk8n-gai?aqbsDW^GMf>dBbTzmZSA%m#%(;c>$}RMn zZ0&>CdwK8HYz$g?iG*(oJIEl~L%Bp=gq^Nka~tARe-STJvSCSkz^b6bqGS`5F$75I z7_0~Qt0+GKH?cdVHJpSJwvd7u=NxJAZZXKhC^CF$`*GMj&S(xuO4j=H|8zEl_<&mg zebEO^D;;QF6i4m^<_uXmf%Qp|n@u;`EX3%d1iF<~6qBdmI>#{sbL=)Vjju>%aM{3A z*wDhvxY*6ds>V&U@=C+Gu!XUA)E!Du@6mF_o`Q}Z(@+b(T-;J%MN;uOhTbd@aRMG_el^K>m zQVE5GOI?nP?x{k=a3X<7C}~P8LU0~9iNU0EEGS@(#}T2xg98z?Sw9CN!bR;USN7WGNQ5dxQ`*douGb@UuEke_I3IFmEQpWy>?E4 zne4fRV+^Ya&JLB7!p@x1z%ArcMkVY$MyhJLl#-7k3r2E^hxZD}S(uEQRsb%QQZ=H% zjKz9&Eknrj!rtjNA9y!2p_sdU7A^6loEjJWjs0Wtqz0p*&>sma3NLK9V9222^>8so zVQo@^LD)D*M6B+h7)MxHoJez;1(%=%C53eOfN>M~c={lWX;>#22qE8k!{9?Ig>GtJ zKc|Mde^UJ%pr5#8LO%yKrJn;uKL>jK9O(5^r*XqSyr;!Ff7(s!zH! zgQ;|x@fz%jXw4^TU}^RYEY#GL|HNS-cOv(4A!~IOYgOymmxr*7L}-Jq15;3Lmyk0G zBURdz4Fv=)M6sVmvWOdq0!gnp*2z2I~i1j%Z2aOt|#~cty0W0XR86*z;-zifX$ujSWc%1)ZsTKWp z{x2^F5&|XSyhPy#DVNBL=xnCK-Il=r`-*s(Nqr0Arq!e~WiYYmie~W`KWi$awoNlg0!|{<-i_ABeh95~)|zC%GzbR(JrbyqMMv#TH|O(|TBA7)RY1zFay91-~MM9)jjrm)H>;f|nE zL>w6^u>8}!zJx(`m^8V;aubMU^Tu267?J>>eM*sk-}dxY(0UE45?Rg5ux<+?=&xG^ zs2bc-tRit+eB_<;7DGD;ly|OZ2n)E<{8+{F7)j`nOIX5^#4Zz95Yqy#VkKPV7I41Ye~V(zZ1iTjRN8!N4&vOdK|prK9sr@WofMTL^3tnQ}|js zSn^ip^7)`k0fUkP5GGupgE=936cT_>8-^UV{n4Nk6J#sZPLR|fz1d8)GnLYD1%Hk` z^&ETD8##Hsgf?J!9~nzj#SJ^y6?6Vf2fHFpuY-Lc5cgbeU;Ec&n`y49A!mAi>jeyn z%bBu* zuxBiDk#$fQi+vLJHb3*)QnBfbEJRK}Tqq456sR_{#p!I?a*F`OQfj?S8CYDxoM`jQ z@VLGWEm{KJ%l+bTN#G=}OWGMZjJ;$Ldq}h>rEEsH4u>6!6?}>zZ50lIT%1M56Dr_8 zw3qNNh&&t+c|c|g=&-6)p(dqp2}|$tF$S4s^Vaq;I<=er*|YUI^&Se>8wyqqLqU}k z4_*Fq5L*dinl2zlFA4(qMj%$v-nt7ALpuwIg$=-^ji87XJ=vgaTi>Ll;(fMt>NC$n zve_!c*}$r(H?NZfgbf`{RU7lQXdPX&4$v~R%dmAd`+~p{qF{%JnEXS9%=lUmI1?lo zI!y+Ddi%?i2e2vTi5esk^XK$ z_+n=S6G#b)X2>)FcWiN>iZc?IoZ56R8lLuDP#I5RV#n z|Cpv6QAA>=aP-HJOKq(sxl}8A6UOK4$G6Gv0Ac)ui#}fJE=r}@>3aRW%k`SmsCW&| z@|xP9G5)bbl&!eI)8~Q^pCHp%e(+z74*A|r8buN0*oI2REM+^wOq6`0ws}Su;)bnz zN8d$>Kp|Y!fOzA8>selQ;>-oHET%SU8)O#o+_x9B?f{)YBt&Dk!=%w7=NxU}o2Vy4 zESPte->lYr7r}9XHDZEMxE)Ivt^>Xd#q5>+qHM=Lj!GzxO3-?_TsFf(!gxXA|K{5W z!ZrT_3W@!Q0y5;F&csM9s_-Y0fRz1!yzjM08B#TgG8hJBft8Zb3CUiP5o>O4%&@;e z{^uLZfehh5=0_)nXHlm?hopC_Ip-$=hgpHOfa~*VzM9>Rqm^#z6Zaut6xGVDl8R3< zF=lH03z7G*;d*xd%`W2Y&mKju*R4HHvVvZa7pxTprFIH1Z=W_a#Au_a(G&1pK?Z^$ zfp|`#ie91XlNklk2ssQc7X~s|WTP-z!gGyQ6h_M;{+N4RYV(a92BJ#08+EAwi3Ax% zff;~k$ov{cQDaz$tW_PjD~T|z2G$z;P7HrS8a6H|>qr%D|XRsvOJ5}c~)S5%dEqN=`4Gf>sMtmi`1OQ)(t!HKGpEmgD6 zQ`Q{4^PRBbE)r54R6j(<7ow=D?ArC5s#2`c843-7C`eJa)U-?ty0>LN|E+sN|E(Lu2&Fo<4Hd%Pax?Bbh(%Gqf$!1 z;Y6lL`ccAMSy>sBzdY$j)JysS+isPclnjkEr!tvV4?AHQGWmfo7GfDLI?)W!%%>{R zA&J>ENJsX*8+69UwARanKH<~Mz@hAY-|TxK{V}{)`{n$F^FA<4&q0D}*2HO^VNcWN zr+-SNn%#PJqu9yjMC)1wBWI6%GA{rS;TxJ4Gwc-uy9HHl=tg)tSTYkbl?zZvqoAQH zf16LE1)ocbNohjcPm~m?kB0RTrYKpLIe|nb&AS`q7GoX~pBfPXZ8(eb?JRUo+b>+- z2$C2_Tt>J)7@JGpR~L7{8jD>K!-#eoi;a_7Q%s{q!6k55Y=PP!xi6Vovl@2eJpP69 zC|?jo>68_YJjwp_SRw>i_gDf=&)KuG(v%;ZNR1y)s4{=bG*{LJ3o8*`nspEK$~ZlH zHbuV{G?j`@eA}P5nWQ85ar9h2#iNo9F3ldR6Qr5FJ@L316v;e73iBnYM33)~mfebz5;VZK1&AjCyM6YIjD%kq{W;Ni5tqqt()kDiv`tqt#+YM;>oR zM>gAxR*M;}PBx>AXqZttzTS+2XLVLxEvz~M0km)+&}kKi3ghV-Y7wU63q^Z5^+j5j zS-vLWkDwFs=XC~Ij!KP++!yNMYp;wYuBs-$S0p0>R2*$Ruvw^7*XHmn0inQg4?QY< zzRqG>*Ypa&Bvrtc0B{{I3yPd#OC)A0>Ncl=A}Rqnc@i8H=+i?|@!l7eyoW=Z(RbJ7 zy>S0tT>29>8v^3#NgQp!&}Wwzx)lt4R>9D9+FFUBlje`T%Hp%nMEH=-Wve^YNwav> zLl!RvF|967Ys%u)$Iz|BU1enydsW5dUUnI}j21-}uZmWevUus?`dPf(x>4z7@d^xG z55*Z~mz&HPx^0A^>-^Q=BETFvj)f8&FfkOEyjwhh^S{qW8uNgZIFM%wv|bKcNYqB8 zbe{mOFaZw>0i&Al30UGG7<8j6f0wOsPuN@BtLDjI2ncfja5Rjg0rjC1h^~Tk{fgcB z{_6*35xp?fnJN^yS1w>bm4>7OF8xfMpR+~r&svw-A`4N`2wOX#0YfTN?-E)CfP6P;CAUxdE@sJ0%VRXi8vdxW-l&`)TcSJu`tH^XRL>rvNQiMnb#bwOQg1$7-3 zbsc2lBvLd08_JS4onO`=MWPKoemO7;!Xw8aWd>%!P-RwvUve!0P2ps{;`AMUi6SX} zSvyqejZRBPWwd}b%h{xgsEE&I6K;8MXV}@b z8s}_mKvDA|P%gWGm%_b9dw>pciF+8D2P14u;QsP@7EH)>8oXT0uF3-oc62FSECN2l zUm%mKPKansAWA_Y!e2)DG5OK><=?*Z74H#6{#OWi~-b3(9Lriz>;S&&y@AHp4I-MZ6 zdG8MI@a|$6d)*QwCisG<)6X8fz*~}150Fb_x%LQL@MdX-_|(eQ3Eauip`|I~pxq0- zj)O|j5<6K!2SM)WK&Y;^IW@BL-!U+bsnl^)SkkM7t|Y<|M-rk;^1^gY9x}n_JJE{~ zCqP!VhXE!&geLMrdKq&h!IZ^9B$*75th19@dmdLdfTf~aI!sNuILwaXLnmi<<;BCt zrP?w{(h^B)*}O2}E6%D+Wb-uRU>uK&!bnd2Uw11nN(A7ho~%O>9xUKPMi6?5c!;8q z#8rqS8lfmxCpk_|B#CcGayU6HkeoWhM!0Grt!o2+iR5Uhf)ibmLqduFBP6G_agsAk zh#*K)B00Vy6#30k$Z?E2UlEg#oQ6nFqepUv3zCDgSR^Nxot)%M(ZbA04&m52$?@F3 zA~~&`>cUmGj@=F5>*FBOm>_+GyHp&LuQv_fQh>eX|40I418$l6p{W7OH zI3bv9CqWe$QRK7;W}32Q(-BC}ki;>6$_-*5fpvUZ>G;{q$Zt4l{Do63a=rqgT6_kEhHl+}wmnBqq#t!OWv^^I$U8YOihz1O`ag$SbgSu7osA`rmXf)e-5gR~8i>lpi zCWb`ao_P#Ig6nS{0@a{4!6Rd?YWDauHN%Su4(g;=GbJPNJLYME08_8BF^I6osPQ7L zOA65mgZKbO#9`Q@fdtYOHFAN&>uhGzC$bYD|Jd8ut{_@pcgaJ6f?J9SD#$aij(YYZ zL=wH&N=hMzhc0PP=PPN4(S(dMVgHnmF#BhkI;mC^vChaqcF4%c&kVM=s+p;hbEYB! zOU?M`HBZMGouU@ z>IxF=1RHk1xqu`M35rw3J1}xNTeQPuV9_kKNe5dRO%IjkEC#KfTY zz9Stk6ji#wLGphFA-ud7kM7Ht2FGTv*!5iU7T*bU92m|A)mEZqJdiP>7PPY$Eo zY;*yOvm|ZF3YrZzwWgM`c1MxF!R$eWc;=YxSgXCLlVSE0kQsOe1NC4($OQP__l(1$ zh3CULo(}>!NbDVOJRja}n}BS~m{4@(PlA7NuYwSJ*@-DRzQ{&IgE- z^|jfLOu?@+sR;sB&pv)rLyW{zi>fZ)uZfz5aw|5oeiL}6#SxW3;9f`YX86@P#0@~; zjlR*~YJtNOyf63D7jy^WL|7+&Nw+rE0%~-qsn(XuH0L5=OW7~9mLo-{@FyJP8#7=G zP(;r(U`>9dML}q^b?n~zv{W5to#^ca?{*NH+1-5wZ|xOicD$fqHEPn@?$!8kub{{X z5eheYR97At`ThMb2+sez3QKX~zbiX+tr z;x-T{8`ZdhAk2O-xI%$qid@qR`dU`Rd|yy+CnfcD~=IdvcC|7QdkZ}wCV==A=p|u z=0c^Nf$W!jrtK*r^aRutm2Tau)GtG&T;`P$bEO+9)taEvu+Rp=LK`S%i|~ljY;Dp) zn?rpq}gBXlrS~ZXZD79vCJcrVol#HpqtfpRczmntTD-8PucS z&_#^nkcFav?!q9EZ(s^HbOd1vtZRmjz{djGu|=rVk$OQfka-BF5;@dd>amEDRQmma zN=;|Kxy700tngUUhB|^oppMWz2ThZw@;%UW=b*7%!@E56DO5~WAnas+mb48NfI?4^ ztpQYIw4=uYR3o+ju$&i&7{9nqfTqYkL!6+kS3ntzHfdeJHWljg=ZLAdSfQQ%@An@L z3iIQ^A@mG0Kgi6>NaI*3+mo=R5zhtn}oYc=!7#cpK?ZV65bFwQmzNOFveGK7bCMr@{R@2f0Ew?&{=(bpl^m{ zmxKPuO^yUwdU<-@^_CtBt~~A{H=3Lc;GS=_?1A-xR;liIZw8>_jHDu2l_)ISa|*!P zkXDFNRK|xy3S15?_^F7g#Cma0z!F{wmEr=ga@f_szz!)=bt>bfg{h&}U1ZV-$|hLu z<7N;%2;RybzJ^(;4nadEK`8j06T?8=WrG|TmdYpq*{dOn=rkq>BcgHoAaNpC%utW+ z^d?elMt5DhBO}!lr8+3~PIVwSIW2LzgOCEo?>{`v;mhv7<3k^)E1Q58{^Z1mZPPxH zqt18xc%r89o&anyjcirX3KKEVLh9TxUHLvXYiY zzzcZ4ZUA(Xd4C0t4+59C`ToO_9o78CB?2wwU-Yo$r*}BENWcunqaN%zagtcz5=D~+HB4Rb@Tj?Np zJu%Wsrj`FhMt=)>DH=M}>+~fcxwSlAwkHQwjvY>BjaI=R4c?k$JS^fUm`q-_$al{%YJM1%HL552i z><}XS28EXSkOwhfjL>9?!}+8o^5H3y;{$}m`MONGaDS&Cm}G)r*(ihPC1*A1-2_2$h4dJZ;ByBK>6l=Pu6=kV$Wp7K~RLv6=pv zE_mn^fD88+Y3~Er=y;OWiatoo%t>etlb&cbKv~_CQGVP-zTU(Bx$uww3X@QDprG8n zNyx#?e&Gzq8B2kA8~*Anh6tHJR@$xDpE;Ba4GmR>hN?rgI#&%F#FRILg^Z;IM!CWP zNpKlaG*_G`SC_N`St=~>dh2G6t*PbQNbWq5NL8WrEZUkEfUx?Yin9A(BCJvx?LakqNHn2A=k4y;Sfm4@1 z+Xw{ZA}me^XaIRM)UjTlRX|M&O_5E53!HrmY@Bt;P^Y;_Udp+FBtyj$_hwZ}M(A>| zuzPn^Oaywpeu|(u+f&9djSwWdkWb)CrCM3%d9C97c`?BuX1ZRjV7SUU5|%1NI$f`1 zC?^UWxSa6J?W7ix>9Wva&lY#{* zZAifoh4KnJ!-r% zJFt0g6eT#Ed@r-M8v~*UvpLz10@)AkZCH(uIe_rRguY0PC;ojW@;&&p>kM35_hPTn zLXAY6(*tT`TV}}%5*0PFt2D1s7^7;%CbWlo|8|V1l11zxi8SO2{Q_QUqJ+4X3hCB+ zkw!idar2)4VcleE!U?IH-pQo7y2=Uf>j(L*j7m{{NwMkSjPBv(D?O$z?#B6%n5VSu zL8KyC-Kk9)=hrBr_u8a6kNn+t`ri?W&mRv5O0qBazcc@nzk6o6%J5b3*;9Cx zKPi4Zz({H;doe2zwTf>_BCN|2s0Pnc^O(14rc`FV9TlZ%X>ZbQ#L}MK47vlsWA9e9 zgp9}I;q)U~@&yd}haR#QF;F>JS*7_%5;abPmng{3DI{^V(8ETE3goKNW;GMGsQ6rp z5OquJmB=BRtQJA2bSdXaOSX;g;Oe~8XWcqm`%uT+E<~u6v9g{!|CuPs%sRyx069il~%W<@zGH&pq z>LQeUlI+bz7D0w-<4EHp@mUz)opk=&k}8BiE{jC@(=YqeU*=Ea{OQg9^uhdTl0W?> zHY=71tR!1|fxF!hfe0E7;0y(Dgw~8%*n(0AKq8;BHTTq7Un0k&AY_Mab`@h9uOW4B zNQTW?U~#3fj$*BH`5C=dE<)Y3VE&v(;H;n@$LEaor&L+LBMkMafrxN$)Q(@_|M^p?m3cKh@`k<7Qo>K+9^TRP>+SEP+ z8f4c+v_w-tV3SOD%1M)OlOQz--(pb6>5HDYm{e~v3yEq_xmX`{#F3#v8XlF=CPQs6 z^i-PF>{C}WLZoU?>r6p&U7|Fd%LFDwAX6qMT@7`>O==QfujrA6EOpW*4a7I#L<^M; zVa1BOf3`NyuEk)Ec{`$ZZJnE5<^P2LIY8ILD=NWaK_A&tD{$N3GA&_t;TeO&vLi3c z0kilwMM5MYC4V(EEq~UK)W{R!>$6yyX`H-;8xRJ=H4hQPl}Sw5S{XAWnOKC7A*So1 zJl>fxa)1T+SG*;MUrAorAxp9-;m3aFf5sNH*|+S&K52hlN_K)?X~*H4v;Irpcrphh zD(z`1n!5W(rKSiS%$vgNU3_}2H`nYi`A%-heI_B5D$>CmqPzBee`oMn3F*u{D~)Oi zXe^@NWI&U=o82!Sy!w)E`J`JOLA3d`$hVX-;q5qkb~{QK9q@=5X?<9E*Q5ZlaZqT% zNY9IZ7j4FEr>T|M;FH-{sII&}o@6`0in18i-Fy0&9ZJh9e>gz&IWrAUDAGwJePY;O zf4hb2AG!F&Ie%f-sUEJsqd?C<=KdW8dI+nf7bWqlyx)R1qJ>eh<>HPwpKez7PzU^Z zG-}<~&^)trAElVGzjKZbuNQ6BiJli9xtZ%bWi!^-lf|A45`u%juO~`+94*@x@`Y@| z{)-5EzGx`~P{dHj!$z)zku3q@#BIE!6VDQ%I=Q37g_R|pI{Dq9MCjj8K%{7nToS3% zDn&M9jyiF7mTKiSR6dwwlMeGLA50=JPw8yl`i|VJ^<`hRU<+W2k_oX%T8TP9o)eAg z0pz)7LBtEh%=QYvwy8D;eTg#^NrobIotDX)g+0~W*2H~ zeaJKOQHk$?B2AL#s~bR;An%S+&$70{{t-|1X4y@KAfXM~EMP;XV)o!TTvh=p-|a7U z=k^sOWI@v?L4%nphlXT@9DFCf16K}vNCl5L9*35wWd?!dc>{uk`y)MdB|BLHB%~7p zilZb&4I&(?b=#s> zJFk7^a8x>&k@wwK&pD2v8+o)=R5jHFT_}wkbE4M!qc*lrGPOc-7-Bn^JbB=>c0au$ zjVIeFpNQ_Y%9@ykKkJ(QD&6?2ji$ksNyoBNoz5|i%$imxTba_h^$^JzCHSCAggkB% zF+>pc&mlTa&|kN{J0!>lg4rl){-hcYvh-Q_Y$;I&VE%5Oyw($(zgC|vC9?-VC(?6? zBvhI#nuUzQieIYTDBcJKI4@8rEKaO~2y#kg!HZL1%sv$Dn7MLBm5=^~~w%dYd@dfp6bg)Xx;R6$BB*`68+wRRLO8(A}jtw`!= zyl55~dn-Y-VB4A=0hs6!b9bEEfPfKw!MFD>rJHdOwkk^nTD&l2x0SM4ful+#6h?I^ zz3-skLoeA$8P+sxZ7E&h=aejMwrNPX!aIjDY+&b-DMZFZw_vC|uQAe|Hr*&RksQXo zlbhoO`kO{0NfevxxjN=ISgl0y=!(Wundn8Xy;_eg(Q&^`9rx=4k{4_hDeIdHqa%H3 zM`?2vO5`w-6^oCKX|AXh2^aa!bAoYNO5Om&Mr#ePBpjnA-J5P`Qw=%UlkPyO0`wOo zU2sSGt#Z3nJUvZLa}v2ZBY%%iLybx88JytK2U2801IhfHB9XYVRB4A>!l_=5iM$sc zu!$tz3+%0~^WH0GuR@pn^Fu61lUO3!jcDo_(LjTL=2&3%l-OKtQ&9}pw z*GRku_1sLtm$IMG>G8HD3mhj6iz}V>$4U39(!Ht%M{HPT6K&-fL0SbU4PEQyN-9An z0c^EY!s4PHS~+Bx>ahwJudzFcl5F@O{|I!*qUY+Li8iz?%)dkq*AS=En9?VcGT5@O zf=lPdNILTkFrZCoI4Z%iuW6e81wB`oTI5e=Oj;*x)okvCO`Y<{wxV~JkXDqIMxn2(?*AJDO zgVt&Y87*PUd^^&S1{3KKLiFnxem8&dBBGboQuVk(+Rlt#@(qdKv{~;lv_99oA zUe6zgu8tU{E;6~$m?Vo%f)L#Vu;DLa$`Y0z)j8s*s&2xX(zrsD*|46EZrE|(w;f$u z@MZh?b}&Lm++c++qgFy5Z&?zX-}wLdWTOy^>i;EIv|Fa17 z4Gb%YU4LsDbzjo;D2n9ERs)6naTKz`B1U+=YPc_ER@sXyn29~>9YslOs^a;8tU|l}?m%1lI#tnTfK04Opqsl$%12mbcX$X6gk70@KU-XX@KXKV4FZ{9j)iG zW6)C6+<_Yj0}mpC&}0AqV7J*kEYb2?{s;@sFXHB#Djpt@-Dj<5b}BkQV_{_v&wMOb zCKAMM=cQNK2S;^?t4`~G#XDpMTR%<1@ohR%- zVt<@$G}Y`5!J&JZXn21o_lN1e74Gli{t(@#;r>V5AE*1Z79QNqgGGFJ55N2ItCKBM z(Y^dWTLsC-;x+$-2S@SZr~Dqt?|uBf*tJMZ6?`IyIW?I#8nKy<_QH5F)N@ZSg2YGU zX4HD)RzVb#x=ad2xdXw3Ana2E=zrgcpoX}eKm)37j5CaJK0&l0b-B{~3tQZ|uf@#@6P!AUJES$v)+CF)nog9dp0!bLB33` z(AA0+mF6p+|G8tUuUUQjzBA|V_u@acf41+te{=dR&DTAU-~WE!yI=M6&S_73!?Wv0 zjqUo>OHY6H7jAs;4QJI)%EA5J> zo`{w682j#9pJgvP<5~8eho5EV9JA8q{r(H~yE%K?9gkgPQ{Gv%(WgIPgD*YDj-PY9 zedE;KZQ#c3?11NAY5(ih``Y}UA7fW-_s@3ke}BdP?v1~)-#)8u7rgK-_Q#2z+ni4v zV~wNFvz?Qd*c%@`z#ja_gr%SVhVB0FyX>A1Z*4C>_N~^K^%Hy3#jmnU#*VS`7QEJ0 z-1?Yp_qs!^R@=pHc*%78+GVe^H{SgUn>cr^ZF${+cJphlwSoJ7Xn%jk4tCDT*V(1B z-(mZG>~`Doh;P}4_NiL6{+R80>b`c(Gw!o@KK~B;-12AGQ~&N-+h*bcd++aFZqJ;v zm!0}Wf4 z`2lv%lKJ-T>)&O&{)5>Sw=A&kFYJK|J2qV^b*_qySLe@m3!LUZEv*izUB4y(id-QHs`bUtHD{e<=5}D_wMqT zy?UE*yZDG>ZS@}yv{O&J)jF@b(w=eO+4hsGUtteice5?teZY?1_uDq(j_=u#d*5Mq zy!!&Xr8Cdwoq3<#edM8b{SD8s#yvCauH`q{7Hbc)hqhj2Gw*tt?KEvSJ7elU*cpo= zd*t6poTV;0)@v0t~rc^|a@y7&sKUHWS~>h-7D z2d+88j(zr7_LkS3VjnyArS?zX`-08C^p*DT)i>ICr$1m%{nBgf@Ei8G8*ba(=3RD+ zU32VtHuY<-x5`t;Z0Z5;w(I`>I{WIE_p?Jk`Bt+n9K5E-s zc$1y@_4{qwK9AThezn3r_0wzZE5Dm(Z>wHtUs|${?KJQyYwrJ$oi+76_L20Bw$rEI zYX@F%jlJ<1Pq(4NkGGRnoo^FAonyP)_zwG*83$YTFL&F+cb;wcU3ih*{gah;@h%tH zS-+gHV~*L~KDTbf7QO2Vd(8(I+me$O+IdGm!`?gnGxqs=2kg9Eo?^dU`YhYII@^Ya zB71J*wYKB^N7{jxpKnWl8rv7XJJ)`@{8Bq%(Mk5+84uXMU3jTo@z&qiw_fxD`^Mm} zEq&*%_Q-QjwNJkCwRZbH$Jm0S6MNIyr`h2z+}`#$Zmk`EYs;Ro=o$91L;l&Gx8&Ql z|BFws=D?S1he!U=#$Np$+phi}c68-1yJGJj*w0V?vc38DTi8Jp%WdoJuCjOhf&jXTxWnYrAB3*agq}54-)ub8U+&e`<|8_qOSKJk5?;af!Wj#oMekdVx*3 z?^av9;$!xM$DV6@oFaL z`J4@oU2bPT_33up87JGo-n-h!g zktO?{VFM5T#-6s|TswZ3i|tug)NLr8Zns|hGJE8L>+Je9&$Z{>@F82Z$IbSW5ASXt zx!^*(ec@|u%U9lEC!hO(z4n|J+M_?%!#?`HkJz2lcQGz(=#SsG;|_hb{jz$cZU3sB z?TD9LZ3jNKmyQ4av-Zzle8}d#?N0m1ikRh*|$` zyWc!u&s+F2oA$*I+OFGv+8(@oD|`N{F0)&{^dW2RJH=jh%FVXz?@zWjo>Q^2w>ZhJ zzw|}+Pbb`M5B#^;yAM9nuKWI#cKNHXvXj5@4f|HSwSD4O^X=S=zhu|0dA*&v===8D zqc5@RS3GR1AAGvq{)>0nzDIrDzIn&-cK%o9*bYDVPy4`A2*UZ;yKK#i-e&)KM8&qB ze}z4F#i{oF`YJp5@)3LE-@nghOx?kLc;$Ti!@cY5>>vEe&i>*$`|-((t@hzZZJ!k< z+M7<8ZtLFsn9bX#ZpXf6SKDFcnRe(Ge$IOOnEm_lC)nFx^DNut>X+Hd?=7;O@0?*@ zng1Mn%CXP1ubudH+xf=N*wu^I*$3_YR$csKd+F_$So@z2w11d-i+%Q}m3HE>2ie3+ z?y`$t7};Tm?_t|~=Sti4SJ&CJ6OOT?cmA=xX{Qg{)}OrA-uH~%t#RcC?dP9>M*X&J z|Nf6Zw(TB!J!eX+fUeKC=ihvZr60Q3KK1_pvZo(CXjlAxp^bk3MqB>HZ`!+m@Fn}m z7GJO%-ha9^#*ea{4&TDIv%~GQu?Ou(^)qd(d7Ql?JI~(y#XIc#>vph-r~IeA@$B8K z`p}>3vseEwd+qr1?cg0Qv*%y;Qk(y~&)fH2`c8ZJD{r^qL(j8xuS@NNM;v2g`+mY! z?D=-PDUEE&?PuE8?)Xo;`W27Zp|2XXs6Jumetflka_u+m1&1%PZT>i7Z$If;`#^1P zTf5+yR{P-_?XLZAvgd982m9^~U$y%l%52$jci6j+yVY*{;x6{Vi>|fTANg(j$9ukP z4}O1|UA5P-ZU!8ERUHIkQ?bgd)Vpm-DY5T@aBR2Ky z`Swpo>}ET@-X4q)6d$(%P+Tmc6g7C9&;0ctOwhV9{!{K+uq09-DmD-Kl}Dd zd-RGA+XMH1%XWI^*X-%fI@b1V?`N}a`>LJ(=%D@a;BkBU>|5U3{*+xO0>3 zaQF{x?e*Wa=9cfUtxo)m{o~t@v!}lF6}ImS@3+%Nr`W@v9<@hre8m1YYwrQpR1!4| z5B6Ty?rJQE1rU3S4v3(*G--B22mvA?!4!%Wv3G2{V#U?97wqC*z1X{g9Yw{8m0%ZJ z{&VKugy`z~zTflwyUV?E=1jX&PM>T?&I$es$dlpc$n6oKBy#RDvY>;BoUXH<$OkPW z_Xcugz@!u8Mz3n*_Nacuso`z1z3yt##L<%sesi7Vj9x-k24xbzsh>zlnJ?r~;x;m) zX=l=PYf}=rFqZ^B*+i0CbR}oo|1-D&yeGTXOcyq+K|hKkCUp$FOpkB zwvoQar;;h|VWi2_9>g(m5veAhMp}E1AxVz)i926|OmC4w5~MT8hGP%Oqg!LhvF=Am zi?`3nhe+513wWYj(}wh1xPu%VTam0CkV_nHD~RgeZL)MxJ+h(IViI+sB`N=MH|euV zLVTB;A+gB{G9Kbms%Eq&>)*{KzlG$JCa=noJs{I)$NP|f>J1=!iZ+wvyVuB{x8ALFyiSjl#q@u$t4m`zPt@4c7uIL-l!zv_TbM_ z6}Q^Cer{4kQ66{dW9S91q$QporSJ|Na4rFYxJlBa28G?=?JBV!-4)@c$q&HZLdfrL zRGq#hw^8=373qpFAzj@G`Sh)~a~$8j$4YMLhe`(zenp?xT`CO z*2!8MS-tv1)-NHadYigoy~niqv1Ic>{sP_ew$k--(Oc*_f6q&scTS>{yZbK7yBniT1zHz&^YI%J|TVxAZS*)fq+VL3>Q}i|Olv`g`U|KlIhLS+E8A zTi!Od=b>KGzq2p5f3e0yD{4|^bSycNYjFA7_K0OBTIFEd)&U`lxdB6KWZ5k=(covk zvrS3<+_`q@%!4ycwD#Mp8O=`5=klC3Zd;mcqT7RqJ$-OFNjhNeKc|+AHqm|y|9Muc zK@vA+z&PoCor(5rejcf>R)UANQkLOTx%VMidhbr-cPkpf{PWuS z%bN7$QgUu)O{i<4yDL=EC3l%6tyuEmx+yhGbl%wuGZy@&k%qMGwQ+kT6WzNx-N)!N zNm^@Py9(dRn5eg5%YD1vQ>E>0cz=ntGtvGZFAwi_d!E!>JA7xkF9o#J(78R5)=cGI zty&;E{=R@l`Tue5W&Z`-*^S-1tbbKN=Q<5&@Ud(v7jdI>%(fQ=^it;g0d=WSmCiLUl-{{~y|DGs0-C;k z^uHHU;-n6(J72xY7tr{;pyvmFUns47`)le>4!&p2DAIA!JZ`f(4dfn+ZPsc_DzG6yZ&83!|RPt+Ei_zRKL;tO7Q9e z+Op{g-n45WcfQAjh?QvtG&!T=w5>Hpa{SGT#u@+@Y>e4&id1lI>no)@R~66!)ANFQ z<|c8I7Y!&H2k^ySL&k?UPT&l(7f*};r;nSJ*}q^aXPEd;zoh`rd>q`UeZ8sN>B!z8 z&jG%CrTmDq%TuIu_#HnLwEz1*J{h^~$8gi^p6h>u@kD1v27P_8NZS6ei``3rgVonI z-+Qiu}hCvdsPd$nisrNXTW?kGS}-qc|;Po z^<*>8`Y>Obfw~+1R~B(E7xY<{v!Q^JnN@~HZcUMKpig3Z}VmQC}~RJn&kP%3h2N33imo)ijg*J_Mo2PQ~^~q4QpEJ z_%u%WX!w|ja|QHjyZaBOHk>8x;MD)cvMe}H|8keJ|DDebx9_#H&!vX_Y3B8{mZO&NiS`p=Woj@TsIq}mk$4t(g^6ymL&^5 zeLgs!E8pn)&?7*Pc2(N$vQ49xE)SS;ds#i8hhJ9>YyV)bbaa+kwpjw@2ba&Dmp57Z zNA^JHR}Ll`S>Lzo_VWtqp8PV4V%nN$RJ{di$LL6@D#es5>0+Xn_MDqkcV-gz>FDs_ zia=krpUial)_L668D;xB^)*qijmECqDyML-XH+gX&Cf*Fm+iT3${K@o+S<>#bqASf z)uyhJmGhIiC6i9qeh>=%FF1VFf5=?vl=inuK319NAJKMO26vw<4c%?`rU{tI8u!{= zw#n6GPPS}Jhrh;}=;_LRdt|hp!L?fb?l;e=CVF{#_s~*%4bt~?R=#tJiH_2(81Ulw zB^^Fps;Lvi9%oYk~e7n%!TrZ4UP;a;{Uq?Iv1IvdN7*I#=p2 zL|)L~fQhz$zVYayHj|})9fN^T-%{oM**I9v_ba2$Va^B$A7KrQ3_a zLV235_lSi2z0#8anu}@?*2SAgP)SM{X_D^ee}FX zwy|cw9)8uGyrYF3KTwkLIB~+c>wM# zQ&Og$*>IK5Y4lI3UjV@VB}3f(uJXs4&)XEz0btkYqg~!#;eX3r5xwg-#Bcbze#I5u zd)SG9@b~X1*)XHq0*@=apX2;Jkv9O|pWf~5%gg+ol%Z$20|3X)>vQ4H%X~upoY(Rd z0H+ z#82`l)7#t{;1q{e_nv0+cMtBo)wC+WAN#e5S)9#Zztgeryf<$F&R81hmd(4iymQh0 z2Ea>9i?Uv3@u$`#WcE4;aJ5@?|5=*F&$Q1wI^l1C_bUP(_s!xvPQKE-^mKp=r+PGf zevz-}RIkB>7=Y9382k6V$OqN!b~z^yV3%q=`>egd51G8Xk3)CFKkZYw#0CEI$69WC zBv?Pb)!(7#`5kY2-ApbEaLVFRcA4k+dEW*OpI7h(`kxWfN^*{W>RmA{=PJSz=hT^a zmTz;oT4v}$fU_>2JAMBQzyGGOP4j;MPO0JS>T!lIk+tf4(>VYa{vH*-;WXcH^yK41 zjR3p!Q^iy|&EN05)$77=fHOVTNk*OGU9b2oN%TbgZ@cGRJIOacYrZh7Ex@s1(*4qt zyjSJb#`wAbhjv-Ebj=AqrCYBqr|bYu+ZWWX;tAgEy@Z* z72zZE#^fI3TYufRq3966X+Ga z11DU_a8k?s zqnR1}-ujM}>{bGtsoUkbZa;r8cJG+*vsE+=iO;e zIM$yQQ)R>+{$jWtzSMqg6$)_LNS~YzyZD<$)pWBQ0S-O>F;TLU zZ@1?~OPBfpOTw0TR@uRC?>PD9=du8kOC!~vw)4B9eXAC{D}?Wf??30}R{p}O*2Bv@ z1ei>D_=4NaH~Gg=(dQDtnKfKztlr4iUvhu!`b>mNbQm;!J)hnA#H6;{0ZzIWIbzg5 ze7BluOKz<|Sm`x$*c$$Be!%w4vjKLk75>0$HUGJ#Z`)O45dS-i_2;+TEj%L`z#Y4+!q3;2y&3s0Qrig1x+OuO0q#`cLd zl`R>5c&B=k`F{Fm4$bQ#{NhN-8VUU39lw<+RSx0iiRDX$^7TKp_|P~H=rT!}{KllE zhG+644Ob)Fvy)ryH0qo>F})h-AtdR@u{9SK((_vjr0?w!KjXKXN**h)i| zhL+E>!}3cWEitCkCI7}hvODt<)~E7=cY!-;$@ya|zFq(@={oDS^KN=!*yo5X!vM}4 zIBjs5y>!K$5t|$x5I?e0+)beCj?uj|uV27=H}rMioIy(@uKzpc5WjA~bbr?Xf6+hI=&fL-UesTG+?Y5t3XN$;Km{aKJa zrSD;S_|IF$ug3s(Idfjq;s|Zoe`=*hivjjOzV3R-qtvmN>G*vmz|}fPkKR2>XH7pH z*{=)0Nu#4XA2>$)yZqkdkMaN)X1DCN@HicBdOhXIt!Dt&ZGL{_3Ho=>(00FX2RJ3- z#YfkZbp4>q^l>uc>%Ysab&Af?mp8c%1UTt^P^+h>sKXzdQ(8L$?E0}p=YLPr?AHrx zrr7~Z92>rzb%r*O-fF(;`ct5HcEbh?Jxfz|oGfj>4d6`fTx6?rwC#nzUOP_#IJDo@ zPVdiA;~#4a4h%!QXUBtw&(p5`@>iVb2youT{dTi2(8mFhZT%_(oKh#VeDFoO;<|Zm zz~d)C-y7FZSIMGd$+=Y*c!0AOR@px)i&i;$=w@arz_C+TMqkOIpX)T+!>I=PAG^CTHz2298ZZ5mUrH_wDzL~e@Q)T$MR&~b5a^y69X}*|G8_pV2PM4I##no@| z)NIP9+lp4iw9K3%eX?eGDN^kT?cn`rz@-T@r1KmX)*&uW=)^ZJd!K%r$t~A+C`0_8 zP_C0Qn&)RoPt52oA+b-WaZL3$N`4ksD)HTO^Smc?;MtykYsd`lZYi!QNq<5s{E^r7 zE*ZzoY*6Wu`Qj5=dX?F86q(Ms&z=9pY$}>IQ zn&&;GrVZiq8zfERdO0t-ZQlNrc3C)NW}fRbF5C%4A?|vt-&*-hqH+sgo&Eo<(3~oqLp3xd{M<$ox=W>7a@@q}fpHUe#OG|xKaoLTw zT{mBRMt8@i)X49Z%q5f>P+&GaqigO|$?H{Sq;zOySx7dTLZPb0W7~xw1KleNKD%P0jK!gB)IaT9J9)b6Rxt z$e;1w#!CIpmbzr#{+u3b^SZ#ntl&I`xm_|}d`_D@>rt@Jtmf{PS9~;^p3`9!o&PH7 zHjxXA+jGxc^#!dra^Irx!?UCh27Y>FZu^41JmE6O^evog{*cc#`@NvXzAv~aI+^>B z5%kimeL-L31s1LuKUsQpUMj5r3;Jq7(VQ}q^wOnG?3 zXx>-@H>pJQ4fFPwbiBOD@!u!RmUio_Zbh!b!| zA)y~j_;bfV6DNgWM|#|8cpuj(T!}fO->T(dtAJ9{DVAL zf3VZ78N0Neot9hqFuoxHJ#EL93x5<$93^dcH1C7iWTHc+#oBc#t>HAG%D3jKh4f~H zhF)98&*TP;p8CezwvguS{Bl$^;V-UEp@qbB^ea@F8v4!+($ivJ@ zBw708>}%M6g|xo0%b~mG7*2T;T)pXq^m&WN+a}QYT-VEM?MPN3{jjQE;-_&*(yw1{ zelnX1X=e1b*wUrqxj(-is7R{4qG1(dCSOUKD;@s!(I<1;SJc$`YxpOAg*0dBRiMAG z=r;cvvGHW7bZKxCpntDu!JP;9i@wg0wg__gVxISk>UBMGUC4atU}?`9B>fegZdWoX zaYCwe-^x}W%@<$M$l0qlw=Yt1KclfnW9f2-xi=zvs+mzt>df>^wf-E>4=$q}4mK_BEAPnh^KzmkCm7_l3Wa zl-IP4TM6lz5<0G?BKS9w{+gC({JKMO(gLnWz_;h-i?8YHT)(d4&C|I*x9+b<3SZOX zZZ7@<%u~4S_eXy=SA9cQv>Y*g6q(3PkZpnU|AyAuw~r1t&*wrS*Ht3^Z|K3~Sxu8C zES5I;@VPpPeM8S(t$geNNs?x?9SrmTh7MT2(`f}=#Pz;(yA(-(L+^Esi;bQzMLO{G z&UfaEZ)m$3e6{W+Moa7NPKWdNhNcJXh=`f6MEZ7n`&y*hTiSd|Jz1BJkK@xok}7sD&NutLr9)=y+^;gvkmean!Tx_sgI*t5wj*;fmw#AmGS7QUb*;O< zF7LWbT5A2FN9OHssmHj={66y{?v6vXIwb2Y?Kv`cRCs18cfVI*RZ{qtHVm9namIwd zq}hMu)*#j1(avilMkz~$N=G}Cu1#Ft(emw^UAVyi$$7`#dSUi^N3X9gU0PRS2DdRt zW-@Ev(Hh~Wt32kHNo!PlT!*B*qba8C6OWIdE?v;;bV-u_j%HTkE0l9v#c}n#ekWP) zXsf>VpIc8{!p#`HKi_P6M@y+*ChZ%)i2KnVVX-rWGCRW~9wUVa$)mo(gTc=5l#X88 z3NVlOryl*54fT4>AEhm3wIL`^!#`=Dx4RXcE>*G4sf^djj@S64kS;Bo@BV~-81T3t zHuVf(%MIcWW?$tcAM$RL`={YSh7Cn*24V+!)QOL~%E$Qcy}CB6nSgagYz|^SI!)VJ z|0;hqGJWO4$&Wc!SHk*5Y(o5E*`X_ZUawXQRSilBbqVYDEMP+$9+@S-!k?S$-LLJ9 znmt+FJkagkG7!6A>Qt9fSNQG~lV85+ohytv6R|mn?WYR%UU!)fT{K|oi5(K5ZW>~X z5Sz4Q>FvIk`2|VGulNkM7qCf)O+5!#$-M*jpIqW^wAq*1XiN(M8_N1c?DRV|hs?Od z)AWmbe>+pl2AlIMtSjpmu?ZJHyS2K+$K4EU*?dUtgTidEe$NATiR$o@Q`vl}p!_Iq zdt(7hSigwfuzB;a$ZWoFLvn``jT;O7=7A-_EeEmvwiV4Poy|uKDgE`>h89BIOvDx; zHbsBG`I;=gO3An53!*Ct*fhkZUI1*??nU;lS^Na2w=4H|E)>>?VKaV(O=A5b)^$Wo z-HeO;G->MQ)&naGqY7pHA~rPl?AF2yeDm#7m+x!QM!>qVelG&Hu(hVF!v(&YnFjf_ z1=m0RBSCBiVl(}sn+!Y8H;6j(@B9Nzgt~ z;g*^ObyJ)SQ;(eG=k1%-F5S1DP&X5?8HmkH@;&|L3?Gqlo+^9~2>U7xu{nrMzu%Z^ zc7}g;*fTeLw!JWBhAsLPHi`9{4R!tBE*}zbntyQRaH*W^)Jzdge}+0uX^nSA8~)@nvoBy3H=h* zFJe>H$GVu0^WFTbt#V)4$OfD9D{LOvQ{0LWo4)$NqZY^cc|*&l%(^2H>SiJ~^)g_S z&Z^t^9OI=4o#clr)#=IBmtix0g-ye{IfzYZB>6JxDBnHE!Dnj1D`6FqSiguZZ2U1` z@e#hd7tF8AP=Kow%z3$p1XB%wBuduGHU&N+ljU9hIlYcw( z$@D)}6@)P}Y|*c<64viksGE1I-TW6k|GLAPVL?W5ZxF;D0Br3xu-OmsQc~F3v14nY zVTQc<3uGQxdEAPy-OQo$f<|zBnM1Nc11tS5d`~7~Q?FsK{kz93IKZFUH1tWQZXzvX z*o9! z5u1TnNf}zU!5)6#h!gUmB}8h)usOfNx?G4?lcnh~4Bu+=kNDs1QH&+R;E*rH!y(^$VZ zvF^8wX)D+8o4&Ppx39!Ikscv7<5$=u#NGsK?Sv}Jl2`E$%a0%1BB_FQ}^A|`7*8GIX zYSFFpCh!kkZ&s%F>j}*=;b^mKHbvZYYFXGX-NA6X(A~mh|IyNuK6>D zyQR^<>#v4oR=4XZEEgF4+&*Dd=PTPH*3y<=4;uBg#kEXAWa=GUtyRBmTC{>`KAU5+^h0A0gZU1t`#yO2%2s@0hei7?Bc=(788T4k~gWZQ!ZzfI#SRCC_ z^8g#Vb2Q%KE*BScl}fbq>?lWt}c0n3@Qq$^$#4 zTLxkan~iU?=`ih>+O^Nz_2O)#AvOoGNmDDyvyaf#yCxbC5 z>lNG0n<;&{@C;Qo3GsK=iRU~I>`!i~4*{Dsbl{D4XX&PUTYTqq66MBB#AYBiuSeHu zS!e0q8bO1P{UNSj8e(%0TdnZKXYDz9sm-6qbuV5CL?RTiMTkwglHPO2dDld+6 zLlmieHr;oy?|_%<#0@E7{pJI9f0Y=I-!9Q-2RsklnI;Myd0_N)%Rp>O?%2XZm+0G4 z{{25K7bS;G#O5G2^zyw|zg?#LrA;o6zAr9d8e)qOTkTL>Wb|cvD*jdac};b3t0Ok` z31D41#0MO?OotsTvp1+mT>%@)`bF%MtIc-TyFypwrM&3;u$+K(W&I-d)TkqKMqQ!C zYmwzIIJ7;;XrzSo%UZ6pGVk;iy7oqe1~Vki0+z6TpF-WVu4T71y-Ek444)W#$XRGP z?=gNaVzW*Kei(C=np}q$yxb~^4w;C}0qlhhB|-<^J$Ush%~h@~*ScZ_Xj=lofZziE z+vNPEbbilnlQ1|ipFdQpdv5uYcj)J~vEhAdUFZ9Gm-JW1U!vTCXDxS~yudpb)wyRM zc7_VUg!%l3l0tbp7VBT<9}X>K+bZ{kUaEbj#*2p7iqtvhw%%)#olne7FZnZC2dDMU(URnO9t@ z^jr<_$0ys|?eh33>a6xJWe=$12}JA{hY72d3A}4Ylr588klmj z(l&E0zu&LPkkVTKPWxKDYpGnmk*0Rlm!kmA>)t-H;w`?@$BKi?cLO-xX-L~zH~HIJ zlvCO_;BaGq=TDW9_V9S5h>t5+Fd zm;Cn2f6wBtkJ@?0J`cp^&`*Dln{t6qK40@2ead6#T) zmVe~4NYQizz1i1^a=*LOI<-(GY6Yr%aG z3CX~x?-m{7UAk2q)c;?A)AE`>EIPuIrV}OyE&@37>yW`=hk5DstC?jq04E(ZE?v&^ zM;`9$E9-~&qM-xFaD4U@vUN~1#J{b2A~b_{Xc}0x@Eb@gWN+X5-h26Z-Lv8)w*Ypv z+nGRj@i|F@uRY!eaAxoN$Mom?4T@X%a)nep)zRCDq_SLE({N%<*Njx9D{!Gz$l#z)4j=*nI z>Eu`MFDv^1oK*GRxrVFhgldylm4#3#k~C}f7oRQk$&kNNyAK4|bzr0Rn|9I1Jr5RM zdj#x1X;xNR-3+>`t9jzycz|6?-F&J$MBShI==M|sICO&lrQE|*VXTt7b1g9Dv^ym? z#~q^s&R%;mmjW!gAMalFB=xRT!mrJ3V3DpHXWf~5nx3f@O4Q>3&bu^nf8}#@UI%AQ zXJnyy7q(ZJe1UfJZ`C69I54QB$lVnZv*_)14xC*Kz?pVYrMG0$S+6K}xi-Lg->y`@ z1unI3kzUzHfc_^P_w_7ug_cMi`}Schz=hq*A9A`%UvtUbJ|pwU@|UCxxJF+M{xHq% zGSJ?_XXh`Cx=v%>XFPv272uR{QhCsImr0%cpT|nvZ>4EEQMxFQ4vf`o6`( za$(%1ox5L}8$Y3KPyf@%v&3ZX=$B7U1o%|rrLX^f`yoc^A3ghndDRp8b+K3Zz*2L$ zh+1$nB<~6J7<2N_n^H45k2?H)bK|E}Dyiby@l!mPy=vGwv+OAyu1YJNWRBw^`yS{) z(!d2a{>8ClA7iEeIA!FU?>?m^JZJaK0hiKhcB;l8sZYc zTW^1w%MGdBkqF$Y|fl|X`{~Yrw*e@3rx#fJ&OSf-WUX$cKr<2fY(F}>1_wY3}B8M*m=-@_Hw0-6_QD&IC~hV;g|>jOzBgbseF zG{{(SJXb06r2|O=m&y{4@{=ad=Ek0VrzUv?^le7rEGwjA7H_*+5uG{*6^I{?{})dr@NRZ?mO0 zAFpdg(!ixKYs4shiCC^%uU2{HyRT`{x}7(>ja?>9F3kO4Zv2J@1>|Zvyc#DBoi(J; zEPF$rw>$40QgS7CZd(;+lJ%S|Zi%n)cN!dk0EeR=fQ2)3^g4et&IV^^TSpql;SgVVZPe z$1l&#ci+)oPhFf-lIC+AoI7@OZcoOHBe9YC(ZqhVz1|*PdS`fgX(RzbI;B#ApuT$r z$Wmz{R2r2bk;o&&M1WGRcC!FsMtveNC}Uz}dV^M{l!dEwN(H16iAHOX$R+VQl|de+ zR!WKy`Y4@B6D^BT#$Yk6(IC-ANJJAYD5DaZ_R<*KwXumLkUc~CDD?)NHj(%k)dp3p zI*~*wwXs@wv(hrH29idNS{1E?gfQr)_WGuhD7jt&Lsd!)QF0CRrj*3$R55a0q9j_G zNFo5Eiqx?5NWE4gi_~e2u`;<%Cr>0SLrfagD!C>cG9wK7j&fsyrF&Uen6?-YYO^f; zD7DIxl6UVnHSh>NV)M;Sev=W6jCRVLX zfKQ2nr(SE+gu~k}R;h6_8nh|~$srXZH>eb{V%SMYYIU*rnF7#9r;YVuHB{jVBmm}1 zsqunTtRjKL$P?gVT8t08T!0{W2Kf0%9PCFqIK#tU?;vptlq3-M01vky4@r<)Z*LC( zb@4<6qf;sMGFUK;QLUEgwDBYs{xtBX(ioJHN}WU-r_@ELAp@qWQ+N0}ogQ-a2Du`- z7#9yigd+MVIlcmvdRW!~NO?v0Lc5sKD6v_I-l&L@#Hj#K$ThetW3=I_h(y@qk}#!$ zZ6TFGqSC`IVx`=LQu6R{$Wdt3#u%Jf3s!6+*gw!CAjpy_?j)H)5l{Se$~Y1&@elCw zaSIqM`NLzdqa=<y+|vNvuH^Bag-X(-V;P&aFpxhqqrugkEXD z%`YAhom>-%hr!tyuqsWQT&;q-a>&ydW5Qs1AiMbVL_%GLgxvO;a0%=gC2S-GY+|hy z;i;2H#waxg*a&cj;1F7mnob$3)fwO*!q&$jXsmT2fI6sEdV@r*lt;kq7&QjA>%vr# zw#CFVrj)<|)l1-vurtisimIE=d4m1ZoLV#e88r5RjKftZ8kDG*%BmoDy zxJ_6`A#$}*>5W}}PdR{g8VH<+K&2rFlYuyQuoW1fH-Z_{ zKM(gmV2B#vDu6Hm3-$Arxcm8fdV9GCS(sC}7WO|QI&uS$A-N{emNMYx4EFUJ5bR;w zkh@W**XsIVoA52Ly|HolG&sQj&vOSS1vgooc<_ZLyaI!~d|`}MhAFOe6nr&oXSu=v zhX)y*To-9X3PIqcu(zAPmqY=q84g~&$`B<1kpKwMXaIpN;RwT#OoKdtm3}Pj8|>}< zvvR;f{38`mAzT?D2P!TB;${TCj`W35-=X&U;kX}g9@&J;p|B6^&E85cNd1gpv(ceY zU@0#V8z=qbYS_FmNZ@@c*i`sH&gc%G2uV47P$HaUI9v$owGjqclu{lm!clTvxGg+V zYt%svnI0xVEFzF@Z&p1}sf_Li&A`qOr4=hB)(Zz3URsF?D3(qY8D$_*@Km!@V3aDt z5FlhChQZ#-2xyG)1_Gx^DIPmaAn%XC{bf14Kq{dK&L^VnbrQdTJ{|#*-h+W2>S826 z*_q;WTWPGdvREe*mK%oj)p zAOYeAM8Py3_BqTFiVJ!;8`zW#QrNu_UWpn-luoPBLYh&36gA{(OcDpa{+=8WIkXFzLyUq)Jbe32_Y ztgIH~tDhB(hnb7C!NduocyU{}=t?HI=xqdraHSg7sjVp6f!LsPvanl8I8YOm;6RE1 z0*9-_2-L5u!$A;OGaMa(S^l~WEjx{RIF2B-0{b??B7}pm6%M0R!#0L>QR&$~1l}-W zJTy4@77+u5YKh*$a3oHWzyaPigT##nO9ZM-aTOryN)Q$PA8R2I2T2!>jz*7j0sQy> z(piX`dvLJN|6CNdx(3G=VN|m>%rkqVI0o5zphjRx5b zxRCAURj9SF8N^*~M1@^s$~LnCQ^hbUeH08j3{)v&ERZ>cRu6KOKRiWRE)$5kp7gOu z3F7SA5LIYP(7vpqxt@4>c?SV^5hpiBjsgUV;7kP&r3I_J@!#sms>6}c#sF6a9-**l zTA-meB#Q*XqPqt%)`>et4P22;EaRa}lhFfzW8|92G+0OvD`Z1f;5Z>`6qzN7Q|Sz_ zq!ykmYI&%A;Jg?GO#_7yJxGKaC2VGxMN4I23jp0lQ-OWBAioG|4?vbuI(ax)0Fbq) zB_VF!!5)EveEq8t;$#4&j)^rSf)M~mD?`x>mrhT-weoN`QB)xj>PR?xYB@aPBJ?B% zih_Xyht7n@p3ctBqWuL9n+=|ACJ&KJ+fhh9` zs&teVHgj(@R4~a7#ww`5g3$-16c_|5f^-dJQUA5n=TQ_VWk;A(>fxfSyEw z#sMr27evO69#S6l_c_H%B%`o$5PM=kEI=*CqH78K7u8d=Ua5fZ6qjL(Y9-PN;NGAp zT8Ikjx`O3F+%Xnn{*!XwZ!J(0Bmo{l!2!N#!m?1dIG7No@Um_fS-_H6(u+X96vfgM6_@kAoQ!AZaq+mxA`oLe^qGNTSxfW(eW0L3rl(lKCN z0yCvt0hURX0*+&t9*v;Rt@Xs2JssIov|Pbl*nj{r?j+<)AV z3|=rJECJROHg?aTK%h1j(u=M9Z^b)(SK2y5#9|{9+7doXoINWJEs;WX3+6w9u|%M1 z7Cad0U>Tg-b=AYf;A($w47DGChEf?AOk3LPTLD%Q9EcRb%QwiQFECPDIUGt5+}M2r z{QP0fJq9A76a-$TgTQJKAkpjqz?|AvWwNNa)}=Lp`Gog*=%JAY>4lb3uxg-T|}HUqzQoiuNWYXiRlhP86X{K zAcg_L`lE;hoK~le!Rr70hGLNe(3S&hCI65IV+5T_+~-#1Tq3BQ%-(2QS}X^WiX5yt zwivmjKag3A`~!3yO_ZP)p-B@pOB|k9o3SISjf0&yKz{dG5vX>G-!%{pIMWlMknPf1 zjx8*Kz(n6P*1jOoEa)gt~vMhTFPJ~W{wo~RP`$+-RGSOi1T|-v2^SfLSA{lHI zB&{QZT`f8igc8sxjGvuL=o$ZI6$QVIfMgO8vKL!+8r64SVKI_?ms!jM zzdJObd4lUq6UoYo8;_YuB}k)Ch-Vm|{vvZ?5Lo=t8zm6bwv4xcol=n23{yOClpbt|-4FFp3b!G2KdCE>!rG3eA0`HicO0)7e>y&qFijBXHozYkVJh^ z4K^Rp=FuQ0e3tD9fk4?5lYB2&S>-J#1s`YKPcU~t8wAkuEtn@*mn}v*p&OM>VN}De zvXUy>-r05#W)qhZovVz2u`*((OpX$bO)UQ>B)eGFBUWcR*ml8J!~9xmP|uO(*%bRp zBjMn}MWrQN2|FKnryfkVF>=-=<8A_TL-LC3jpYMF0v=*N8dN`ciwv86fun>Sa(0kF zxU?To%-}(IYHA-3?n{s~v0A*2fG5kKLwyZjMxzR>m5{*2kjZ0JGH^;W8?nsdu1D(& zRAMCBDmgL(4AjAJ23%ANLnBtYW2KSbp)HaN%(s<7;#Xo*-xWkg(A2r91Xhii4{?AU z&}gXDfp;I)xT$>*xMacLZjdJk)Xpm8u`$4YLd%edLcLY3jRfP8fCO(uw8X2ep9n(8 z0kjLYWr$T_J;|)Yx3*fG13?Q)9YJ3J)Dc28(0Cw=0q1COmIyI-gpLHD%SLdC63=Mn zoP?qlKbb&W?7?&;x`J^oG+;tTb&a_lp>QPZT4R_qSf$!(6d*q+^=%`yPQm~>IQyf| z5=w=5s!)d{9-v+Nd%(uDnES0RT{ybA< za)1(4vHs2E9ML*LFl;19Fu%fd!bdRT zS^*RijRD;x|3hIWE~5`bvMMef1l(E)PH6xiDXfdkK9)(p-QkTyll0ZX z0~Q<~ASR;I7{(DNR~U^k5(s+&tCPiY3?f4UP-?A#*~DQ_j8^KjLPWq2O!ZMJbU0oH zct(3gumpUx21+p#JZjc{NCutZAy_nf>i| zI|O>5Ar0&FR3<3Y#&Bi0vjBguC&%HwyxHqD7Ll_!;D&5&menAPyLhh9Vm>1FINJ zJjJ*o3q@n66$;oo$WTZSX`9t+W+^XNBY~kxAhv{wD}o{7r*(=A%VBb0_jaEQbyVML;oZPNp=eN+;^`$iH}><}cX(M+Tw{@{Et zf;rH3Aq6fh