@scaffoldly/rowdy-vfs 0.1.0-beta.20261005095325.230d57b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,105 @@
1
+ # Functional Source License, Version 1.1, Apache 2.0 Future License
2
+
3
+ ## Abbreviation
4
+
5
+ FSL-1.1-Apache-2.0
6
+
7
+ ## Notice
8
+
9
+ Copyright 2025 Scaffoldly LLC
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
22
+
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly display
28
+ and redistribute the Software for any Permitted Purpose identified below.
29
+
30
+ ### Permitted Purpose
31
+
32
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33
+ means making the Software available to others in a commercial product or
34
+ service that:
35
+
36
+ 1. substitutes for the Software;
37
+
38
+ 2. substitutes for any other product or service we offer using the Software
39
+ that exists as of the date we make the Software available; or
40
+
41
+ 3. offers the same or substantially similar functionality as the Software.
42
+
43
+ Permitted Purposes specifically include using the Software:
44
+
45
+ 1. for your internal use and access;
46
+
47
+ 2. for non-commercial education;
48
+
49
+ 3. for non-commercial research; and
50
+
51
+ 4. in connection with professional services that you provide to a licensee
52
+ using the Software in accordance with these Terms and Conditions.
53
+
54
+ ### Patents
55
+
56
+ To the extent your use for a Permitted Purpose would necessarily infringe our
57
+ patents, the license grant above includes a license under our patents. If you
58
+ make a claim against any party that the Software infringes or contributes to
59
+ the infringement of any patent, then your patent license to the Software ends
60
+ immediately.
61
+
62
+ ### Redistribution
63
+
64
+ The Terms and Conditions apply to all copies, modifications and derivatives of
65
+ the Software.
66
+
67
+ If you redistribute any copies, modifications or derivatives of the Software,
68
+ you must include a copy of or a link to these Terms and Conditions and not
69
+ remove any copyright notices provided in or with the Software.
70
+
71
+ ### Disclaimer
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76
+
77
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80
+
81
+ ### Trademarks
82
+
83
+ Except for displaying the License Details and identifying us as the origin of
84
+ the Software, you have no right under these Terms and Conditions to use our
85
+ trademarks, trade names, service marks or product names.
86
+
87
+ ## Grant of Future License
88
+
89
+ We hereby irrevocably grant you an additional license to use the Software under
90
+ the Apache License, Version 2.0 that is effective on the second anniversary of
91
+ the date we make the Software available. On or after that date, you may use the
92
+ Software under the Apache License, Version 2.0, in which case the following
93
+ will apply:
94
+
95
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
96
+ this file except in compliance with the License.
97
+
98
+ You may obtain a copy of the License at
99
+
100
+ http://www.apache.org/licenses/LICENSE-2.0
101
+
102
+ Unless required by applicable law or agreed to in writing, software distributed
103
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
104
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
105
+ specific language governing permissions and limitations under the License.
package/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # Rowdy VFS
2
+
3
+ A userspace virtual filesystem for containers that [rowdy](https://github.com/scaffoldly/rowdy)
4
+ fronts. The app sees a writable, persistent tree at `/vfs` backed by a real directory, with no
5
+ kernel involvement: an `LD_PRELOAD` shim rewrites the libc path calls the app makes.
6
+
7
+ ## Why userspace
8
+
9
+ The Lambda sandbox denies every kernel-mediated option. `/dev/fuse` is absent, and `mount(2)`,
10
+ `unshare`, `ptrace` and `seccomp(NEW_LISTENER)` all return `EPERM`. libc interposition is the one
11
+ path that survives, and rowdy, as the entrypoint supervisor, is the single place to inject it
12
+ into the whole child tree.
13
+
14
+ ## Usage
15
+
16
+ ```ts
17
+ import { applyVfs } from '@scaffoldly/rowdy-vfs';
18
+
19
+ const env = { ...process.env };
20
+ const vfs = applyVfs(env); // undefined unless env.ROWDY_VFS is set
21
+ // env.LD_PRELOAD = '/tmp/rowdy/vfspreload.so' (prepended, never duplicated)
22
+ // env.VFS_PREFIX = '/vfs' (kept if already set)
23
+ // env.VFS_BACKING = '/tmp/vfsstore' (kept if already set)
24
+ spawn(cmd, args, { env });
25
+ ```
26
+
27
+ `applyVfs` writes the shim for the running architecture to `/tmp/rowdy/vfspreload.so` (the path
28
+ is the second argument) and returns `{ preload, prefix, backing }`. The shims for `linux-x64` and
29
+ `linux-arm64` ship twice: as files under `lib/linux-<arch>/vfspreload.so` (`shimFile()` returns
30
+ the path, for a Dockerfile `COPY`) and inlined into `dist/index.js`, so there is no native build
31
+ at install time and a `pkg`-built binary carries them in its snapshot.
32
+
33
+ ## What the shim covers
34
+
35
+ The public libc path surface: `open`/`openat`/`creat`, `fopen`/`freopen`, `stat`/`lstat`/
36
+ `fstatat`/`statx`, `access`/`faccessat`, `statfs`/`statvfs`, `chmod`/`fchmodat`, `chown`/
37
+ `lchown`/`fchownat`, `truncate`, `utimensat`/`utimes`/`utime`, `opendir`/`scandir`, `mkdir`/
38
+ `mkdirat`, `rmdir`, `unlink`/`unlinkat`, `remove`, `mkfifo`/`mknod`, `rename`/`renameat`,
39
+ `link`/`linkat`, `symlink`/`symlinkat`, `mkstemp`/`mkdtemp`, `chdir`, `execve`/`execv`/`execvp`.
40
+
41
+ `getcwd`, `realpath` and `readlink` are translated in reverse so the backing directory never
42
+ leaks into the app's view. `syscall(2)` is interposed for the single-path syscalls, since libuv
43
+ (node) stats through `syscall(SYS_statx)` rather than the wrapper.
44
+
45
+ Each entry point is hooked on its own: musl binds libc-internal cross-calls (`fopen` → `open`,
46
+ `scandir` → `opendir`) internally, so one wrapper never covers another.
47
+
48
+ ## Limits
49
+
50
+ - Only dynamically linked musl (alpine) binaries that go through libc see the VFS. Static
51
+ binaries and Go programs that issue raw syscalls do not.
52
+ - `mmap` of a `/vfs` file is not translated; neither are `nftw`, `glob` or `posix_spawn` paths.
53
+ - It is not a mountpoint. A process started outside the preload cannot see it.
54
+ - Preloading the musl shim into a glibc child fails to load (ld.so warning), and the app runs
55
+ without the VFS.
56
+
57
+ ## Development
58
+
59
+ ```sh
60
+ yarn build:native # compiles native/vfspreload.c for x64 and arm64 in alpine (docker)
61
+ yarn test:native # drives the shim through busybox, node and a C caller under LD_PRELOAD
62
+ yarn build # bundles src/ with lib/linux-*/vfspreload.so inlined
63
+ yarn test
64
+ ```
65
+
66
+ CI builds and tests the shim on native x64 and arm64 runners, then publishes a `beta` pre-release
67
+ to npm on every push to the `vfs` branch.
68
+
69
+ Pluggable backings (`s3://bucket:/path`) are tracked in
70
+ [scaffoldly/rowdy#27](https://github.com/scaffoldly/rowdy/issues/27).
@@ -0,0 +1,18 @@
1
+ declare const VERSION: string;
2
+ declare const NAME: string;
3
+ declare const id: () => string;
4
+ declare const VFS_PRELOAD = "/tmp/rowdy/vfspreload.so";
5
+ declare const VFS_PREFIX = "/vfs";
6
+ declare const VFS_BACKING = "/tmp/vfsstore";
7
+ type VfsEnv = Record<'ROWDY_VFS' | 'LD_PRELOAD' | 'VFS_PREFIX' | 'VFS_BACKING', string | undefined>;
8
+ type VfsConfig = {
9
+ preload: string;
10
+ prefix: string;
11
+ backing: string;
12
+ };
13
+ declare const shim: (arch?: string) => Buffer | undefined;
14
+ declare const shimFile: (arch?: string) => string | undefined;
15
+ declare const materialize: (path?: string, arch?: string) => string;
16
+ declare const applyVfs: (env: VfsEnv, preloadPath?: string) => VfsConfig | undefined;
17
+
18
+ export { NAME, VERSION, VFS_BACKING, VFS_PREFIX, VFS_PRELOAD, type VfsConfig, type VfsEnv, applyVfs, id, materialize, shim, shimFile };
package/dist/index.js ADDED
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ NAME: () => NAME,
24
+ VERSION: () => VERSION,
25
+ VFS_BACKING: () => VFS_BACKING,
26
+ VFS_PREFIX: () => VFS_PREFIX,
27
+ VFS_PRELOAD: () => VFS_PRELOAD,
28
+ applyVfs: () => applyVfs,
29
+ id: () => id,
30
+ materialize: () => materialize,
31
+ shim: () => shim,
32
+ shimFile: () => shimFile
33
+ });
34
+ module.exports = __toCommonJS(index_exports);
35
+ var import_fs = require("fs");
36
+ var import_path = require("path");
37
+
38
+ // package.json
39
+ var package_default = {
40
+ name: "@scaffoldly/rowdy-vfs",
41
+ description: "Userspace VFS (LD_PRELOAD shim) for Rowdy",
42
+ version: "0.1.0",
43
+ main: "dist/index.js",
44
+ types: "dist/index.d.ts",
45
+ files: [
46
+ "dist/**/*.js",
47
+ "dist/**/*.d.ts",
48
+ "dist/**/*.js.map",
49
+ "lib/**/*.so",
50
+ "native/vfspreload.c"
51
+ ],
52
+ repository: {
53
+ type: "git",
54
+ url: "git+https://github.com/scaffoldly/rowdy.git"
55
+ },
56
+ bugs: {
57
+ url: "https://github.com/scaffoldly/rowdy/issues"
58
+ },
59
+ author: "Scaffoldly <github.com/scaffoldly>",
60
+ license: "SEE LICENSE IN LICENSE.md",
61
+ private: false,
62
+ engines: {
63
+ node: ">=22",
64
+ yarn: ">=1.22.0",
65
+ npm: ">=10"
66
+ },
67
+ engineStrict: false,
68
+ scripts: {
69
+ build: "yarn build:index",
70
+ "build:native": "sh native/build.sh x64 && sh native/build.sh arm64",
71
+ "build:index": "tsup",
72
+ test: "yarn jest -- --verbose --testTimeout=30000",
73
+ "test:native": "sh native/test.sh",
74
+ jest: "jest",
75
+ lint: "eslint .",
76
+ "lint:fix": "eslint . --fix"
77
+ },
78
+ prettier: {
79
+ semi: true,
80
+ trailingComma: "es5",
81
+ singleQuote: true,
82
+ printWidth: 120,
83
+ tabWidth: 2,
84
+ useTabs: false
85
+ },
86
+ jest: {
87
+ projects: [
88
+ {
89
+ displayName: "unit",
90
+ preset: "ts-jest",
91
+ testEnvironment: "node",
92
+ testMatch: [
93
+ "**/tests/**/*.test.ts"
94
+ ],
95
+ transform: {
96
+ "^.+\\.ts$": [
97
+ "ts-jest",
98
+ {
99
+ tsconfig: "tests/tsconfig.json"
100
+ }
101
+ ],
102
+ "^.+\\.so$": "<rootDir>/tests/transformers.js"
103
+ },
104
+ moduleNameMapper: {
105
+ "^@scaffoldly/rowdy-vfs$": "<rootDir>/src/index.ts"
106
+ }
107
+ }
108
+ ]
109
+ },
110
+ devDependencies: {
111
+ "@eslint/js": "^9.28.0",
112
+ "@types/jest": "^30.0.0",
113
+ "@types/node": ">=22.0.0 <25.0.0",
114
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
115
+ "@typescript-eslint/parser": "^8.0.0",
116
+ eslint: "^9.0.0",
117
+ "eslint-config-prettier": "^10.1.5",
118
+ "eslint-plugin-prettier": "^5.4.1",
119
+ globals: "^16.2.0",
120
+ jest: "^30.1.3",
121
+ prettier: "^3.0.0",
122
+ "ts-jest": "^29.1.0",
123
+ tsup: "^8.5.0",
124
+ typescript: "^5.0.0"
125
+ }
126
+ };
127
+
128
+ // lib/linux-x64/vfspreload.so
129
+ var vfspreload_default = Uint8Array.fromBase64("f0VMRgIBAQAAAAAAAAAAAAMAPgABAAAAAAAAAAAAAABAAAAAAAAAAPBQAAAAAAAAAAAAAEAAOAALAEAAFwAWAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyA4AAAAAAADIDgAAAAAAAAAQAAAAAAAAAQAAAAUAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAuJwAAAAAAAC4nAAAAAAAAABAAAAAAAAABAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAGQMAAAAAAAAZAwAAAAAAAAAEAAAAAAAAAEAAAAGAAAAsE0AAAAAAACwXQAAAAAAALBdAAAAAAAAWAIAAAAAAABoBAAAAAAAAAAQAAAAAAAAAgAAAAYAAADITQAAAAAAAMhdAAAAAAAAyF0AAAAAAACwAQAAAAAAALABAAAAAAAACAAAAAAAAAAEAAAABAAAAKgCAAAAAAAAqAIAAAAAAACoAgAAAAAAADAAAAAAAAAAMAAAAAAAAAAIAAAAAAAAAAQAAAAEAAAA2AIAAAAAAADYAgAAAAAAANgCAAAAAAAAJAAAAAAAAAAkAAAAAAAAAAQAAAAAAAAAU+V0ZAQAAACoAgAAAAAAAKgCAAAAAAAAqAIAAAAAAAAwAAAAAAAAADAAAAAAAAAACAAAAAAAAABQ5XRkBAAAAHhBAAAAAAAAeEEAAAAAAAB4QQAAAAAAALQBAAAAAAAAtAEAAAAAAAAEAAAAAAAAAFHldGQGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUuV0ZAQAAACwTQAAAAAAALBdAAAAAAAAsF0AAAAAAABQAgAAAAAAAFACAAAAAAAAAQAAAAAAAAAEAAAAIAAAAAUAAABHTlUAAQABwAQAAAABAAAAAAAAAAIAAcAEAAAAAQAAAAAAAAAEAAAAFAAAAAMAAABHTlUA7PUm3c1GjAOw0c6j4Kdym0VaGKYAAAAAJQAAAA8AAAAIAAAACQAAAADAgCImEmHQCAIEAEBJCIUAIgAAEQEBAICAEBBAQwIQAIgAAAAAAAAqEYEWETnRIEIUAYAAQAgRIIEXCACGQQAPAAAAEQAAABMAAAAAAAAAFAAAABgAAAAbAAAAHgAAAAAAAAAgAAAAIgAAACQAAAAlAAAAJwAAACoAAAArAAAALQAAAC4AAAAvAAAAMAAAADEAAAAzAAAANwAAADgAAAAAAAAAOQAAAAAAAAA8AAAAAAAAAAAAAAA9AAAAPgAAAAAAAAAAAAAAAAAAAD8AAABAAAAAPFgfxHfXm3xSTG4X1bc+D41g4g9CZksQZGk5D2hbdguzFZp8KJyFEHyLcw/r0+8OcnQsGfCRBgtBIUS7vCE5IaXQw5HEnyz8Cx8/XT7+7w/n0EXMW4uKHKASwrphM2YPHMQsGUJZh//VXMLALZ7vEkjwMIaBGZ58awbnjE2RWrpXYTbLa9zg6fCOMMvRnyz87gtR+SBK6w32I84gn91nXRlKYRDTH7yTcDncrXZv43AX6lrxf9AX1Tfg4/nRXzkPuY3xDs44OQ/90u8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAgAAAABIAAAAAAAAAAAAAAAAAAAAAAAAArQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAQwAAACIAAAAAAAAAAAAAAAAAAAAAAAAAvAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAUgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAACAAAAAAAAAAAAAAAAAAAAAAAAAApQAAABIAAAAAAAAAAAAAAAAAAAAAAAAADQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAjgAAABIAAAAAAAAAAAAAAAAAAAAAAAAA4gEAABIAAAAAAAAAAAAAAAAAAAAAAAAAlAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAhwAAABIAAAAAAAAAAAAAAAAAAAAAAAAAagAAACAAAAAAAAAAAAAAAAAAAAAAAAAA7gAAABIACgDQGAAAAAAAAJsAAAAAAAAA4wAAABIACgAwFAAAAAAAAN4AAAAAAAAAqgEAABIACgBgKAAAAAAAAKkAAAAAAAAA1AAAABIACgDwFQAAAAAAAIsAAAAAAAAA6AAAABIACgBAGAAAAAAAAIsAAAAAAAAAeQEAABIACgBAJAAAAAAAAIsAAAAAAAAALAEAABIACgCgHQAAAAAAAJMAAAAAAAAA/wEAABIACgCwKQAAAAAAAL4AAAAAAAAA9gEAABIACgAQKQAAAAAAAJkAAAAAAAAAVQEAABIACgBQIQAAAAAAAIsAAAAAAAAA2gAAABIACgCAFgAAAAAAAIsAAAAAAAAABwAAABIACwArNwAAAAAAAAEAAAAAAAAAjwEAABIACgAAJgAAAAAAAIsAAAAAAAAAKwEAABIACgBAHgAAAAAAAJMAAAAAAAAAuwEAABIACgAQKwAAAAAAAKEAAAAAAAAATgEAABIACgDAIAAAAAAAAIsAAAAAAAAA+wEAABIACgAQMgAAAAAAAF0BAAAAAAAADgIAABIACgBwNQAAAAAAAJsAAAAAAAAAIgEAABIACgAAHQAAAAAAAJsAAAAAAAAAnQEAABIACgAgJwAAAAAAAJMAAAAAAAAAxQEAABIACgDAKwAAAAAAAOQAAAAAAAAADQEAABIACgBQGwAAAAAAAIsAAAAAAAAABgIAABIACgBwMwAAAAAAAPQBAAAAAAAAFQIAABIACgAQNgAAAAAAAIsAAAAAAAAAowEAABIACgDAJwAAAAAAAJkAAAAAAAAA2wEAABIACgAQLgAAAAAAAFYBAAAAAAAA4AAAABIACgAQFwAAAAAAAJsAAAAAAAAAzQAAABIACgAQFQAAAAAAAN4AAAAAAAAAYwEAABIACgBwIgAAAAAAAJsAAAAAAAAA6QAAABIACgCwFwAAAAAAAIsAAAAAAAAAhgEAABIACgBgJQAAAAAAAJMAAAAAAAAAswEAABIACgBwKgAAAAAAAJkAAAAAAAAAzQEAABIACgCwLAAAAAAAAMQAAAAAAAAAOwEAABIACgCQHwAAAAAAAIsAAAAAAAAAcQEAABIACgCgIwAAAAAAAJMAAAAAAAAAGwIAABIACgCgNgAAAAAAAIsAAAAAAAAA8gEAABIACgDAMAAAAAAAAE0BAAAAAAAAlgEAABIACgCQJgAAAAAAAIsAAAAAAAAAfwEAABIACgDQJAAAAAAAAIsAAAAAAAAAMgEAABIACgDgHgAAAAAAAKsAAAAAAAAABwEAABIACgCgGgAAAAAAAKsAAAAAAAAA/QAAABIACgAAGgAAAAAAAJsAAAAAAAAAFAEAABIACgDgGwAAAAAAAIsAAAAAAAAAWwEAABIACgDgIQAAAAAAAIsAAAAAAAAA9gAAABIACgBwGQAAAAAAAIsAAAAAAAAARAEAABIACgAgIAAAAAAAAJsAAAAAAAAA6QEAABIACgBwLwAAAAAAAE0BAAAAAAAAHAEAABIACgBwHAAAAAAAAIsAAAAAAAAAAQAAABIACAAAEAAAAAAAAAEAAAAAAAAA1QEAABIACgCALQAAAAAAAIsAAAAAAAAAawEAABIACgAQIwAAAAAAAIsAAAAAAAAAAF9pbml0AF9maW5pAF9JVE1fZGVyZWdpc3RlclRNQ2xvbmVUYWJsZQBfSVRNX3JlZ2lzdGVyVE1DbG9uZVRhYmxlAF9fY3hhX2ZpbmFsaXplAF9fZGVyZWdpc3Rlcl9mcmFtZV9pbmZvAF9fcmVnaXN0ZXJfZnJhbWVfaW5mbwBnZXRlbnYAc3RybGVuAGRsc3ltAF9fZXJybm9fbG9jYXRpb24Ac3RybmNtcABtZW1jcHkAbWVtbW92ZQBfX3N0YWNrX2Noa19mYWlsAG9wZW5hdABjcmVhdABmb3BlbgBmcmVvcGVuAGxzdGF0AGZzdGF0YXQAYWNjZXNzAGZhY2Nlc3NhdABzdGF0eABzdGF0ZnMAc3RhdHZmcwBjaG1vZABmY2htb2RhdABsY2hvd24AZmNob3duYXQAdHJ1bmNhdGUAdXRpbWVuc2F0AHV0aW1lcwB1dGltZQBvcGVuZGlyAHNjYW5kaXIAbWtkaXIAbWtkaXJhdABybWRpcgB1bmxpbmsAdW5saW5rYXQAcmVtb3ZlAG1rZmlmbwBta25vZAByZW5hbWUAcmVuYW1lYXQAc3ltbGluawBzeW1saW5rYXQAbWtzdGVtcABta2R0ZW1wAGNoZGlyAGdldGN3ZABzdHJkdXAAcmVhbHBhdGgAcmVhZGxpbmsAcmVhZGxpbmthdABzeXNjYWxsAGV4ZWN2ZQBleGVjdgBleGVjdnAAbGliYy5tdXNsLXg4Nl82NC5zby4xALBdAAAAAAAACAAAAAAAAABgEgAAAAAAALhdAAAAAAAACAAAAAAAAACwEAAAAAAAAMBdAAAAAAAACAAAAAAAAAAAEgAAAAAAAABgAAAAAAAACAAAAAAAAAAAYAAAAAAAANhfAAAAAAAABgAAAAQAAAAAAAAAAAAAAOBfAAAAAAAABgAAAAYAAAAAAAAAAAAAAOhfAAAAAAAABgAAAAcAAAAAAAAAAAAAAPBfAAAAAAAABgAAAAkAAAAAAAAAAAAAAPhfAAAAAAAABgAAAA4AAAAAAAAAAAAAAJBfAAAAAAAABwAAAAEAAAAAAAAAAAAAAJhfAAAAAAAA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SImcJBgQAACJ83Q4SInXSI10JBDo2+v//4neSInH/xUwOgAASIuUJBgQAABkSCsUJSgAAAB1M0iBxCAQAABbww8fQABIiXwkCEiNNfcZAABIx8f/////6Gjp//9Ii1QkCEiJBew5AADroug16f//Dx9EAABVSIn5U4nzSIHsKBAAAEiDPcI5AAAAZEiLLCUoAAAASImsJBgQAABIidV0PEiNdCQQSInP6Efr//9IieqJ3kiJx/8VkTkAAEiLlCQYEAAAZEgrFCUoAAAAdTRIgcQoEAAAW13DDx9AAEiJfCQISI01ZhkAAEjHx//////o0Oj//0iLTCQISIkFTDkAAOue6J3o//9mkGZmLg8fhAAAAAAAVVNIiftIgewYIAAASIM9HDkAAABkSIssJSgAAABIiawkCCAAAEiJ9XROSInfSInm6Kvq//9IjbQkABAAAEiJ70iJw+iY6v//SInfSInG/xXcOAAASIuUJAggAABkSCsUJSgAAAB1LUiBxBggAABbXcMPH4AAAAAASI01wRgAAEjHx//////oJej//0iJBZ44AADrluj35///Dx+AAAAAAEFVQVRBidRVSIn1U4n7SIHsGCAAAEiDPWs4AAAAZEyLLCUoAAAATImsJAggAABJic10VUiJ70iJ5ugC6v//SI20JAAQAABMie9IicXo7+n//0SJ4kiJ7onfSInB/xUmOAAASIuUJAggAABkSCsUJSgAAAB1L0iBxBggAABbXUFcQV3DDx9EAABIjTUYGAAASMfH/////+h15///SIkF5jcAAOuP6Efn//8PH4AAAAAAVVNIiftIgewYIAAASIM9vDcAAABkSIssJSgAAABIiawkCCAAAEiJ9XROSInfSInm6Fvp//9IjbQkABAAAEiJ70iJw+hI6f//SInfSInG/xV8NwAASIuUJAggAABkSCsUJSgAAAB1LUiBxBggAABbXcMPH4AAAAAASI01vRcAAEjHx//////o1eb//0iJBT43AADrluin5v//Dx+AAAAAAEFVQVRBidRVSIn1U4n7SIHsKCAAAEiDPQs3AAAAZEyLLCUoAAAATImsJBggAABJic10XUiJ70iNdCQQRIlEJAzoq+j//0iNtCQQEAAATInvSInF6Jjo//9EieJEi0QkDEiJ7kiJwYnf/xW6NgAASIuUJBggAABkSCsUJSgAAAB1OEiBxCggAABbXUFcQV3DkEiNNQ4XAABIx8f/////RIlEJAzoGOb//0SLRCQMSIkFdDYAAOl6////6OLl//9mkFVTSIn7SIHsGCAAAEiDPUw2AAAAZEiLLCUoAAAASImsJAggAABIifV0TkiJ30iJ5uj75///SI20JAAQAABIie9IicPo6Of//0iJ30iJxv8VDDYAAEiLlCQIIAAAZEgrFCUoAAAAdS1IgcQYIAAAW13DDx+AAAAAAEiNNSEWAABIx8f/////6HXl//9IiQXONQAA65boR+X//w8fgAAAAABBVFWJ9VNIiftIgewQIAAASIM9oDUAAABkTIskJSgAAABMiaQkCCAAAEmJ1HRSSInfSInm6Ffn//9IjbQkABAAAEyJ50iJw+hE5///ie5Iid9IicL/FV41AABIi5QkCCAAAGRIKxQlKAAAAHUvSIHEECAAAFtdQVzDDx+AAAAAAEiNNYEVAABIx8f/////6M3k//9IiQUeNQAA65Lon+T//w8fQABmZi4PH4QAAAAAAEFWVVNIgewgEAAASIM97TQAAABkSIscJSgAAABIiZwkGBAAAEiJ+w+EkwAAAEiNbCQQSInfSInu6KPm//9IixW8NAAASDnDdGdIie//0onChcB5JEiLhCQYEAAAZEgrBCUoAAAAdXhIgcQgEAAAidBbXUFeww8fAEiJ74lEJAzoXOT//0iJ30mJxuhR5P//So1MNfqLVCQMizEPt0kEiXQD+maJTAP+66sPH4AAAAAASInf/9KJwuubDx+AAAAAAEiNNZsUAABIx8f/////6N3j//9IiQUmNAAA6U7////orOP//5BmZi4PH4QAAAAAAEFWVVNIgewQEAAASIM99TMAAABkSIscJSgAAABIiZwkCBAAAEiJ+3R3SInmSInf6Lzl//9IixXNMwAASDnDdFhIief/0kiFwHQqSInn6J7j//9Iid9Jicbok+P//0qNVDT6iwoPt1IEiUwD+maJVAP+SInYSIuUJAgQAABkSCsUJSgAAAB1OEiBxBAQAABbXUFeww8fRAAASInf/9Lr1ZBIjTXTEwAASMfH/////+gN4///SIkFTjMAAOlq////6Nzi//+QZmYuDx+EAAAAAABIgewoEAAASIM9ITMAAABkSIsUJSgAAABIiZQkGBAAAEiJ+nQ7SInXSI10JBDo7uT//0iJ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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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BAAAAAAAAAAAAAAAAAAAAIcAAAABAAAAAgAAAAAAAAAwQwAAAAAAADBDAAAAAAAANAkAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAACRAAAADgAAAAMAAAAAAAAAsF0AAAAAAACwTQAAAAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAnQAAAA8AAAADAAAAAAAAAMBdAAAAAAAAwE0AAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAKkAAAAGAAAAAwAAAAAAAADIXQAAAAAAAMhNAAAAAAAAsAEAAAAAAAAFAAAAAAAAAAgAAAAAAAAAEAAAAAAAAACyAAAAAQAAAAMAAAAAAAAAeF8AAAAAAAB4TwAAAAAAAIgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAtwAAAAEAAAADAAAAAAAAAABgAAAAAAAAAFAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAL0AAAAIAAAAAwAAAAAAAAAgYAAAAAAAAAhQAAAAAAAA+AEAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAADCAAAAAQAAADAAAAAAAAAAAAAAAAAAAAAIUAAAAAAAABwAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAJFAAAAAAAADLAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==");
130
+
131
+ // lib/linux-arm64/vfspreload.so
132
+ var vfspreload_default2 = Uint8Array.fromBase64("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b2RhdAAAAAAAAAAAY2hvd24AAABsY2hvd24AAGZjaG93bmF0AAAAAAAAAAB0cnVuY2F0ZQAAAAAAAAAAdXRpbWVuc2F0AAAAAAAAAHV0aW1lcwAAdXRpbWUAAABvcGVuZGlyAHNjYW5kaXIAbWtkaXJhdABybWRpcgAAAHVubGluawAAdW5saW5rYXQAAAAAAAAAAHJlbW92ZQAAbWtmaWZvAABta25vZAAAAHJlbmFtZQAAcmVuYW1lYXQAAAAAAAAAAGxpbmsAAAAAbGlua2F0AABzeW1saW5rAHN5bWxpbmthdAAAAAAAAABta3N0ZW1wAG1rZHRlbXAAY2hkaXIAAABnZXRjd2QAAHJlYWxwYXRoAAAAAAAAAAByZWFkbGluawAAAAAAAAAAcmVhZGxpbmthdAAAAAAAAHN5c2NhbGwAZXhlY3ZlAABleGVjdgAAAGV4ZWN2cAAAARsDO8wBAAA4AAAAYNL//1ACAABg0///5AEAAJDT///4AQAAzNP//wwCAAAs1P//MAIAAGDU//9wAgAAYNX//+gCAAAQ1v//JAMAAAjX//9UAwAAINj//4gDAADQ2P//uAMAAIDZ///oAwAAQNr//xgEAADw2v//SAQAAKDb//94BAAAgNz//6gEAAAw3f//2AQAAADe//8IBQAA5N7//zgFAACg3///aAUAAFDg//+YBQAAAOH//8gFAADM4f//+AUAAIzi//8oBgAATOP//1gGAAAo5P//iAYAAODk//+4BgAAwOX//+gGAABw5v//GAcAACDn//9IBwAAyOf//3QHAACI6P//pAcAAEDp///UBwAABOr//wQIAACs6v//MAgAAGDr//9cCAAAJOz//4wIAADM7P//uAgAAIDt///oCAAAQO7//xgJAAAQ7///TAkAAADw//+ECQAA0PD//7gJAADA8f//8AkAAJDy//8kCgAAaPP//1wKAABw9P//lAoAAGz1///ICgAAIPb///QKAAAk9///KAsAACD4//9cCwAAIPn//5ALAAAw+v//yAsAALD7///8CwAAcPz//ywMAAAg/f//XAwAAAAAAAAQAAAAAAAAAAF6UgAEeB4BGwwfABAAAAAYAAAAdNH//zAAAAAAAAAAEAAAACwAAACQ0f//PAAAAAAAAAAgAAAAQAAAALjR//9gAAAAAEEOIJ0EngNCkwJU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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AgAAAAAAAADwPgAAAAAAAPA+AAAAAAAAwAoAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAB+AAAADgAAAAMAAAAAAAAAiP0BAAAAAACI/QAAAAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAigAAAA8AAAADAAAAAAAAAJj9AQAAAAAAmP0AAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAJYAAAAGAAAAAwAAAAAAAACg/QEAAAAAAKD9AAAAAAAAsAEAAAAAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAACfAAAAAQAAAAMAAAAAAAAAUP8BAAAAAABQ/wAAAAAAALAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAApAAAAAEAAAADAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAKoAAAAIAAAAAwAAAAAAAAAIAAIAAAAAAAgAAQAAAAAA4AEAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAACvAAAAAQAAADAAAAAAAAAAAAAAAAAAAAAIAAEAAAAAABwAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAJAABAAAAAAC4AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==");
133
+
134
+ // src/index.ts
135
+ var shims = {
136
+ "linux-x64": vfspreload_default,
137
+ "linux-arm64": vfspreload_default2
138
+ };
139
+ var VERSION = package_default.version;
140
+ var NAME = package_default.name;
141
+ var id = () => {
142
+ return `${NAME}@${VERSION}`;
143
+ };
144
+ var VFS_PRELOAD = "/tmp/rowdy/vfspreload.so";
145
+ var VFS_PREFIX = "/vfs";
146
+ var VFS_BACKING = "/tmp/vfsstore";
147
+ var shim = (arch = process.arch) => {
148
+ const data = shims[`linux-${arch}`];
149
+ return data ? Buffer.from(data) : void 0;
150
+ };
151
+ var shimFile = (arch = process.arch) => {
152
+ const path = (0, import_path.join)(__dirname, "..", "lib", `linux-${arch}`, "vfspreload.so");
153
+ return (0, import_fs.existsSync)(path) ? path : void 0;
154
+ };
155
+ var materialize = (path = VFS_PRELOAD, arch = process.arch) => {
156
+ const data = shim(arch);
157
+ if (!data) {
158
+ throw new Error(`${id()}: no vfspreload shim for linux-${arch}`);
159
+ }
160
+ if ((0, import_fs.existsSync)(path) && (0, import_fs.readFileSync)(path).equals(data)) {
161
+ return path;
162
+ }
163
+ (0, import_fs.mkdirSync)((0, import_path.dirname)(path), { recursive: true });
164
+ (0, import_fs.writeFileSync)(path, data, { mode: 493 });
165
+ return path;
166
+ };
167
+ var applyVfs = (env, preloadPath = VFS_PRELOAD) => {
168
+ if (!env.ROWDY_VFS) {
169
+ return void 0;
170
+ }
171
+ const preload = materialize(preloadPath);
172
+ const existing = (env.LD_PRELOAD ?? "").split(":").filter((p) => p && p !== preload);
173
+ env.LD_PRELOAD = [preload, ...existing].join(":");
174
+ env.VFS_PREFIX = env.VFS_PREFIX || VFS_PREFIX;
175
+ env.VFS_BACKING = env.VFS_BACKING || VFS_BACKING;
176
+ return { preload, prefix: env.VFS_PREFIX, backing: env.VFS_BACKING };
177
+ };
178
+ // Annotate the CommonJS export names for ESM import in node:
179
+ 0 && (module.exports = {
180
+ NAME,
181
+ VERSION,
182
+ VFS_BACKING,
183
+ VFS_PREFIX,
184
+ VFS_PRELOAD,
185
+ applyVfs,
186
+ id,
187
+ materialize,
188
+ shim,
189
+ shimFile
190
+ });
191
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3BhY2thZ2UuanNvbiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgcGFja2FnZUpzb24gZnJvbSAnLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCB4NjQgZnJvbSAnLi4vbGliL2xpbnV4LXg2NC92ZnNwcmVsb2FkLnNvJztcbmltcG9ydCBhcm02NCBmcm9tICcuLi9saWIvbGludXgtYXJtNjQvdmZzcHJlbG9hZC5zbyc7XG5cbi8vIFRoZSBzaGltcyBzaGlwIHR3aWNlOiBpbmxpbmVkIGhlcmUgKHNvIGEgcGtnIHNuYXBzaG90IGNhcnJpZXMgdGhlbSBhbmRcbi8vIG1hdGVyaWFsaXplKCkgbmVlZHMgbm90aGluZyBvbiBkaXNrKSBhbmQgYXMgZmlsZXMgdW5kZXIgbGliLyBmb3IgY29uc3VtZXJzXG4vLyB0aGF0IHdhbnQgdG8gQ09QWSBvbmUgaW50byBhbiBpbWFnZS5cbmNvbnN0IHNoaW1zOiBSZWNvcmQ8c3RyaW5nLCBVaW50OEFycmF5IHwgdW5kZWZpbmVkPiA9IHtcbiAgJ2xpbnV4LXg2NCc6IHg2NCxcbiAgJ2xpbnV4LWFybTY0JzogYXJtNjQsXG59O1xuXG5jb25zdCBWRVJTSU9OID0gcGFja2FnZUpzb24udmVyc2lvbjtcbmNvbnN0IE5BTUUgPSBwYWNrYWdlSnNvbi5uYW1lO1xuXG5jb25zdCBpZCA9ICgpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYCR7TkFNRX1AJHtWRVJTSU9OfWA7XG59O1xuXG4vKiogV2hlcmUgdGhlIHNoaW0gaXMgd3JpdHRlbiBmb3IgdGhlIGNoaWxkIHRvIHByZWxvYWQuICovXG5leHBvcnQgY29uc3QgVkZTX1BSRUxPQUQgPSAnL3RtcC9yb3dkeS92ZnNwcmVsb2FkLnNvJztcbmV4cG9ydCBjb25zdCBWRlNfUFJFRklYID0gJy92ZnMnO1xuZXhwb3J0IGNvbnN0IFZGU19CQUNLSU5HID0gJy90bXAvdmZzc3RvcmUnO1xuXG5leHBvcnQgdHlwZSBWZnNFbnYgPSBSZWNvcmQ8J1JPV0RZX1ZGUycgfCAnTERfUFJFTE9BRCcgfCAnVkZTX1BSRUZJWCcgfCAnVkZTX0JBQ0tJTkcnLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgdHlwZSBWZnNDb25maWcgPSB7XG4gIC8qKiBQYXRoIG9mIHRoZSBtYXRlcmlhbGl6ZWQgc2hpbSwgZmlyc3QgZW50cnkgb2YgTERfUFJFTE9BRC4gKi9cbiAgcHJlbG9hZDogc3RyaW5nO1xuICAvKiogVmlydHVhbCBwcmVmaXggdGhlIGFwcCBzZWVzLiAqL1xuICBwcmVmaXg6IHN0cmluZztcbiAgLyoqIFJlYWwgZGlyZWN0b3J5IGJhY2tpbmcgdGhlIHByZWZpeC4gKi9cbiAgYmFja2luZzogc3RyaW5nO1xufTtcblxuLyoqIFRoZSBjb21waWxlZCBzaGltIGZvciBhbiBhcmNoaXRlY3R1cmUgKGBsaW51eC14NjRgLCBgbGludXgtYXJtNjRgKSwgb3IgdW5kZWZpbmVkIGlmIG5vdCBidWlsdCBpbi4gKi9cbmV4cG9ydCBjb25zdCBzaGltID0gKGFyY2g6IHN0cmluZyA9IHByb2Nlc3MuYXJjaCk6IEJ1ZmZlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGRhdGEgPSBzaGltc1tgbGludXgtJHthcmNofWBdO1xuICByZXR1cm4gZGF0YSA/IEJ1ZmZlci5mcm9tKGRhdGEpIDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBPbi1kaXNrIHBhdGggb2YgdGhlIHNoaW0gc2hpcHBlZCBpbiB0aGlzIHBhY2thZ2UgKGBsaWIvbGludXgtPGFyY2g+L3Zmc3ByZWxvYWQuc29gKSxcbiAqIG9yIHVuZGVmaW5lZCB3aGVuIGl0IGlzIG5vdCBwcmVzZW50IGFzIGEgZmlsZSAoZS5nLiBpbnNpZGUgYSBwa2cgc25hcHNob3QpLlxuICogUHJlZmVyIGBtYXRlcmlhbGl6ZSgpYCBhdCBydW50aW1lOyB0aGlzIGlzIGZvciBidWlsZCBzdGVwcyB0aGF0IGNvcHkgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzaGltRmlsZSA9IChhcmNoOiBzdHJpbmcgPSBwcm9jZXNzLmFyY2gpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXRoID0gam9pbihfX2Rpcm5hbWUsICcuLicsICdsaWInLCBgbGludXgtJHthcmNofWAsICd2ZnNwcmVsb2FkLnNvJyk7XG4gIHJldHVybiBleGlzdHNTeW5jKHBhdGgpID8gcGF0aCA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogV3JpdGUgdGhlIHNoaW0gZm9yIHRoZSBydW5uaW5nIGFyY2hpdGVjdHVyZSB0byBgcGF0aGAgc28gYSBjaGlsZCBwcm9jZXNzIGNhblxuICogTERfUFJFTE9BRCBpdC4gSWRlbXBvdGVudDogYW4gZXhpc3RpbmcgZmlsZSB3aXRoIGlkZW50aWNhbCBjb250ZW50cyBpcyBsZWZ0XG4gKiBhbG9uZS4gVGhyb3dzIGlmIG5vIHNoaW0gaXMgYnVpbHQgaW4gZm9yIHRoZSBhcmNoaXRlY3R1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXRlcmlhbGl6ZSA9IChwYXRoOiBzdHJpbmcgPSBWRlNfUFJFTE9BRCwgYXJjaDogc3RyaW5nID0gcHJvY2Vzcy5hcmNoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZGF0YSA9IHNoaW0oYXJjaCk7XG4gIGlmICghZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtpZCgpfTogbm8gdmZzcHJlbG9hZCBzaGltIGZvciBsaW51eC0ke2FyY2h9YCk7XG4gIH1cbiAgaWYgKGV4aXN0c1N5bmMocGF0aCkgJiYgcmVhZEZpbGVTeW5jKHBhdGgpLmVxdWFscyhkYXRhKSkge1xuICAgIHJldHVybiBwYXRoO1xuICB9XG4gIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhwYXRoLCBkYXRhLCB7IG1vZGU6IDBvNzU1IH0pO1xuICByZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogT3B0LWluIHVzZXJzcGFjZSBWRlMgZm9yIGEgY2hpbGQgcHJvY2VzcyBlbnZpcm9ubWVudC4gV2hlbiBgZW52LlJPV0RZX1ZGU2AgaXNcbiAqIHNldCwgbWF0ZXJpYWxpemUgdGhlIHNoaW0sIHByZXBlbmQgaXQgdG8gYGVudi5MRF9QUkVMT0FEYCAocHJlc2VydmluZyBhbnlcbiAqIGV4aXN0aW5nIHZhbHVlLCBuZXZlciBkdXBsaWNhdGluZykgYW5kIGRlZmF1bHQgYFZGU19QUkVGSVhgL2BWRlNfQkFDS0lOR2AuXG4gKiBNdXRhdGVzIGBlbnZgIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgY29uZmlnLCBvciB1bmRlZmluZWQgd2hlbiBvZmYuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBseVZmcyA9IChlbnY6IFZmc0VudiwgcHJlbG9hZFBhdGg6IHN0cmluZyA9IFZGU19QUkVMT0FEKTogVmZzQ29uZmlnIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFlbnYuUk9XRFlfVkZTKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwcmVsb2FkID0gbWF0ZXJpYWxpemUocHJlbG9hZFBhdGgpO1xuICBjb25zdCBleGlzdGluZyA9IChlbnYuTERfUFJFTE9BRCA/PyAnJykuc3BsaXQoJzonKS5maWx0ZXIoKHApID0+IHAgJiYgcCAhPT0gcHJlbG9hZCk7XG4gIGVudi5MRF9QUkVMT0FEID0gW3ByZWxvYWQsIC4uLmV4aXN0aW5nXS5qb2luKCc6Jyk7XG4gIGVudi5WRlNfUFJFRklYID0gZW52LlZGU19QUkVGSVggfHwgVkZTX1BSRUZJWDtcbiAgZW52LlZGU19CQUNLSU5HID0gZW52LlZGU19CQUNLSU5HIHx8IFZGU19CQUNLSU5HO1xuICByZXR1cm4geyBwcmVsb2FkLCBwcmVmaXg6IGVudi5WRlNfUFJFRklYLCBiYWNraW5nOiBlbnYuVkZTX0JBQ0tJTkcgfTtcbn07XG5cbmV4cG9ydCB7IFZFUlNJT04sIE5BTUUsIGlkIH07XG4iLCAie1xuICBcIm5hbWVcIjogXCJAc2NhZmZvbGRseS9yb3dkeS12ZnNcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlVzZXJzcGFjZSBWRlMgKExEX1BSRUxPQUQgc2hpbSkgZm9yIFJvd2R5XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMS4wXCIsXG4gIFwibWFpblwiOiBcImRpc3QvaW5kZXguanNcIixcbiAgXCJ0eXBlc1wiOiBcImRpc3QvaW5kZXguZC50c1wiLFxuICBcImZpbGVzXCI6IFtcbiAgICBcImRpc3QvKiovKi5qc1wiLFxuICAgIFwiZGlzdC8qKi8qLmQudHNcIixcbiAgICBcImRpc3QvKiovKi5qcy5tYXBcIixcbiAgICBcImxpYi8qKi8qLnNvXCIsXG4gICAgXCJuYXRpdmUvdmZzcHJlbG9hZC5jXCJcbiAgXSxcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vc2NhZmZvbGRseS9yb3dkeS5naXRcIlxuICB9LFxuICBcImJ1Z3NcIjoge1xuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3NjYWZmb2xkbHkvcm93ZHkvaXNzdWVzXCJcbiAgfSxcbiAgXCJhdXRob3JcIjogXCJTY2FmZm9sZGx5IDxnaXRodWIuY29tL3NjYWZmb2xkbHk+XCIsXG4gIFwibGljZW5zZVwiOiBcIlNFRSBMSUNFTlNFIElOIExJQ0VOU0UubWRcIixcbiAgXCJwcml2YXRlXCI6IGZhbHNlLFxuICBcImVuZ2luZXNcIjoge1xuICAgIFwibm9kZVwiOiBcIj49MjJcIixcbiAgICBcInlhcm5cIjogXCI+PTEuMjIuMFwiLFxuICAgIFwibnBtXCI6IFwiPj0xMFwiXG4gIH0sXG4gIFwiZW5naW5lU3RyaWN0XCI6IGZhbHNlLFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYnVpbGRcIjogXCJ5YXJuIGJ1aWxkOmluZGV4XCIsXG4gICAgXCJidWlsZDpuYXRpdmVcIjogXCJzaCBuYXRpdmUvYnVpbGQuc2ggeDY0ICYmIHNoIG5hdGl2ZS9idWlsZC5zaCBhcm02NFwiLFxuICAgIFwiYnVpbGQ6aW5kZXhcIjogXCJ0c3VwXCIsXG4gICAgXCJ0ZXN0XCI6IFwieWFybiBqZXN0IC0tIC0tdmVyYm9zZSAtLXRlc3RUaW1lb3V0PTMwMDAwXCIsXG4gICAgXCJ0ZXN0Om5hdGl2ZVwiOiBcInNoIG5hdGl2ZS90ZXN0LnNoXCIsXG4gICAgXCJqZXN0XCI6IFwiamVzdFwiLFxuICAgIFwibGludFwiOiBcImVzbGludCAuXCIsXG4gICAgXCJsaW50OmZpeFwiOiBcImVzbGludCAuIC0tZml4XCJcbiAgfSxcbiAgXCJwcmV0dGllclwiOiB7XG4gICAgXCJzZW1pXCI6IHRydWUsXG4gICAgXCJ0cmFpbGluZ0NvbW1hXCI6IFwiZXM1XCIsXG4gICAgXCJzaW5nbGVRdW90ZVwiOiB0cnVlLFxuICAgIFwicHJpbnRXaWR0aFwiOiAxMjAsXG4gICAgXCJ0YWJXaWR0aFwiOiAyLFxuICAgIFwidXNlVGFic1wiOiBmYWxzZVxuICB9LFxuICBcImplc3RcIjoge1xuICAgIFwicHJvamVjdHNcIjogW1xuICAgICAge1xuICAgICAgICBcImRpc3BsYXlOYW1lXCI6IFwidW5pdFwiLFxuICAgICAgICBcInByZXNldFwiOiBcInRzLWplc3RcIixcbiAgICAgICAgXCJ0ZXN0RW52aXJvbm1lbnRcIjogXCJub2RlXCIsXG4gICAgICAgIFwidGVzdE1hdGNoXCI6IFtcbiAgICAgICAgICBcIioqL3Rlc3RzLyoqLyoudGVzdC50c1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwidHJhbnNmb3JtXCI6IHtcbiAgICAgICAgICBcIl4uK1xcXFwudHMkXCI6IFtcbiAgICAgICAgICAgIFwidHMtamVzdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInRzY29uZmlnXCI6IFwidGVzdHMvdHNjb25maWcuanNvblwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcIl4uK1xcXFwuc28kXCI6IFwiPHJvb3REaXI+L3Rlc3RzL3RyYW5zZm9ybWVycy5qc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwibW9kdWxlTmFtZU1hcHBlclwiOiB7XG4gICAgICAgICAgXCJeQHNjYWZmb2xkbHkvcm93ZHktdmZzJFwiOiBcIjxyb290RGlyPi9zcmMvaW5kZXgudHNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAZXNsaW50L2pzXCI6IFwiXjkuMjguMFwiLFxuICAgIFwiQHR5cGVzL2plc3RcIjogXCJeMzAuMC4wXCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIj49MjIuMC4wIDwyNS4wLjBcIixcbiAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9lc2xpbnQtcGx1Z2luXCI6IFwiXjguMC4wXCIsXG4gICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyXCI6IFwiXjguMC4wXCIsXG4gICAgXCJlc2xpbnRcIjogXCJeOS4wLjBcIixcbiAgICBcImVzbGludC1jb25maWctcHJldHRpZXJcIjogXCJeMTAuMS41XCIsXG4gICAgXCJlc2xpbnQtcGx1Z2luLXByZXR0aWVyXCI6IFwiXjUuNC4xXCIsXG4gICAgXCJnbG9iYWxzXCI6IFwiXjE2LjIuMFwiLFxuICAgIFwiamVzdFwiOiBcIl4zMC4xLjNcIixcbiAgICBcInByZXR0aWVyXCI6IFwiXjMuMC4wXCIsXG4gICAgXCJ0cy1qZXN0XCI6IFwiXjI5LjEuMFwiLFxuICAgIFwidHN1cFwiOiBcIl44LjUuMFwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcIl41LjAuMFwiXG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFtRTtBQUNuRSxrQkFBOEI7OztBQ0Q5QjtBQUFBLEVBQ0UsTUFBUTtBQUFBLEVBQ1IsYUFBZTtBQUFBLEVBQ2YsU0FBVztBQUFBLEVBQ1gsTUFBUTtBQUFBLEVBQ1IsT0FBUztBQUFBLEVBQ1QsT0FBUztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUFBLEVBQ0EsWUFBYztBQUFBLElBQ1osTUFBUTtBQUFBLElBQ1IsS0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE1BQVE7QUFBQSxJQUNOLEtBQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxRQUFVO0FBQUEsRUFDVixTQUFXO0FBQUEsRUFDWCxTQUFXO0FBQUEsRUFDWCxTQUFXO0FBQUEsSUFDVCxNQUFRO0FBQUEsSUFDUixNQUFRO0FBQUEsSUFDUixLQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsY0FBZ0I7QUFBQSxFQUNoQixTQUFXO0FBQUEsSUFDVCxPQUFTO0FBQUEsSUFDVCxnQkFBZ0I7QUFBQSxJQUNoQixlQUFlO0FBQUEsSUFDZixNQUFRO0FBQUEsSUFDUixlQUFlO0FBQUEsSUFDZixNQUFRO0FBQUEsSUFDUixNQUFRO0FBQUEsSUFDUixZQUFZO0FBQUEsRUFDZDtBQUFBLEVBQ0EsVUFBWTtBQUFBLElBQ1YsTUFBUTtBQUFBLElBQ1IsZUFBaUI7QUFBQSxJQUNqQixhQUFlO0FBQUEsSUFDZixZQUFjO0FBQUEsSUFDZCxVQUFZO0FBQUEsSUFDWixTQUFXO0FBQUEsRUFDYjtBQUFBLEVBQ0EsTUFBUTtBQUFBLElBQ04sVUFBWTtBQUFBLE1BQ1Y7QUFBQSxRQUNFLGFBQWU7QUFBQSxRQUNmLFFBQVU7QUFBQSxRQUNWLGlCQUFtQjtBQUFBLFFBQ25CLFdBQWE7QUFBQSxVQUNYO0FBQUEsUUFDRjtBQUFBLFFBQ0EsV0FBYTtBQUFBLFVBQ1gsYUFBYTtBQUFBLFlBQ1g7QUFBQSxZQUNBO0FBQUEsY0FDRSxVQUFZO0FBQUEsWUFDZDtBQUFBLFVBQ0Y7QUFBQSxVQUNBLGFBQWE7QUFBQSxRQUNmO0FBQUEsUUFDQSxrQkFBb0I7QUFBQSxVQUNsQiwyQkFBMkI7QUFBQSxRQUM3QjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsaUJBQW1CO0FBQUEsSUFDakIsY0FBYztBQUFBLElBQ2QsZUFBZTtBQUFBLElBQ2YsZUFBZTtBQUFBLElBQ2Ysb0NBQW9DO0FBQUEsSUFDcEMsNkJBQTZCO0FBQUEsSUFDN0IsUUFBVTtBQUFBLElBQ1YsMEJBQTBCO0FBQUEsSUFDMUIsMEJBQTBCO0FBQUEsSUFDMUIsU0FBVztBQUFBLElBQ1gsTUFBUTtBQUFBLElBQ1IsVUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLElBQ1gsTUFBUTtBQUFBLElBQ1IsWUFBYztBQUFBLEVBQ2hCO0FBQ0Y7QTs7Ozs7Ozs7QUQ5RUEsSUFBTSxRQUFnRDtBQUFBLEVBQ3BELGFBQWE7QUFBQSxFQUNiLGVBQWVBO0FBQ2pCO0FBRUEsSUFBTSxVQUFVLGdCQUFZO0FBQzVCLElBQU0sT0FBTyxnQkFBWTtBQUV6QixJQUFNLEtBQUssTUFBYztBQUN2QixTQUFPLEdBQUcsSUFBSSxJQUFJLE9BQU87QUFDM0I7QUFHTyxJQUFNLGNBQWM7QUFDcEIsSUFBTSxhQUFhO0FBQ25CLElBQU0sY0FBYztBQWNwQixJQUFNLE9BQU8sQ0FBQyxPQUFlLFFBQVEsU0FBNkI7QUFDdkUsUUFBTSxPQUFPLE1BQU0sU0FBUyxJQUFJLEVBQUU7QUFDbEMsU0FBTyxPQUFPLE9BQU8sS0FBSyxJQUFJLElBQUk7QUFDcEM7QUFPTyxJQUFNLFdBQVcsQ0FBQyxPQUFlLFFBQVEsU0FBNkI7QUFDM0UsUUFBTSxXQUFPLGtCQUFLLFdBQVcsTUFBTSxPQUFPLFNBQVMsSUFBSSxJQUFJLGVBQWU7QUFDMUUsYUFBTyxzQkFBVyxJQUFJLElBQUksT0FBTztBQUNuQztBQU9PLElBQU0sY0FBYyxDQUFDLE9BQWUsYUFBYSxPQUFlLFFBQVEsU0FBaUI7QUFDOUYsUUFBTSxPQUFPLEtBQUssSUFBSTtBQUN0QixNQUFJLENBQUMsTUFBTTtBQUNULFVBQU0sSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLGtDQUFrQyxJQUFJLEVBQUU7QUFBQSxFQUNqRTtBQUNBLFVBQUksc0JBQVcsSUFBSSxTQUFLLHdCQUFhLElBQUksRUFBRSxPQUFPLElBQUksR0FBRztBQUN2RCxXQUFPO0FBQUEsRUFDVDtBQUNBLCtCQUFVLHFCQUFRLElBQUksR0FBRyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQzVDLCtCQUFjLE1BQU0sTUFBTSxFQUFFLE1BQU0sSUFBTSxDQUFDO0FBQ3pDLFNBQU87QUFDVDtBQVFPLElBQU0sV0FBVyxDQUFDLEtBQWEsY0FBc0IsZ0JBQXVDO0FBQ2pHLE1BQUksQ0FBQyxJQUFJLFdBQVc7QUFDbEIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxRQUFNLFVBQVUsWUFBWSxXQUFXO0FBQ3ZDLFFBQU0sWUFBWSxJQUFJLGNBQWMsSUFBSSxNQUFNLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sT0FBTztBQUNuRixNQUFJLGFBQWEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEtBQUssR0FBRztBQUNoRCxNQUFJLGFBQWEsSUFBSSxjQUFjO0FBQ25DLE1BQUksY0FBYyxJQUFJLGVBQWU7QUFDckMsU0FBTyxFQUFFLFNBQVMsUUFBUSxJQUFJLFlBQVksU0FBUyxJQUFJLFlBQVk7QUFDckU7IiwKICAibmFtZXMiOiBbInZmc3ByZWxvYWRfZGVmYXVsdCJdCn0K
Binary file
Binary file
@@ -0,0 +1,457 @@
1
+ /*
2
+ * vfspreload.c — a userspace VFS via LD_PRELOAD libc interposition.
3
+ *
4
+ * The sandbox denies every kernel-mediated VFS primitive (/dev/fuse, mount(2),
5
+ * namespaces, ptrace, seccomp-notify — all EPERM/ENOENT). The one path that
6
+ * survives is intercepting libc's path entry points in-process. This shim turns
7
+ * a virtual prefix (VFS_PREFIX, default "/vfs") into a full, writable, persistent
8
+ * filesystem backed by a real directory (VFS_BACKING, default "/tmp/vfsstore").
9
+ *
10
+ * It is a genuine filesystem surface: create, read, write, stat, list, mkdir,
11
+ * rename, chmod, delete all work, because each path-based call is translated and
12
+ * delegated to the real libc against the backing store. Calls that hand a path
13
+ * back to the program (getcwd, realpath, readlink) are translated in reverse so
14
+ * the backing directory never leaks into the program's view.
15
+ *
16
+ * musl note: within libc, one function calling another (fopen->open,
17
+ * scandir->opendir, remove->unlink) binds internally and does NOT route through
18
+ * a preloaded symbol. So we must interpose every PUBLIC entry point the calling
19
+ * program uses directly, not rely on one wrapper covering another. That is
20
+ * exactly what this file does.
21
+ *
22
+ * Scope / ceiling (inherent to the preload model):
23
+ * - only processes started with this .so in LD_PRELOAD see the VFS;
24
+ * - only dynamically-linked musl callers that invoke these libc symbols;
25
+ * - it is not a kernel mountpoint — unrelated processes cannot see /vfs;
26
+ * - no mmap of virtual files, no nftw/glob/posix_spawn translation (yet).
27
+ *
28
+ * Build: gcc -shared -fPIC vfspreload.c -o vfspreload.so
29
+ * Run: LD_PRELOAD=/usr/local/lib/rowdy/vfspreload.so \
30
+ * VFS_PREFIX=/vfs VFS_BACKING=/tmp/vfsstore <program>
31
+ */
32
+ #define _GNU_SOURCE
33
+ #include <dlfcn.h>
34
+ #include <errno.h>
35
+ #include <stdio.h>
36
+ #include <string.h>
37
+ #include <stdlib.h>
38
+ #include <stdarg.h>
39
+ #include <limits.h>
40
+ #include <fcntl.h>
41
+ #include <unistd.h>
42
+ #include <dirent.h>
43
+ #include <utime.h>
44
+ #include <sys/stat.h>
45
+ #include <sys/statfs.h>
46
+ #include <sys/statvfs.h>
47
+ #include <sys/time.h>
48
+ #include <sys/types.h>
49
+ #include <sys/syscall.h>
50
+
51
+ /* ---- configuration (read once) ------------------------------------------ */
52
+
53
+ static const char *g_prefix; /* virtual prefix, e.g. "/vfs" */
54
+ static size_t g_prefixlen;
55
+ static const char *g_backing; /* real backing dir, e.g. "/tmp/vfsstore" */
56
+ static size_t g_backinglen;
57
+
58
+ static void vfs_init(void) __attribute__((constructor));
59
+ static void vfs_init(void) {
60
+ if (g_prefix) return;
61
+
62
+ const char *p = getenv("VFS_PREFIX");
63
+ g_prefix = (p && *p) ? p : "/vfs";
64
+ g_prefixlen = strlen(g_prefix);
65
+
66
+ const char *b = getenv("VFS_BACKING");
67
+ g_backing = (b && *b) ? b : "/tmp/vfsstore";
68
+ g_backinglen = strlen(g_backing);
69
+
70
+ /* Best-effort create the backing root so the VFS exists on first use. */
71
+ int (*real_mkdir)(const char *, mode_t) = dlsym(RTLD_NEXT, "mkdir");
72
+ int saved = errno;
73
+ if (real_mkdir) real_mkdir(g_backing, 0777);
74
+ errno = saved;
75
+ }
76
+
77
+ /* ---- path translation ---------------------------------------------------- */
78
+
79
+ /*
80
+ * If `path` is absolute and under the virtual prefix, rewrite it into the
81
+ * backing store in `buf` and return `buf`. Otherwise return `path` unchanged.
82
+ *
83
+ * Only absolute /vfs paths are translated. Relative paths are left alone: a
84
+ * dirfd obtained via opendir/open on a /vfs path (or a cwd set via chdir)
85
+ * already points into the backing store, so relative resolution is correct on
86
+ * its own.
87
+ */
88
+ static const char *xlate(const char *path, char *buf, size_t bufsz) {
89
+ if (!path) return path;
90
+ if (!g_prefix) vfs_init(); /* hooked before our constructor ran */
91
+ if (strncmp(path, g_prefix, g_prefixlen) != 0) return path;
92
+ char after = path[g_prefixlen];
93
+ if (after != '/' && after != '\0') return path; /* e.g. "/vfsx" is not ours */
94
+ /* path + g_prefixlen keeps the leading '/' (or "" for the root itself). */
95
+ size_t restlen = strlen(path + g_prefixlen);
96
+ if (g_backinglen + restlen + 1 > bufsz) return path; /* too long; fall through */
97
+ memcpy(buf, g_backing, g_backinglen);
98
+ memcpy(buf + g_backinglen, path + g_prefixlen, restlen + 1);
99
+ return buf;
100
+ }
101
+
102
+ /*
103
+ * Reverse: if `buf` (NUL-terminated, capacity `bufsz`) is under the backing
104
+ * store, rewrite it in place to the virtual prefix. Returns 1 if rewritten,
105
+ * 0 if not ours, -1 if it would not fit.
106
+ */
107
+ static int unxlate(char *buf, size_t bufsz) {
108
+ if (!g_prefix) vfs_init();
109
+ if (strncmp(buf, g_backing, g_backinglen) != 0) return 0;
110
+ char after = buf[g_backinglen];
111
+ if (after != '/' && after != '\0') return 0;
112
+ size_t restlen = strlen(buf + g_backinglen);
113
+ if (g_prefixlen + restlen + 1 > bufsz) return -1;
114
+ memmove(buf + g_prefixlen, buf + g_backinglen, restlen + 1);
115
+ memcpy(buf, g_prefix, g_prefixlen);
116
+ return 1;
117
+ }
118
+
119
+ #define XL(p) const char *rp_; char xb_[PATH_MAX]; rp_ = xlate((p), xb_, sizeof xb_)
120
+
121
+ #define XL2(a, b) \
122
+ char ab_[PATH_MAX], bb_[PATH_MAX]; \
123
+ const char *ra_ = xlate((a), ab_, sizeof ab_); \
124
+ const char *rb_ = xlate((b), bb_, sizeof bb_)
125
+
126
+ #define REAL(name) \
127
+ static typeof(&name) real_; \
128
+ if (!real_) real_ = (typeof(&name))dlsym(RTLD_NEXT, #name)
129
+
130
+ /* ---- open family (variadic mode) ----------------------------------------- */
131
+
132
+ int open(const char *path, int flags, ...) {
133
+ REAL(open);
134
+ mode_t mode = 0;
135
+ if (flags & (O_CREAT | O_TMPFILE)) {
136
+ va_list ap; va_start(ap, flags); mode = va_arg(ap, int); va_end(ap);
137
+ }
138
+ XL(path);
139
+ return real_(rp_, flags, mode);
140
+ }
141
+
142
+ int openat(int dirfd, const char *path, int flags, ...) {
143
+ REAL(openat);
144
+ mode_t mode = 0;
145
+ if (flags & (O_CREAT | O_TMPFILE)) {
146
+ va_list ap; va_start(ap, flags); mode = va_arg(ap, int); va_end(ap);
147
+ }
148
+ XL(path);
149
+ return real_(dirfd, rp_, flags, mode);
150
+ }
151
+
152
+ int creat(const char *path, mode_t mode) {
153
+ REAL(creat); XL(path); return real_(rp_, mode);
154
+ }
155
+
156
+ /* ---- stdio (musl binds fopen->open internally) --------------------------- */
157
+
158
+ FILE *fopen(const char *path, const char *mode) {
159
+ REAL(fopen); XL(path); return real_(rp_, mode);
160
+ }
161
+ FILE *freopen(const char *path, const char *mode, FILE *stream) {
162
+ REAL(freopen); XL(path); return real_(rp_, mode, stream);
163
+ }
164
+
165
+ /* ---- metadata ------------------------------------------------------------ */
166
+
167
+ int stat(const char *path, struct stat *st) {
168
+ REAL(stat); XL(path); return real_(rp_, st);
169
+ }
170
+ int lstat(const char *path, struct stat *st) {
171
+ REAL(lstat); XL(path); return real_(rp_, st);
172
+ }
173
+ int fstatat(int dirfd, const char *path, struct stat *st, int flags) {
174
+ REAL(fstatat); XL(path); return real_(dirfd, rp_, st, flags);
175
+ }
176
+ int access(const char *path, int mode) {
177
+ REAL(access); XL(path); return real_(rp_, mode);
178
+ }
179
+ int faccessat(int dirfd, const char *path, int mode, int flags) {
180
+ REAL(faccessat); XL(path); return real_(dirfd, rp_, mode, flags);
181
+ }
182
+ int statx(int dirfd, const char *path, int flags, unsigned mask, struct statx *buf) {
183
+ REAL(statx); XL(path); return real_(dirfd, rp_, flags, mask, buf);
184
+ }
185
+ int statfs(const char *path, struct statfs *buf) {
186
+ REAL(statfs); XL(path); return real_(rp_, buf);
187
+ }
188
+ int statvfs(const char *path, struct statvfs *buf) {
189
+ REAL(statvfs); XL(path); return real_(rp_, buf);
190
+ }
191
+
192
+ /* ---- attribute mutation -------------------------------------------------- */
193
+
194
+ int chmod(const char *path, mode_t mode) {
195
+ REAL(chmod); XL(path); return real_(rp_, mode);
196
+ }
197
+ int fchmodat(int dirfd, const char *path, mode_t mode, int flags) {
198
+ REAL(fchmodat); XL(path); return real_(dirfd, rp_, mode, flags);
199
+ }
200
+ int chown(const char *path, uid_t uid, gid_t gid) {
201
+ REAL(chown); XL(path); return real_(rp_, uid, gid);
202
+ }
203
+ int lchown(const char *path, uid_t uid, gid_t gid) {
204
+ REAL(lchown); XL(path); return real_(rp_, uid, gid);
205
+ }
206
+ int fchownat(int dirfd, const char *path, uid_t uid, gid_t gid, int flags) {
207
+ REAL(fchownat); XL(path); return real_(dirfd, rp_, uid, gid, flags);
208
+ }
209
+ int truncate(const char *path, off_t length) {
210
+ REAL(truncate); XL(path); return real_(rp_, length);
211
+ }
212
+ int utimensat(int dirfd, const char *path, const struct timespec times[2], int flags) {
213
+ REAL(utimensat); XL(path); return real_(dirfd, rp_, times, flags);
214
+ }
215
+ int utimes(const char *path, const struct timeval times[2]) {
216
+ REAL(utimes); XL(path); return real_(rp_, times);
217
+ }
218
+ int utime(const char *path, const struct utimbuf *times) {
219
+ REAL(utime); XL(path); return real_(rp_, times);
220
+ }
221
+
222
+ /* ---- directory listing --------------------------------------------------- */
223
+
224
+ DIR *opendir(const char *path) {
225
+ REAL(opendir); XL(path); return real_(rp_);
226
+ }
227
+ int scandir(const char *path, struct dirent ***namelist,
228
+ int (*filter)(const struct dirent *),
229
+ int (*compar)(const struct dirent **, const struct dirent **)) {
230
+ REAL(scandir); XL(path); return real_(rp_, namelist, filter, compar);
231
+ }
232
+
233
+ /* ---- namespace mutation -------------------------------------------------- */
234
+
235
+ int mkdir(const char *path, mode_t mode) {
236
+ REAL(mkdir); XL(path); return real_(rp_, mode);
237
+ }
238
+ int mkdirat(int dirfd, const char *path, mode_t mode) {
239
+ REAL(mkdirat); XL(path); return real_(dirfd, rp_, mode);
240
+ }
241
+ int rmdir(const char *path) {
242
+ REAL(rmdir); XL(path); return real_(rp_);
243
+ }
244
+ int unlink(const char *path) {
245
+ REAL(unlink); XL(path); return real_(rp_);
246
+ }
247
+ int unlinkat(int dirfd, const char *path, int flags) {
248
+ REAL(unlinkat); XL(path); return real_(dirfd, rp_, flags);
249
+ }
250
+ int remove(const char *path) {
251
+ REAL(remove); XL(path); return real_(rp_);
252
+ }
253
+ int mkfifo(const char *path, mode_t mode) {
254
+ REAL(mkfifo); XL(path); return real_(rp_, mode);
255
+ }
256
+ int mknod(const char *path, mode_t mode, dev_t dev) {
257
+ REAL(mknod); XL(path); return real_(rp_, mode, dev);
258
+ }
259
+
260
+ /* rename / link / symlink translate BOTH paths. A symlink target under /vfs is
261
+ * stored as its backing path so the kernel can follow it; readlink maps it back. */
262
+
263
+ int rename(const char *from, const char *to) {
264
+ REAL(rename); XL2(from, to); return real_(ra_, rb_);
265
+ }
266
+ int renameat(int fromfd, const char *from, int tofd, const char *to) {
267
+ REAL(renameat); XL2(from, to); return real_(fromfd, ra_, tofd, rb_);
268
+ }
269
+ int link(const char *from, const char *to) {
270
+ REAL(link); XL2(from, to); return real_(ra_, rb_);
271
+ }
272
+ int linkat(int fromfd, const char *from, int tofd, const char *to, int flags) {
273
+ REAL(linkat); XL2(from, to); return real_(fromfd, ra_, tofd, rb_, flags);
274
+ }
275
+ int symlink(const char *target, const char *linkpath) {
276
+ REAL(symlink); XL2(target, linkpath); return real_(ra_, rb_);
277
+ }
278
+ int symlinkat(const char *target, int dirfd, const char *linkpath) {
279
+ REAL(symlinkat); XL2(target, linkpath); return real_(ra_, dirfd, rb_);
280
+ }
281
+
282
+ /* ---- temp files: the template is rewritten in place by libc --------------- */
283
+
284
+ int mkstemp(char *template) {
285
+ REAL(mkstemp);
286
+ char tb[PATH_MAX];
287
+ const char *rp = xlate(template, tb, sizeof tb);
288
+ if (rp == template) return real_(template);
289
+ int fd = real_(tb);
290
+ if (fd >= 0) memcpy(template + strlen(template) - 6, tb + strlen(tb) - 6, 6);
291
+ return fd;
292
+ }
293
+ char *mkdtemp(char *template) {
294
+ REAL(mkdtemp);
295
+ char tb[PATH_MAX];
296
+ const char *rp = xlate(template, tb, sizeof tb);
297
+ if (rp == template) return real_(template);
298
+ if (!real_(tb)) return NULL;
299
+ memcpy(template + strlen(template) - 6, tb + strlen(tb) - 6, 6);
300
+ return template;
301
+ }
302
+
303
+ /* ---- cwd ------------------------------------------------------------------ */
304
+
305
+ int chdir(const char *path) {
306
+ REAL(chdir); XL(path); return real_(rp_);
307
+ }
308
+
309
+ char *getcwd(char *buf, size_t size) {
310
+ REAL(getcwd);
311
+ char tmp[PATH_MAX];
312
+ if (!real_(tmp, sizeof tmp)) return NULL;
313
+ unxlate(tmp, sizeof tmp);
314
+ size_t len = strlen(tmp) + 1;
315
+ if (!buf) {
316
+ if (size && len > size) { errno = ERANGE; return NULL; }
317
+ return strdup(tmp);
318
+ }
319
+ if (len > size) { errno = ERANGE; return NULL; }
320
+ memcpy(buf, tmp, len);
321
+ return buf;
322
+ }
323
+
324
+ /* ---- paths handed back to the program are mapped to the virtual view ------ */
325
+
326
+ char *realpath(const char *path, char *resolved) {
327
+ REAL(realpath); XL(path);
328
+ char tmp[PATH_MAX];
329
+ if (!real_(rp_, tmp)) return NULL;
330
+ unxlate(tmp, sizeof tmp);
331
+ if (!resolved) return strdup(tmp);
332
+ memcpy(resolved, tmp, strlen(tmp) + 1); /* resolved is PATH_MAX per POSIX */
333
+ return resolved;
334
+ }
335
+
336
+ static ssize_t copy_link(const char *tmp, char *buf, size_t bufsz) {
337
+ size_t len = strlen(tmp);
338
+ if (len > bufsz) len = bufsz;
339
+ memcpy(buf, tmp, len);
340
+ return (ssize_t)len;
341
+ }
342
+
343
+ ssize_t readlink(const char *path, char *buf, size_t bufsz) {
344
+ REAL(readlink); XL(path);
345
+ char tmp[PATH_MAX];
346
+ ssize_t n = real_(rp_, tmp, sizeof tmp - 1);
347
+ if (n < 0) return n;
348
+ tmp[n] = '\0';
349
+ unxlate(tmp, sizeof tmp);
350
+ return copy_link(tmp, buf, bufsz);
351
+ }
352
+ ssize_t readlinkat(int dirfd, const char *path, char *buf, size_t bufsz) {
353
+ REAL(readlinkat); XL(path);
354
+ char tmp[PATH_MAX];
355
+ ssize_t n = real_(dirfd, rp_, tmp, sizeof tmp - 1);
356
+ if (n < 0) return n;
357
+ tmp[n] = '\0';
358
+ unxlate(tmp, sizeof tmp);
359
+ return copy_link(tmp, buf, bufsz);
360
+ }
361
+
362
+ /* ---- raw syscall(2) ----------------------------------------------------------
363
+ * Some runtimes bypass the libc wrappers: libuv (node) issues statx via
364
+ * syscall(SYS_statx, ...). Translate the path argument for the single-path
365
+ * syscalls. Two-path syscalls (renameat2, linkat, symlinkat) are reached through
366
+ * their libc wrappers above in practice. */
367
+
368
+ long syscall(long n, ...) {
369
+ REAL(syscall);
370
+ long a[6];
371
+ va_list ap; va_start(ap, n);
372
+ for (int i = 0; i < 6; i++) a[i] = va_arg(ap, long);
373
+ va_end(ap);
374
+
375
+ int at = -1; /* index of the path argument, if any */
376
+ switch (n) {
377
+ #ifdef SYS_statx
378
+ case SYS_statx:
379
+ #endif
380
+ #ifdef SYS_newfstatat
381
+ case SYS_newfstatat:
382
+ #endif
383
+ #ifdef SYS_openat
384
+ case SYS_openat:
385
+ #endif
386
+ #ifdef SYS_faccessat
387
+ case SYS_faccessat:
388
+ #endif
389
+ #ifdef SYS_faccessat2
390
+ case SYS_faccessat2:
391
+ #endif
392
+ #ifdef SYS_mkdirat
393
+ case SYS_mkdirat:
394
+ #endif
395
+ #ifdef SYS_unlinkat
396
+ case SYS_unlinkat:
397
+ #endif
398
+ #ifdef SYS_readlinkat
399
+ case SYS_readlinkat:
400
+ #endif
401
+ #ifdef SYS_fchmodat
402
+ case SYS_fchmodat:
403
+ #endif
404
+ #ifdef SYS_utimensat
405
+ case SYS_utimensat:
406
+ #endif
407
+ at = 1; break;
408
+ #ifdef SYS_open
409
+ case SYS_open:
410
+ #endif
411
+ #ifdef SYS_stat
412
+ case SYS_stat:
413
+ #endif
414
+ #ifdef SYS_lstat
415
+ case SYS_lstat:
416
+ #endif
417
+ #ifdef SYS_access
418
+ case SYS_access:
419
+ #endif
420
+ #ifdef SYS_mkdir
421
+ case SYS_mkdir:
422
+ #endif
423
+ #ifdef SYS_rmdir
424
+ case SYS_rmdir:
425
+ #endif
426
+ #ifdef SYS_unlink
427
+ case SYS_unlink:
428
+ #endif
429
+ #ifdef SYS_chmod
430
+ case SYS_chmod:
431
+ #endif
432
+ #ifdef SYS_chdir
433
+ case SYS_chdir:
434
+ #endif
435
+ #ifdef SYS_truncate
436
+ case SYS_truncate:
437
+ #endif
438
+ at = 0; break;
439
+ default: break;
440
+ }
441
+
442
+ char xb[PATH_MAX];
443
+ if (at >= 0) a[at] = (long)xlate((const char *)a[at], xb, sizeof xb);
444
+ return real_(n, a[0], a[1], a[2], a[3], a[4], a[5]);
445
+ }
446
+
447
+ /* ---- exec: binaries living under /vfs; LD_PRELOAD is inherited via env ---- */
448
+
449
+ int execve(const char *path, char *const argv[], char *const envp[]) {
450
+ REAL(execve); XL(path); return real_(rp_, argv, envp);
451
+ }
452
+ int execv(const char *path, char *const argv[]) {
453
+ REAL(execv); XL(path); return real_(rp_, argv);
454
+ }
455
+ int execvp(const char *file, char *const argv[]) {
456
+ REAL(execvp); XL(file); return real_(rp_, argv);
457
+ }
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@scaffoldly/rowdy-vfs",
3
+ "description": "Userspace VFS (LD_PRELOAD shim) for Rowdy",
4
+ "version": "0.1.0-beta.20261005095325.230d57b",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist/**/*.js",
9
+ "dist/**/*.d.ts",
10
+ "dist/**/*.js.map",
11
+ "lib/**/*.so",
12
+ "native/vfspreload.c"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/scaffoldly/rowdy.git"
17
+ },
18
+ "bugs": {
19
+ "url": "https://github.com/scaffoldly/rowdy/issues"
20
+ },
21
+ "author": "Scaffoldly <github.com/scaffoldly>",
22
+ "license": "SEE LICENSE IN LICENSE.md",
23
+ "private": false,
24
+ "engines": {
25
+ "node": ">=22",
26
+ "yarn": ">=1.22.0",
27
+ "npm": ">=10"
28
+ },
29
+ "engineStrict": false,
30
+ "scripts": {
31
+ "build": "yarn build:index",
32
+ "build:native": "sh native/build.sh x64 && sh native/build.sh arm64",
33
+ "build:index": "tsup",
34
+ "test": "yarn jest -- --verbose --testTimeout=30000",
35
+ "test:native": "sh native/test.sh",
36
+ "jest": "jest",
37
+ "lint": "eslint .",
38
+ "lint:fix": "eslint . --fix"
39
+ },
40
+ "prettier": {
41
+ "semi": true,
42
+ "trailingComma": "es5",
43
+ "singleQuote": true,
44
+ "printWidth": 120,
45
+ "tabWidth": 2,
46
+ "useTabs": false
47
+ },
48
+ "jest": {
49
+ "projects": [
50
+ {
51
+ "displayName": "unit",
52
+ "preset": "ts-jest",
53
+ "testEnvironment": "node",
54
+ "testMatch": [
55
+ "**/tests/**/*.test.ts"
56
+ ],
57
+ "transform": {
58
+ "^.+\\.ts$": [
59
+ "ts-jest",
60
+ {
61
+ "tsconfig": "tests/tsconfig.json"
62
+ }
63
+ ],
64
+ "^.+\\.so$": "<rootDir>/tests/transformers.js"
65
+ },
66
+ "moduleNameMapper": {
67
+ "^@scaffoldly/rowdy-vfs$": "<rootDir>/src/index.ts"
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ "devDependencies": {
73
+ "@eslint/js": "^9.28.0",
74
+ "@types/jest": "^30.0.0",
75
+ "@types/node": ">=22.0.0 <25.0.0",
76
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
77
+ "@typescript-eslint/parser": "^8.0.0",
78
+ "eslint": "^9.0.0",
79
+ "eslint-config-prettier": "^10.1.5",
80
+ "eslint-plugin-prettier": "^5.4.1",
81
+ "globals": "^16.2.0",
82
+ "jest": "^30.1.3",
83
+ "prettier": "^3.0.0",
84
+ "ts-jest": "^29.1.0",
85
+ "tsup": "^8.5.0",
86
+ "typescript": "^5.0.0"
87
+ }
88
+ }