[
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build and Release MiceWine RootFS\n\non:\n  push:\n    branches: \"*\"\n  workflow_dispatch:\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n\n    - name: \"Install ArchLinux\"\n      run: |\n        sudo apt update\n        sudo apt install -y arch-install-scripts wget\n        sudo mkdir -p /mnt/\n\n        wget https://geo.mirror.pkgbuild.com/iso/latest/archlinux-bootstrap-x86_64.tar.zst\n\n        sudo tar -xf archlinux-bootstrap-x86_64.tar.zst\n        sudo rm -f archlinux-bootstrap-x86_64.tar.zst\n        sudo mv root.x86_64 /mnt/arch\n\n        sudo arch-chroot /mnt/arch bash -c \"pacman-key --init && pacman-key --populate && sed -i \"s/#Server/Server/g\" /etc/pacman.d/mirrorlist && sed -i \"s/CheckSpace/#CheckSpace/g\" /etc/pacman.conf && pacman -Syu --noconfirm base base-devel git cmake meson ninja bison flex python-pip wget python-mako python-pyyaml unzip 7zip glslang glib2-devel python-docutils xmlto fop libxslt python-docutils\"\n\n    - name: \"Checkout Repository\"\n      uses: actions/checkout@v4\n      with:\n        fetch-depth: 0\n\n    - name: \"Copy Repository to Chroot\"\n      run: |\n        sudo cp -rf $PWD /mnt/arch/MiceWine-RootFS-Generator\n\n    - name: \"Download Latest Release Rat Packages\"\n      run: |\n        curl -LO# https://github.com/KreitinnSoftware/MiceWine-RootFS-Generator/releases/download/$(curl -s https://api.github.com/repos/KreitinnSoftware/MiceWine-RootFS-Generator/releases | grep tag_name -m 1 | cut -d \":\" -f 2 | sed \"s/\\\"//g\" | sed \"s/,//g\" | sed \"s/ //g\")/MiceWine-Packages.zip || true\n        sudo unzip -o MiceWine-Packages.zip -d /mnt/arch/MiceWine-RootFS-Generator/built-pkgs || true\n        rm -f MiceWine-Packages.zip\n\n    - name: \"Setup Basic Android (x86_64) Runtime Environment (Required for Building x86_64 glib)\"\n      run: |\n        git clone https://github.com/termux/termux-docker.git\n        sudo cp -rf termux-docker/system/x86 /mnt/arch/system\n        sudo chown -R $(whoami):$(whoami) /mnt/arch/system\n        sudo chmod 755 -R /mnt/arch/system\n\n    - name: \"Start Building (x86_64)\"\n      run: |\n        sudo arch-chroot /mnt/arch bash -c \"cd /MiceWine-RootFS-Generator && ./build-all.sh x86_64 --ci && cd logs && 7z a /MiceWine-RootFS-$(git rev-parse --short HEAD)-x86_64-Logs.zip\"\n\n    - name: \"Create RootFS File (x86_64)\"\n      run: |\n        sudo arch-chroot /mnt/arch bash -c \"cd /MiceWine-RootFS-Generator && ./create-rootfs-rat.sh x86_64 && mv MiceWine-RootFS-\\($(git rev-parse --short HEAD)\\)-x86_64.rat /MiceWine-RootFS-$(git rev-parse --short HEAD)-x86_64.rat\"\n\n    - name: \"Clean (x86_64) RootFS\"\n      run: |\n        sudo rm -rf /mnt/arch/data /mnt/arch/MiceWine-RootFS-Generator/workdir /mnt/arch/MiceWine-RootFS-Generator/rootfs\n\n    - name: \"Start Building (aarch64)\"\n      run: |\n        sudo arch-chroot /mnt/arch bash -c \"cd /MiceWine-RootFS-Generator && ./build-all.sh aarch64 --ci && cd logs && 7z a /MiceWine-RootFS-$(git rev-parse --short HEAD)-aarch64-Logs.zip\"\n\n    - name: \"Create RootFS File (aarch64)\"\n      run: |\n        sudo arch-chroot /mnt/arch bash -c \"cd /MiceWine-RootFS-Generator && ./create-rootfs-rat.sh aarch64 && mv MiceWine-RootFS-\\($(git rev-parse --short HEAD)\\)-aarch64.rat /MiceWine-RootFS-$(git rev-parse --short HEAD)-aarch64.rat\"\n\n    - name: \"Save Rat Packages\"\n      run: |\n        sudo arch-chroot /mnt/arch bash -c \"cd /MiceWine-RootFS-Generator/built-pkgs && 7z a /MiceWine-Packages.zip\"\n\n    - name: \"Get Short SHA\"\n      run: |\n        echo \"SHORT_SHA=$(git rev-parse --short HEAD)\" >> $GITHUB_ENV\n\n    - name: \"Create Release\"\n      uses: softprops/action-gh-release@v1\n      with:\n        name: \"MiceWine RootFS (${{ env.SHORT_SHA }})\"\n        tag_name: ${{ env.SHORT_SHA }}\n        prerelease: true\n        files: |\n          /mnt/arch/*.rat\n          /mnt/arch/*.zip\n"
  },
  {
    "path": ".gitignore",
    "content": "workdir\nlogs\ncache\nrootfs\nbuilt-pkgs\nwine-utils\n*.rat\n"
  },
  {
    "path": "build-all.sh",
    "content": "#!/bin/bash\nsetupBuildEnv()\n{\n\tif [ ! -d \"$INIT_DIR/cache/android-ndk\" ]; then\n\t\techo \"Downloading NDK...\"\n\t\tcurl --output \"cache/$NDK_FILENAME\" -#L \"$NDK_URL\"\n\t\techo \"Checking SHA512...\"\n\t\tSHA512=$(sha512sum \"cache/$NDK_FILENAME\" | cut -d ' ' -f 1)\n\t\tif [ \"$SHA512\" != \"$NDK_SHA512\" ]; then\n\t\t\techo \"Error on Checking SHA512 for NDK... Aborting\"\n\t\t\trm -f \"cache/$NDK_FILENAME\"\n\t\t\texit 1\n\t\tfi\n\t\techo \"Unpacking NDK...\"\n\t\tunzip \"cache/$NDK_FILENAME\" -d \"cache\" &> /dev/null\n\t\tmv \"cache/$(unzip -Z1 \"cache/$NDK_FILENAME\" | cut -d \"/\" -f 1 | head -n 1)\" \"cache/android-ndk\"\n\t\tchmod -R +x \"cache/android-ndk\"\n\t\trm -f \"cache/$NDK_FILENAME\"\n\t\techo \"\"\n\tfi\n\n\tif [ ! -d \"$INIT_DIR/cache/mingw\" ]; then\n\t\techo \"Downloading MinGW...\"\n\t\tcurl --output \"cache/$MINGW_FILENAME\" -#L \"$MINGW_URL\"\n\t\techo \"Checking SHA512...\"\n\t\tSHA512=$(sha512sum \"cache/$MINGW_FILENAME\" | cut -d ' ' -f 1)\n\t\tif [ \"$SHA512\" != \"$MINGW_SHA512\" ]; then\n\t\t\techo \"Error on Checking SHA512 for MinGW... Aborting\"\n\t\t\trm -f \"cache/$MINGW_FILENAME\"\n\t\t\texit 1\n\t\tfi\n\t\techo \"Unpacking MinGW...\"\n\t\ttar -xf \"cache/$MINGW_FILENAME\" -C \"cache\"\n\t\tmv \"cache/$(tar -tf \"cache/$MINGW_FILENAME\" | cut -d \"/\" -f 1 | head -n 1)/$(tar -tf \"cache/$MINGW_FILENAME\" | cut -d \"/\" -f 2 | head -n 1)\" \"cache/mingw\"\n\t\trm -f \"cache/$MINGW_FILENAME\"\n\t\techo \"\"\n\tfi\n\n\texport PATH=$INIT_PATH:$INIT_DIR/cache/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin:$INIT_DIR/cache/mingw/bin\n\texport ANDROID_SDK=\"$1\"\n\texport CC=$ARCH-linux-android$ANDROID_SDK-clang\n\texport CXX=$CC++\n\texport TOOLCHAIN_VERSION=\"$ARCH-linux-android-4.9\"\n\texport TOOLCHAIN_TRIPLE=\"$ARCH-linux-android\"\n\texport PKG_CONFIG_PATH=\"$PREFIX/share/pkgconfig:$PREFIX/lib/pkgconfig\"\n\texport PKG_CONFIG_LIBDIR=\"$PREFIX/lib/pkgconfig\"\n\texport PKG_CONFIG=\"/usr/bin/pkg-config\"\n}\n\napplyPatches()\n{\n\tfor patch in $(find $INIT_DIR/packages/$package -name \"*.patch\" | sort); do\n\t\techo \"  - Applying '$(basename $patch)'...\"\n\t\tpatch -p1 < \"$patch\" -ts\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"  -- Error on Applying Patch '$(basename $patch)' on '$package'\"\n\t\t\texit 1\n\t\tfi\n\tdone\n\n\techo \"\"\n\n\t$RUN_POST_APPLY_PATCH\n}\n\ndownloadPackage()\n{\n\tif [ -e \"$INIT_DIR/cache/$package\" ]; then\n\t\techo \"-- Package '$package' already downloaded.\"\n\telse\n\t\techo \"-- Downloading '$package'...\"\n\t\tcurl --output \"$INIT_DIR/cache/$package\" -# -L $SRC_URL\n\tfi\n\n\tlocal ARCHIVE_MIME_TYPE=$(file -b --mime-type $INIT_DIR/cache/$package)\n\tlocal ARCHIVE_BASE_FOLDER\n\n\tcase $ARCHIVE_MIME_TYPE in \"application/x-xz\"|\"application/gzip\"|\"application/x-bzip2\")\n\t\tARCHIVE_BASE_FOLDER=$(tar -tf \"$INIT_DIR/cache/$package\" | cut -d \"/\" -f 1 | head -n 1)\n\n\t\tif [ ! -f \"$ARCHIVE_BASE_FOLDER\" ]; then\n\t\t\ttar -xf \"$INIT_DIR/cache/$package\"\n\t\tfi\n\t\t;;\n\t\t*)\n\t\tARCHIVE_BASE_FOLDER=$(unzip -Z1 \"$INIT_DIR/cache/$package\" | cut -d \"/\" -f 1 | head -n 1)\n\n\t\tif [ ! -f \"$ARCHIVE_BASE_FOLDER\" ]; then\n\t\t\tunzip -o \"$INIT_DIR/cache/$package\" 1> /dev/null\n\t\tfi\n\tesac\n\n\tmv $ARCHIVE_BASE_FOLDER $package\n}\n\ngitDownload()\n{\n\tif [ -d \"$INIT_DIR/cache/$package\" ]; then\n\t\techo \"-- Package '$package' already downloaded.\"\n\telse\n\t\techo \"-- Git Cloning '$package'...\"\n\t\tgit clone --no-checkout $GIT_URL \"$INIT_DIR/cache/$package\" &> /dev/zero\n\tfi\n\n\tgit clone \"$INIT_DIR/cache/$package\" &> /dev/zero\n\n\tcd $package\n\n\tgit reset --hard $GIT_COMMIT &> /dev/zero\n\tgit checkout $GIT_COMMIT . &> /dev/zero\n\tgit submodule update --init --recursive &> /dev/zero\n\n\tcd ..\n}\n\nsetupPackage()\n{\n    local package=$1\n\n    unset PKG_VER PKG_CATEGORY PKG_PRETTY_NAME PKG_DOWNLOADABLE\n\tunset SRC_URL GIT_URL GIT_COMMIT\n\tunset HOST_BUILD_FOLDER HOST_BUILD_MAKE HOST_BUILD_CONFIGURE_ARGS HOST_BUILD_CFLAGS HOST_BUILD_CXXFLAGS HOST_BUILD_LDFLAGS\n\tunset CONFIGURE_ARGS MESON_ARGS CMAKE_ARGS\n\tunset CFLAGS CPPFLAGS LDFLAGS LIBS OVERRIDE_PREFIX OVERRIDE_PKG_CONFIG_PATH\n\tunset RUN_POST_APPLY_PATCH RUN_POST_BUILD RUN_POST_CONFIGURE\n\tunset BLACKLIST_ARCH BUILD_IN_SRC VK_DRIVER_LIB\n\n\tsource \"$INIT_DIR/packages/$package/build.sh\"\n\n\tif [ -n \"$SRC_URL\" ] && [ -n \"$GIT_URL\" ]; then\n\t\techo \"E: Package Source Mismatch, SRC_URL and GIT_URL set, Stopping...\"\n\t\texit 1\n\tfi\n\n\tif [ ! -n \"$GIT_URL\" ] && [ -n \"$GIT_COMMIT\" ]; then\n\t\techo \"E: GIT_URL is set but GIT_COMMIT not, Stopping...\"\n\t\texit 1\n\tfi\n\n\tif [ -n \"$GIT_COMMIT\" ]; then\n\t\tPKG_VER=$(echo $PKG_VER | sed \"s/\\[gss\\]/$(echo $GIT_COMMIT | cut -c1-7)/g\")\n\tfi\n\n\tif [ -f \"$INIT_DIR/built-pkgs/$package-$PKG_VER-$ARCH.rat\" ]; then\n\t\techo \"-- Package '$package' already built.\"\n\t\treturn 0\n\tfi\n\n\tif [ -e \"$INIT_DIR/workdir/$package/build.sh\" ]; then\n\t\techo \"-- Package '$package' already configured.\"\n\t\treturn 0\n\tfi\n\n\tif [ \"$BLACKLIST_ARCH\" == \"$ARCH\" ]; then\n\t\techo \"-- Warning: '$package' will not be built.\"\n\t\treturn 0\n\tfi\n\n\tif [ -n \"$SRC_URL\" ]; then\n        downloadPackage\n\telif [ -n \"$GIT_URL\" ]; then\n\t\tgitDownload\n\telif [ -n \"$BUILD_IN_SRC\" ]; then\n\t\tmkdir -p $package\n\t\tcp -rf \"$INIT_DIR/packages/$package/\"* $package\n\t\trm $package/build.sh\n\tfi\n\n\tcd $package\n\tapplyPatches\n\n\texport PREFIX_DIR=$PREFIX\n\n\techo \"export CFLAGS=\\\"$CFLAGS\\\" LIBS=\\\"$LIBS\\\" CPPFLAGS=\\\"$CPPFLAGS\\\" LDFLAGS=\\\"-Wl,-rpath=\"$PREFIX_DIR/lib\" $LDFLAGS\\\"\" > build.sh\n\techo \"export DESTDIR=\\\"$INIT_DIR/workdir/$package/destdir-pkg\\\"\" >> build.sh\n\n\tif [ -n \"$OVERRIDE_PREFIX\" ]; then\n\t\tPREFIX_DIR=$OVERRIDE_PREFIX\n\tfi\n\n\tif [ \"$OVERRIDE_PKG_CONFIG_PATH\" != \"\" ]; then\n\t\techo \"export PKG_CONFIG_PATH=$OVERRIDE_PKG_CONFIG_PATH\" >> build.sh\n\telse\n\t\techo \"export PKG_CONFIG_PATH=$PKG_CONFIG_PATH\" >> build.sh\n\tfi\n\n\tif [ -f \"configure\" ] && [ -n \"$CONFIGURE_ARGS\" ]; then\n\t\tif [ -n \"$HOST_BUILD_CONFIGURE_ARGS\" ]; then\n\t\t\techo \"mkdir -p $HOST_BUILD_FOLDER\" >> build.sh\n\t\t\techo \"cd $HOST_BUILD_FOLDER\" >> build.sh\n\t\t\techo \"env -i bash -l -c \\\"../configure $HOST_BUILD_CONFIGURE_ARGS\\\"\" >> build.sh\n\t\t\techo \"$HOST_BUILD_MAKE\" >> build.sh\n\t\t\techo 'cd $OLDPWD' >> build.sh\n\t\tfi\n\n\t\techo \"../configure --libdir=$PREFIX_DIR/lib --prefix=$PREFIX_DIR $CONFIGURE_ARGS\" >> build.sh\n\t\techo \"$RUN_POST_CONFIGURE\" >> build.sh\n\n\t\tif [ -f \"$INIT_DIR/packages/$package/post-configure.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/post-configure.sh\" >> build.sh\n\t\tfi\n\n\t\techo \"make -j $(nproc)\" >> build.sh\n\n\t\tif [ -f \"$INIT_DIR/packages/$package/custom-make-install.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/custom-make-install.sh\" >> build.sh\n\t\telse\n\t\t\techo \"make -j $(nproc) install\" >> build.sh\n\t\tfi\n\telif [ -f \"autogen.sh\" ] && [ -n \"$CONFIGURE_ARGS\" ]; then\n\t\techo \"cd ..\" >> build.sh\n\t\techo \"./autogen.sh\" >> build.sh\n\t\techo \"cd build_dir\" >> build.sh\n\t\techo \"../configure --libdir=$PREFIX_DIR/lib --prefix=$PREFIX_DIR $CONFIGURE_ARGS\" >> build.sh\n\t\techo \"$RUN_POST_CONFIGURE\" >> build.sh\n\n\t\tif [ -e \"$INIT_DIR/packages/$package/post-configure.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/post-configure.sh\" >> build.sh\n\t\tfi\n\n\t\techo \"make -j $(nproc)\" >> build.sh\n\n\t\tif [ -e \"$INIT_DIR/packages/$package/custom-make-install.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/custom-make-install.sh\" >> build.sh\n\t\telse\n\t\t\techo \"make -j $(nproc) install\" >> build.sh\n\t\tfi\n\telif [ -e \"CMakeLists.txt\" ] && [ -n \"$CMAKE_ARGS\" ]; then\n\t\techo \"cmake -DCMAKE_INSTALL_PREFIX=$PREFIX_DIR -DCMAKE_INSTALL_LIBDIR=$PREFIX_DIR/lib -DCMAKE_BUILD_TYPE=Release $CMAKE_ARGS ..\" >> build.sh\n\t\techo \"make -j $(nproc)\" >> build.sh\n\n\t\tif [ -e \"$INIT_DIR/packages/$package/custom-make-install.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/custom-make-install.sh\" >> build.sh\n\t\telse\n\t\t\techo \"make -j $(nproc) install\" >> build.sh\n\t\tfi\n\telif [ -e \"meson.build\" ] && [ -n \"$MESON_ARGS\" ]; then\n\t\techo \"meson setup --cross-file=$INIT_DIR/build_config/meson-cross-file-$ARCH -Dprefix=$PREFIX_DIR -Dbuildtype=release $MESON_ARGS ..\" >> build.sh\n\n\t\tif [ -e \"$INIT_DIR/packages/$package/post-configure.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/post-configure.sh\" >> build.sh\n\t\tfi\n\n\t\techo \"ninja -j $(nproc)\" >> build.sh\n\n\t\tif [ -e \"$INIT_DIR/packages/$package/custom-make-install.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/custom-make-install.sh\" >> build.sh\n\t\telse\n\t\t\t\techo \"ninja -j $(nproc) install\" >> build.sh\n\t\t\tfi\n\t\telif [ -e \"Configure\" ] && [ -n \"$OPENSSL_FLAGS\" ]; then\n\t\t\techo \"../Configure --prefix=$PREFIX_DIR $OPENSSL_FLAGS\" >> build.sh\n\n\t\t\tif [ -e \"$INIT_DIR/packages/$package/post-configure.sh\" ]; then\n\t\t\t\techo \"$INIT_DIR/packages/$package/post-configure.sh\" >> build.sh\n\t\t\tfi\n\n\t\techo \"make -j $(nproc)\" >> build.sh\n\t\techo \"make -j $(nproc) DESTDIR=\\\"\\$DESTDIR\\\" install_sw\" >> build.sh\n\telif [ -e \"Makefile\" ]; then\n\t\techo \"cd ..\" >> build.sh\n\t\techo \"make -j $(nproc)\" >> build.sh\n\n\t\tif [ -e \"$INIT_DIR/packages/$package/custom-make-install.sh\" ]; then\n\t\t\techo \"$INIT_DIR/packages/$package/custom-make-install.sh\" >> build.sh\n\t\telse\n\t\t\techo \"make -j $(nproc) install\" >> build.sh\n\t\tfi\n\n\t\techo \"cd build_dir\" >> build.sh\n\telse\n\t\techo \"Unsupported build system. Stopping...\"\n\t\texit 1\n\tfi\n\n\tif [ -e \"$INIT_DIR/packages/$package/post-install.sh\" ]; then\n\t\techo \"$INIT_DIR/packages/$package/post-install.sh\" >> build.sh\n\tfi\n\n\techo 'echo $? > exit_code' >> build.sh\n\n\techo \"$PKG_PRETTY_NAME\" >> pkg-pretty-name\n\techo \"$PKG_VER\" >> pkg-ver\n\techo \"$PKG_CATEGORY\" >> pkg-category\n\techo \"$PKG_DOWNLOADABLE\" >> pkg-downloadable\n\n\tif [ \"$PKG_CATEGORY\" == \"VulkanDriver\" ] || [ \"$PKG_CATEGORY\" == \"AdrenoTools\" ]; then\n\t\techo \"$VK_DRIVER_LIB\" >> vk-driver-lib\n\tfi\n\n\tgit -C \"$INIT_DIR\" log -1 --format=\"%H\" -- \"packages/$package\" > pkg-commit\n\n\tchmod +x build.sh\n\n\tcd ..\n\n\tif [ -n \"$CI\" ]; then\n\t\trm -rf \"$INIT_DIR/cache/$package\"\n\tfi\n}\n\nsetupPackages()\n{\n\tcd \"$INIT_DIR/workdir\"\n\n\t# We need to build package list respecting dependencies order\n\t# First add packages that don't need extra dependencies\n\n\trm -f \"$INIT_DIR/workdir/index\"\n\n\texport FILTERED_PACKAGES=\"\"\n\texport TODO_PACKAGES=$PACKAGES\n\n\twhile [ -n \"$TODO_PACKAGES\" ]; do\n\t\tNEW_TODO=\"\"\n\n\t\tfor package in $TODO_PACKAGES; do\n\t\t\tunset DEPENDENCIES\n\n\t\t\tif [ ! -d \"$INIT_DIR/packages/$package\" ]; then\n\t\t\t\techo \"E: Package '$package' don't exists.\"\n\t\t\t\texit 1\n\t\t\tfi\n\n\t\t\tsource \"$INIT_DIR/packages/$package/build.sh\"\n\n\t\t\tif [ -z \"$DEPENDENCIES\" ]; then\n\t\t\t\tif ! echo \" $FILTERED_PACKAGES \" | grep -q \" $package \"; then\n\t\t\t\t\tFILTERED_PACKAGES+=\"$package \"\n\t\t\t\t\tcontinue\n\t\t\t\tfi\n\t\t\tfi\n\n\t\t\tfor dep in $DEPENDENCIES; do\n\t\t\t\tif ! echo \" $FILTERED_PACKAGES \" | grep -q \" $dep \"; then\n\t\t\t\t\tNEW_TODO+=\"$package \"\n\t\t\t\t\tbreak\n\t\t\t\tfi\n\t\t\tdone\n\n\t\t\tif ! echo \" $NEW_TODO \" | grep -q \" $package \"; then\n\t\t\t\tif ! echo \" $FILTERED_PACKAGES \" | grep -q \" $package \"; then\n\t\t\t\t\tFILTERED_PACKAGES+=\"$package \"\n\t\t\t\tfi\n\t\t\tfi\n\t\tdone\n\n\t\tTODO_PACKAGES=\"$NEW_TODO\"\n\tdone\n\n\techo $FILTERED_PACKAGES > \"$INIT_DIR/workdir/index\"\n\n\tfor package in $FILTERED_PACKAGES; do\n\t\tpackageFullPath=$(ls \"$INIT_DIR/built-pkgs/$package-\"*\"$ARCH.rat\" 2> /dev/zero)\n\t\tpackageCommitFullPath=$(ls \"$INIT_DIR/built-pkgs/$package-\"*\"$ARCH.commit\" 2> /dev/zero)\n\n\t\tif [ -f \"$packageFullPath\" ]; then\n\t\t\tpackageCommit=$(cat \"$packageCommitFullPath\")\n\t\t\tactualCommit=$(git -C \"$INIT_DIR\" log -1 --format=\"%H\" -- \"packages/$package\")\n\n\t\t\tif [ \"$packageCommit\" == \"$actualCommit\" ]; then\n\t\t\t\tinstallBuiltPackage \"$packageFullPath\"\n\t\t\telse\n\t\t\t\techo \"W: Package '$package' already built, But it's source is changed. Requires Rebuilding...\"\n\t\t\t\trm -f \"$packageFullPath\"\n\t\t\t\trm -f \"$packageCommitFullPath\"\n\t\t\tfi\n\t\tfi\n\n\t\tif [ \"$packageCommit\" != \"$actualCommit\" ]; then\n\t\t\tfor p in $FILTERED_PACKAGES; do\n\t\t\t\tunset DEPENDENCIES\n\t\t\t\tsource \"$INIT_DIR/packages/$p/build.sh\"\n\n\t\t\t\tif [[ \" $DEPENDENCIES \" == *\" $package \"* ]]; then\n\t\t\t\t\tpackageFullPath=$(ls \"$INIT_DIR/built-pkgs/$p-\"*\"$ARCH.rat\" 2> /dev/zero)\n\t\t\t\t\tpackageCommitFullPath=$(ls \"$INIT_DIR/built-pkgs/$p-\"*\"$ARCH.commit\" 2> /dev/zero)\n\n\t\t\t\t\techo \"W: Package '$p' uses '$package' as Dependency, Requires Rebuilding...\"\n\t\t\t\t\trm -f \"$packageFullPath\"\n\t\t\t\t\trm -f \"$packageCommitFullPath\"\n\t\t\t\tfi\n\t\t\tdone\n\t\tfi\n\n\t\tsetupPackage $package\n\tdone\n}\n\ninstallBuiltPackage()\n{\n\tlocal package=$1\n\n\tif [ ! -e \"$APP_ROOT_DIR/packages/$(basename $package .rat)\" ]; then\n\t\techo \"-- Installing '$(basename $package .rat)'\"\n\t\tmkdir -p $APP_ROOT_DIR/packages\n\n\t\ttar -xf \"$package\" -C \"$APP_ROOT_DIR\"\n\n\t\ttouch $APP_ROOT_DIR/makeSymlinks.sh\n\t\tbash $APP_ROOT_DIR/makeSymlinks.sh\n\t\trm -f $APP_ROOT_DIR/makeSymlinks.sh\n\n\t\ttouch $APP_ROOT_DIR/packages/$(basename $package .rat)\n\tfi\n}\n\ncompileAll()\n{\n\techo \"\"\n\techo \"-- Starting Building --\"\n\techo \"\"\n\n\tlocal packageNum=1\n\tlocal packageCount=$(( $(ls \"$INIT_DIR/workdir\" | wc -l) - 1 ))\n\n\tfor package in $(cat \"$INIT_DIR/workdir/index\"); do\n\t\tif [ ! -d \"$INIT_DIR/workdir/$package\" ]; then\n\t\t\tcontinue\n\t\tfi\n\n\t\tlocal packageBuildDir=\"$INIT_DIR/workdir/$package/build_dir\"\n\t\tlocal packageDestDirPkg=\"$INIT_DIR/workdir/$package/destdir-pkg\"\n\t\tmkdir -p \"$packageBuildDir\"\n\t\tmkdir -p \"$packageDestDirPkg\"\n\n\t\tcd \"$INIT_DIR/workdir/$package/build_dir\"\n\n\t\tpkgLocalChanged=\"$(git -C \"$INIT_DIR\" status --short \"packages/$package\")\"\n\n\t\tif [ -n \"$pkgLocalChanged\" ]; then\n\t\t\techo \"-- W: Source Files for Package '$package' was changed. Reconfiguring...\"\n\t\t\techo \"\"\n\n\t\t\tcd \"$INIT_DIR/workdir\"\n\n\t\t\trm -rf \"$package\" \"$INIT_DIR/built-pkgs/$package-\"*\n\n\t\t\tsetupPackage $package\n\n\t\t\tmkdir -p \"$packageBuildDir\"\n\t\t\tmkdir -p \"$packageDestDirPkg\"\n\n\t\t\tcd \"$packageBuildDir\"\n\t\tfi\n\n\t\ttouch exit_code\n\n\t\tpkgVersion=$(cat \"../pkg-ver\")\n\t\tpkgCategory=$(cat \"../pkg-category\")\n\t\tpkgCommit=$(cat \"../pkg-commit\")\n\t\tpkgDownloadable=$(cat \"../pkg-downloadable\")\n\t\tpkgPrettyName=$(cat \"../pkg-pretty-name\")\n\t\tvkDriverLib=\"\"\n\n\t\tif [[ \"$pkgCategory\" == \"VulkanDriver\" || \"$pkgCategory\" == \"AdrenoTools\" ]]; then\n\t\t\tvkDriverLib=$(cat \"../vk-driver-lib\")\n\t\tfi\n\n\t\tif [ -f \"$INIT_DIR/built-pkgs/$package-$pkgVersion-$ARCH.rat\" ]; then\n\t\t\techo \"-- [$packageNum/$packageCount] Package '$package' already built.\"\n\t\t\tpackageNum=$(( $packageNum + 1 ))\n\t\t\tcontinue\n\t\tfi\n\n\t\techo \"-- [$packageNum/$packageCount] Compiling Package '$package'...\"\n\n\t\t../build.sh 1> \"$INIT_DIR/logs/$package-log.txt\" 2> \"$INIT_DIR/logs/$package-error_log.txt\"\n\n\t\tif [ \"$?\" != \"0\" ]; then\n\t\t\techo \"- [$packageNum/$packageCount] Package: '\"$package\"' failed to compile. Check logs\"\n\t\t\texit 0\n\t\tfi\n\n\t\tif [ ! -d \"$packageDestDirPkg/data/data/com.micewine.emu\" ]; then\n\t\t\techo \"- [$packageNum/$packageCount] Package: '\"$package\"' failed to compile. Check logs\"\n\t\t\texit 0\n\t\tfi\n\n\t\tcp -rf \"$packageDestDirPkg/data/data/com.micewine.emu/\"* \"/data/data/com.micewine.emu\"\n\n\t\tfind \"$packageDestDirPkg\" -type f > \"$INIT_DIR/logs/$package-package-files.txt\"\n\n\t\techo $pkgCommit > \"$INIT_DIR/built-pkgs/$package-$pkgVersion-$ARCH.commit\"\n\n\t\tif [ -n \"$pkgDownloadable\" ]; then\n\t\t\ttouch \"$INIT_DIR/built-pkgs/$package-$pkgVersion-$ARCH.isDownloadable\"\n\t\tfi\n\n\t\tif [ ! -n \"$pkgPrettyName\" ]; then\n\t\t\tpkgPrettyName=$package\n\t\tfi\n\n\t\t$INIT_DIR/tools/create-rat-pkg.sh \"$package\" \"$pkgPrettyName\" \"$vkDriverLib\" \"$ARCH\" \"$pkgVersion\" \"$pkgCategory\" \"$packageDestDirPkg\" \"$INIT_DIR/built-pkgs\" 0\n\n\t\tif [ -n \"$CI\" ]; then\n\t\t\trm -rf \"$INIT_DIR/workdir/$package\"\n\t\tfi\n\n\t\tpackageNum=$(( $packageNum + 1 ))\n\tdone\n}\n\nshowHelp()\n{\n\techo \"Usage: $0 ARCH [OPTIONS]\"\n\techo \"\"\n\techo \"Options:\"\n\techo \"  --help: Show this message and exit.\"\n\techo \"  --ci: Clean cache and build files after build of each package (for saving space on CI)\"\n\techo \"\"\n\techo \"Available Archs:\"\n\techo \"  x86_64\"\n\techo \"  aarch64\"\n}\n\nif [ $# -lt 1 ]; then\n\tshowHelp\n\texit 0\nfi\n\ncase $1 in \"aarch64\"|\"x86_64\")\n\texport ARCH=$1\n\t;;\n\t\"--help\")\n\tshowHelp\n\texit 0\n\t;;\n\t*)\n\tprintf \"E: Unsupported Arch \\\"$1\\\" Specified.\\n\\n\"\n\tshowHelp\n\texit 0\nesac\n\nexport APP_ROOT_DIR=/data/data/com.micewine.emu\nexport PREFIX=$APP_ROOT_DIR/files/usr\n\nif [ ! -e \"$PREFIX\" ]; then\n\tsudo mkdir -p \"$PREFIX\"\n\tsudo chown -R $(whoami):$(whoami) \"$APP_ROOT_DIR\"\n\tsudo chmod 755 -R \"$APP_ROOT_DIR\"\nfi\n\nexport NDK_URL=\"https://dl.google.com/android/repository/android-ndk-r26b-linux.zip\"\nexport NDK_FILENAME=\"${NDK_URL##*/}\"\nexport NDK_SHA512=\"233e0b34c946a1ba60022809536307613ed956a4d596b3f43dc75e752b9d973f7c07f03a404a72a893629b86d8046664b9020920b3a6c64f68e223c5da109ec5\"\nexport MINGW_URL=\"http://techer.pascal.free.fr/Red-Rose_MinGW-w64-Toolchain/Red-Rose-MinGW-w64-Posix-Urct-v12.0.0.r458.g03d8a40f5-Gcc-11.5.0.tar.xz\"\nexport MINGW_FILENAME=\"${MINGW_URL##*/}\"\nexport MINGW_SHA512=\"c92e8d4c5811ad82d457a5618f902c2f7e951aa4e3e1cbd640be243ac4d1810e26ea7a933cb2b4b28cda715c04a7f6453060e1b13dd6bf953b69e6ea5ec75c93\"\n\nexport PACKAGES=\"$(ls packages)\"\nexport INIT_DIR=\"$PWD\"\nexport INIT_PATH=\"$PATH\"\n\ncase $* in *\"--ci\"*)\n\texport CI=1\nesac\n\nrm -rf logs\n\nmkdir -p {workdir,logs,cache,built-pkgs}\n\nsetupBuildEnv 29 $ARCH\nsetupPackages\n\ncompileAll\n"
  },
  {
    "path": "build_config/meson-cross-file-aarch64",
    "content": "[binaries]\npkg-config = '/usr/bin/pkg-config'\ncmake = '/usr/bin/cmake'\n\n[host_machine]\nsystem = 'linux'\ncpu_family = 'aarch64'\ncpu = 'aarch64'\nendian = 'little'\n\n[properties]\nskip_sanity_check = true\n\n"
  },
  {
    "path": "build_config/meson-cross-file-x86_64",
    "content": "[binaries]\npkg-config = '/usr/bin/pkg-config'\ncmake = '/usr/bin/cmake'\n\n[host_machine]\nsystem = 'linux'\ncpu_family = 'x86_64'\ncpu = 'x86_64'\nendian = 'little'\n\n[properties]\nskip_sanity_check = true\n\n"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/Dolphin1.x",
    "content": "xof 0303txt 0032\ntemplate XSkinMeshHeader {\n <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n WORD nMaxSkinWeightsPerVertex;\n WORD nMaxSkinWeightsPerFace;\n WORD nBones;\n}\n\ntemplate VertexDuplicationIndices {\n <b8d65549-d7c9-4995-89cf-53a9a8b031e3>\n DWORD nIndices;\n DWORD nOriginalVertices;\n array DWORD indices[nIndices];\n}\n\ntemplate SkinWeights {\n <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n STRING transformNodeName;\n DWORD nWeights;\n array DWORD vertexIndices[nWeights];\n array FLOAT weights[nWeights];\n Matrix4x4 matrixOffset;\n}\n\n\nFrame SCENE_ROOT {\n \n\n FrameTransformMatrix {\n  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n }\n\n\n Frame frm-Dolph01 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph01 {\n   284;\n   -1.947576;64.130737;8.130002;,\n   -7.800217;64.421143;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.099998;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.559999;,\n   96.266846;118.369980;0.000000;,\n   98.046844;114.049973;2.062331;,\n   114.296844;113.540024;0.000000;,\n   96.776840;54.869980;6.517096;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680001;,\n   72.136841;84.080002;6.633347;,\n   82.806854;95.759995;4.012877;,\n   -171.387756;-30.480600;-0.000000;,\n   -176.425171;-38.541008;7.620002;,\n   -181.361847;-42.534954;-0.000000;,\n   -154.447891;-14.097557;-0.000000;,\n   -158.022141;-20.583174;13.970002;,\n   -134.163620;1.137530;5.330001;,\n   -95.865860;31.137846;-0.000000;,\n   -96.765869;24.994415;18.290003;,\n   -133.079376;-0.864030;13.970002;,\n   -51.677738;53.535828;-0.000000;,\n   -52.571472;48.189205;22.350002;,\n   -5.121027;48.889385;24.639997;,\n   53.596848;48.009995;26.669998;,\n   110.155029;35.786564;20.319998;,\n   170.616714;4.479805;11.680001;,\n   171.602066;8.608099;0.000000;,\n   208.776871;-26.718767;0.000000;,\n   202.547195;-36.567245;14.730000;,\n   227.820557;-49.403225;0.000000;,\n   219.635742;-63.135403;11.939998;,\n   242.099518;-74.700821;0.000000;,\n   234.301636;-87.676208;7.870000;,\n   251.484833;-95.519829;0.000000;,\n   246.917847;-103.938271;9.650002;,\n   250.772247;-115.000572;0.000000;,\n   246.972794;-113.397652;9.375875;,\n   -135.384537;-7.302986;22.350002;,\n   -119.088821;-7.975105;32.770000;,\n   -89.951057;11.294539;31.705227;,\n   -52.211617;29.392502;31.999998;,\n   -4.920195;31.117809;35.809998;,\n   45.976837;30.489975;34.040001;,\n   107.296997;22.034000;28.449999;,\n   167.911224;-2.593308;18.290003;,\n   -130.285431;-21.345243;36.580002;,\n   -140.494431;-20.199341;31.750000;,\n   -147.848190;-27.584318;27.430000;,\n   -163.472275;-45.189865;20.830002;,\n   -177.160553;-59.922421;10.160001;,\n   -127.643097;-31.164843;35.809998;,\n   -138.714371;-27.248716;30.989998;,\n   -178.659561;-67.602631;13.970002;,\n   -171.449890;-76.994270;14.990002;,\n   -197.253006;-101.077950;7.369999;,\n   -202.413574;-98.976006;7.369999;,\n   -207.100449;-102.960793;4.059999;,\n   -208.425430;-101.488464;-0.000000;,\n   -185.977982;-69.142410;-0.000000;,\n   -183.263901;-66.751122;5.079998;,\n   -148.114319;-41.313347;30.480000;,\n   -141.038208;-33.178036;30.730001;,\n   -146.992157;-44.074024;30.730001;,\n   -160.275284;-49.135139;26.420000;,\n   -156.781799;-54.340389;25.910000;,\n   -167.502533;-80.661797;16.259998;,\n   -190.870132;-101.854103;8.379999;,\n   -149.784882;-65.020676;27.047174;,\n   -141.460510;-49.464539;34.540001;,\n   -118.326942;-56.489838;34.799999;,\n   -147.041763;-70.503639;27.430000;,\n   -136.580017;-43.941616;34.799999;,\n   -134.877014;-34.732857;34.540001;,\n   -120.784431;-44.892262;38.610001;,\n   -165.797058;-85.682549;18.290003;,\n   -186.959900;-104.512314;10.919998;,\n   -142.181732;-91.929665;17.020000;,\n   -106.990486;-81.240273;22.350002;,\n   -159.671616;-93.342796;10.160001;,\n   -165.156662;-89.221420;17.269999;,\n   -79.961212;-58.794125;43.180000;,\n   -78.005432;-68.644684;35.049995;,\n   -116.504807;-43.714310;40.389996;,\n   -77.647179;-28.399250;49.279999;,\n   -112.081055;-25.759773;40.130001;,\n   -111.537277;-12.781038;36.580002;,\n   -81.392578;-4.881754;42.669998;,\n   -49.742218;6.021069;46.230000;,\n   -38.129295;-19.131491;51.049999;,\n   -0.027278;6.284186;48.009998;,\n   5.076844;-18.789993;51.049999;,\n   48.006851;5.089982;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.950737;-1.727674;43.939999;,\n   101.204376;-28.525307;44.700001;,\n   159.725540;-22.174656;33.020004;,\n   150.980530;-44.968723;28.449999;,\n   192.150482;-48.016220;23.370001;,\n   179.132843;-68.563484;21.840002;,\n   210.778015;-71.539383;13.970002;,\n   200.929749;-82.827507;14.220000;,\n   223.367020;-89.510345;9.909999;,\n   212.621933;-96.073799;10.670001;,\n   239.994675;-107.823067;18.290003;,\n   -42.573589;-51.902767;41.150002;,\n   6.606843;-52.830002;37.590000;,\n   47.240704;-51.721313;38.100002;,\n   94.460991;-54.226379;30.989998;,\n   143.387604;-64.445183;17.269999;,\n   173.195267;-79.735161;9.650002;,\n   194.066788;-90.482391;7.110003;,\n   213.103455;-109.579109;5.589998;,\n   223.323807;-117.138016;14.409779;,\n   -53.687107;-68.761032;73.660004;,\n   -54.473625;-70.668358;71.370003;,\n   -32.965847;-60.505638;64.519997;,\n   -12.362958;-70.023148;77.220001;,\n   -25.197519;-72.225266;80.769997;,\n   -43.310638;-71.045502;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -40.286179;-67.661491;-0.000000;,\n   91.451996;-61.840412;0.000000;,\n   142.235916;-69.045692;0.000000;,\n   190.629211;-93.123634;0.000000;,\n   212.794708;-111.462990;0.000000;,\n   -102.330307;-83.610764;-0.000000;,\n   -69.056328;-75.146759;-0.000000;,\n   -134.214218;-94.438782;-0.000000;,\n   -156.798965;-95.268616;-0.000000;,\n   -181.225388;-108.614517;-0.000000;,\n   -184.310028;-107.456978;7.870000;,\n   -199.704224;-117.428978;-0.000000;,\n   -197.509445;-115.066803;4.569998;,\n   257.696564;-171.556595;86.610001;,\n   237.179489;-141.742661;73.150002;,\n   254.689590;-162.297256;63.250000;,\n   250.899612;-137.325058;9.650002;,\n   242.654434;-119.142982;20.904961;,\n   248.963318;-128.733322;0.000000;,\n   256.736420;-146.928177;5.840001;,\n   251.849289;-139.245422;0.000000;,\n   233.837677;-113.330627;24.129999;,\n   -204.366486;-108.193924;3.810001;,\n   -204.885330;-107.962814;-0.000000;,\n   -202.401138;-113.205154;4.830000;,\n   -204.151688;-114.039986;-0.000000;,\n   -25.028708;-73.061371;79.250000;,\n   -42.926811;-72.887756;78.230003;,\n   105.666840;93.729965;0.000000;,\n   46.226837;-64.342575;0.000000;,\n   170.627747;-83.432632;0.000000;,\n   223.631149;-119.390343;0.000000;,\n   235.158325;-143.347824;73.150002;,\n   229.454300;-126.607849;52.320000;,\n   233.005615;-124.019302;52.320000;,\n   255.426651;-154.044296;21.590000;,\n   -132.747055;3.981426;-0.000000;,\n   39.366852;98.809982;-6.099998;,\n   -1.947576;64.130737;-8.130002;,\n   68.076843;113.040024;-3.560004;,\n   98.046844;114.049973;-2.062331;,\n   96.776840;54.869980;-6.517096;,\n   72.136841;84.080002;-6.633341;,\n   57.146851;62.739975;-11.680001;,\n   82.806854;95.759995;-4.012877;,\n   -176.425171;-38.541008;-7.620002;,\n   -158.022141;-20.583174;-13.970002;,\n   -134.163620;1.137530;-5.330001;,\n   -133.079376;-0.864030;-13.970002;,\n   -96.765869;24.994415;-18.289999;,\n   -52.571472;48.189205;-22.349997;,\n   -5.121027;48.889385;-24.639997;,\n   53.596848;48.009995;-26.670002;,\n   110.155029;35.786564;-20.320002;,\n   170.616714;4.479805;-11.680001;,\n   202.547195;-36.567245;-14.729995;,\n   219.635742;-63.135403;-11.939998;,\n   234.301636;-87.676208;-7.870005;,\n   246.917847;-103.938271;-9.649997;,\n   246.972794;-113.397652;-9.375875;,\n   -135.384537;-7.302986;-22.349997;,\n   -119.088821;-7.975105;-32.770000;,\n   -89.951057;11.294539;-31.705223;,\n   -52.211617;29.392502;-32.000004;,\n   -4.920195;31.117809;-35.809998;,\n   45.976837;30.489975;-34.040001;,\n   107.296997;22.034000;-28.450005;,\n   167.911224;-2.593308;-18.289999;,\n   -140.494431;-20.199341;-31.750000;,\n   -130.285431;-21.345243;-36.580006;,\n   -147.848190;-27.584318;-27.430006;,\n   -163.472275;-45.189865;-20.830002;,\n   -177.160553;-59.922421;-10.159996;,\n   -138.714371;-27.248716;-30.989998;,\n   -127.643097;-31.164843;-35.809998;,\n   -178.659561;-67.602631;-13.970002;,\n   -202.413574;-98.976006;-7.369999;,\n   -197.253006;-101.077950;-7.369999;,\n   -171.449890;-76.994270;-14.990002;,\n   -183.263901;-66.751122;-5.079998;,\n   -207.100449;-102.960793;-4.059999;,\n   -146.992157;-44.074024;-30.730001;,\n   -141.038208;-33.178036;-30.730001;,\n   -148.114319;-41.313347;-30.480000;,\n   -160.275284;-49.135139;-26.420000;,\n   -156.781799;-54.340389;-25.910000;,\n   -190.870132;-101.854103;-8.380005;,\n   -167.502533;-80.661797;-16.260004;,\n   -149.784882;-65.020676;-27.047174;,\n   -141.460510;-49.464539;-34.539997;,\n   -147.041763;-70.503639;-27.430006;,\n   -118.326942;-56.489838;-34.799995;,\n   -136.580017;-43.941616;-34.799995;,\n   -134.877014;-34.732857;-34.539997;,\n   -120.784431;-44.892262;-38.610001;,\n   -186.959900;-104.512314;-10.919998;,\n   -165.797058;-85.682549;-18.289999;,\n   -130.062363;-62.004459;-31.750000;,\n   -142.181732;-91.929665;-17.019997;,\n   -106.990486;-81.240273;-22.349997;,\n   -165.156662;-89.221420;-17.269999;,\n   -159.671616;-93.342796;-10.159996;,\n   -78.005432;-68.644684;-35.049995;,\n   -79.961212;-58.794125;-43.180000;,\n   -77.647179;-28.399250;-49.279995;,\n   -116.504807;-43.714310;-40.390003;,\n   -112.081055;-25.759773;-40.130005;,\n   -111.537277;-12.781038;-36.580006;,\n   -81.392578;-4.881754;-42.669998;,\n   -38.129295;-19.131491;-51.050003;,\n   -49.742218;6.021069;-46.230003;,\n   5.076844;-18.789993;-51.050003;,\n   -0.027278;6.284186;-48.009995;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089982;-46.230003;,\n   101.204376;-28.525307;-44.700005;,\n   103.950737;-1.727674;-43.940002;,\n   150.980530;-44.968723;-28.450005;,\n   159.725540;-22.174656;-33.020004;,\n   179.132843;-68.563484;-21.839996;,\n   192.150482;-48.016220;-23.369997;,\n   200.929749;-82.827507;-14.220005;,\n   210.778015;-71.539383;-13.970002;,\n   212.621933;-96.073799;-10.669996;,\n   223.367020;-89.510345;-9.910004;,\n   239.994675;-107.823067;-18.289999;,\n   -42.573589;-51.902767;-41.150005;,\n   6.606843;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.100002;,\n   94.460991;-54.226379;-30.989998;,\n   143.387604;-64.445183;-17.269999;,\n   173.195267;-79.735161;-9.649997;,\n   194.066788;-90.482391;-7.110003;,\n   213.103455;-109.579109;-5.589998;,\n   223.323807;-117.138016;-14.409783;,\n   -54.473625;-70.668358;-71.370003;,\n   -53.687107;-68.761032;-73.660011;,\n   -32.965847;-60.505638;-64.520004;,\n   -12.362958;-70.023148;-77.220001;,\n   -43.310638;-71.045502;-80.009995;,\n   -25.197519;-72.225266;-80.769997;,\n   -184.310028;-107.456978;-7.870005;,\n   -197.509445;-115.066803;-4.569998;,\n   254.689590;-162.297256;-63.250000;,\n   237.179489;-141.742661;-73.150002;,\n   257.696564;-171.556595;-86.610001;,\n   242.654434;-119.142982;-20.904961;,\n   250.899612;-137.325058;-9.649997;,\n   256.736420;-146.928177;-5.840001;,\n   233.837677;-113.330627;-24.129999;,\n   -204.366486;-108.193924;-3.809996;,\n   -202.401138;-113.205154;-4.829995;,\n   -42.926811;-72.887756;-78.230003;,\n   -25.028708;-73.061371;-79.249992;,\n   233.005615;-124.019302;-52.319996;,\n   229.454300;-126.607849;-52.319996;,\n   235.158325;-143.347824;-73.150002;,\n   255.426651;-154.044296;-21.590004;,\n   117.346848;105.419968;0.000000;,\n   -130.062363;-62.004459;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.269804;0.320000;0.630588;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n}"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/Dolphin2.x",
    "content": "xof 0303txt 0032\ntemplate XSkinMeshHeader {\n <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n WORD nMaxSkinWeightsPerVertex;\n WORD nMaxSkinWeightsPerFace;\n WORD nBones;\n}\n\ntemplate VertexDuplicationIndices {\n <b8d65549-d7c9-4995-89cf-53a9a8b031e3>\n DWORD nIndices;\n DWORD nOriginalVertices;\n array DWORD indices[nIndices];\n}\n\ntemplate SkinWeights {\n <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n STRING transformNodeName;\n DWORD nWeights;\n array DWORD vertexIndices[nWeights];\n array FLOAT weights[nWeights];\n Matrix4x4 matrixOffset;\n}\n\n\nFrame SCENE_ROOT {\n \n\n FrameTransformMatrix {\n  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n }\n\n\n Frame frm-Dolph02 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph02 {\n   284;\n   -1.523163;64.520004;8.130000;,\n   -6.853149;65.279984;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.100000;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.560000;,\n   96.266846;118.369980;-0.000000;,\n   98.046844;114.049973;2.062330;,\n   114.296844;113.540024;-0.000000;,\n   96.776840;54.869980;6.517095;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680000;,\n   72.136841;84.080002;6.633346;,\n   82.806854;95.759995;4.012878;,\n   -173.396179;-11.112038;-0.000000;,\n   -179.359558;-18.513649;7.620000;,\n   -184.737610;-21.889885;-0.000000;,\n   -154.622162;3.132233;-0.000000;,\n   -158.944885;-2.880463;13.970000;,\n   -132.664642;15.837616;5.330000;,\n   -91.583008;40.962021;-0.000000;,\n   -93.103821;34.977371;18.290001;,\n   -131.827026;13.720963;13.970000;,\n   -47.355377;57.937881;-0.000000;,\n   -48.554932;52.679184;22.350000;,\n   -4.573151;49.539993;24.639999;,\n   53.596848;48.009995;26.670000;,\n   109.726837;36.069992;20.320000;,\n   164.597672;24.165756;11.680000;,\n   164.309326;28.406967;0.000000;,\n   205.337585;15.537689;0.000000;,\n   204.678864;3.807053;14.730000;,\n   229.959305;6.926483;0.000000;,\n   230.871490;-8.854462;11.940000;,\n   253.443558;-2.321793;0.000000;,\n   255.279877;-16.970306;7.870000;,\n   272.058594;-11.217239;0.000000;,\n   274.108582;-20.241173;9.650000;,\n   284.510010;-24.596809;0.000000;,\n   281.051788;-26.843124;9.375875;,\n   -134.884155;7.603134;22.350000;,\n   -118.785126;4.991013;32.770000;,\n   -87.932434;20.529556;31.705227;,\n   -49.602661;33.911453;32.000000;,\n   -4.573151;31.759995;35.810001;,\n   45.976837;30.489975;34.040001;,\n   106.426849;22.609970;28.450001;,\n   164.256134;16.569855;18.290001;,\n   -131.497375;-6.947311;36.580002;,\n   -141.496643;-4.591209;31.750000;,\n   -149.679199;-11.045776;27.430000;,\n   -167.292755;-26.660843;20.830000;,\n   -182.641449;-39.654480;10.160000;,\n   -130.045837;-17.012077;35.810001;,\n   -140.570618;-11.802643;30.990000;,\n   -185.046326;-47.100906;13.970000;,\n   -179.009033;-57.285851;14.990000;,\n   -207.501984;-78.117943;7.370000;,\n   -212.374817;-75.415138;7.370000;,\n   -217.503754;-78.812088;4.060000;,\n   -218.643555;-77.192154;-0.000000;,\n   -192.496216;-47.756264;-0.000000;,\n   -189.516144;-45.705978;5.080000;,\n   -151.581909;-24.644920;30.480000;,\n   -143.585480;-17.412247;30.730000;,\n   -150.797241;-27.519791;30.730000;,\n   -164.589447;-30.959465;26.420000;,\n   -161.742157;-36.544441;25.910000;,\n   -175.527588;-61.398262;16.260000;,\n   -201.257355;-79.650314;8.380000;,\n   -156.069885;-47.983437;27.047173;,\n   -145.948456;-33.531952;34.540001;,\n   -123.818665;-43.267906;34.799999;,\n   -154.000732;-53.754593;27.430000;,\n   -140.443726;-28.630959;34.799999;,\n   -137.653870;-19.691261;34.540001;,\n   -124.874481;-31.459930;38.610001;,\n   -174.433502;-66.586670;18.290001;,\n   -197.692322;-82.756187;10.920000;,\n   -151.732513;-75.607498;17.020000;,\n   -115.517059;-69.194389;22.350000;,\n   -169.266052;-74.923210;10.160000;,\n   -174.220032;-70.176674;17.270000;,\n   -85.397644;-50.283577;43.180000;,\n   -84.454346;-60.306122;35.049999;,\n   -120.484863;-30.801147;40.389999;,\n   -79.864807;-20.409126;49.279999;,\n   -113.949951;-13.502884;40.130001;,\n   -111.861115;-0.681808;36.580002;,\n   -81.197510;3.403015;42.669998;,\n   -49.006622;10.411407;46.230000;,\n   -39.190247;-15.640938;51.049999;,\n   -0.003174;6.529009;48.009998;,\n   5.076843;-18.789993;51.049999;,\n   48.006851;5.089981;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.886841;-1.010025;43.939999;,\n   103.376846;-27.930008;44.700001;,\n   162.713242;-4.686424;33.020000;,\n   161.417679;-29.193550;28.450001;,\n   201.173447;-11.476181;23.370001;,\n   199.070190;-36.018791;21.840000;,\n   228.461502;-21.143990;13.970000;,\n   226.755234;-36.330627;14.220000;,\n   248.461105;-25.743721;9.910000;,\n   244.936478;-38.099564;10.670000;,\n   272.516663;-27.825661;18.290001;,\n   -46.208221;-47.930710;41.150002;,\n   6.606842;-52.830002;37.590000;,\n   47.240704;-51.721313;38.099998;,\n   98.294579;-53.795647;30.990000;,\n   159.893112;-50.211456;17.270000;,\n   198.869385;-48.771626;9.650000;,\n   225.217270;-46.755871;7.110000;,\n   255.504883;-47.863602;5.590000;,\n   269.553040;-46.438980;14.409777;,\n   -59.387085;-63.494911;73.660004;,\n   -60.375549;-65.289017;71.370003;,\n   -36.437195;-57.347382;64.519997;,\n   -14.160309;-68.665680;77.220001;,\n   -28.562531;-69.723923;80.769997;,\n   -48.602417;-66.941849;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -44.981171;-63.836952;-0.000000;,\n   95.548935;-61.466160;0.000000;,\n   160.262604;-54.943668;0.000000;,\n   223.603302;-50.946529;0.000000;,\n   256.815125;-49.490067;0.000000;,\n   -111.173096;-72.104111;-0.000000;,\n   -75.903015;-67.890289;-0.000000;,\n   -144.121399;-79.049561;-0.000000;,\n   -166.643768;-77.178101;-0.000000;,\n   -192.488373;-87.513451;-0.000000;,\n   -195.412811;-85.996056;7.870000;,\n   -211.887085;-94.059570;-0.000000;,\n   -209.426086;-91.976212;4.570000;,\n   335.214783;-50.588272;86.610001;,\n   299.024292;-50.850159;73.150002;,\n   325.862610;-47.883812;63.250000;,\n   303.063110;-37.013802;9.650000;,\n   283.385864;-33.640854;20.904961;,\n   294.864197;-33.797440;0.000000;,\n   314.287231;-37.568359;5.840000;,\n   305.185608;-37.304771;0.000000;,\n   273.239410;-36.253315;24.129999;,\n   -215.413879;-84.334099;3.810000;,\n   -215.901428;-84.042725;-0.000000;,\n   -214.060638;-89.544067;4.830000;,\n   -215.898315;-90.164017;-0.000000;,\n   -28.418518;-70.573166;79.250000;,\n   -48.335999;-68.811401;78.230003;,\n   105.666840;93.729965;-0.000000;,\n   46.226837;-64.342575;0.000000;,\n   198.176895;-53.315128;0.000000;,\n   271.798553;-47.918884;0.000000;,\n   299.219421;-53.423798;73.150002;,\n   282.161438;-48.756035;52.320000;,\n   282.010498;-44.364044;52.320000;,\n   319.443726;-42.644302;21.590000;,\n   -130.918793;18.492126;-0.000000;,\n   39.366852;98.809982;-6.100000;,\n   -1.523163;64.520004;-8.130000;,\n   68.076843;113.040024;-3.560000;,\n   98.046844;114.049973;-2.062330;,\n   96.776840;54.869980;-6.517095;,\n   72.136841;84.080002;-6.633346;,\n   57.146851;62.739975;-11.680000;,\n   82.806854;95.759995;-4.012878;,\n   -179.359558;-18.513649;-7.620000;,\n   -158.944885;-2.880463;-13.970000;,\n   -132.664642;15.837616;-5.330000;,\n   -131.827026;13.720963;-13.970000;,\n   -93.103821;34.977371;-18.290001;,\n   -48.554932;52.679184;-22.350000;,\n   -4.573151;49.539993;-24.639999;,\n   53.596848;48.009995;-26.670000;,\n   109.726837;36.069992;-20.320000;,\n   164.597672;24.165756;-11.680000;,\n   204.678864;3.807053;-14.730000;,\n   230.871490;-8.854462;-11.940000;,\n   255.279877;-16.970306;-7.870000;,\n   274.108582;-20.241173;-9.650000;,\n   281.051788;-26.843124;-9.375875;,\n   -134.884155;7.603134;-22.350000;,\n   -118.785126;4.991013;-32.770000;,\n   -87.932434;20.529556;-31.705227;,\n   -49.602661;33.911453;-32.000000;,\n   -4.573151;31.759995;-35.810001;,\n   45.976837;30.489975;-34.040001;,\n   106.426849;22.609970;-28.450001;,\n   164.256134;16.569855;-18.290001;,\n   -141.496643;-4.591209;-31.750000;,\n   -131.497375;-6.947311;-36.580002;,\n   -149.679199;-11.045776;-27.430000;,\n   -167.292755;-26.660843;-20.830000;,\n   -182.641449;-39.654480;-10.160000;,\n   -140.570618;-11.802643;-30.990000;,\n   -130.045837;-17.012077;-35.810001;,\n   -185.046326;-47.100906;-13.970000;,\n   -212.374817;-75.415138;-7.370000;,\n   -207.501984;-78.117943;-7.370000;,\n   -179.009033;-57.285851;-14.990000;,\n   -189.516144;-45.705978;-5.080000;,\n   -217.503754;-78.812088;-4.060000;,\n   -150.797241;-27.519791;-30.730000;,\n   -143.585480;-17.412247;-30.730000;,\n   -151.581909;-24.644920;-30.480000;,\n   -164.589447;-30.959465;-26.420000;,\n   -161.742157;-36.544441;-25.910000;,\n   -201.257355;-79.650314;-8.380000;,\n   -175.527588;-61.398262;-16.260000;,\n   -156.069885;-47.983437;-27.047173;,\n   -145.948456;-33.531952;-34.540001;,\n   -154.000732;-53.754593;-27.430000;,\n   -123.818665;-43.267906;-34.799999;,\n   -140.443726;-28.630959;-34.799999;,\n   -137.653870;-19.691261;-34.540001;,\n   -124.874481;-31.459930;-38.610001;,\n   -197.692322;-82.756187;-10.920000;,\n   -174.433502;-66.586670;-18.290001;,\n   -136.128357;-47.342552;-31.750000;,\n   -151.732513;-75.607498;-17.020000;,\n   -115.517059;-69.194389;-22.350000;,\n   -174.220032;-70.176674;-17.270000;,\n   -169.266052;-74.923210;-10.160000;,\n   -84.454346;-60.306122;-35.049999;,\n   -85.397644;-50.283577;-43.180000;,\n   -79.864807;-20.409126;-49.279999;,\n   -120.484863;-30.801147;-40.389999;,\n   -113.949951;-13.502884;-40.130001;,\n   -111.861115;-0.681808;-36.580002;,\n   -81.197510;3.403015;-42.669998;,\n   -39.190247;-15.640938;-51.049999;,\n   -49.006622;10.411407;-46.230000;,\n   5.076843;-18.789993;-51.049999;,\n   -0.003174;6.529009;-48.009998;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089981;-46.230000;,\n   103.376846;-27.930008;-44.700001;,\n   103.886841;-1.010025;-43.939999;,\n   161.417679;-29.193550;-28.450001;,\n   162.713242;-4.686424;-33.020000;,\n   199.070190;-36.018791;-21.840000;,\n   201.173447;-11.476181;-23.370001;,\n   226.755234;-36.330627;-14.220000;,\n   228.461502;-21.143990;-13.970000;,\n   244.936478;-38.099564;-10.670000;,\n   248.461105;-25.743721;-9.910000;,\n   272.516663;-27.825661;-18.290001;,\n   -46.208221;-47.930710;-41.150002;,\n   6.606842;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.099998;,\n   98.294579;-53.795647;-30.990000;,\n   159.893112;-50.211456;-17.270000;,\n   198.869385;-48.771626;-9.650000;,\n   225.217270;-46.755871;-7.110000;,\n   255.504883;-47.863602;-5.590000;,\n   269.553040;-46.438980;-14.409779;,\n   -60.375549;-65.289017;-71.370003;,\n   -59.387085;-63.494911;-73.660004;,\n   -36.437195;-57.347382;-64.519997;,\n   -14.160309;-68.665680;-77.220001;,\n   -48.602417;-66.941849;-80.010002;,\n   -28.562531;-69.723923;-80.769997;,\n   -195.412811;-85.996056;-7.870000;,\n   -209.426086;-91.976212;-4.570000;,\n   325.862610;-47.883812;-63.250000;,\n   299.024292;-50.850159;-73.150002;,\n   335.214783;-50.588272;-86.610001;,\n   283.385864;-33.640854;-20.904961;,\n   303.063110;-37.013802;-9.650000;,\n   314.287231;-37.568359;-5.840000;,\n   273.239410;-36.253315;-24.129999;,\n   -215.413879;-84.334099;-3.810000;,\n   -214.060638;-89.544067;-4.830000;,\n   -48.335999;-68.811401;-78.230003;,\n   -28.418518;-70.573166;-79.250000;,\n   282.010498;-44.364044;-52.320000;,\n   282.161438;-48.756035;-52.320000;,\n   299.219421;-53.423798;-73.150002;,\n   319.443726;-42.644302;-21.590000;,\n   117.346848;105.419968;0.000000;,\n   -136.128357;-47.342552;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.269804;0.320000;0.630588;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n}"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/Dolphin3.x",
    "content": "xof 0303txt 0032\ntemplate XSkinMeshHeader {\n <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n WORD nMaxSkinWeightsPerVertex;\n WORD nMaxSkinWeightsPerFace;\n WORD nBones;\n}\n\ntemplate VertexDuplicationIndices {\n <b8d65549-d7c9-4995-89cf-53a9a8b031e3>\n DWORD nIndices;\n DWORD nOriginalVertices;\n array DWORD indices[nIndices];\n}\n\ntemplate SkinWeights {\n <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n STRING transformNodeName;\n DWORD nWeights;\n array DWORD vertexIndices[nWeights];\n array FLOAT weights[nWeights];\n Matrix4x4 matrixOffset;\n}\n\n\nFrame SCENE_ROOT {\n \n\n FrameTransformMatrix {\n  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n }\n\n\n Frame frm-Dolph03 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph03 {\n   284;\n   -1.187194;64.826233;8.130002;,\n   -6.142837;65.927422;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.099998;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.559999;,\n   96.266846;118.369980;0.000000;,\n   98.046844;114.049973;2.062331;,\n   114.296844;113.540024;0.000000;,\n   96.776840;54.869980;6.517096;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680001;,\n   72.136841;84.080002;6.633347;,\n   82.806854;95.759995;4.012877;,\n   -169.419098;16.915739;-0.000000;,\n   -177.035828;11.229694;7.620002;,\n   -183.084564;9.296997;-0.000000;,\n   -148.192398;26.747538;-0.000000;,\n   -153.575363;21.636553;13.970002;,\n   -126.190651;35.514084;5.330001;,\n   -84.050156;54.021847;-0.000000;,\n   -86.416969;48.318592;18.290003;,\n   -125.601196;33.312325;13.970002;,\n   -42.175732;62.659023;-0.000000;,\n   -42.137329;58.528698;22.350002;,\n   -3.544493;50.477592;24.639997;,\n   53.596848;48.009995;26.669998;,\n   109.726837;36.069992;20.319998;,\n   158.141220;32.867401;11.680001;,\n   157.181122;36.994099;0.000000;,\n   195.845322;36.444603;0.000000;,\n   198.421494;24.970091;14.730000;,\n   217.943008;36.701542;0.000000;,\n   224.240524;22.792717;11.939998;,\n   233.396622;40.165440;0.000000;,\n   242.954117;30.082399;7.870000;,\n   249.502090;43.866344;0.000000;,\n   257.511444;39.318447;9.650002;,\n   267.636658;44.037434;0.000000;,\n   267.381256;39.921616;9.375875;,\n   -129.344971;27.826403;22.350002;,\n   -115.249748;22.588278;32.770000;,\n   -83.380127;33.276646;31.705227;,\n   -43.810791;41.023785;31.999998;,\n   -3.790570;32.775356;35.809998;,\n   45.976837;30.489975;34.040001;,\n   106.426849;22.609970;28.449999;,\n   159.110229;25.329865;18.290003;,\n   -129.034393;12.997487;36.580002;,\n   -137.842133;17.008808;31.750000;,\n   -146.852936;12.115658;27.430000;,\n   -167.374252;0.337567;20.830002;,\n   -185.472137;-8.430785;10.160001;,\n   -129.556076;2.874023;35.809998;,\n   -138.469482;9.804406;30.989998;,\n   -189.653305;-15.045199;13.970002;,\n   -186.338577;-26.411579;14.990002;,\n   -219.117096;-39.503284;7.369999;,\n   -223.164688;-35.673569;7.369999;,\n   -228.977280;-37.688282;4.059999;,\n   -229.678406;-35.835785;-0.000000;,\n   -197.032120;-13.827255;-0.000000;,\n   -193.635788;-12.582498;5.079998;,\n   -151.718582;-0.788121;30.480000;,\n   -142.486694;4.850280;30.730001;,\n   -151.610046;-3.725685;30.730001;,\n   -165.824905;-4.498291;26.420000;,\n   -164.430069;-10.515144;25.910000;,\n   -183.989227;-31.260592;16.259998;,\n   -213.449738;-42.540489;8.379999;,\n   -161.528366;-22.659479;27.047174;,\n   -148.211853;-10.455325;34.540001;,\n   -128.220383;-24.037979;34.799999;,\n   -160.778366;-28.655569;27.430000;,\n   -141.809769;-6.662666;34.799999;,\n   -137.310959;1.582955;34.540001;,\n   -127.194580;-12.234112;38.610001;,\n   -184.219818;-36.558086;18.290003;,\n   -210.769104;-46.435375;10.919998;,\n   -163.427414;-50.345478;17.020000;,\n   -124.040443;-51.152882;22.350002;,\n   -181.287918;-45.917809;10.160001;,\n   -184.905853;-40.088390;17.269999;,\n   -91.069618;-37.163376;43.180000;,\n   -91.579506;-47.217293;35.049995;,\n   -122.799408;-12.376725;40.389996;,\n   -81.292206;-8.397122;49.279999;,\n   -113.739136;3.524862;40.130001;,\n   -109.828125;15.830540;36.580002;,\n   -79.181816;15.358729;42.669998;,\n   -46.452160;17.672569;46.230000;,\n   -39.970043;-9.546609;51.049999;,\n   0.110384;6.937223;48.009998;,\n   5.076844;-18.789993;51.049999;,\n   48.006851;5.089982;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.886841;-1.010024;43.939999;,\n   103.376846;-27.930008;44.700001;,\n   161.162369;4.123069;33.020004;,\n   163.766937;-20.261320;28.449999;,\n   199.195084;9.136382;23.370001;,\n   203.466644;-15.218976;21.840002;,\n   227.201157;10.131914;13.970002;,\n   231.175110;-5.114145;14.220000;,\n   243.208893;19.011372;9.909999;,\n   246.819061;6.594709;10.670001;,\n   262.049408;33.459076;18.290003;,\n   -51.241043;-40.521793;41.150002;,\n   6.606843;-52.830002;37.590000;,\n   47.240704;-51.721313;38.100002;,\n   98.294579;-53.795647;30.989998;,\n   165.371384;-41.269321;17.269999;,\n   206.519302;-27.586216;9.650002;,\n   233.308868;-16.060780;7.110003;,\n   261.325928;7.033109;5.589998;,\n   273.138245;19.171013;14.409779;,\n   -67.232765;-53.982800;73.660004;,\n   -68.469292;-55.615852;71.370003;,\n   -41.431782;-51.342903;64.519997;,\n   -16.828482;-66.025253;77.220001;,\n   -33.569759;-64.848167;80.769997;,\n   -56.426437;-58.987450;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -51.868515;-56.469826;-0.000000;,\n   95.548935;-61.466160;0.000000;,\n   166.511826;-45.863071;0.000000;,\n   233.058502;-20.942669;0.000000;,\n   263.500702;6.870311;0.000000;,\n   -119.927795;-54.873909;-0.000000;,\n   -84.209518;-55.953888;-0.000000;,\n   -156.094864;-55.203892;-0.000000;,\n   -179.308792;-48.753994;-0.000000;,\n   -206.911743;-52.337349;-0.000000;,\n   -209.366943;-50.140347;7.870000;,\n   -227.328964;-53.853546;-0.000000;,\n   -224.427170;-52.447666;4.569998;,\n   318.715668;69.285507;86.610001;,\n   297.370087;40.059059;73.150002;,\n   310.972900;63.384106;63.250000;,\n   288.661469;51.544575;9.650002;,\n   274.231842;37.747593;20.904961;,\n   281.194397;46.874439;0.000000;,\n   295.792297;60.230179;5.840001;,\n   290.159393;53.076187;0.000000;,\n   268.865143;28.569664;24.129999;,\n   -228.326324;-43.556538;3.810001;,\n   -228.726089;-43.153072;-0.000000;,\n   -228.311264;-48.939365;4.830000;,\n   -230.245377;-49.082825;-0.000000;,\n   -33.471981;-65.714722;79.250000;,\n   -56.368610;-60.880119;78.230003;,\n   105.666840;93.729965;0.000000;,\n   46.226837;-64.342575;0.000000;,\n   206.947968;-32.213493;0.000000;,\n   276.245270;19.983170;0.000000;,\n   299.553619;38.682877;73.150002;,\n   285.644012;27.761074;52.320000;,\n   282.026184;30.255810;52.320000;,\n   302.940948;61.348839;21.590000;,\n   -124.396561;37.824509;-0.000000;,\n   39.366852;98.809982;-6.099998;,\n   -1.187194;64.826233;-8.130002;,\n   68.076843;113.040024;-3.560004;,\n   98.046844;114.049973;-2.062331;,\n   96.776840;54.869980;-6.517096;,\n   72.136841;84.080002;-6.633341;,\n   57.146851;62.739975;-11.680001;,\n   82.806854;95.759995;-4.012877;,\n   -177.035828;11.229694;-7.620002;,\n   -153.575363;21.636553;-13.970002;,\n   -126.190651;35.514084;-5.330001;,\n   -125.601196;33.312325;-13.970002;,\n   -86.416969;48.318592;-18.289999;,\n   -42.137329;58.528698;-22.349997;,\n   -3.544493;50.477592;-24.639997;,\n   53.596848;48.009995;-26.670002;,\n   109.726837;36.069992;-20.320002;,\n   158.141220;32.867401;-11.680001;,\n   198.421494;24.970091;-14.729995;,\n   224.240524;22.792717;-11.939998;,\n   242.954117;30.082399;-7.870005;,\n   257.511444;39.318447;-9.649997;,\n   267.381256;39.921616;-9.375875;,\n   -129.344971;27.826403;-22.349997;,\n   -115.249748;22.588278;-32.770000;,\n   -83.380127;33.276646;-31.705223;,\n   -43.810791;41.023785;-32.000004;,\n   -3.790570;32.775356;-35.809998;,\n   45.976837;30.489975;-34.040001;,\n   106.426849;22.609970;-28.450005;,\n   159.110229;25.329865;-18.289999;,\n   -137.842133;17.008808;-31.750000;,\n   -129.034393;12.997487;-36.580006;,\n   -146.852936;12.115658;-27.430006;,\n   -167.374252;0.337567;-20.830002;,\n   -185.472137;-8.430785;-10.159996;,\n   -138.469482;9.804406;-30.989998;,\n   -129.556076;2.874023;-35.809998;,\n   -189.653305;-15.045199;-13.970002;,\n   -223.164688;-35.673569;-7.369999;,\n   -219.117096;-39.503284;-7.369999;,\n   -186.338577;-26.411579;-14.990002;,\n   -193.635788;-12.582498;-5.079998;,\n   -228.977280;-37.688282;-4.059999;,\n   -151.610046;-3.725685;-30.730001;,\n   -142.486694;4.850280;-30.730001;,\n   -151.718582;-0.788121;-30.480000;,\n   -165.824905;-4.498291;-26.420000;,\n   -164.430069;-10.515144;-25.910000;,\n   -213.449738;-42.540489;-8.380005;,\n   -183.989227;-31.260592;-16.260004;,\n   -161.528366;-22.659479;-27.047174;,\n   -148.211853;-10.455325;-34.539997;,\n   -160.778366;-28.655569;-27.430006;,\n   -128.220383;-24.037979;-34.799995;,\n   -141.809769;-6.662666;-34.799995;,\n   -137.310959;1.582955;-34.539997;,\n   -127.194580;-12.234112;-38.610001;,\n   -210.769104;-46.435375;-10.919998;,\n   -184.219818;-36.558086;-18.289999;,\n   -141.314682;-25.752174;-31.750000;,\n   -163.427414;-50.345478;-17.019997;,\n   -124.040443;-51.152882;-22.349997;,\n   -184.905853;-40.088390;-17.269999;,\n   -181.287918;-45.917809;-10.159996;,\n   -91.579506;-47.217293;-35.049995;,\n   -91.069618;-37.163376;-43.180000;,\n   -81.292206;-8.397122;-49.279995;,\n   -122.799408;-12.376725;-40.390003;,\n   -113.739136;3.524862;-40.130005;,\n   -109.828125;15.830540;-36.580006;,\n   -79.181816;15.358729;-42.669998;,\n   -39.970043;-9.546609;-51.050003;,\n   -46.452160;17.672569;-46.230003;,\n   5.076844;-18.789993;-51.050003;,\n   0.110384;6.937223;-48.009995;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089982;-46.230003;,\n   103.376846;-27.930008;-44.700005;,\n   103.886841;-1.010024;-43.940002;,\n   163.766937;-20.261320;-28.450005;,\n   161.162369;4.123069;-33.020004;,\n   203.466644;-15.218976;-21.839996;,\n   199.195084;9.136382;-23.369997;,\n   231.175110;-5.114145;-14.220005;,\n   227.201157;10.131914;-13.970002;,\n   246.819061;6.594709;-10.669996;,\n   243.208893;19.011372;-9.910004;,\n   262.049408;33.459076;-18.289999;,\n   -51.241043;-40.521793;-41.150005;,\n   6.606843;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.100002;,\n   98.294579;-53.795647;-30.989998;,\n   165.371384;-41.269321;-17.269999;,\n   206.519302;-27.586216;-9.649997;,\n   233.308868;-16.060780;-7.110003;,\n   261.325928;7.033109;-5.589998;,\n   273.138245;19.171013;-14.409783;,\n   -68.469292;-55.615852;-71.370003;,\n   -67.232765;-53.982800;-73.660011;,\n   -41.431782;-51.342903;-64.520004;,\n   -16.828482;-66.025253;-77.220001;,\n   -56.426437;-58.987450;-80.009995;,\n   -33.569759;-64.848167;-80.769997;,\n   -209.366943;-50.140347;-7.870005;,\n   -224.427170;-52.447666;-4.569998;,\n   310.972900;63.384106;-63.250000;,\n   297.370087;40.059059;-73.150002;,\n   318.715668;69.285507;-86.610001;,\n   274.231842;37.747593;-20.904961;,\n   288.661469;51.544575;-9.649997;,\n   295.792297;60.230179;-5.840001;,\n   268.865143;28.569664;-24.129999;,\n   -228.326324;-43.556538;-3.809996;,\n   -228.311264;-48.939365;-4.829995;,\n   -56.368610;-60.880119;-78.230003;,\n   -33.471981;-65.714722;-79.249992;,\n   282.026184;30.255810;-52.319996;,\n   285.644012;27.761074;-52.319996;,\n   299.553619;38.682877;-73.150002;,\n   302.940948;61.348839;-21.590004;,\n   117.346848;105.419968;0.000000;,\n   -141.314682;-25.752174;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.269804;0.320000;0.630588;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n}"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/DolphinTween.vsh",
    "content": ";------------------------------------------------------------------------------\n; Constants specified by the app\n;    c0      = ( 0, 0, 0, 0 )\n;    c1      = ( 1, 0.5, 2, 4 )\n;    c2      = ( fWeight1, fWeight2, fWeight3, 0 )\n;    c4-c7   = matWorldViewProjection\n;    c8-c11  = matWorldView\n;    c19     = light direction (in model space)\n;    c21     = material diffuse color * light diffuse color\n;    c22     = material ambient color\n;\n; Vertex components (as specified in the vertex DECL)\n;    v0    = Position\n;    v3    = Normal\n;    v6    = Texcoords\n;------------------------------------------------------------------------------\nvs.1.1\n\n;------------------------------------------------------------------------------\n; Vertex transformation\n;------------------------------------------------------------------------------\n\n; Tween the 3 positions (v0,v1,v2) into one position\nmul r0, v0, c2.x\nmul r1, v1, c2.y\nmul r2, v2, c2.z\nadd r3, r0, r1\nadd r3, r3, r2\n\n; Transform position to the clipping space\nm4x4 oPos, r3, c4\n\n; Transform position to the camera space\nm4x4 r9, r3, c8\n\n;------------------------------------------------------------------------------\n; Lighting calculation\n;------------------------------------------------------------------------------\n\n; Tween the 3 normals (v3,v4,v5) into one normal\nmul r0, v3, c2.x\nmul r1, v4, c2.y\nmul r2, v5, c2.z\nadd r3, r0, r1\nadd r3, r3, r2\n\n; Do the lighting calculation\ndp3 r1.x, r3, c19    ; r1 = normal dot light\nmax r1.x, r1.x, c0.x   ; if dot < 0 then dot = 0\nmul r0, r1.x, c21    ; Multiply with diffuse\nadd r0, r0, c22      ; Add in ambient\nmin oD0, r0, c1.x    ; clamp if > 1\n\n\n;------------------------------------------------------------------------------\n; Texture coordinates\n;------------------------------------------------------------------------------\n\n; Copy tex coords\nmov oT0.xy, v6\n\n;------------------------------------------------------------------------------\n; Fog calculation\n;------------------------------------------------------------------------------\n\n; compute fog factor f = (fog_end - dist)*(1/(fog_end-fog_start))\nadd r0.x, -r9.z, c23.y\nmul r0.x, r0.x, c23.z\nmax r0.x, r0.x, c0.x       ; clamp fog to > 0.0\nmin oFog.x, r0.x, c1.x     ; clamp fog to < 1.0\n\n\n\n"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/DolphinTween2.vsh",
    "content": ";------------------------------------------------------------------------------\n; Constants specified by the app\n;    c0      = ( 0, 0, 0, 0 )\n;    c1      = ( 1, 0.5, 2, 4 )\n;    c2      = ( fWeight1, fWeight2, fWeight3, 0 )\n;    c4-c7   = matWorldViewProjection\n;    c8-c11  = matWorldView\n;    c19     = light direction (in model space)\n;    c21     = material diffuse color * light diffuse color\n;    c22     = material ambient color\n;\n; Vertex components (as specified in the vertex DECL)\n;    v0    = Position\n;    v3    = Normal\n;    v6    = Texcoords\n;------------------------------------------------------------------------------\nvs.1.1\n\n;------------------------------------------------------------------------------\n; Vertex transformation\n;------------------------------------------------------------------------------\n\n; Tween the 3 positions (v0,v1,v2) into one position\nmul r0, v0, c2.x\nmul r1, v1, c2.y\nmul r2, v2, c2.z\nadd r3, r0, r1\nadd r3, r3, r2\n\n; Transform position to the clipping space\nm4x4 oPos, r3, c4\n\n; Transform position to the camera space\nm4x4 r9, r3, c8\n\n;------------------------------------------------------------------------------\n; Lighting calculation\n;------------------------------------------------------------------------------\n\n; Tween the 3 normals (v3,v4,v5) into one normal\nmul r0, v3, c2.x\nmul r1, v4, c2.y\nmul r2, v5, c2.z\nadd r3, r0, r1\nadd r3, r3, r2\n\n; Do the lighting calculation\ndp3 r1.x, r3, c19    ; r1 = normal dot light\nmax r1.x, r1.x, c0.x   ; if dot < 0 then dot = 0\nmul r0, r1.x, c21    ; Multiply with diffuse\nadd r0, r0, c22      ; Add in ambient\nmin oD0, r0, c1.x    ; clamp if > 1\n\n\n;------------------------------------------------------------------------------\n; Texture coordinates\n;------------------------------------------------------------------------------\n\n; Gen tex coords from vertex xz position\nmul oT0.xy, c1.y, r9.xz\n\n;------------------------------------------------------------------------------\n; Fog calculation\n;------------------------------------------------------------------------------\n\n; compute fog factor f = (fog_end - dist)*(1/(fog_end-fog_start))\nadd r0.x, -r9.z, c23.y\nmul r0.x, r0.x, c23.z\nmax r0.x, r0.x, c0.x       ; clamp fog to > 0.0\nmin oFog.x, r0.x, c1.x     ; clamp fog to < 1.0\n\n\n\n"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/SeaFloor.vsh",
    "content": "vs.1.1\n;------------------------------------------------------------------------------\n; Constants specified by the app\n;    c0      = ( 0, 0, 0, 0 )\n;    c1      = ( 1, 0.5, 2, 4 )\n;    c4-c7   = world-view-projection matrix\n;    c8-c11  = world-view matrix\n;    c12-c15 = view matrix\n;    c20     = light direction\n;    c21     = material diffuse color * light diffuse color\n;    c22     = material ambient color\n;    c28     = projection matrix\n;\n; Vertex components (as specified in the vertex DECL)\n;    v0    = Position\n;    v3    = Normal\n;    v6    = Texcoords\n;------------------------------------------------------------------------------\n\n\n;------------------------------------------------------------------------------\n; Vertex transformation\n;------------------------------------------------------------------------------\n\n; Transform to view space (world matrix is identity)\nm4x4 r9, v0, c12\n\n; Transform to projection space\nm4x4 r10, r9, c28\n\n; Store output position\nmov oPos, r10\n\n\n;------------------------------------------------------------------------------\n; Lighting calculation\n;------------------------------------------------------------------------------\n\ndp3 r1.x, v3, c20    ; r1 = normal dot light\nmul r0, r1.x, c21    ; Multiply with diffuse\nadd oD0, r0, c22      ; Add in ambient\n\n\n;------------------------------------------------------------------------------\n; Texture coordinates\n;------------------------------------------------------------------------------\n\n; Copy tex coords\nmov oT0.xy, v6\n\n;------------------------------------------------------------------------------\n; Fog calculation\n;------------------------------------------------------------------------------\n\n; compute fog factor f = (fog_end - dist)*(1/(fog_end-fog_start))\nadd r0.x, -r9.z, c23.y\nmul r0.x, r0.x, c23.z\nmax r0.x, r0.x, c0.x       ; clamp fog to > 0.0\nmin oFog.x, r0.x, c1.x     ; clamp fog to < 1.0\n\n\n\n"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/SeaFloor2.vsh",
    "content": "vs.1.0\n;------------------------------------------------------------------------------\n; Constants specified by the app\n;    c0      = ( 0, 0, 0, 0 )\n;    c1      = ( 1, 0.5, 2, 4 )\n;    c4-c7   = world-view-projection matrix\n;    c8-c11  = world-view matrix\n;    c12-c15 = view matrix\n;    c20     = light direction\n;    c21     = material diffuse color * light diffuse color\n;    c22     = material ambient color\n;    c28     = projection matrix\n;\n; Vertex components (as specified in the vertex DECL)\n;    v0    = Position\n;    v3    = Normal\n;    v6    = Texcoords\n;------------------------------------------------------------------------------\n\n\n;------------------------------------------------------------------------------\n; Vertex transformation\n;------------------------------------------------------------------------------\n\n; Transform to view space (world matrix is identity)\nm4x4 r9, v0, c12\n\n; Transform to projection space\nm4x4 r10, r9, c28\n\n; Store output position\nmov oPos, r10\n\n\n;------------------------------------------------------------------------------\n; Lighting calculation\n;------------------------------------------------------------------------------\n\ndp3 r1.x, v3, c20    ; r1 = normal dot light\nmax r1, r1.x, c0.x     ; if dot < 0 then dot = 0\nmul r0, r1.x, c21    ; Multiply with diffuse\nadd r0, r0, c22      ; Add in ambient\nmin oD0, r0, c1.x    ; clamp if > 1\n\n\n;------------------------------------------------------------------------------\n; Texture coordinates\n;------------------------------------------------------------------------------\n\n; Gen tex coords from vertex xz position\nmul r0.xy, c24.x, r9.xz\nadd oT0.xy, r0.xy, c24.zw\n\n;------------------------------------------------------------------------------\n; Fog calculation\n;------------------------------------------------------------------------------\n\n; compute fog factor f = (fog_end - dist)*(1/(fog_end-fog_start))\nadd r0.x, -r9.z, c23.y\nmul r0.x, r0.x, c23.z\nmax r0.x, r0.x, c0.x       ; clamp fog to > 0.0\nmin oFog.x, r0.x, c1.x     ; clamp fog to < 1.0\n\n\n\n"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/dolphin.x",
    "content": "xof 0303txt 0032\ntemplate XSkinMeshHeader {\n <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n WORD nMaxSkinWeightsPerVertex;\n WORD nMaxSkinWeightsPerFace;\n WORD nBones;\n}\n\ntemplate VertexDuplicationIndices {\n <b8d65549-d7c9-4995-89cf-53a9a8b031e3>\n DWORD nIndices;\n DWORD nOriginalVertices;\n array DWORD indices[nIndices];\n}\n\ntemplate SkinWeights {\n <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n STRING transformNodeName;\n DWORD nWeights;\n array DWORD vertexIndices[nWeights];\n array FLOAT weights[nWeights];\n Matrix4x4 matrixOffset;\n}\n\n\nFrame SCENE_ROOT {\n \n\n FrameTransformMatrix {\n  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n }\n\n\n Frame Dolph02 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph02 {\n   284;\n   -1.523163;64.520004;8.130000;,\n   -6.853149;65.279984;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.100000;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.560000;,\n   96.266846;118.369980;-0.000000;,\n   98.046844;114.049973;2.062330;,\n   114.296844;113.540024;-0.000000;,\n   96.776840;54.869980;6.517095;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680000;,\n   72.136841;84.080002;6.633346;,\n   82.806854;95.759995;4.012878;,\n   -173.396179;-11.112038;-0.000000;,\n   -179.359558;-18.513649;7.620000;,\n   -184.737610;-21.889885;-0.000000;,\n   -154.622162;3.132233;-0.000000;,\n   -158.944885;-2.880463;13.970000;,\n   -132.664642;15.837616;5.330000;,\n   -91.583008;40.962021;-0.000000;,\n   -93.103821;34.977371;18.290001;,\n   -131.827026;13.720963;13.970000;,\n   -47.355377;57.937881;-0.000000;,\n   -48.554932;52.679184;22.350000;,\n   -4.573151;49.539993;24.639999;,\n   53.596848;48.009995;26.670000;,\n   109.726837;36.069992;20.320000;,\n   164.597672;24.165756;11.680000;,\n   164.309326;28.406967;0.000000;,\n   205.337585;15.537689;0.000000;,\n   204.678864;3.807053;14.730000;,\n   229.959305;6.926483;0.000000;,\n   230.871490;-8.854462;11.940000;,\n   253.443558;-2.321793;0.000000;,\n   255.279877;-16.970306;7.870000;,\n   272.058594;-11.217239;0.000000;,\n   274.108582;-20.241173;9.650000;,\n   284.510010;-24.596809;0.000000;,\n   281.051788;-26.843124;9.375875;,\n   -134.884155;7.603134;22.350000;,\n   -118.785126;4.991013;32.770000;,\n   -87.932434;20.529556;31.705227;,\n   -49.602661;33.911453;32.000000;,\n   -4.573151;31.759995;35.810001;,\n   45.976837;30.489975;34.040001;,\n   106.426849;22.609970;28.450001;,\n   164.256134;16.569855;18.290001;,\n   -131.497375;-6.947311;36.580002;,\n   -141.496643;-4.591209;31.750000;,\n   -149.679199;-11.045776;27.430000;,\n   -167.292755;-26.660843;20.830000;,\n   -182.641449;-39.654480;10.160000;,\n   -130.045837;-17.012077;35.810001;,\n   -140.570618;-11.802643;30.990000;,\n   -185.046326;-47.100906;13.970000;,\n   -179.009033;-57.285851;14.990000;,\n   -207.501984;-78.117943;7.370000;,\n   -212.374817;-75.415138;7.370000;,\n   -217.503754;-78.812088;4.060000;,\n   -218.643555;-77.192154;-0.000000;,\n   -192.496216;-47.756264;-0.000000;,\n   -189.516144;-45.705978;5.080000;,\n   -151.581909;-24.644920;30.480000;,\n   -143.585480;-17.412247;30.730000;,\n   -150.797241;-27.519791;30.730000;,\n   -164.589447;-30.959465;26.420000;,\n   -161.742157;-36.544441;25.910000;,\n   -175.527588;-61.398262;16.260000;,\n   -201.257355;-79.650314;8.380000;,\n   -156.069885;-47.983437;27.047173;,\n   -145.948456;-33.531952;34.540001;,\n   -123.818665;-43.267906;34.799999;,\n   -154.000732;-53.754593;27.430000;,\n   -140.443726;-28.630959;34.799999;,\n   -137.653870;-19.691261;34.540001;,\n   -124.874481;-31.459930;38.610001;,\n   -174.433502;-66.586670;18.290001;,\n   -197.692322;-82.756187;10.920000;,\n   -151.732513;-75.607498;17.020000;,\n   -115.517059;-69.194389;22.350000;,\n   -169.266052;-74.923210;10.160000;,\n   -174.220032;-70.176674;17.270000;,\n   -85.397644;-50.283577;43.180000;,\n   -84.454346;-60.306122;35.049999;,\n   -120.484863;-30.801147;40.389999;,\n   -79.864807;-20.409126;49.279999;,\n   -113.949951;-13.502884;40.130001;,\n   -111.861115;-0.681808;36.580002;,\n   -81.197510;3.403015;42.669998;,\n   -49.006622;10.411407;46.230000;,\n   -39.190247;-15.640938;51.049999;,\n   -0.003174;6.529009;48.009998;,\n   5.076843;-18.789993;51.049999;,\n   48.006851;5.089981;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.886841;-1.010025;43.939999;,\n   103.376846;-27.930008;44.700001;,\n   162.713242;-4.686424;33.020000;,\n   161.417679;-29.193550;28.450001;,\n   201.173447;-11.476181;23.370001;,\n   199.070190;-36.018791;21.840000;,\n   228.461502;-21.143990;13.970000;,\n   226.755234;-36.330627;14.220000;,\n   248.461105;-25.743721;9.910000;,\n   244.936478;-38.099564;10.670000;,\n   272.516663;-27.825661;18.290001;,\n   -46.208221;-47.930710;41.150002;,\n   6.606842;-52.830002;37.590000;,\n   47.240704;-51.721313;38.099998;,\n   98.294579;-53.795647;30.990000;,\n   159.893112;-50.211456;17.270000;,\n   198.869385;-48.771626;9.650000;,\n   225.217270;-46.755871;7.110000;,\n   255.504883;-47.863602;5.590000;,\n   269.553040;-46.438980;14.409777;,\n   -59.387085;-63.494911;73.660004;,\n   -60.375549;-65.289017;71.370003;,\n   -36.437195;-57.347382;64.519997;,\n   -14.160309;-68.665680;77.220001;,\n   -28.562531;-69.723923;80.769997;,\n   -48.602417;-66.941849;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -44.981171;-63.836952;-0.000000;,\n   95.548935;-61.466160;0.000000;,\n   160.262604;-54.943668;0.000000;,\n   223.603302;-50.946529;0.000000;,\n   256.815125;-49.490067;0.000000;,\n   -111.173096;-72.104111;-0.000000;,\n   -75.903015;-67.890289;-0.000000;,\n   -144.121399;-79.049561;-0.000000;,\n   -166.643768;-77.178101;-0.000000;,\n   -192.488373;-87.513451;-0.000000;,\n   -195.412811;-85.996056;7.870000;,\n   -211.887085;-94.059570;-0.000000;,\n   -209.426086;-91.976212;4.570000;,\n   335.214783;-50.588272;86.610001;,\n   299.024292;-50.850159;73.150002;,\n   325.862610;-47.883812;63.250000;,\n   303.063110;-37.013802;9.650000;,\n   283.385864;-33.640854;20.904961;,\n   294.864197;-33.797440;0.000000;,\n   314.287231;-37.568359;5.840000;,\n   305.185608;-37.304771;0.000000;,\n   273.239410;-36.253315;24.129999;,\n   -215.413879;-84.334099;3.810000;,\n   -215.901428;-84.042725;-0.000000;,\n   -214.060638;-89.544067;4.830000;,\n   -215.898315;-90.164017;-0.000000;,\n   -28.418518;-70.573166;79.250000;,\n   -48.335999;-68.811401;78.230003;,\n   105.666840;93.729965;-0.000000;,\n   46.226837;-64.342575;0.000000;,\n   198.176895;-53.315128;0.000000;,\n   271.798553;-47.918884;0.000000;,\n   299.219421;-53.423798;73.150002;,\n   282.161438;-48.756035;52.320000;,\n   282.010498;-44.364044;52.320000;,\n   319.443726;-42.644302;21.590000;,\n   -130.918793;18.492126;-0.000000;,\n   39.366852;98.809982;-6.100000;,\n   -1.523163;64.520004;-8.130000;,\n   68.076843;113.040024;-3.560000;,\n   98.046844;114.049973;-2.062330;,\n   96.776840;54.869980;-6.517095;,\n   72.136841;84.080002;-6.633346;,\n   57.146851;62.739975;-11.680000;,\n   82.806854;95.759995;-4.012878;,\n   -179.359558;-18.513649;-7.620000;,\n   -158.944885;-2.880463;-13.970000;,\n   -132.664642;15.837616;-5.330000;,\n   -131.827026;13.720963;-13.970000;,\n   -93.103821;34.977371;-18.290001;,\n   -48.554932;52.679184;-22.350000;,\n   -4.573151;49.539993;-24.639999;,\n   53.596848;48.009995;-26.670000;,\n   109.726837;36.069992;-20.320000;,\n   164.597672;24.165756;-11.680000;,\n   204.678864;3.807053;-14.730000;,\n   230.871490;-8.854462;-11.940000;,\n   255.279877;-16.970306;-7.870000;,\n   274.108582;-20.241173;-9.650000;,\n   281.051788;-26.843124;-9.375875;,\n   -134.884155;7.603134;-22.350000;,\n   -118.785126;4.991013;-32.770000;,\n   -87.932434;20.529556;-31.705227;,\n   -49.602661;33.911453;-32.000000;,\n   -4.573151;31.759995;-35.810001;,\n   45.976837;30.489975;-34.040001;,\n   106.426849;22.609970;-28.450001;,\n   164.256134;16.569855;-18.290001;,\n   -141.496643;-4.591209;-31.750000;,\n   -131.497375;-6.947311;-36.580002;,\n   -149.679199;-11.045776;-27.430000;,\n   -167.292755;-26.660843;-20.830000;,\n   -182.641449;-39.654480;-10.160000;,\n   -140.570618;-11.802643;-30.990000;,\n   -130.045837;-17.012077;-35.810001;,\n   -185.046326;-47.100906;-13.970000;,\n   -212.374817;-75.415138;-7.370000;,\n   -207.501984;-78.117943;-7.370000;,\n   -179.009033;-57.285851;-14.990000;,\n   -189.516144;-45.705978;-5.080000;,\n   -217.503754;-78.812088;-4.060000;,\n   -150.797241;-27.519791;-30.730000;,\n   -143.585480;-17.412247;-30.730000;,\n   -151.581909;-24.644920;-30.480000;,\n   -164.589447;-30.959465;-26.420000;,\n   -161.742157;-36.544441;-25.910000;,\n   -201.257355;-79.650314;-8.380000;,\n   -175.527588;-61.398262;-16.260000;,\n   -156.069885;-47.983437;-27.047173;,\n   -145.948456;-33.531952;-34.540001;,\n   -154.000732;-53.754593;-27.430000;,\n   -123.818665;-43.267906;-34.799999;,\n   -140.443726;-28.630959;-34.799999;,\n   -137.653870;-19.691261;-34.540001;,\n   -124.874481;-31.459930;-38.610001;,\n   -197.692322;-82.756187;-10.920000;,\n   -174.433502;-66.586670;-18.290001;,\n   -136.128357;-47.342552;-31.750000;,\n   -151.732513;-75.607498;-17.020000;,\n   -115.517059;-69.194389;-22.350000;,\n   -174.220032;-70.176674;-17.270000;,\n   -169.266052;-74.923210;-10.160000;,\n   -84.454346;-60.306122;-35.049999;,\n   -85.397644;-50.283577;-43.180000;,\n   -79.864807;-20.409126;-49.279999;,\n   -120.484863;-30.801147;-40.389999;,\n   -113.949951;-13.502884;-40.130001;,\n   -111.861115;-0.681808;-36.580002;,\n   -81.197510;3.403015;-42.669998;,\n   -39.190247;-15.640938;-51.049999;,\n   -49.006622;10.411407;-46.230000;,\n   5.076843;-18.789993;-51.049999;,\n   -0.003174;6.529009;-48.009998;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089981;-46.230000;,\n   103.376846;-27.930008;-44.700001;,\n   103.886841;-1.010025;-43.939999;,\n   161.417679;-29.193550;-28.450001;,\n   162.713242;-4.686424;-33.020000;,\n   199.070190;-36.018791;-21.840000;,\n   201.173447;-11.476181;-23.370001;,\n   226.755234;-36.330627;-14.220000;,\n   228.461502;-21.143990;-13.970000;,\n   244.936478;-38.099564;-10.670000;,\n   248.461105;-25.743721;-9.910000;,\n   272.516663;-27.825661;-18.290001;,\n   -46.208221;-47.930710;-41.150002;,\n   6.606842;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.099998;,\n   98.294579;-53.795647;-30.990000;,\n   159.893112;-50.211456;-17.270000;,\n   198.869385;-48.771626;-9.650000;,\n   225.217270;-46.755871;-7.110000;,\n   255.504883;-47.863602;-5.590000;,\n   269.553040;-46.438980;-14.409779;,\n   -60.375549;-65.289017;-71.370003;,\n   -59.387085;-63.494911;-73.660004;,\n   -36.437195;-57.347382;-64.519997;,\n   -14.160309;-68.665680;-77.220001;,\n   -48.602417;-66.941849;-80.010002;,\n   -28.562531;-69.723923;-80.769997;,\n   -195.412811;-85.996056;-7.870000;,\n   -209.426086;-91.976212;-4.570000;,\n   325.862610;-47.883812;-63.250000;,\n   299.024292;-50.850159;-73.150002;,\n   335.214783;-50.588272;-86.610001;,\n   283.385864;-33.640854;-20.904961;,\n   303.063110;-37.013802;-9.650000;,\n   314.287231;-37.568359;-5.840000;,\n   273.239410;-36.253315;-24.129999;,\n   -215.413879;-84.334099;-3.810000;,\n   -214.060638;-89.544067;-4.830000;,\n   -48.335999;-68.811401;-78.230003;,\n   -28.418518;-70.573166;-79.250000;,\n   282.010498;-44.364044;-52.320000;,\n   282.161438;-48.756035;-52.320000;,\n   299.219421;-53.423798;-73.150002;,\n   319.443726;-42.644302;-21.590000;,\n   117.346848;105.419968;0.000000;,\n   -136.128357;-47.342552;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material     {\n     1.00000;1.000000;1.00000;1.00000;;\n     25.400000;\n     1.000000;1.000000;1.000000;;\n     0.000000;0.000000;0.000000;;\n     TextureFilename { \"dolphin.bmp\"; }\n    }\n\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n}"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/dolphin_group.x",
    "content": "xof 0303txt 0032\ntemplate XSkinMeshHeader {\n <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n WORD nMaxSkinWeightsPerVertex;\n WORD nMaxSkinWeightsPerFace;\n WORD nBones;\n}\n\ntemplate VertexDuplicationIndices {\n <b8d65549-d7c9-4995-89cf-53a9a8b031e3>\n DWORD nIndices;\n DWORD nOriginalVertices;\n array DWORD indices[nIndices];\n}\n\ntemplate SkinWeights {\n <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n STRING transformNodeName;\n DWORD nWeights;\n array DWORD vertexIndices[nWeights];\n array FLOAT weights[nWeights];\n Matrix4x4 matrixOffset;\n}\n\n\nFrame SCENE_ROOT {\n \n\n FrameTransformMatrix {\n  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n }\n\n\n Frame frm-Dolph03 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph03 {\n   284;\n   -1.187194;64.826233;8.130002;,\n   -6.142837;65.927422;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.099998;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.559999;,\n   96.266846;118.369980;0.000000;,\n   98.046844;114.049973;2.062331;,\n   114.296844;113.540024;0.000000;,\n   96.776840;54.869980;6.517096;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680001;,\n   72.136841;84.080002;6.633347;,\n   82.806854;95.759995;4.012877;,\n   -169.419098;16.915739;-0.000000;,\n   -177.035828;11.229694;7.620002;,\n   -183.084564;9.296997;-0.000000;,\n   -148.192398;26.747538;-0.000000;,\n   -153.575363;21.636553;13.970002;,\n   -126.190651;35.514084;5.330001;,\n   -84.050156;54.021847;-0.000000;,\n   -86.416969;48.318592;18.290003;,\n   -125.601196;33.312325;13.970002;,\n   -42.175732;62.659023;-0.000000;,\n   -42.137329;58.528698;22.350002;,\n   -3.544493;50.477592;24.639997;,\n   53.596848;48.009995;26.669998;,\n   109.726837;36.069992;20.319998;,\n   158.141220;32.867401;11.680001;,\n   157.181122;36.994099;0.000000;,\n   195.845322;36.444603;0.000000;,\n   198.421494;24.970091;14.730000;,\n   217.943008;36.701542;0.000000;,\n   224.240524;22.792717;11.939998;,\n   233.396622;40.165440;0.000000;,\n   242.954117;30.082399;7.870000;,\n   249.502090;43.866344;0.000000;,\n   257.511444;39.318447;9.650002;,\n   267.636658;44.037434;0.000000;,\n   267.381256;39.921616;9.375875;,\n   -129.344971;27.826403;22.350002;,\n   -115.249748;22.588278;32.770000;,\n   -83.380127;33.276646;31.705227;,\n   -43.810791;41.023785;31.999998;,\n   -3.790570;32.775356;35.809998;,\n   45.976837;30.489975;34.040001;,\n   106.426849;22.609970;28.449999;,\n   159.110229;25.329865;18.290003;,\n   -129.034393;12.997487;36.580002;,\n   -137.842133;17.008808;31.750000;,\n   -146.852936;12.115658;27.430000;,\n   -167.374252;0.337567;20.830002;,\n   -185.472137;-8.430785;10.160001;,\n   -129.556076;2.874023;35.809998;,\n   -138.469482;9.804406;30.989998;,\n   -189.653305;-15.045199;13.970002;,\n   -186.338577;-26.411579;14.990002;,\n   -219.117096;-39.503284;7.369999;,\n   -223.164688;-35.673569;7.369999;,\n   -228.977280;-37.688282;4.059999;,\n   -229.678406;-35.835785;-0.000000;,\n   -197.032120;-13.827255;-0.000000;,\n   -193.635788;-12.582498;5.079998;,\n   -151.718582;-0.788121;30.480000;,\n   -142.486694;4.850280;30.730001;,\n   -151.610046;-3.725685;30.730001;,\n   -165.824905;-4.498291;26.420000;,\n   -164.430069;-10.515144;25.910000;,\n   -183.989227;-31.260592;16.259998;,\n   -213.449738;-42.540489;8.379999;,\n   -161.528366;-22.659479;27.047174;,\n   -148.211853;-10.455325;34.540001;,\n   -128.220383;-24.037979;34.799999;,\n   -160.778366;-28.655569;27.430000;,\n   -141.809769;-6.662666;34.799999;,\n   -137.310959;1.582955;34.540001;,\n   -127.194580;-12.234112;38.610001;,\n   -184.219818;-36.558086;18.290003;,\n   -210.769104;-46.435375;10.919998;,\n   -163.427414;-50.345478;17.020000;,\n   -124.040443;-51.152882;22.350002;,\n   -181.287918;-45.917809;10.160001;,\n   -184.905853;-40.088390;17.269999;,\n   -91.069618;-37.163376;43.180000;,\n   -91.579506;-47.217293;35.049995;,\n   -122.799408;-12.376725;40.389996;,\n   -81.292206;-8.397122;49.279999;,\n   -113.739136;3.524862;40.130001;,\n   -109.828125;15.830540;36.580002;,\n   -79.181816;15.358729;42.669998;,\n   -46.452160;17.672569;46.230000;,\n   -39.970043;-9.546609;51.049999;,\n   0.110384;6.937223;48.009998;,\n   5.076844;-18.789993;51.049999;,\n   48.006851;5.089982;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.886841;-1.010024;43.939999;,\n   103.376846;-27.930008;44.700001;,\n   161.162369;4.123069;33.020004;,\n   163.766937;-20.261320;28.449999;,\n   199.195084;9.136382;23.370001;,\n   203.466644;-15.218976;21.840002;,\n   227.201157;10.131914;13.970002;,\n   231.175110;-5.114145;14.220000;,\n   243.208893;19.011372;9.909999;,\n   246.819061;6.594709;10.670001;,\n   262.049408;33.459076;18.290003;,\n   -51.241043;-40.521793;41.150002;,\n   6.606843;-52.830002;37.590000;,\n   47.240704;-51.721313;38.100002;,\n   98.294579;-53.795647;30.989998;,\n   165.371384;-41.269321;17.269999;,\n   206.519302;-27.586216;9.650002;,\n   233.308868;-16.060780;7.110003;,\n   261.325928;7.033109;5.589998;,\n   273.138245;19.171013;14.409779;,\n   -67.232765;-53.982800;73.660004;,\n   -68.469292;-55.615852;71.370003;,\n   -41.431782;-51.342903;64.519997;,\n   -16.828482;-66.025253;77.220001;,\n   -33.569759;-64.848167;80.769997;,\n   -56.426437;-58.987450;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -51.868515;-56.469826;-0.000000;,\n   95.548935;-61.466160;0.000000;,\n   166.511826;-45.863071;0.000000;,\n   233.058502;-20.942669;0.000000;,\n   263.500702;6.870311;0.000000;,\n   -119.927795;-54.873909;-0.000000;,\n   -84.209518;-55.953888;-0.000000;,\n   -156.094864;-55.203892;-0.000000;,\n   -179.308792;-48.753994;-0.000000;,\n   -206.911743;-52.337349;-0.000000;,\n   -209.366943;-50.140347;7.870000;,\n   -227.328964;-53.853546;-0.000000;,\n   -224.427170;-52.447666;4.569998;,\n   318.715668;69.285507;86.610001;,\n   297.370087;40.059059;73.150002;,\n   310.972900;63.384106;63.250000;,\n   288.661469;51.544575;9.650002;,\n   274.231842;37.747593;20.904961;,\n   281.194397;46.874439;0.000000;,\n   295.792297;60.230179;5.840001;,\n   290.159393;53.076187;0.000000;,\n   268.865143;28.569664;24.129999;,\n   -228.326324;-43.556538;3.810001;,\n   -228.726089;-43.153072;-0.000000;,\n   -228.311264;-48.939365;4.830000;,\n   -230.245377;-49.082825;-0.000000;,\n   -33.471981;-65.714722;79.250000;,\n   -56.368610;-60.880119;78.230003;,\n   105.666840;93.729965;0.000000;,\n   46.226837;-64.342575;0.000000;,\n   206.947968;-32.213493;0.000000;,\n   276.245270;19.983170;0.000000;,\n   299.553619;38.682877;73.150002;,\n   285.644012;27.761074;52.320000;,\n   282.026184;30.255810;52.320000;,\n   302.940948;61.348839;21.590000;,\n   -124.396561;37.824509;-0.000000;,\n   39.366852;98.809982;-6.099998;,\n   -1.187194;64.826233;-8.130002;,\n   68.076843;113.040024;-3.560004;,\n   98.046844;114.049973;-2.062331;,\n   96.776840;54.869980;-6.517096;,\n   72.136841;84.080002;-6.633341;,\n   57.146851;62.739975;-11.680001;,\n   82.806854;95.759995;-4.012877;,\n   -177.035828;11.229694;-7.620002;,\n   -153.575363;21.636553;-13.970002;,\n   -126.190651;35.514084;-5.330001;,\n   -125.601196;33.312325;-13.970002;,\n   -86.416969;48.318592;-18.289999;,\n   -42.137329;58.528698;-22.349997;,\n   -3.544493;50.477592;-24.639997;,\n   53.596848;48.009995;-26.670002;,\n   109.726837;36.069992;-20.320002;,\n   158.141220;32.867401;-11.680001;,\n   198.421494;24.970091;-14.729995;,\n   224.240524;22.792717;-11.939998;,\n   242.954117;30.082399;-7.870005;,\n   257.511444;39.318447;-9.649997;,\n   267.381256;39.921616;-9.375875;,\n   -129.344971;27.826403;-22.349997;,\n   -115.249748;22.588278;-32.770000;,\n   -83.380127;33.276646;-31.705223;,\n   -43.810791;41.023785;-32.000004;,\n   -3.790570;32.775356;-35.809998;,\n   45.976837;30.489975;-34.040001;,\n   106.426849;22.609970;-28.450005;,\n   159.110229;25.329865;-18.289999;,\n   -137.842133;17.008808;-31.750000;,\n   -129.034393;12.997487;-36.580006;,\n   -146.852936;12.115658;-27.430006;,\n   -167.374252;0.337567;-20.830002;,\n   -185.472137;-8.430785;-10.159996;,\n   -138.469482;9.804406;-30.989998;,\n   -129.556076;2.874023;-35.809998;,\n   -189.653305;-15.045199;-13.970002;,\n   -223.164688;-35.673569;-7.369999;,\n   -219.117096;-39.503284;-7.369999;,\n   -186.338577;-26.411579;-14.990002;,\n   -193.635788;-12.582498;-5.079998;,\n   -228.977280;-37.688282;-4.059999;,\n   -151.610046;-3.725685;-30.730001;,\n   -142.486694;4.850280;-30.730001;,\n   -151.718582;-0.788121;-30.480000;,\n   -165.824905;-4.498291;-26.420000;,\n   -164.430069;-10.515144;-25.910000;,\n   -213.449738;-42.540489;-8.380005;,\n   -183.989227;-31.260592;-16.260004;,\n   -161.528366;-22.659479;-27.047174;,\n   -148.211853;-10.455325;-34.539997;,\n   -160.778366;-28.655569;-27.430006;,\n   -128.220383;-24.037979;-34.799995;,\n   -141.809769;-6.662666;-34.799995;,\n   -137.310959;1.582955;-34.539997;,\n   -127.194580;-12.234112;-38.610001;,\n   -210.769104;-46.435375;-10.919998;,\n   -184.219818;-36.558086;-18.289999;,\n   -141.314682;-25.752174;-31.750000;,\n   -163.427414;-50.345478;-17.019997;,\n   -124.040443;-51.152882;-22.349997;,\n   -184.905853;-40.088390;-17.269999;,\n   -181.287918;-45.917809;-10.159996;,\n   -91.579506;-47.217293;-35.049995;,\n   -91.069618;-37.163376;-43.180000;,\n   -81.292206;-8.397122;-49.279995;,\n   -122.799408;-12.376725;-40.390003;,\n   -113.739136;3.524862;-40.130005;,\n   -109.828125;15.830540;-36.580006;,\n   -79.181816;15.358729;-42.669998;,\n   -39.970043;-9.546609;-51.050003;,\n   -46.452160;17.672569;-46.230003;,\n   5.076844;-18.789993;-51.050003;,\n   0.110384;6.937223;-48.009995;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089982;-46.230003;,\n   103.376846;-27.930008;-44.700005;,\n   103.886841;-1.010024;-43.940002;,\n   163.766937;-20.261320;-28.450005;,\n   161.162369;4.123069;-33.020004;,\n   203.466644;-15.218976;-21.839996;,\n   199.195084;9.136382;-23.369997;,\n   231.175110;-5.114145;-14.220005;,\n   227.201157;10.131914;-13.970002;,\n   246.819061;6.594709;-10.669996;,\n   243.208893;19.011372;-9.910004;,\n   262.049408;33.459076;-18.289999;,\n   -51.241043;-40.521793;-41.150005;,\n   6.606843;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.100002;,\n   98.294579;-53.795647;-30.989998;,\n   165.371384;-41.269321;-17.269999;,\n   206.519302;-27.586216;-9.649997;,\n   233.308868;-16.060780;-7.110003;,\n   261.325928;7.033109;-5.589998;,\n   273.138245;19.171013;-14.409783;,\n   -68.469292;-55.615852;-71.370003;,\n   -67.232765;-53.982800;-73.660011;,\n   -41.431782;-51.342903;-64.520004;,\n   -16.828482;-66.025253;-77.220001;,\n   -56.426437;-58.987450;-80.009995;,\n   -33.569759;-64.848167;-80.769997;,\n   -209.366943;-50.140347;-7.870005;,\n   -224.427170;-52.447666;-4.569998;,\n   310.972900;63.384106;-63.250000;,\n   297.370087;40.059059;-73.150002;,\n   318.715668;69.285507;-86.610001;,\n   274.231842;37.747593;-20.904961;,\n   288.661469;51.544575;-9.649997;,\n   295.792297;60.230179;-5.840001;,\n   268.865143;28.569664;-24.129999;,\n   -228.326324;-43.556538;-3.809996;,\n   -228.311264;-48.939365;-4.829995;,\n   -56.368610;-60.880119;-78.230003;,\n   -33.471981;-65.714722;-79.249992;,\n   282.026184;30.255810;-52.319996;,\n   285.644012;27.761074;-52.319996;,\n   299.553619;38.682877;-73.150002;,\n   302.940948;61.348839;-21.590004;,\n   117.346848;105.419968;0.000000;,\n   -141.314682;-25.752174;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.269804;0.320000;0.630588;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n\n Frame frm-Dolph02 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph02 {\n   284;\n   -1.523163;64.520004;8.130000;,\n   -6.853149;65.279984;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.100000;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.560000;,\n   96.266846;118.369980;-0.000000;,\n   98.046844;114.049973;2.062330;,\n   114.296844;113.540024;-0.000000;,\n   96.776840;54.869980;6.517095;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680000;,\n   72.136841;84.080002;6.633346;,\n   82.806854;95.759995;4.012878;,\n   -173.396179;-11.112038;-0.000000;,\n   -179.359558;-18.513649;7.620000;,\n   -184.737610;-21.889885;-0.000000;,\n   -154.622162;3.132233;-0.000000;,\n   -158.944885;-2.880463;13.970000;,\n   -132.664642;15.837616;5.330000;,\n   -91.583008;40.962021;-0.000000;,\n   -93.103821;34.977371;18.290001;,\n   -131.827026;13.720963;13.970000;,\n   -47.355377;57.937881;-0.000000;,\n   -48.554932;52.679184;22.350000;,\n   -4.573151;49.539993;24.639999;,\n   53.596848;48.009995;26.670000;,\n   109.726837;36.069992;20.320000;,\n   164.597672;24.165756;11.680000;,\n   164.309326;28.406967;0.000000;,\n   205.337585;15.537689;0.000000;,\n   204.678864;3.807053;14.730000;,\n   229.959305;6.926483;0.000000;,\n   230.871490;-8.854462;11.940000;,\n   253.443558;-2.321793;0.000000;,\n   255.279877;-16.970306;7.870000;,\n   272.058594;-11.217239;0.000000;,\n   274.108582;-20.241173;9.650000;,\n   284.510010;-24.596809;0.000000;,\n   281.051788;-26.843124;9.375875;,\n   -134.884155;7.603134;22.350000;,\n   -118.785126;4.991013;32.770000;,\n   -87.932434;20.529556;31.705227;,\n   -49.602661;33.911453;32.000000;,\n   -4.573151;31.759995;35.810001;,\n   45.976837;30.489975;34.040001;,\n   106.426849;22.609970;28.450001;,\n   164.256134;16.569855;18.290001;,\n   -131.497375;-6.947311;36.580002;,\n   -141.496643;-4.591209;31.750000;,\n   -149.679199;-11.045776;27.430000;,\n   -167.292755;-26.660843;20.830000;,\n   -182.641449;-39.654480;10.160000;,\n   -130.045837;-17.012077;35.810001;,\n   -140.570618;-11.802643;30.990000;,\n   -185.046326;-47.100906;13.970000;,\n   -179.009033;-57.285851;14.990000;,\n   -207.501984;-78.117943;7.370000;,\n   -212.374817;-75.415138;7.370000;,\n   -217.503754;-78.812088;4.060000;,\n   -218.643555;-77.192154;-0.000000;,\n   -192.496216;-47.756264;-0.000000;,\n   -189.516144;-45.705978;5.080000;,\n   -151.581909;-24.644920;30.480000;,\n   -143.585480;-17.412247;30.730000;,\n   -150.797241;-27.519791;30.730000;,\n   -164.589447;-30.959465;26.420000;,\n   -161.742157;-36.544441;25.910000;,\n   -175.527588;-61.398262;16.260000;,\n   -201.257355;-79.650314;8.380000;,\n   -156.069885;-47.983437;27.047173;,\n   -145.948456;-33.531952;34.540001;,\n   -123.818665;-43.267906;34.799999;,\n   -154.000732;-53.754593;27.430000;,\n   -140.443726;-28.630959;34.799999;,\n   -137.653870;-19.691261;34.540001;,\n   -124.874481;-31.459930;38.610001;,\n   -174.433502;-66.586670;18.290001;,\n   -197.692322;-82.756187;10.920000;,\n   -151.732513;-75.607498;17.020000;,\n   -115.517059;-69.194389;22.350000;,\n   -169.266052;-74.923210;10.160000;,\n   -174.220032;-70.176674;17.270000;,\n   -85.397644;-50.283577;43.180000;,\n   -84.454346;-60.306122;35.049999;,\n   -120.484863;-30.801147;40.389999;,\n   -79.864807;-20.409126;49.279999;,\n   -113.949951;-13.502884;40.130001;,\n   -111.861115;-0.681808;36.580002;,\n   -81.197510;3.403015;42.669998;,\n   -49.006622;10.411407;46.230000;,\n   -39.190247;-15.640938;51.049999;,\n   -0.003174;6.529009;48.009998;,\n   5.076843;-18.789993;51.049999;,\n   48.006851;5.089981;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.886841;-1.010025;43.939999;,\n   103.376846;-27.930008;44.700001;,\n   162.713242;-4.686424;33.020000;,\n   161.417679;-29.193550;28.450001;,\n   201.173447;-11.476181;23.370001;,\n   199.070190;-36.018791;21.840000;,\n   228.461502;-21.143990;13.970000;,\n   226.755234;-36.330627;14.220000;,\n   248.461105;-25.743721;9.910000;,\n   244.936478;-38.099564;10.670000;,\n   272.516663;-27.825661;18.290001;,\n   -46.208221;-47.930710;41.150002;,\n   6.606842;-52.830002;37.590000;,\n   47.240704;-51.721313;38.099998;,\n   98.294579;-53.795647;30.990000;,\n   159.893112;-50.211456;17.270000;,\n   198.869385;-48.771626;9.650000;,\n   225.217270;-46.755871;7.110000;,\n   255.504883;-47.863602;5.590000;,\n   269.553040;-46.438980;14.409777;,\n   -59.387085;-63.494911;73.660004;,\n   -60.375549;-65.289017;71.370003;,\n   -36.437195;-57.347382;64.519997;,\n   -14.160309;-68.665680;77.220001;,\n   -28.562531;-69.723923;80.769997;,\n   -48.602417;-66.941849;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -44.981171;-63.836952;-0.000000;,\n   95.548935;-61.466160;0.000000;,\n   160.262604;-54.943668;0.000000;,\n   223.603302;-50.946529;0.000000;,\n   256.815125;-49.490067;0.000000;,\n   -111.173096;-72.104111;-0.000000;,\n   -75.903015;-67.890289;-0.000000;,\n   -144.121399;-79.049561;-0.000000;,\n   -166.643768;-77.178101;-0.000000;,\n   -192.488373;-87.513451;-0.000000;,\n   -195.412811;-85.996056;7.870000;,\n   -211.887085;-94.059570;-0.000000;,\n   -209.426086;-91.976212;4.570000;,\n   335.214783;-50.588272;86.610001;,\n   299.024292;-50.850159;73.150002;,\n   325.862610;-47.883812;63.250000;,\n   303.063110;-37.013802;9.650000;,\n   283.385864;-33.640854;20.904961;,\n   294.864197;-33.797440;0.000000;,\n   314.287231;-37.568359;5.840000;,\n   305.185608;-37.304771;0.000000;,\n   273.239410;-36.253315;24.129999;,\n   -215.413879;-84.334099;3.810000;,\n   -215.901428;-84.042725;-0.000000;,\n   -214.060638;-89.544067;4.830000;,\n   -215.898315;-90.164017;-0.000000;,\n   -28.418518;-70.573166;79.250000;,\n   -48.335999;-68.811401;78.230003;,\n   105.666840;93.729965;-0.000000;,\n   46.226837;-64.342575;0.000000;,\n   198.176895;-53.315128;0.000000;,\n   271.798553;-47.918884;0.000000;,\n   299.219421;-53.423798;73.150002;,\n   282.161438;-48.756035;52.320000;,\n   282.010498;-44.364044;52.320000;,\n   319.443726;-42.644302;21.590000;,\n   -130.918793;18.492126;-0.000000;,\n   39.366852;98.809982;-6.100000;,\n   -1.523163;64.520004;-8.130000;,\n   68.076843;113.040024;-3.560000;,\n   98.046844;114.049973;-2.062330;,\n   96.776840;54.869980;-6.517095;,\n   72.136841;84.080002;-6.633346;,\n   57.146851;62.739975;-11.680000;,\n   82.806854;95.759995;-4.012878;,\n   -179.359558;-18.513649;-7.620000;,\n   -158.944885;-2.880463;-13.970000;,\n   -132.664642;15.837616;-5.330000;,\n   -131.827026;13.720963;-13.970000;,\n   -93.103821;34.977371;-18.290001;,\n   -48.554932;52.679184;-22.350000;,\n   -4.573151;49.539993;-24.639999;,\n   53.596848;48.009995;-26.670000;,\n   109.726837;36.069992;-20.320000;,\n   164.597672;24.165756;-11.680000;,\n   204.678864;3.807053;-14.730000;,\n   230.871490;-8.854462;-11.940000;,\n   255.279877;-16.970306;-7.870000;,\n   274.108582;-20.241173;-9.650000;,\n   281.051788;-26.843124;-9.375875;,\n   -134.884155;7.603134;-22.350000;,\n   -118.785126;4.991013;-32.770000;,\n   -87.932434;20.529556;-31.705227;,\n   -49.602661;33.911453;-32.000000;,\n   -4.573151;31.759995;-35.810001;,\n   45.976837;30.489975;-34.040001;,\n   106.426849;22.609970;-28.450001;,\n   164.256134;16.569855;-18.290001;,\n   -141.496643;-4.591209;-31.750000;,\n   -131.497375;-6.947311;-36.580002;,\n   -149.679199;-11.045776;-27.430000;,\n   -167.292755;-26.660843;-20.830000;,\n   -182.641449;-39.654480;-10.160000;,\n   -140.570618;-11.802643;-30.990000;,\n   -130.045837;-17.012077;-35.810001;,\n   -185.046326;-47.100906;-13.970000;,\n   -212.374817;-75.415138;-7.370000;,\n   -207.501984;-78.117943;-7.370000;,\n   -179.009033;-57.285851;-14.990000;,\n   -189.516144;-45.705978;-5.080000;,\n   -217.503754;-78.812088;-4.060000;,\n   -150.797241;-27.519791;-30.730000;,\n   -143.585480;-17.412247;-30.730000;,\n   -151.581909;-24.644920;-30.480000;,\n   -164.589447;-30.959465;-26.420000;,\n   -161.742157;-36.544441;-25.910000;,\n   -201.257355;-79.650314;-8.380000;,\n   -175.527588;-61.398262;-16.260000;,\n   -156.069885;-47.983437;-27.047173;,\n   -145.948456;-33.531952;-34.540001;,\n   -154.000732;-53.754593;-27.430000;,\n   -123.818665;-43.267906;-34.799999;,\n   -140.443726;-28.630959;-34.799999;,\n   -137.653870;-19.691261;-34.540001;,\n   -124.874481;-31.459930;-38.610001;,\n   -197.692322;-82.756187;-10.920000;,\n   -174.433502;-66.586670;-18.290001;,\n   -136.128357;-47.342552;-31.750000;,\n   -151.732513;-75.607498;-17.020000;,\n   -115.517059;-69.194389;-22.350000;,\n   -174.220032;-70.176674;-17.270000;,\n   -169.266052;-74.923210;-10.160000;,\n   -84.454346;-60.306122;-35.049999;,\n   -85.397644;-50.283577;-43.180000;,\n   -79.864807;-20.409126;-49.279999;,\n   -120.484863;-30.801147;-40.389999;,\n   -113.949951;-13.502884;-40.130001;,\n   -111.861115;-0.681808;-36.580002;,\n   -81.197510;3.403015;-42.669998;,\n   -39.190247;-15.640938;-51.049999;,\n   -49.006622;10.411407;-46.230000;,\n   5.076843;-18.789993;-51.049999;,\n   -0.003174;6.529009;-48.009998;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089981;-46.230000;,\n   103.376846;-27.930008;-44.700001;,\n   103.886841;-1.010025;-43.939999;,\n   161.417679;-29.193550;-28.450001;,\n   162.713242;-4.686424;-33.020000;,\n   199.070190;-36.018791;-21.840000;,\n   201.173447;-11.476181;-23.370001;,\n   226.755234;-36.330627;-14.220000;,\n   228.461502;-21.143990;-13.970000;,\n   244.936478;-38.099564;-10.670000;,\n   248.461105;-25.743721;-9.910000;,\n   272.516663;-27.825661;-18.290001;,\n   -46.208221;-47.930710;-41.150002;,\n   6.606842;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.099998;,\n   98.294579;-53.795647;-30.990000;,\n   159.893112;-50.211456;-17.270000;,\n   198.869385;-48.771626;-9.650000;,\n   225.217270;-46.755871;-7.110000;,\n   255.504883;-47.863602;-5.590000;,\n   269.553040;-46.438980;-14.409779;,\n   -60.375549;-65.289017;-71.370003;,\n   -59.387085;-63.494911;-73.660004;,\n   -36.437195;-57.347382;-64.519997;,\n   -14.160309;-68.665680;-77.220001;,\n   -48.602417;-66.941849;-80.010002;,\n   -28.562531;-69.723923;-80.769997;,\n   -195.412811;-85.996056;-7.870000;,\n   -209.426086;-91.976212;-4.570000;,\n   325.862610;-47.883812;-63.250000;,\n   299.024292;-50.850159;-73.150002;,\n   335.214783;-50.588272;-86.610001;,\n   283.385864;-33.640854;-20.904961;,\n   303.063110;-37.013802;-9.650000;,\n   314.287231;-37.568359;-5.840000;,\n   273.239410;-36.253315;-24.129999;,\n   -215.413879;-84.334099;-3.810000;,\n   -214.060638;-89.544067;-4.830000;,\n   -48.335999;-68.811401;-78.230003;,\n   -28.418518;-70.573166;-79.250000;,\n   282.010498;-44.364044;-52.320000;,\n   282.161438;-48.756035;-52.320000;,\n   299.219421;-53.423798;-73.150002;,\n   319.443726;-42.644302;-21.590000;,\n   117.346848;105.419968;0.000000;,\n   -136.128357;-47.342552;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.269804;0.320000;0.630588;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n\n Frame frm-Dolph01 {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh Dolph01 {\n   284;\n   -1.947576;64.130737;8.130002;,\n   -7.800217;64.421143;-0.000000;,\n   31.746841;100.080002;0.000000;,\n   39.366852;98.809982;6.099998;,\n   64.766846;116.079941;0.000000;,\n   68.076843;113.040024;3.559999;,\n   96.266846;118.369980;0.000000;,\n   98.046844;114.049973;2.062331;,\n   114.296844;113.540024;0.000000;,\n   96.776840;54.869980;6.517096;,\n   96.266846;72.900009;0.000000;,\n   106.936844;48.009995;0.000000;,\n   57.146851;62.739975;11.680001;,\n   72.136841;84.080002;6.633347;,\n   82.806854;95.759995;4.012877;,\n   -171.387756;-30.480600;-0.000000;,\n   -176.425171;-38.541008;7.620002;,\n   -181.361847;-42.534954;-0.000000;,\n   -154.447891;-14.097557;-0.000000;,\n   -158.022141;-20.583174;13.970002;,\n   -134.163620;1.137530;5.330001;,\n   -95.865860;31.137846;-0.000000;,\n   -96.765869;24.994415;18.290003;,\n   -133.079376;-0.864030;13.970002;,\n   -51.677738;53.535828;-0.000000;,\n   -52.571472;48.189205;22.350002;,\n   -5.121027;48.889385;24.639997;,\n   53.596848;48.009995;26.669998;,\n   110.155029;35.786564;20.319998;,\n   170.616714;4.479805;11.680001;,\n   171.602066;8.608099;0.000000;,\n   208.776871;-26.718767;0.000000;,\n   202.547195;-36.567245;14.730000;,\n   227.820557;-49.403225;0.000000;,\n   219.635742;-63.135403;11.939998;,\n   242.099518;-74.700821;0.000000;,\n   234.301636;-87.676208;7.870000;,\n   251.484833;-95.519829;0.000000;,\n   246.917847;-103.938271;9.650002;,\n   250.772247;-115.000572;0.000000;,\n   246.972794;-113.397652;9.375875;,\n   -135.384537;-7.302986;22.350002;,\n   -119.088821;-7.975105;32.770000;,\n   -89.951057;11.294539;31.705227;,\n   -52.211617;29.392502;31.999998;,\n   -4.920195;31.117809;35.809998;,\n   45.976837;30.489975;34.040001;,\n   107.296997;22.034000;28.449999;,\n   167.911224;-2.593308;18.290003;,\n   -130.285431;-21.345243;36.580002;,\n   -140.494431;-20.199341;31.750000;,\n   -147.848190;-27.584318;27.430000;,\n   -163.472275;-45.189865;20.830002;,\n   -177.160553;-59.922421;10.160001;,\n   -127.643097;-31.164843;35.809998;,\n   -138.714371;-27.248716;30.989998;,\n   -178.659561;-67.602631;13.970002;,\n   -171.449890;-76.994270;14.990002;,\n   -197.253006;-101.077950;7.369999;,\n   -202.413574;-98.976006;7.369999;,\n   -207.100449;-102.960793;4.059999;,\n   -208.425430;-101.488464;-0.000000;,\n   -185.977982;-69.142410;-0.000000;,\n   -183.263901;-66.751122;5.079998;,\n   -148.114319;-41.313347;30.480000;,\n   -141.038208;-33.178036;30.730001;,\n   -146.992157;-44.074024;30.730001;,\n   -160.275284;-49.135139;26.420000;,\n   -156.781799;-54.340389;25.910000;,\n   -167.502533;-80.661797;16.259998;,\n   -190.870132;-101.854103;8.379999;,\n   -149.784882;-65.020676;27.047174;,\n   -141.460510;-49.464539;34.540001;,\n   -118.326942;-56.489838;34.799999;,\n   -147.041763;-70.503639;27.430000;,\n   -136.580017;-43.941616;34.799999;,\n   -134.877014;-34.732857;34.540001;,\n   -120.784431;-44.892262;38.610001;,\n   -165.797058;-85.682549;18.290003;,\n   -186.959900;-104.512314;10.919998;,\n   -142.181732;-91.929665;17.020000;,\n   -106.990486;-81.240273;22.350002;,\n   -159.671616;-93.342796;10.160001;,\n   -165.156662;-89.221420;17.269999;,\n   -79.961212;-58.794125;43.180000;,\n   -78.005432;-68.644684;35.049995;,\n   -116.504807;-43.714310;40.389996;,\n   -77.647179;-28.399250;49.279999;,\n   -112.081055;-25.759773;40.130001;,\n   -111.537277;-12.781038;36.580002;,\n   -81.392578;-4.881754;42.669998;,\n   -49.742218;6.021069;46.230000;,\n   -38.129295;-19.131491;51.049999;,\n   -0.027278;6.284186;48.009998;,\n   5.076844;-18.789993;51.049999;,\n   48.006851;5.089982;46.230000;,\n   50.036850;-18.539993;49.020000;,\n   103.950737;-1.727674;43.939999;,\n   101.204376;-28.525307;44.700001;,\n   159.725540;-22.174656;33.020004;,\n   150.980530;-44.968723;28.449999;,\n   192.150482;-48.016220;23.370001;,\n   179.132843;-68.563484;21.840002;,\n   210.778015;-71.539383;13.970002;,\n   200.929749;-82.827507;14.220000;,\n   223.367020;-89.510345;9.909999;,\n   212.621933;-96.073799;10.670001;,\n   239.994675;-107.823067;18.290003;,\n   -42.573589;-51.902767;41.150002;,\n   6.606843;-52.830002;37.590000;,\n   47.240704;-51.721313;38.100002;,\n   94.460991;-54.226379;30.989998;,\n   143.387604;-64.445183;17.269999;,\n   173.195267;-79.735161;9.650002;,\n   194.066788;-90.482391;7.110003;,\n   213.103455;-109.579109;5.589998;,\n   223.323807;-117.138016;14.409779;,\n   -53.687107;-68.761032;73.660004;,\n   -54.473625;-70.668358;71.370003;,\n   -32.965847;-60.505638;64.519997;,\n   -12.362958;-70.023148;77.220001;,\n   -25.197519;-72.225266;80.769997;,\n   -43.310638;-71.045502;80.010002;,\n   3.046844;-66.030014;0.000000;,\n   -40.286179;-67.661491;-0.000000;,\n   91.451996;-61.840412;0.000000;,\n   142.235916;-69.045692;0.000000;,\n   190.629211;-93.123634;0.000000;,\n   212.794708;-111.462990;0.000000;,\n   -102.330307;-83.610764;-0.000000;,\n   -69.056328;-75.146759;-0.000000;,\n   -134.214218;-94.438782;-0.000000;,\n   -156.798965;-95.268616;-0.000000;,\n   -181.225388;-108.614517;-0.000000;,\n   -184.310028;-107.456978;7.870000;,\n   -199.704224;-117.428978;-0.000000;,\n   -197.509445;-115.066803;4.569998;,\n   257.696564;-171.556595;86.610001;,\n   237.179489;-141.742661;73.150002;,\n   254.689590;-162.297256;63.250000;,\n   250.899612;-137.325058;9.650002;,\n   242.654434;-119.142982;20.904961;,\n   248.963318;-128.733322;0.000000;,\n   256.736420;-146.928177;5.840001;,\n   251.849289;-139.245422;0.000000;,\n   233.837677;-113.330627;24.129999;,\n   -204.366486;-108.193924;3.810001;,\n   -204.885330;-107.962814;-0.000000;,\n   -202.401138;-113.205154;4.830000;,\n   -204.151688;-114.039986;-0.000000;,\n   -25.028708;-73.061371;79.250000;,\n   -42.926811;-72.887756;78.230003;,\n   105.666840;93.729965;0.000000;,\n   46.226837;-64.342575;0.000000;,\n   170.627747;-83.432632;0.000000;,\n   223.631149;-119.390343;0.000000;,\n   235.158325;-143.347824;73.150002;,\n   229.454300;-126.607849;52.320000;,\n   233.005615;-124.019302;52.320000;,\n   255.426651;-154.044296;21.590000;,\n   -132.747055;3.981426;-0.000000;,\n   39.366852;98.809982;-6.099998;,\n   -1.947576;64.130737;-8.130002;,\n   68.076843;113.040024;-3.560004;,\n   98.046844;114.049973;-2.062331;,\n   96.776840;54.869980;-6.517096;,\n   72.136841;84.080002;-6.633341;,\n   57.146851;62.739975;-11.680001;,\n   82.806854;95.759995;-4.012877;,\n   -176.425171;-38.541008;-7.620002;,\n   -158.022141;-20.583174;-13.970002;,\n   -134.163620;1.137530;-5.330001;,\n   -133.079376;-0.864030;-13.970002;,\n   -96.765869;24.994415;-18.289999;,\n   -52.571472;48.189205;-22.349997;,\n   -5.121027;48.889385;-24.639997;,\n   53.596848;48.009995;-26.670002;,\n   110.155029;35.786564;-20.320002;,\n   170.616714;4.479805;-11.680001;,\n   202.547195;-36.567245;-14.729995;,\n   219.635742;-63.135403;-11.939998;,\n   234.301636;-87.676208;-7.870005;,\n   246.917847;-103.938271;-9.649997;,\n   246.972794;-113.397652;-9.375875;,\n   -135.384537;-7.302986;-22.349997;,\n   -119.088821;-7.975105;-32.770000;,\n   -89.951057;11.294539;-31.705223;,\n   -52.211617;29.392502;-32.000004;,\n   -4.920195;31.117809;-35.809998;,\n   45.976837;30.489975;-34.040001;,\n   107.296997;22.034000;-28.450005;,\n   167.911224;-2.593308;-18.289999;,\n   -140.494431;-20.199341;-31.750000;,\n   -130.285431;-21.345243;-36.580006;,\n   -147.848190;-27.584318;-27.430006;,\n   -163.472275;-45.189865;-20.830002;,\n   -177.160553;-59.922421;-10.159996;,\n   -138.714371;-27.248716;-30.989998;,\n   -127.643097;-31.164843;-35.809998;,\n   -178.659561;-67.602631;-13.970002;,\n   -202.413574;-98.976006;-7.369999;,\n   -197.253006;-101.077950;-7.369999;,\n   -171.449890;-76.994270;-14.990002;,\n   -183.263901;-66.751122;-5.079998;,\n   -207.100449;-102.960793;-4.059999;,\n   -146.992157;-44.074024;-30.730001;,\n   -141.038208;-33.178036;-30.730001;,\n   -148.114319;-41.313347;-30.480000;,\n   -160.275284;-49.135139;-26.420000;,\n   -156.781799;-54.340389;-25.910000;,\n   -190.870132;-101.854103;-8.380005;,\n   -167.502533;-80.661797;-16.260004;,\n   -149.784882;-65.020676;-27.047174;,\n   -141.460510;-49.464539;-34.539997;,\n   -147.041763;-70.503639;-27.430006;,\n   -118.326942;-56.489838;-34.799995;,\n   -136.580017;-43.941616;-34.799995;,\n   -134.877014;-34.732857;-34.539997;,\n   -120.784431;-44.892262;-38.610001;,\n   -186.959900;-104.512314;-10.919998;,\n   -165.797058;-85.682549;-18.289999;,\n   -130.062363;-62.004459;-31.750000;,\n   -142.181732;-91.929665;-17.019997;,\n   -106.990486;-81.240273;-22.349997;,\n   -165.156662;-89.221420;-17.269999;,\n   -159.671616;-93.342796;-10.159996;,\n   -78.005432;-68.644684;-35.049995;,\n   -79.961212;-58.794125;-43.180000;,\n   -77.647179;-28.399250;-49.279995;,\n   -116.504807;-43.714310;-40.390003;,\n   -112.081055;-25.759773;-40.130005;,\n   -111.537277;-12.781038;-36.580006;,\n   -81.392578;-4.881754;-42.669998;,\n   -38.129295;-19.131491;-51.050003;,\n   -49.742218;6.021069;-46.230003;,\n   5.076844;-18.789993;-51.050003;,\n   -0.027278;6.284186;-48.009995;,\n   50.036850;-18.539993;-49.020000;,\n   48.006851;5.089982;-46.230003;,\n   101.204376;-28.525307;-44.700005;,\n   103.950737;-1.727674;-43.940002;,\n   150.980530;-44.968723;-28.450005;,\n   159.725540;-22.174656;-33.020004;,\n   179.132843;-68.563484;-21.839996;,\n   192.150482;-48.016220;-23.369997;,\n   200.929749;-82.827507;-14.220005;,\n   210.778015;-71.539383;-13.970002;,\n   212.621933;-96.073799;-10.669996;,\n   223.367020;-89.510345;-9.910004;,\n   239.994675;-107.823067;-18.289999;,\n   -42.573589;-51.902767;-41.150005;,\n   6.606843;-52.830002;-37.590000;,\n   47.240704;-51.721313;-38.100002;,\n   94.460991;-54.226379;-30.989998;,\n   143.387604;-64.445183;-17.269999;,\n   173.195267;-79.735161;-9.649997;,\n   194.066788;-90.482391;-7.110003;,\n   213.103455;-109.579109;-5.589998;,\n   223.323807;-117.138016;-14.409783;,\n   -54.473625;-70.668358;-71.370003;,\n   -53.687107;-68.761032;-73.660011;,\n   -32.965847;-60.505638;-64.520004;,\n   -12.362958;-70.023148;-77.220001;,\n   -43.310638;-71.045502;-80.009995;,\n   -25.197519;-72.225266;-80.769997;,\n   -184.310028;-107.456978;-7.870005;,\n   -197.509445;-115.066803;-4.569998;,\n   254.689590;-162.297256;-63.250000;,\n   237.179489;-141.742661;-73.150002;,\n   257.696564;-171.556595;-86.610001;,\n   242.654434;-119.142982;-20.904961;,\n   250.899612;-137.325058;-9.649997;,\n   256.736420;-146.928177;-5.840001;,\n   233.837677;-113.330627;-24.129999;,\n   -204.366486;-108.193924;-3.809996;,\n   -202.401138;-113.205154;-4.829995;,\n   -42.926811;-72.887756;-78.230003;,\n   -25.028708;-73.061371;-79.249992;,\n   233.005615;-124.019302;-52.319996;,\n   229.454300;-126.607849;-52.319996;,\n   235.158325;-143.347824;-73.150002;,\n   255.426651;-154.044296;-21.590004;,\n   117.346848;105.419968;0.000000;,\n   -130.062363;-62.004459;31.750000;;\n   564;\n   3;3,2,1;,\n   3;1,0,3;,\n   3;5,4,2;,\n   3;2,3,5;,\n   3;6,4,5;,\n   3;5,7,6;,\n   3;8,6,7;,\n   3;11,10,9;,\n   3;12,13,3;,\n   3;3,0,12;,\n   3;14,5,3;,\n   3;3,13,14;,\n   3;7,5,14;,\n   3;17,16,15;,\n   3;19,18,15;,\n   3;15,16,19;,\n   3;21,160,20;,\n   3;21,23,22;,\n   3;23,21,20;,\n   3;24,21,22;,\n   3;22,25,24;,\n   3;0,1,24;,\n   3;24,25,0;,\n   3;26,0,25;,\n   3;27,12,0;,\n   3;0,26,27;,\n   3;27,28,9;,\n   3;9,12,27;,\n   3;11,9,28;,\n   3;30,11,28;,\n   3;28,29,30;,\n   3;31,30,29;,\n   3;29,32,31;,\n   3;33,31,32;,\n   3;32,34,33;,\n   3;35,33,34;,\n   3;34,36,35;,\n   3;37,35,36;,\n   3;36,38,37;,\n   3;39,37,38;,\n   3;38,40,39;,\n   3;23,19,41;,\n   3;22,23,41;,\n   3;42,22,41;,\n   3;42,43,22;,\n   3;25,22,43;,\n   3;43,44,25;,\n   3;26,25,44;,\n   3;44,45,26;,\n   3;27,26,45;,\n   3;45,46,27;,\n   3;28,27,46;,\n   3;46,47,28;,\n   3;48,29,28;,\n   3;28,47,48;,\n   3;32,29,48;,\n   3;50,49,42;,\n   3;42,41,50;,\n   3;19,51,50;,\n   3;50,41,19;,\n   3;52,51,19;,\n   3;19,16,52;,\n   3;53,52,16;,\n   3;50,55,54;,\n   3;54,49,50;,\n   3;51,55,50;,\n   3;53,56,52;,\n   3;59,58,57;,\n   3;57,56,59;,\n   3;62,61,60;,\n   3;60,63,62;,\n   3;17,63,53;,\n   3;53,16,17;,\n   3;62,63,17;,\n   3;65,51,64;,\n   3;64,66,65;,\n   3;51,52,67;,\n   3;67,64,51;,\n   3;66,64,67;,\n   3;67,68,66;,\n   3;57,68,67;,\n   3;67,56,57;,\n   3;69,57,58;,\n   3;58,70,69;,\n   3;71,68,57;,\n   3;57,69,71;,\n   3;72,66,68;,\n   3;283,73,72;,\n   3;72,71,74;,\n   3;56,53,63;,\n   3;65,66,75;,\n   3;76,65,75;,\n   3;54,76,75;,\n   3;77,54,75;,\n   3;72,77,75;,\n   3;66,72,75;,\n   3;69,70,79;,\n   3;79,78,69;,\n   3;71,69,78;,\n   3;78,74,71;,\n   3;283,74,80;,\n   3;283,81,73;,\n   3;81,283,80;,\n   3;82,80,74;,\n   3;74,83,82;,\n   3;84,73,81;,\n   3;81,85,84;,\n   3;87,86,73;,\n   3;73,84,87;,\n   3;86,77,73;,\n   3;88,54,77;,\n   3;77,86,88;,\n   3;89,42,49;,\n   3;89,49,88;,\n   3;88,49,54;,\n   3;90,88,86;,\n   3;86,87,90;,\n   3;91,90,87;,\n   3;87,92,91;,\n   3;93,91,92;,\n   3;92,94,93;,\n   3;95,93,94;,\n   3;94,96,95;,\n   3;97,95,96;,\n   3;96,98,97;,\n   3;99,97,98;,\n   3;98,100,99;,\n   3;101,99,100;,\n   3;100,102,101;,\n   3;103,101,102;,\n   3;102,104,103;,\n   3;105,103,104;,\n   3;104,106,105;,\n   3;89,88,90;,\n   3;43,89,90;,\n   3;42,89,43;,\n   3;44,43,90;,\n   3;90,91,44;,\n   3;45,44,91;,\n   3;91,93,45;,\n   3;46,45,93;,\n   3;93,95,46;,\n   3;47,46,95;,\n   3;95,97,47;,\n   3;48,47,97;,\n   3;97,99,48;,\n   3;32,48,99;,\n   3;99,101,32;,\n   3;34,32,101;,\n   3;101,103,34;,\n   3;36,34,103;,\n   3;103,105,36;,\n   3;107,38,36;,\n   3;36,105,107;,\n   3;40,38,107;,\n   3;92,87,84;,\n   3;84,108,92;,\n   3;94,92,108;,\n   3;108,109,94;,\n   3;96,94,109;,\n   3;109,110,96;,\n   3;98,96,110;,\n   3;110,111,98;,\n   3;100,98,111;,\n   3;111,112,100;,\n   3;102,100,112;,\n   3;112,113,102;,\n   3;104,102,113;,\n   3;113,114,104;,\n   3;106,104,114;,\n   3;114,115,106;,\n   3;116,106,115;,\n   3;117,84,85;,\n   3;85,118,117;,\n   3;108,84,117;,\n   3;117,119,108;,\n   3;121,120,119;,\n   3;121,119,122;,\n   3;122,119,117;,\n   3;123,109,108;,\n   3;108,124,123;,\n   3;126,112,111;,\n   3;111,125,126;,\n   3;128,115,114;,\n   3;114,127,128;,\n   3;130,85,81;,\n   3;81,129,130;,\n   3;124,108,85;,\n   3;85,130,124;,\n   3;129,81,80;,\n   3;80,131,129;,\n   3;131,80,82;,\n   3;82,132,131;,\n   3;132,82,134;,\n   3;134,133,132;,\n   3;82,83,134;,\n   3;136,135,133;,\n   3;133,134,136;,\n   3;139,138,137;,\n   3;40,141,140;,\n   3;140,142,40;,\n   3;142,140,143;,\n   3;143,144,142;,\n   3;106,145,107;,\n   3;107,105,106;,\n   3;116,145,106;,\n   3;59,56,63;,\n   3;63,60,59;,\n   3;61,147,146;,\n   3;146,60,61;,\n   3;59,60,146;,\n   3;146,58,59;,\n   3;74,78,83;,\n   3;79,134,83;,\n   3;83,78,79;,\n   3;134,79,136;,\n   3;148,136,79;,\n   3;79,70,148;,\n   3;58,146,148;,\n   3;148,70,58;,\n   3;149,135,136;,\n   3;136,148,149;,\n   3;146,147,149;,\n   3;149,148,146;,\n   3;55,51,65;,\n   3;76,54,55;,\n   3;73,77,72;,\n   3;56,67,52;,\n   3;65,76,55;,\n   3;151,150,121;,\n   3;121,122,151;,\n   3;151,122,117;,\n   3;117,118,151;,\n   3;120,121,150;,\n   3;108,119,118;,\n   3;118,85,108;,\n   3;119,120,150;,\n   3;119,151,118;,\n   3;150,151,119;,\n   3;10,13,12;,\n   3;12,9,10;,\n   3;10,152,14;,\n   3;14,13,10;,\n   3;7,152,282;,\n   3;125,111,110;,\n   3;110,153,125;,\n   3;153,110,109;,\n   3;109,123,153;,\n   3;127,114,113;,\n   3;113,154,127;,\n   3;112,126,154;,\n   3;154,113,112;,\n   3;115,128,155;,\n   3;155,116,115;,\n   3;157,156,138;,\n   3;138,158,157;,\n   3;157,158,145;,\n   3;145,116,157;,\n   3;137,138,156;,\n   3;40,142,39;,\n   3;116,155,144;,\n   3;116,144,143;,\n   3;143,159,116;,\n   3;116,159,157;,\n   3;157,159,139;,\n   3;139,156,157;,\n   3;156,139,137;,\n   3;158,138,139;,\n   3;139,159,158;,\n   3;159,143,140;,\n   3;140,158,159;,\n   3;158,140,141;,\n   3;158,141,145;,\n   3;141,40,107;,\n   3;107,145,141;,\n   3;18,19,20;,\n   3;20,160,18;,\n   3;19,23,20;,\n   3;1,2,161;,\n   3;161,162,1;,\n   3;2,4,163;,\n   3;163,161,2;,\n   3;163,4,6;,\n   3;6,164,163;,\n   3;164,6,8;,\n   3;165,10,11;,\n   3;167,162,161;,\n   3;161,166,167;,\n   3;161,163,168;,\n   3;168,166,161;,\n   3;168,163,164;,\n   3;15,169,17;,\n   3;15,18,170;,\n   3;170,169,15;,\n   3;171,160,21;,\n   3;21,172,171;,\n   3;172,21,173;,\n   3;173,21,24;,\n   3;24,174,173;,\n   3;24,1,162;,\n   3;162,174,24;,\n   3;174,162,175;,\n   3;162,167,176;,\n   3;176,175,162;,\n   3;176,167,165;,\n   3;165,177,176;,\n   3;177,165,11;,\n   3;177,11,30;,\n   3;30,178,177;,\n   3;178,30,31;,\n   3;31,179,178;,\n   3;179,31,33;,\n   3;33,180,179;,\n   3;180,33,35;,\n   3;35,181,180;,\n   3;181,35,37;,\n   3;37,182,181;,\n   3;182,37,39;,\n   3;39,183,182;,\n   3;184,170,172;,\n   3;173,185,184;,\n   3;173,184,172;,\n   3;173,186,185;,\n   3;186,173,174;,\n   3;174,187,186;,\n   3;187,174,175;,\n   3;175,188,187;,\n   3;188,175,176;,\n   3;176,189,188;,\n   3;189,176,177;,\n   3;177,190,189;,\n   3;177,178,191;,\n   3;191,190,177;,\n   3;191,178,179;,\n   3;185,193,192;,\n   3;192,184,185;,\n   3;192,194,170;,\n   3;170,184,192;,\n   3;170,194,195;,\n   3;195,169,170;,\n   3;169,195,196;,\n   3;198,197,192;,\n   3;192,193,198;,\n   3;192,197,194;,\n   3;195,199,196;,\n   3;202,201,200;,\n   3;200,199,202;,\n   3;204,61,62;,\n   3;62,203,204;,\n   3;196,203,17;,\n   3;17,169,196;,\n   3;17,203,62;,\n   3;207,194,206;,\n   3;206,205,207;,\n   3;208,195,194;,\n   3;194,207,208;,\n   3;208,207,205;,\n   3;205,209,208;,\n   3;208,209,202;,\n   3;202,199,208;,\n   3;201,202,211;,\n   3;211,210,201;,\n   3;202,209,212;,\n   3;212,211,202;,\n   3;209,205,213;,\n   3;213,221,214;,\n   3;214,212,213;,\n   3;203,196,199;,\n   3;216,205,206;,\n   3;216,206,217;,\n   3;216,217,198;,\n   3;216,198,218;,\n   3;216,218,213;,\n   3;216,213,205;,\n   3;219,210,211;,\n   3;211,220,219;,\n   3;220,211,212;,\n   3;212,214,220;,\n   3;222,214,221;,\n   3;221,223,222;,\n   3;223,221,215;,\n   3;222,225,224;,\n   3;224,214,222;,\n   3;223,215,227;,\n   3;227,226,223;,\n   3;215,229,228;,\n   3;228,227,215;,\n   3;215,218,229;,\n   3;218,198,230;,\n   3;230,229,218;,\n   3;193,230,198;,\n   3;230,193,231;,\n   3;185,231,193;,\n   3;229,230,232;,\n   3;232,228,229;,\n   3;228,232,234;,\n   3;234,233,228;,\n   3;233,234,236;,\n   3;236,235,233;,\n   3;235,236,238;,\n   3;238,237,235;,\n   3;237,238,240;,\n   3;240,239,237;,\n   3;239,240,242;,\n   3;242,241,239;,\n   3;241,242,244;,\n   3;244,243,241;,\n   3;243,244,246;,\n   3;246,245,243;,\n   3;245,246,248;,\n   3;248,247,245;,\n   3;232,230,231;,\n   3;232,231,186;,\n   3;186,231,185;,\n   3;232,186,187;,\n   3;187,234,232;,\n   3;234,187,188;,\n   3;188,236,234;,\n   3;236,188,189;,\n   3;189,238,236;,\n   3;238,189,190;,\n   3;190,240,238;,\n   3;240,190,191;,\n   3;191,242,240;,\n   3;242,191,179;,\n   3;179,244,242;,\n   3;244,179,180;,\n   3;180,246,244;,\n   3;246,180,181;,\n   3;181,248,246;,\n   3;249,248,181;,\n   3;181,182,249;,\n   3;249,182,183;,\n   3;227,228,233;,\n   3;233,250,227;,\n   3;250,233,235;,\n   3;235,251,250;,\n   3;251,235,237;,\n   3;237,252,251;,\n   3;252,237,239;,\n   3;239,253,252;,\n   3;253,239,241;,\n   3;241,254,253;,\n   3;254,241,243;,\n   3;243,255,254;,\n   3;255,243,245;,\n   3;245,256,255;,\n   3;256,245,247;,\n   3;247,257,256;,\n   3;257,247,258;,\n   3;226,227,260;,\n   3;260,259,226;,\n   3;260,227,250;,\n   3;250,261,260;,\n   3;263,260,261;,\n   3;263,261,264;,\n   3;264,261,262;,\n   3;250,251,123;,\n   3;123,124,250;,\n   3;253,254,126;,\n   3;126,125,253;,\n   3;256,257,128;,\n   3;128,127,256;,\n   3;223,226,130;,\n   3;130,129,223;,\n   3;226,250,124;,\n   3;124,130,226;,\n   3;222,223,129;,\n   3;129,131,222;,\n   3;225,222,131;,\n   3;131,132,225;,\n   3;265,225,132;,\n   3;132,133,265;,\n   3;265,224,225;,\n   3;133,135,266;,\n   3;266,265,133;,\n   3;269,268,267;,\n   3;271,270,183;,\n   3;183,142,271;,\n   3;272,271,142;,\n   3;142,144,272;,\n   3;249,273,247;,\n   3;247,248,249;,\n   3;247,273,258;,\n   3;203,199,200;,\n   3;200,204,203;,\n   3;274,147,61;,\n   3;61,204,274;,\n   3;274,204,200;,\n   3;200,201,274;,\n   3;224,220,214;,\n   3;224,265,219;,\n   3;219,220,224;,\n   3;266,219,265;,\n   3;266,275,210;,\n   3;210,219,266;,\n   3;275,274,201;,\n   3;201,210,275;,\n   3;266,135,149;,\n   3;149,275,266;,\n   3;149,147,274;,\n   3;274,275,149;,\n   3;206,194,197;,\n   3;197,198,217;,\n   3;213,218,215;,\n   3;195,208,199;,\n   3;197,217,206;,\n   3;264,277,276;,\n   3;276,263,264;,\n   3;260,263,276;,\n   3;276,259,260;,\n   3;277,264,262;,\n   3;259,261,250;,\n   3;250,226,259;,\n   3;261,276,277;,\n   3;276,261,259;,\n   3;262,261,277;,\n   3;167,166,10;,\n   3;10,165,167;,\n   3;168,152,10;,\n   3;10,166,168;,\n   3;152,164,282;,\n   3;164,152,168;,\n   3;252,253,125;,\n   3;125,153,252;,\n   3;251,252,153;,\n   3;153,123,251;,\n   3;255,256,127;,\n   3;127,154,255;,\n   3;154,126,254;,\n   3;254,255,154;,\n   3;155,128,257;,\n   3;257,258,155;,\n   3;268,280,279;,\n   3;279,278,268;,\n   3;273,278,279;,\n   3;279,258,273;,\n   3;280,268,269;,\n   3;39,142,183;,\n   3;144,155,258;,\n   3;258,281,272;,\n   3;281,258,279;,\n   3;144,258,272;,\n   3;267,281,279;,\n   3;279,280,267;,\n   3;269,267,280;,\n   3;267,268,278;,\n   3;278,281,267;,\n   3;271,272,281;,\n   3;281,278,271;,\n   3;270,271,278;,\n   3;273,270,278;,\n   3;249,183,270;,\n   3;270,273,249;,\n   3;171,170,18;,\n   3;18,160,171;,\n   3;171,172,170;,\n   3;213,212,209;,\n   3;68,71,72;,\n   3;152,7,14;,\n   3;7,282,8;,\n   3;282,164,8;,\n   3;221,213,215;,\n   3;283,72,74;;\n\n   MeshNormals {\n    284;\n    0.154061;0.776306;-0.611241;,\n    0.485218;0.874393;0.000000;,\n    0.501943;0.864901;0.000000;,\n    0.196937;0.400873;-0.894716;,\n    0.247004;0.969015;0.000000;,\n    0.094987;0.474935;-0.874880;,\n    -0.062005;0.998076;0.000000;,\n    -0.097973;0.156957;-0.982734;,\n    -0.439192;0.898393;0.000000;,\n    -0.413192;0.562262;-0.716334;,\n    -0.940811;0.338932;0.000000;,\n    -0.662250;0.749283;0.000000;,\n    -0.120003;0.363010;-0.924025;,\n    -0.166943;0.091969;-0.981668;,\n    -0.125951;0.028989;-0.991613;,\n    0.648896;0.760877;0.000000;,\n    0.718366;0.479244;-0.504257;,\n    0.906668;0.421845;0.000000;,\n    0.562064;0.827094;0.000000;,\n    0.584894;0.676877;-0.446919;,\n    0.504111;0.830183;-0.238052;,\n    0.463932;0.885871;0.000000;,\n    0.388073;0.781146;-0.489091;,\n    0.487116;0.817195;-0.308074;,\n    0.276965;0.960880;0.000000;,\n    0.183028;0.740112;-0.647098;,\n    0.012006;0.607295;-0.794386;,\n    -0.090980;0.587870;-0.803823;,\n    -0.290048;0.665110;-0.688114;,\n    -0.282038;0.781104;-0.557074;,\n    -0.294858;0.955541;0.000000;,\n    -0.343108;0.939296;0.000000;,\n    -0.294119;0.588239;-0.753306;,\n    -0.405953;0.913894;0.000000;,\n    -0.296897;0.389865;-0.871698;,\n    -0.439192;0.898393;0.000000;,\n    -0.122002;0.459008;-0.880015;,\n    -0.461951;0.886906;0.000000;,\n    -0.418980;0.696967;-0.581973;,\n    -0.698049;0.716050;0.000000;,\n    -0.510981;0.773972;-0.373986;,\n    0.425814;0.721684;-0.545761;,\n    0.254105;0.553228;-0.793328;,\n    0.221065;0.500148;-0.837247;,\n    0.109016;0.493074;-0.863130;,\n    0.004000;0.473022;-0.881041;,\n    -0.098006;0.416026;-0.904056;,\n    -0.154958;0.491868;-0.856770;,\n    -0.224007;0.558016;-0.799024;,\n    0.248118;0.211100;-0.945449;,\n    0.470276;0.287169;-0.834490;,\n    0.484036;0.255019;-0.837063;,\n    0.650755;0.387854;-0.652754;,\n    0.754233;0.329102;-0.568176;,\n    0.307975;0.029998;-0.950922;,\n    0.393956;0.076991;-0.915899;,\n    0.637006;0.314003;-0.704007;,\n    0.315966;-0.113988;-0.941898;,\n    0.236981;-0.112991;-0.964921;,\n    0.440010;0.073002;-0.895021;,\n    0.819214;0.291076;-0.494129;,\n    0.998750;-0.049987;0.000000;,\n    0.839060;0.544039;0.000000;,\n    0.761763;0.472853;-0.442862;,\n    0.262104;0.143057;-0.954378;,\n    0.333060;0.182033;-0.925168;,\n    0.303127;0.093039;-0.948397;,\n    0.450081;0.071013;-0.890160;,\n    0.389056;-0.114016;-0.914131;,\n    0.402051;0.080010;-0.912115;,\n    0.314917;0.050986;-0.947749;,\n    0.460009;-0.058001;-0.886018;,\n    0.308028;-0.066006;-0.949085;,\n    0.185032;-0.345060;-0.920161;,\n    0.207039;-0.351067;-0.913174;,\n    0.293926;0.184953;-0.937763;,\n    0.357144;0.200081;-0.912368;,\n    0.265955;-0.016997;-0.963836;,\n    0.362108;-0.040012;-0.931277;,\n    0.213986;-0.200987;-0.955936;,\n    0.039998;-0.792955;-0.607966;,\n    0.014005;-0.780304;-0.625244;,\n    -0.060023;-0.860329;-0.506193;,\n    -0.059020;-0.551191;-0.832289;,\n    0.244024;-0.230023;-0.942094;,\n    0.154949;-0.900702;-0.405866;,\n    0.245995;-0.049999;-0.967981;,\n    0.146029;-0.013003;-0.989195;,\n    0.223974;0.129985;-0.965888;,\n    0.170926;0.373839;-0.911608;,\n    0.198048;0.332081;-0.922225;,\n    0.083043;0.346180;-0.934486;,\n    0.008002;-0.058016;-0.998284;,\n    -0.019998;0.292973;-0.955912;,\n    -0.025010;-0.112044;-0.993388;,\n    -0.070977;0.301903;-0.950693;,\n    -0.042022;-0.123063;-0.991509;,\n    -0.139023;0.308051;-0.941157;,\n    -0.150992;-0.243988;-0.957952;,\n    -0.241906;0.203920;-0.948630;,\n    -0.193099;-0.320164;-0.927474;,\n    -0.276012;0.099004;-0.956042;,\n    -0.200959;-0.352928;-0.913814;,\n    -0.255139;0.027015;-0.966527;,\n    -0.188033;-0.324057;-0.927163;,\n    -0.003999;0.128954;-0.991643;,\n    0.169032;-0.269050;-0.948177;,\n    -0.017001;0.597029;-0.802039;,\n    -0.109988;-0.678926;-0.725921;,\n    -0.012000;-0.715011;-0.699010;,\n    -0.035000;-0.736993;-0.674994;,\n    -0.136038;-0.788221;-0.600168;,\n    -0.127993;-0.788958;-0.600968;,\n    -0.133986;-0.784919;-0.604938;,\n    -0.066975;-0.746723;-0.661755;,\n    0.041008;-0.875162;-0.482089;,\n    0.145951;-0.968672;-0.200932;,\n    0.610009;0.187003;-0.770012;,\n    0.219989;-0.973951;0.054997;,\n    -0.661088;0.453060;0.598080;,\n    -0.294927;-0.849790;-0.436892;,\n    -0.045004;-0.269023;-0.962082;,\n    0.240915;0.144949;-0.959661;,\n    0.024992;-0.999688;0.000000;,\n    -0.112955;-0.993600;0.000000;,\n    -0.050985;-0.998699;0.000000;,\n    -0.087018;-0.996207;0.000000;,\n    -0.089003;-0.996031;0.000000;,\n    -0.042005;-0.999117;0.000000;,\n    -0.159044;-0.987272;0.000000;,\n    -0.141981;-0.989869;0.000000;,\n    -0.006000;-0.999982;0.000000;,\n    -0.221059;-0.975260;0.000000;,\n    -0.341020;-0.940056;0.000000;,\n    -0.259028;-0.808087;-0.529057;,\n    0.171046;-0.985263;0.000000;,\n    0.083988;-0.813887;-0.574920;,\n    0.282084;-0.014004;-0.959287;,\n    0.522928;0.487933;-0.698904;,\n    -0.987925;0.061995;0.141989;,\n    -0.262064;0.935228;-0.238058;,\n    -0.214934;0.851739;-0.477854;,\n    -0.389085;0.921202;0.000000;,\n    -0.613160;0.678177;0.405106;,\n    -0.576212;-0.817300;0.000000;,\n    0.599068;0.322036;-0.733083;,\n    0.795508;-0.223143;-0.563360;,\n    0.981792;-0.189960;0.000000;,\n    0.498180;-0.243088;-0.832301;,\n    0.875052;-0.484029;0.000000;,\n    -0.016996;-0.993789;0.109977;,\n    0.265977;-0.929920;-0.253978;,\n    -0.911528;-0.411238;0.000000;,\n    -0.040008;-0.999199;0.000000;,\n    -0.086025;-0.996293;0.000000;,\n    -0.147998;-0.988988;0.000000;,\n    0.363007;-0.817016;-0.448009;,\n    0.698904;-0.652911;-0.291960;,\n    0.250048;0.876166;-0.412078;,\n    -0.995170;-0.015003;-0.097017;,\n    0.520074;0.854121;0.000000;,\n    0.196937;0.400873;0.894716;,\n    0.154061;0.776306;0.611241;,\n    0.094987;0.474935;0.874880;,\n    -0.097973;0.156957;0.982734;,\n    -0.413192;0.562262;0.716334;,\n    -0.166943;0.091969;0.981668;,\n    -0.120003;0.363010;0.924025;,\n    -0.125951;0.028989;0.991613;,\n    0.718366;0.479244;0.504257;,\n    0.584894;0.676877;0.446919;,\n    0.504111;0.830183;0.238052;,\n    0.487116;0.817195;0.308074;,\n    0.388073;0.781146;0.489091;,\n    0.183028;0.740112;0.647098;,\n    0.012006;0.607295;0.794386;,\n    -0.090980;0.587870;0.803823;,\n    -0.290048;0.665110;0.688114;,\n    -0.282038;0.781104;0.557074;,\n    -0.294119;0.588239;0.753306;,\n    -0.296897;0.389865;0.871698;,\n    -0.122002;0.459008;0.880015;,\n    -0.418980;0.696967;0.581973;,\n    -0.510981;0.773972;0.373986;,\n    0.425814;0.721684;0.545761;,\n    0.254105;0.553228;0.793328;,\n    0.221065;0.500148;0.837247;,\n    0.109016;0.493074;0.863130;,\n    0.004000;0.473022;0.881041;,\n    -0.098006;0.416026;0.904056;,\n    -0.154958;0.491868;0.856770;,\n    -0.224007;0.558016;0.799024;,\n    0.470276;0.287169;0.834490;,\n    0.248118;0.211100;0.945449;,\n    0.484036;0.255019;0.837063;,\n    0.650755;0.387854;0.652754;,\n    0.754233;0.329102;0.568176;,\n    0.393956;0.076991;0.915899;,\n    0.307975;0.029998;0.950922;,\n    0.637006;0.314003;0.704007;,\n    0.440010;0.073002;0.895021;,\n    0.236981;-0.112991;0.964921;,\n    0.315966;-0.113988;0.941898;,\n    0.761763;0.472853;0.442862;,\n    0.819214;0.291076;0.494129;,\n    0.303127;0.093039;0.948397;,\n    0.333060;0.182033;0.925168;,\n    0.262104;0.143057;0.954378;,\n    0.450081;0.071013;0.890160;,\n    0.389056;-0.114016;0.914131;,\n    0.290968;-0.039996;0.955896;,\n    0.402051;0.080010;0.912115;,\n    0.460009;-0.058001;0.886018;,\n    0.308028;-0.066006;0.949085;,\n    0.234052;-0.276061;0.932207;,\n    0.185032;-0.345060;0.920161;,\n    0.293926;0.184953;0.937763;,\n    0.357144;0.200081;0.912368;,\n    0.265955;-0.016997;0.963836;,\n    0.241078;-0.187060;0.952308;,\n    0.362108;-0.040012;0.931277;,\n    0.091007;-0.381030;0.920073;,\n    0.026983;-0.806492;0.590628;,\n    0.014005;-0.780304;0.625244;,\n    0.048995;-0.568942;0.820917;,\n    -0.044988;-0.930742;0.362899;,\n    0.154949;-0.900702;0.405866;,\n    0.244024;-0.230023;0.942094;,\n    0.146029;-0.013003;0.989195;,\n    0.245995;-0.049999;0.967981;,\n    0.223974;0.129985;0.965888;,\n    0.170926;0.373839;0.911608;,\n    0.198048;0.332081;0.922225;,\n    0.008002;-0.058016;0.998284;,\n    0.083043;0.346180;0.934486;,\n    -0.025010;-0.112044;0.993388;,\n    -0.019998;0.292973;0.955912;,\n    -0.042022;-0.123063;0.991509;,\n    -0.070977;0.301903;0.950693;,\n    -0.150992;-0.243988;0.957952;,\n    -0.139023;0.308051;0.941157;,\n    -0.193099;-0.320164;0.927474;,\n    -0.241906;0.203920;0.948630;,\n    -0.200959;-0.352928;0.913814;,\n    -0.276012;0.099004;0.956042;,\n    -0.188033;-0.324057;0.927163;,\n    -0.255139;0.027015;0.966527;,\n    0.169032;-0.269050;0.948177;,\n    -0.003999;0.128954;0.991643;,\n    -0.017001;0.597029;0.802039;,\n    -0.109988;-0.678926;0.725921;,\n    -0.012000;-0.715011;0.699010;,\n    -0.035000;-0.736993;0.674994;,\n    -0.136038;-0.788221;0.600168;,\n    -0.127993;-0.788958;0.600968;,\n    -0.133986;-0.784919;0.604938;,\n    -0.066975;-0.746723;0.661755;,\n    0.041008;-0.875162;0.482089;,\n    0.145951;-0.968672;0.200932;,\n    0.219989;-0.973951;-0.054997;,\n    0.610009;0.187003;0.770012;,\n    -0.661088;0.453060;-0.598080;,\n    -0.294927;-0.849790;0.436892;,\n    0.240915;0.144949;0.959661;,\n    -0.045004;-0.269023;0.962082;,\n    -0.259028;-0.808087;0.529057;,\n    0.154023;-0.708106;0.689103;,\n    -0.987925;0.061995;-0.141989;,\n    0.522928;0.487933;0.698904;,\n    0.282084;-0.014004;0.959287;,\n    -0.214934;0.851739;0.477854;,\n    -0.262064;0.935228;0.238058;,\n    -0.613160;0.678177;-0.405106;,\n    0.599068;0.322036;0.733083;,\n    0.795508;-0.223143;0.563360;,\n    0.483976;-0.310984;0.817959;,\n    0.265977;-0.929920;0.253978;,\n    -0.016996;-0.993789;-0.109977;,\n    0.250048;0.876166;0.412078;,\n    0.698904;-0.652911;0.291960;,\n    0.363007;-0.817016;0.448009;,\n    -0.995170;-0.015003;0.097017;,\n    -0.991904;-0.126988;0.000000;,\n    0.091007;-0.381030;-0.920073;;\n    564;\n    3;3,2,1;,\n    3;1,0,3;,\n    3;5,4,2;,\n    3;2,3,5;,\n    3;6,4,5;,\n    3;5,7,6;,\n    3;8,6,7;,\n    3;11,10,9;,\n    3;12,13,3;,\n    3;3,0,12;,\n    3;14,5,3;,\n    3;3,13,14;,\n    3;7,5,14;,\n    3;17,16,15;,\n    3;19,18,15;,\n    3;15,16,19;,\n    3;21,160,20;,\n    3;21,23,22;,\n    3;23,21,20;,\n    3;24,21,22;,\n    3;22,25,24;,\n    3;0,1,24;,\n    3;24,25,0;,\n    3;26,0,25;,\n    3;27,12,0;,\n    3;0,26,27;,\n    3;27,28,9;,\n    3;9,12,27;,\n    3;11,9,28;,\n    3;30,11,28;,\n    3;28,29,30;,\n    3;31,30,29;,\n    3;29,32,31;,\n    3;33,31,32;,\n    3;32,34,33;,\n    3;35,33,34;,\n    3;34,36,35;,\n    3;37,35,36;,\n    3;36,38,37;,\n    3;39,37,38;,\n    3;38,40,39;,\n    3;23,19,41;,\n    3;22,23,41;,\n    3;42,22,41;,\n    3;42,43,22;,\n    3;25,22,43;,\n    3;43,44,25;,\n    3;26,25,44;,\n    3;44,45,26;,\n    3;27,26,45;,\n    3;45,46,27;,\n    3;28,27,46;,\n    3;46,47,28;,\n    3;48,29,28;,\n    3;28,47,48;,\n    3;32,29,48;,\n    3;50,49,42;,\n    3;42,41,50;,\n    3;19,51,50;,\n    3;50,41,19;,\n    3;52,51,19;,\n    3;19,16,52;,\n    3;53,52,16;,\n    3;50,55,54;,\n    3;54,49,50;,\n    3;51,55,50;,\n    3;53,56,52;,\n    3;59,58,57;,\n    3;57,56,59;,\n    3;62,61,60;,\n    3;60,63,62;,\n    3;17,63,53;,\n    3;53,16,17;,\n    3;62,63,17;,\n    3;65,51,64;,\n    3;64,66,65;,\n    3;51,52,67;,\n    3;67,64,51;,\n    3;66,64,67;,\n    3;67,68,66;,\n    3;57,68,67;,\n    3;67,56,57;,\n    3;69,57,58;,\n    3;58,70,69;,\n    3;71,68,57;,\n    3;57,69,71;,\n    3;72,66,68;,\n    3;283,73,72;,\n    3;72,71,74;,\n    3;56,53,63;,\n    3;65,66,75;,\n    3;76,65,75;,\n    3;54,76,75;,\n    3;77,54,75;,\n    3;72,77,75;,\n    3;66,72,75;,\n    3;69,70,79;,\n    3;79,78,69;,\n    3;71,69,78;,\n    3;78,74,71;,\n    3;283,74,80;,\n    3;283,81,73;,\n    3;81,283,80;,\n    3;82,80,74;,\n    3;74,83,82;,\n    3;84,73,81;,\n    3;81,85,84;,\n    3;87,86,73;,\n    3;73,84,87;,\n    3;86,77,73;,\n    3;88,54,77;,\n    3;77,86,88;,\n    3;89,42,49;,\n    3;89,49,88;,\n    3;88,49,54;,\n    3;90,88,86;,\n    3;86,87,90;,\n    3;91,90,87;,\n    3;87,92,91;,\n    3;93,91,92;,\n    3;92,94,93;,\n    3;95,93,94;,\n    3;94,96,95;,\n    3;97,95,96;,\n    3;96,98,97;,\n    3;99,97,98;,\n    3;98,100,99;,\n    3;101,99,100;,\n    3;100,102,101;,\n    3;103,101,102;,\n    3;102,104,103;,\n    3;105,103,104;,\n    3;104,106,105;,\n    3;89,88,90;,\n    3;43,89,90;,\n    3;42,89,43;,\n    3;44,43,90;,\n    3;90,91,44;,\n    3;45,44,91;,\n    3;91,93,45;,\n    3;46,45,93;,\n    3;93,95,46;,\n    3;47,46,95;,\n    3;95,97,47;,\n    3;48,47,97;,\n    3;97,99,48;,\n    3;32,48,99;,\n    3;99,101,32;,\n    3;34,32,101;,\n    3;101,103,34;,\n    3;36,34,103;,\n    3;103,105,36;,\n    3;107,38,36;,\n    3;36,105,107;,\n    3;40,38,107;,\n    3;92,87,84;,\n    3;84,108,92;,\n    3;94,92,108;,\n    3;108,109,94;,\n    3;96,94,109;,\n    3;109,110,96;,\n    3;98,96,110;,\n    3;110,111,98;,\n    3;100,98,111;,\n    3;111,112,100;,\n    3;102,100,112;,\n    3;112,113,102;,\n    3;104,102,113;,\n    3;113,114,104;,\n    3;106,104,114;,\n    3;114,115,106;,\n    3;116,106,115;,\n    3;117,84,85;,\n    3;85,118,117;,\n    3;108,84,117;,\n    3;117,119,108;,\n    3;121,120,119;,\n    3;121,119,122;,\n    3;122,119,117;,\n    3;123,109,108;,\n    3;108,124,123;,\n    3;126,112,111;,\n    3;111,125,126;,\n    3;128,115,114;,\n    3;114,127,128;,\n    3;130,85,81;,\n    3;81,129,130;,\n    3;124,108,85;,\n    3;85,130,124;,\n    3;129,81,80;,\n    3;80,131,129;,\n    3;131,80,82;,\n    3;82,132,131;,\n    3;132,82,134;,\n    3;134,133,132;,\n    3;82,83,134;,\n    3;136,135,133;,\n    3;133,134,136;,\n    3;139,138,137;,\n    3;40,141,140;,\n    3;140,142,40;,\n    3;142,140,143;,\n    3;143,144,142;,\n    3;106,145,107;,\n    3;107,105,106;,\n    3;116,145,106;,\n    3;59,56,63;,\n    3;63,60,59;,\n    3;61,147,146;,\n    3;146,60,61;,\n    3;59,60,146;,\n    3;146,58,59;,\n    3;74,78,83;,\n    3;79,134,83;,\n    3;83,78,79;,\n    3;134,79,136;,\n    3;148,136,79;,\n    3;79,70,148;,\n    3;58,146,148;,\n    3;148,70,58;,\n    3;149,135,136;,\n    3;136,148,149;,\n    3;146,147,149;,\n    3;149,148,146;,\n    3;55,51,65;,\n    3;76,54,55;,\n    3;73,77,72;,\n    3;56,67,52;,\n    3;65,76,55;,\n    3;151,150,121;,\n    3;121,122,151;,\n    3;151,122,117;,\n    3;117,118,151;,\n    3;120,121,150;,\n    3;108,119,118;,\n    3;118,85,108;,\n    3;119,120,150;,\n    3;119,151,118;,\n    3;150,151,119;,\n    3;10,13,12;,\n    3;12,9,10;,\n    3;10,152,14;,\n    3;14,13,10;,\n    3;7,152,282;,\n    3;125,111,110;,\n    3;110,153,125;,\n    3;153,110,109;,\n    3;109,123,153;,\n    3;127,114,113;,\n    3;113,154,127;,\n    3;112,126,154;,\n    3;154,113,112;,\n    3;115,128,155;,\n    3;155,116,115;,\n    3;157,156,138;,\n    3;138,158,157;,\n    3;157,158,145;,\n    3;145,116,157;,\n    3;137,138,156;,\n    3;40,142,39;,\n    3;116,155,144;,\n    3;116,144,143;,\n    3;143,159,116;,\n    3;116,159,157;,\n    3;157,159,139;,\n    3;139,156,157;,\n    3;156,139,137;,\n    3;158,138,139;,\n    3;139,159,158;,\n    3;159,143,140;,\n    3;140,158,159;,\n    3;158,140,141;,\n    3;158,141,145;,\n    3;141,40,107;,\n    3;107,145,141;,\n    3;18,19,20;,\n    3;20,160,18;,\n    3;19,23,20;,\n    3;1,2,161;,\n    3;161,162,1;,\n    3;2,4,163;,\n    3;163,161,2;,\n    3;163,4,6;,\n    3;6,164,163;,\n    3;164,6,8;,\n    3;165,10,11;,\n    3;167,162,161;,\n    3;161,166,167;,\n    3;161,163,168;,\n    3;168,166,161;,\n    3;168,163,164;,\n    3;15,169,17;,\n    3;15,18,170;,\n    3;170,169,15;,\n    3;171,160,21;,\n    3;21,172,171;,\n    3;172,21,173;,\n    3;173,21,24;,\n    3;24,174,173;,\n    3;24,1,162;,\n    3;162,174,24;,\n    3;174,162,175;,\n    3;162,167,176;,\n    3;176,175,162;,\n    3;176,167,165;,\n    3;165,177,176;,\n    3;177,165,11;,\n    3;177,11,30;,\n    3;30,178,177;,\n    3;178,30,31;,\n    3;31,179,178;,\n    3;179,31,33;,\n    3;33,180,179;,\n    3;180,33,35;,\n    3;35,181,180;,\n    3;181,35,37;,\n    3;37,182,181;,\n    3;182,37,39;,\n    3;39,183,182;,\n    3;184,170,172;,\n    3;173,185,184;,\n    3;173,184,172;,\n    3;173,186,185;,\n    3;186,173,174;,\n    3;174,187,186;,\n    3;187,174,175;,\n    3;175,188,187;,\n    3;188,175,176;,\n    3;176,189,188;,\n    3;189,176,177;,\n    3;177,190,189;,\n    3;177,178,191;,\n    3;191,190,177;,\n    3;191,178,179;,\n    3;185,193,192;,\n    3;192,184,185;,\n    3;192,194,170;,\n    3;170,184,192;,\n    3;170,194,195;,\n    3;195,169,170;,\n    3;169,195,196;,\n    3;198,197,192;,\n    3;192,193,198;,\n    3;192,197,194;,\n    3;195,199,196;,\n    3;202,201,200;,\n    3;200,199,202;,\n    3;204,61,62;,\n    3;62,203,204;,\n    3;196,203,17;,\n    3;17,169,196;,\n    3;17,203,62;,\n    3;207,194,206;,\n    3;206,205,207;,\n    3;208,195,194;,\n    3;194,207,208;,\n    3;208,207,205;,\n    3;205,209,208;,\n    3;208,209,202;,\n    3;202,199,208;,\n    3;201,202,211;,\n    3;211,210,201;,\n    3;202,209,212;,\n    3;212,211,202;,\n    3;209,205,213;,\n    3;213,221,214;,\n    3;214,212,213;,\n    3;203,196,199;,\n    3;216,205,206;,\n    3;216,206,217;,\n    3;216,217,198;,\n    3;216,198,218;,\n    3;216,218,213;,\n    3;216,213,205;,\n    3;219,210,211;,\n    3;211,220,219;,\n    3;220,211,212;,\n    3;212,214,220;,\n    3;222,214,221;,\n    3;221,223,222;,\n    3;223,221,215;,\n    3;222,225,224;,\n    3;224,214,222;,\n    3;223,215,227;,\n    3;227,226,223;,\n    3;215,229,228;,\n    3;228,227,215;,\n    3;215,218,229;,\n    3;218,198,230;,\n    3;230,229,218;,\n    3;193,230,198;,\n    3;230,193,231;,\n    3;185,231,193;,\n    3;229,230,232;,\n    3;232,228,229;,\n    3;228,232,234;,\n    3;234,233,228;,\n    3;233,234,236;,\n    3;236,235,233;,\n    3;235,236,238;,\n    3;238,237,235;,\n    3;237,238,240;,\n    3;240,239,237;,\n    3;239,240,242;,\n    3;242,241,239;,\n    3;241,242,244;,\n    3;244,243,241;,\n    3;243,244,246;,\n    3;246,245,243;,\n    3;245,246,248;,\n    3;248,247,245;,\n    3;232,230,231;,\n    3;232,231,186;,\n    3;186,231,185;,\n    3;232,186,187;,\n    3;187,234,232;,\n    3;234,187,188;,\n    3;188,236,234;,\n    3;236,188,189;,\n    3;189,238,236;,\n    3;238,189,190;,\n    3;190,240,238;,\n    3;240,190,191;,\n    3;191,242,240;,\n    3;242,191,179;,\n    3;179,244,242;,\n    3;244,179,180;,\n    3;180,246,244;,\n    3;246,180,181;,\n    3;181,248,246;,\n    3;249,248,181;,\n    3;181,182,249;,\n    3;249,182,183;,\n    3;227,228,233;,\n    3;233,250,227;,\n    3;250,233,235;,\n    3;235,251,250;,\n    3;251,235,237;,\n    3;237,252,251;,\n    3;252,237,239;,\n    3;239,253,252;,\n    3;253,239,241;,\n    3;241,254,253;,\n    3;254,241,243;,\n    3;243,255,254;,\n    3;255,243,245;,\n    3;245,256,255;,\n    3;256,245,247;,\n    3;247,257,256;,\n    3;257,247,258;,\n    3;226,227,260;,\n    3;260,259,226;,\n    3;260,227,250;,\n    3;250,261,260;,\n    3;263,260,261;,\n    3;263,261,264;,\n    3;264,261,262;,\n    3;250,251,123;,\n    3;123,124,250;,\n    3;253,254,126;,\n    3;126,125,253;,\n    3;256,257,128;,\n    3;128,127,256;,\n    3;223,226,130;,\n    3;130,129,223;,\n    3;226,250,124;,\n    3;124,130,226;,\n    3;222,223,129;,\n    3;129,131,222;,\n    3;225,222,131;,\n    3;131,132,225;,\n    3;265,225,132;,\n    3;132,133,265;,\n    3;265,224,225;,\n    3;133,135,266;,\n    3;266,265,133;,\n    3;269,268,267;,\n    3;271,270,183;,\n    3;183,142,271;,\n    3;272,271,142;,\n    3;142,144,272;,\n    3;249,273,247;,\n    3;247,248,249;,\n    3;247,273,258;,\n    3;203,199,200;,\n    3;200,204,203;,\n    3;274,147,61;,\n    3;61,204,274;,\n    3;274,204,200;,\n    3;200,201,274;,\n    3;224,220,214;,\n    3;224,265,219;,\n    3;219,220,224;,\n    3;266,219,265;,\n    3;266,275,210;,\n    3;210,219,266;,\n    3;275,274,201;,\n    3;201,210,275;,\n    3;266,135,149;,\n    3;149,275,266;,\n    3;149,147,274;,\n    3;274,275,149;,\n    3;206,194,197;,\n    3;197,198,217;,\n    3;213,218,215;,\n    3;195,208,199;,\n    3;197,217,206;,\n    3;264,277,276;,\n    3;276,263,264;,\n    3;260,263,276;,\n    3;276,259,260;,\n    3;277,264,262;,\n    3;259,261,250;,\n    3;250,226,259;,\n    3;261,276,277;,\n    3;276,261,259;,\n    3;262,261,277;,\n    3;167,166,10;,\n    3;10,165,167;,\n    3;168,152,10;,\n    3;10,166,168;,\n    3;152,164,282;,\n    3;164,152,168;,\n    3;252,253,125;,\n    3;125,153,252;,\n    3;251,252,153;,\n    3;153,123,251;,\n    3;255,256,127;,\n    3;127,154,255;,\n    3;154,126,254;,\n    3;254,255,154;,\n    3;155,128,257;,\n    3;257,258,155;,\n    3;268,280,279;,\n    3;279,278,268;,\n    3;273,278,279;,\n    3;279,258,273;,\n    3;280,268,269;,\n    3;39,142,183;,\n    3;144,155,258;,\n    3;258,281,272;,\n    3;281,258,279;,\n    3;144,258,272;,\n    3;267,281,279;,\n    3;279,280,267;,\n    3;269,267,280;,\n    3;267,268,278;,\n    3;278,281,267;,\n    3;271,272,281;,\n    3;281,278,271;,\n    3;270,271,278;,\n    3;273,270,278;,\n    3;249,183,270;,\n    3;270,273,249;,\n    3;171,170,18;,\n    3;18,160,171;,\n    3;171,172,170;,\n    3;213,212,209;,\n    3;68,71,72;,\n    3;152,7,14;,\n    3;7,282,8;,\n    3;282,164,8;,\n    3;221,213,215;,\n    3;283,72,74;;\n   }\n\n   MeshMaterialList {\n    1;\n    564;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.269804;0.320000;0.630588;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    284;\n    284;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    86,\n    87,\n    88,\n    89,\n    90,\n    91,\n    92,\n    93,\n    94,\n    95,\n    96,\n    97,\n    98,\n    99,\n    100,\n    101,\n    102,\n    103,\n    104,\n    105,\n    106,\n    107,\n    108,\n    109,\n    110,\n    111,\n    112,\n    113,\n    114,\n    115,\n    116,\n    117,\n    118,\n    119,\n    120,\n    121,\n    122,\n    123,\n    124,\n    125,\n    126,\n    127,\n    128,\n    129,\n    130,\n    131,\n    132,\n    133,\n    134,\n    135,\n    136,\n    137,\n    138,\n    139,\n    140,\n    141,\n    142,\n    143,\n    144,\n    145,\n    146,\n    147,\n    148,\n    149,\n    150,\n    151,\n    152,\n    153,\n    154,\n    155,\n    156,\n    157,\n    158,\n    159,\n    160,\n    161,\n    162,\n    163,\n    164,\n    165,\n    166,\n    167,\n    168,\n    169,\n    170,\n    171,\n    172,\n    173,\n    174,\n    175,\n    176,\n    177,\n    178,\n    179,\n    180,\n    181,\n    182,\n    183,\n    184,\n    185,\n    186,\n    187,\n    188,\n    189,\n    190,\n    191,\n    192,\n    193,\n    194,\n    195,\n    196,\n    197,\n    198,\n    199,\n    200,\n    201,\n    202,\n    203,\n    204,\n    205,\n    206,\n    207,\n    208,\n    209,\n    210,\n    211,\n    212,\n    213,\n    214,\n    215,\n    216,\n    217,\n    218,\n    219,\n    220,\n    221,\n    222,\n    223,\n    224,\n    225,\n    226,\n    227,\n    228,\n    229,\n    230,\n    231,\n    232,\n    233,\n    234,\n    235,\n    236,\n    237,\n    238,\n    239,\n    240,\n    241,\n    242,\n    243,\n    244,\n    245,\n    246,\n    247,\n    248,\n    249,\n    250,\n    251,\n    252,\n    253,\n    254,\n    255,\n    256,\n    257,\n    258,\n    259,\n    260,\n    261,\n    262,\n    263,\n    264,\n    265,\n    266,\n    267,\n    268,\n    269,\n    270,\n    271,\n    272,\n    273,\n    274,\n    275,\n    276,\n    277,\n    278,\n    279,\n    280,\n    281,\n    282,\n    283;\n   }\n  }\n }\n}"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/seafloor.x",
    "content": "xof 0302txt 0064\nHeader {\n 1;\n 0;\n 1;\n}\n\n\nFrame x3ds_SeaFloor\n{\n FrameTransformMatrix\n {\n   1.000000,  0.000000, 0.000000, 0.000000,\n   0.000000,  1.000000, 0.000000, 0.000000,\n   0.000000,  0.000000, 1.000000, 0.000000,\n   0.000000,-10.000000, 0.000000, 1.000000;;\n }\n Mesh SeaFloor\n {\n   1490;\n   -14.285719;-0.135096;-100.000000;,\n   14.285709;-1.018934;-100.000000;,\n   -71.428574;-0.307925;-71.428574;,\n   -42.857147;-0.273623;-71.428574;,\n   -14.285719;-0.105719;-71.428574;,\n   14.285709;-0.833857;-71.428574;,\n   42.857140;-0.314925;-71.428574;,\n   71.428566;-0.882375;-71.428574;,\n   -71.428574;0.237553;-42.857147;,\n   -42.857147;0.431774;-42.857147;,\n   -14.285719;0.101133;-42.857147;,\n   14.285709;-0.082143;-42.857147;,\n   42.857140;0.526248;-42.857147;,\n   71.428566;0.188181;-42.857147;,\n   -100.000000;0.713668;-14.285719;,\n   -71.428574;0.809312;-14.285719;,\n   -42.857147;0.912310;-14.285719;,\n   -14.285719;0.613536;-14.285719;,\n   14.285709;0.520900;-14.285719;,\n   42.857140;0.942775;-14.285719;,\n   71.428566;0.305558;-14.285719;,\n   99.999992;0.135099;-14.285719;,\n   -100.000000;0.004447;14.285709;,\n   -71.428574;0.556757;14.285709;,\n   -42.857147;0.392118;14.285709;,\n   -14.285719;0.736304;14.285709;,\n   14.285709;-0.197491;14.285709;,\n   42.857140;-0.282111;14.285709;,\n   71.428566;-0.590892;14.285709;,\n   99.999992;-0.408245;14.285709;,\n   -71.428574;-0.323118;42.857140;,\n   -42.857147;-0.008600;42.857140;,\n   -14.285719;0.211306;42.857140;,\n   14.285709;0.301397;42.857140;,\n   42.857140;-0.261847;42.857140;,\n   71.428566;-0.276548;42.857140;,\n   -71.428574;-0.643011;71.428566;,\n   -42.857147;-0.224026;71.428566;,\n   -14.285719;-0.347621;71.428566;,\n   14.285709;-0.445051;71.428566;,\n   42.857140;-0.962680;71.428566;,\n   71.428566;-0.550829;71.428566;,\n   -14.285719;0.097598;99.999992;,\n   14.285709;-0.334380;99.999992;,\n   -76.190468;-0.350025;-71.428574;,\n   -42.857143;-0.441021;-90.476181;,\n   -42.857147;-0.907937;-85.714287;,\n   -42.857147;-1.142959;-80.952377;,\n   -42.857147;-1.552437;-76.190475;,\n   -47.619049;-0.468403;-71.428574;,\n   -52.380955;-0.233633;-71.428558;,\n   -57.142860;0.234804;-71.428574;,\n   -61.904766;0.256296;-71.428574;,\n   -66.666672;-0.268906;-71.428574;,\n   -23.809528;0.089565;-100.000000;,\n   -19.047623;0.099161;-100.000000;,\n   -14.285719;0.203792;-95.238091;,\n   -14.285717;0.338728;-90.476181;,\n   -14.285719;0.057991;-85.714287;,\n   -14.285719;-0.359968;-80.952377;,\n   -14.285719;0.016018;-76.190475;,\n   -19.047621;-0.192406;-71.428574;,\n   -23.809525;0.134232;-71.428558;,\n   -28.571434;-0.406027;-71.428574;,\n   -33.333336;-0.182656;-71.428574;,\n   -38.095242;-0.113404;-71.428574;,\n   -9.523813;0.412146;-99.999992;,\n   -4.761909;0.014920;-99.999985;,\n   -0.000005;-0.100070;-100.000000;,\n   4.761901;0.085441;-100.000000;,\n   9.523804;-0.537958;-100.000000;,\n   14.285707;-1.093982;-95.238091;,\n   14.285707;-0.775956;-90.476181;,\n   14.285709;-0.471833;-85.714287;,\n   14.285707;0.375411;-80.952377;,\n   14.285709;-0.608159;-76.190475;,\n   9.523804;-0.531067;-71.428574;,\n   4.761899;-0.149243;-71.428558;,\n   -0.000005;0.311526;-71.428574;,\n   -4.761910;0.094294;-71.428574;,\n   -9.523813;0.247405;-71.428574;,\n   19.047613;-0.288111;-99.999992;,\n   23.809519;-0.432924;-99.999985;,\n   42.857136;-0.456084;-90.476181;,\n   42.857140;0.010033;-85.714287;,\n   42.857140;-0.404199;-80.952377;,\n   42.857140;-0.552525;-76.190475;,\n   38.095234;0.155982;-71.428574;,\n   33.333328;0.912775;-71.428558;,\n   28.571423;0.696381;-71.428574;,\n   23.809519;0.386063;-71.428574;,\n   19.047615;0.369331;-71.428574;,\n   71.428566;-0.588181;-76.190475;,\n   66.666656;-1.049700;-71.428574;,\n   61.904755;-0.913305;-71.428558;,\n   57.142853;0.193122;-71.428574;,\n   52.380947;-0.192729;-71.428574;,\n   47.619045;0.338611;-71.428574;,\n   -71.428574;-0.241318;-66.666664;,\n   -71.428558;-0.603029;-61.904758;,\n   -71.428574;-0.217375;-57.142864;,\n   -71.428574;0.028318;-52.380951;,\n   -71.428574;0.587854;-47.619053;,\n   -76.190468;0.561106;-42.857147;,\n   -80.952370;0.501583;-42.857143;,\n   -85.714279;0.946841;-42.857147;,\n   -90.476189;-0.158061;-42.857147;,\n   -42.857147;0.228752;-66.666664;,\n   -42.857143;-0.562465;-61.904758;,\n   -42.857147;-0.859382;-57.142864;,\n   -42.857147;-0.007008;-52.380951;,\n   -42.857147;0.154437;-47.619053;,\n   -47.619049;0.141752;-42.857147;,\n   -52.380955;0.157896;-42.857143;,\n   -57.142860;0.078797;-42.857147;,\n   -61.904766;0.214786;-42.857147;,\n   -66.666672;0.865034;-42.857147;,\n   -14.285719;0.811342;-66.666664;,\n   -14.285717;-0.196288;-61.904758;,\n   -14.285719;0.023182;-57.142864;,\n   -14.285719;0.091712;-52.380951;,\n   -14.285719;0.171870;-47.619053;,\n   -19.047621;0.282091;-42.857147;,\n   -23.809525;0.509501;-42.857143;,\n   -28.571434;-0.060183;-42.857147;,\n   -33.333336;0.406079;-42.857147;,\n   -38.095242;-0.392864;-42.857147;,\n   14.285707;0.130527;-66.666664;,\n   14.285707;-0.698166;-61.904758;,\n   14.285709;-0.182321;-57.142864;,\n   14.285707;-0.197670;-52.380951;,\n   14.285709;-0.200434;-47.619053;,\n   9.523804;0.031800;-42.857147;,\n   4.761899;0.280455;-42.857143;,\n   -0.000005;0.140762;-42.857147;,\n   -4.761910;0.591689;-42.857147;,\n   -9.523813;-0.218071;-42.857147;,\n   42.857140;-0.226362;-66.666664;,\n   42.857136;0.738809;-61.904758;,\n   42.857140;0.179423;-57.142864;,\n   42.857140;0.378334;-52.380951;,\n   42.857140;0.820125;-47.619053;,\n   38.095234;0.853592;-42.857147;,\n   33.333328;-0.018476;-42.857143;,\n   28.571423;1.015341;-42.857147;,\n   23.809519;0.538136;-42.857147;,\n   19.047615;-0.198490;-42.857147;,\n   71.428558;-0.679641;-66.666664;,\n   71.428558;-0.461165;-61.904758;,\n   71.428566;0.446923;-57.142864;,\n   71.428566;-0.014271;-52.380951;,\n   71.428566;0.207117;-47.619053;,\n   66.666656;0.327562;-42.857147;,\n   61.904755;0.103409;-42.857143;,\n   57.142853;-0.221917;-42.857147;,\n   52.380947;0.665427;-42.857147;,\n   47.619045;1.094022;-42.857147;,\n   95.238075;0.454392;-42.857147;,\n   90.476173;0.364723;-42.857143;,\n   85.714279;0.485237;-42.857147;,\n   80.952377;0.118603;-42.857147;,\n   76.190475;-0.336103;-42.857147;,\n   -71.428574;0.467962;-38.095242;,\n   -71.428558;0.764602;-33.333336;,\n   -71.428574;0.977364;-28.571432;,\n   -71.428574;1.280020;-23.809528;,\n   -71.428574;1.180180;-19.047623;,\n   -76.190468;0.880916;-14.285718;,\n   -80.952370;0.382879;-14.285717;,\n   -85.714279;0.352142;-14.285719;,\n   -90.476189;0.207240;-14.285719;,\n   -95.238098;-0.018347;-14.285719;,\n   -99.999992;0.251241;-19.047621;,\n   -99.999985;0.167263;-23.809525;,\n   -100.000000;0.050628;-28.571434;,\n   -42.857147;-0.612424;-38.095242;,\n   -42.857143;-0.013090;-33.333336;,\n   -42.857147;0.794656;-28.571432;,\n   -42.857147;0.799792;-23.809528;,\n   -42.857147;1.508822;-19.047623;,\n   -47.619049;0.850131;-14.285718;,\n   -52.380955;1.256059;-14.285717;,\n   -57.142860;1.383449;-14.285719;,\n   -61.904766;0.533856;-14.285719;,\n   -66.666672;1.164416;-14.285719;,\n   -14.285719;0.036708;-38.095242;,\n   -14.285717;0.592788;-33.333336;,\n   -14.285719;-0.055841;-28.571432;,\n   -14.285719;0.533173;-23.809528;,\n   -14.285719;0.474651;-19.047623;,\n   -19.047621;0.135255;-14.285718;,\n   -23.809525;0.747218;-14.285717;,\n   -28.571434;0.255237;-14.285719;,\n   -33.333336;0.906706;-14.285719;,\n   -38.095242;0.899367;-14.285719;,\n   14.285707;-0.142404;-38.095242;,\n   14.285707;0.716628;-33.333336;,\n   14.285709;0.651095;-28.571432;,\n   14.285707;1.172098;-23.809528;,\n   14.285709;0.759930;-19.047623;,\n   9.523804;0.735744;-14.285718;,\n   4.761899;0.725145;-14.285717;,\n   -0.000005;0.411798;-14.285719;,\n   -4.761910;0.761873;-14.285719;,\n   -9.523813;0.430274;-14.285719;,\n   42.857140;0.426968;-38.095242;,\n   42.857136;0.449123;-33.333336;,\n   42.857140;1.083668;-28.571432;,\n   42.857140;1.438282;-23.809528;,\n   42.857140;1.176020;-19.047623;,\n   38.095234;-0.011468;-14.285718;,\n   33.333328;0.612236;-14.285717;,\n   28.571423;1.162916;-14.285719;,\n   23.809519;0.809581;-14.285719;,\n   19.047615;0.797696;-14.285719;,\n   71.428558;0.957744;-38.095242;,\n   71.428558;0.863921;-33.333336;,\n   71.428566;0.919251;-28.571432;,\n   71.428566;0.468944;-23.809528;,\n   71.428566;-0.199780;-19.047623;,\n   66.666656;0.422344;-14.285718;,\n   61.904755;0.898708;-14.285717;,\n   57.142853;0.673347;-14.285719;,\n   52.380947;0.642073;-14.285719;,\n   47.619045;1.169447;-14.285719;,\n   99.999985;0.229194;-23.809528;,\n   99.999992;0.329644;-19.047623;,\n   95.238075;0.326864;-14.285718;,\n   90.476173;-0.572017;-14.285717;,\n   85.714279;-0.058216;-14.285719;,\n   80.952377;0.529773;-14.285719;,\n   76.190475;0.501918;-14.285719;,\n   -71.428574;0.704634;-9.523813;,\n   -71.428558;0.782750;-4.761908;,\n   -71.428574;0.557799;-0.000005;,\n   -71.428574;0.375774;4.761900;,\n   -71.428574;0.528790;9.523805;,\n   -76.190468;0.623954;14.285707;,\n   -80.952370;0.408449;14.285707;,\n   -85.714279;0.557152;14.285709;,\n   -90.476189;-0.328164;14.285708;,\n   -95.238098;0.071238;14.285710;,\n   -99.999992;0.206027;9.523804;,\n   -99.999985;-0.113214;4.761899;,\n   -100.000000;0.182745;-0.000005;,\n   -100.000000;0.192273;-4.761910;,\n   -100.000000;0.021115;-9.523813;,\n   -42.857147;0.755936;-9.523813;,\n   -42.857143;0.162534;-4.761908;,\n   -42.857147;0.257527;-0.000005;,\n   -42.857147;0.903496;4.761900;,\n   -42.857147;0.489498;9.523805;,\n   -47.619049;0.151162;14.285707;,\n   -52.380955;-0.193396;14.285707;,\n   -57.142860;1.133530;14.285709;,\n   -61.904766;0.626719;14.285708;,\n   -66.666672;0.678700;14.285710;,\n   -14.285719;0.429847;-9.523813;,\n   -14.285717;0.631708;-4.761908;,\n   -14.285719;1.100993;-0.000005;,\n   -14.285719;0.530112;4.761900;,\n   -14.285719;0.092696;9.523805;,\n   -19.047621;0.117114;14.285707;,\n   -23.809525;-0.007938;14.285707;,\n   -28.571434;-0.031347;14.285709;,\n   -33.333336;-0.141815;14.285708;,\n   -38.095242;0.261257;14.285710;,\n   14.285707;0.208703;-9.523813;,\n   14.285707;0.211788;-4.761908;,\n   14.285709;0.475223;-0.000005;,\n   14.285707;0.964629;4.761900;,\n   14.285709;1.008226;9.523805;,\n   9.523804;0.989429;14.285707;,\n   4.761899;0.945728;14.285707;,\n   -0.000005;0.221178;14.285709;,\n   -4.761910;0.686866;14.285708;,\n   -9.523813;0.626730;14.285710;,\n   42.857140;1.010462;-9.523813;,\n   42.857136;0.352587;-4.761908;,\n   42.857140;-0.224639;-0.000005;,\n   42.857140;-0.260482;4.761900;,\n   42.857140;0.138258;9.523805;,\n   38.095234;0.165571;14.285707;,\n   33.333328;-0.010969;14.285707;,\n   28.571423;-0.125291;14.285709;,\n   23.809519;0.187099;14.285708;,\n   19.047615;0.869021;14.285710;,\n   71.428558;0.508842;-9.523813;,\n   71.428558;0.840931;-4.761908;,\n   71.428566;0.284687;-0.000005;,\n   71.428566;-0.243677;4.761900;,\n   71.428566;-0.171505;9.523805;,\n   66.666656;-0.213838;14.285707;,\n   61.904755;0.078522;14.285707;,\n   57.142853;0.070022;14.285709;,\n   52.380947;0.182034;14.285708;,\n   47.619045;0.667903;14.285710;,\n   99.999992;0.094004;-9.523813;,\n   99.999985;0.379086;-4.761909;,\n   99.999992;0.098439;-0.000005;,\n   99.999985;0.297234;4.761901;,\n   99.999992;-0.136030;9.523805;,\n   95.238075;-0.306846;14.285707;,\n   90.476173;-0.311506;14.285707;,\n   85.714279;-0.168183;14.285709;,\n   80.952377;-0.256323;14.285708;,\n   76.190475;0.321061;14.285710;,\n   -71.428574;0.327637;19.047613;,\n   -71.428558;0.617808;23.809519;,\n   -71.428574;0.457445;28.571423;,\n   -71.428574;0.144485;33.333328;,\n   -71.428574;-0.015872;38.095234;,\n   -76.190468;-0.202490;42.857140;,\n   -80.952370;0.073814;42.857136;,\n   -85.714279;0.682053;42.857140;,\n   -90.476189;0.292514;42.857140;,\n   -95.238098;-0.619205;42.857140;,\n   -100.000000;0.331048;28.571423;,\n   -100.000000;-0.086507;23.809519;,\n   -100.000000;-0.222385;19.047615;,\n   -42.857147;0.343030;19.047613;,\n   -42.857143;0.665933;23.809519;,\n   -42.857147;0.723581;28.571423;,\n   -42.857147;0.173923;33.333328;,\n   -42.857147;-0.111467;38.095234;,\n   -47.619049;-0.099223;42.857140;,\n   -52.380955;0.268527;42.857136;,\n   -57.142860;0.327154;42.857140;,\n   -61.904766;0.255922;42.857140;,\n   -66.666672;0.127546;42.857140;,\n   -14.285719;0.941067;19.047613;,\n   -14.285717;0.404930;23.809519;,\n   -14.285719;0.591995;28.571423;,\n   -14.285719;0.895216;33.333328;,\n   -14.285719;0.559608;38.095234;,\n   -19.047621;0.156090;42.857140;,\n   -23.809525;0.375621;42.857136;,\n   -28.571434;0.320363;42.857140;,\n   -33.333336;-0.061159;42.857140;,\n   -38.095242;-0.087877;42.857140;,\n   14.285707;0.367362;19.047613;,\n   14.285707;0.127668;23.809519;,\n   14.285709;0.470778;28.571423;,\n   14.285707;0.580796;33.333328;,\n   14.285709;0.198341;38.095234;,\n   9.523804;-0.512508;42.857140;,\n   4.761899;0.445894;42.857136;,\n   -0.000005;1.368379;42.857140;,\n   -4.761910;1.112172;42.857140;,\n   -9.523813;0.619264;42.857140;,\n   42.857140;-0.214846;19.047613;,\n   42.857136;-0.014231;23.809519;,\n   42.857140;0.684959;28.571423;,\n   42.857140;-0.573070;33.333328;,\n   42.857140;-0.226664;38.095234;,\n   38.095234;0.478938;42.857140;,\n   33.333328;0.659463;42.857136;,\n   28.571423;0.218665;42.857140;,\n   23.809519;0.908736;42.857140;,\n   19.047615;0.434395;42.857140;,\n   71.428558;0.109958;19.047613;,\n   71.428558;-0.379407;23.809519;,\n   71.428566;-0.991344;28.571423;,\n   71.428566;-0.379050;33.333328;,\n   71.428566;-0.167809;38.095234;,\n   66.666656;-0.321815;42.857140;,\n   61.904755;-0.448380;42.857136;,\n   57.142853;-0.777358;42.857140;,\n   52.380947;-0.764991;42.857140;,\n   47.619045;-0.099739;42.857140;,\n   99.999992;-0.144340;19.047613;,\n   99.999985;-0.541099;23.809519;,\n   90.476173;-0.659219;42.857136;,\n   85.714279;-0.455414;42.857140;,\n   80.952377;-0.204183;42.857140;,\n   76.190475;0.194762;42.857140;,\n   -71.428574;0.281622;47.619041;,\n   -71.428558;-0.044956;52.380943;,\n   -71.428574;-0.720373;57.142849;,\n   -71.428574;-0.063963;61.904755;,\n   -71.428574;0.233860;66.666656;,\n   -76.190468;-0.093972;71.428558;,\n   -42.857147;-0.316298;47.619041;,\n   -42.857143;-0.253962;52.380943;,\n   -42.857147;-0.545225;57.142849;,\n   -42.857147;-0.607017;61.904755;,\n   -42.857147;-1.006271;66.666656;,\n   -47.619049;-0.292324;71.428558;,\n   -52.380955;-0.839913;71.428558;,\n   -57.142860;-0.282055;71.428566;,\n   -61.904766;-0.288374;71.428566;,\n   -66.666672;-0.813121;71.428566;,\n   -14.285719;1.076631;47.619041;,\n   -14.285717;0.051704;52.380943;,\n   -14.285719;0.258576;57.142849;,\n   -14.285719;-0.205593;61.904755;,\n   -14.285719;0.006442;66.666656;,\n   -19.047621;0.447580;71.428558;,\n   -23.809525;-0.650777;71.428558;,\n   -28.571434;-0.030014;71.428566;,\n   -33.333336;-0.474398;71.428566;,\n   -38.095242;-0.982600;71.428566;,\n   14.285707;-0.220121;47.619041;,\n   14.285707;-1.204683;52.380943;,\n   14.285709;-0.473230;57.142849;,\n   14.285707;-0.330069;61.904755;,\n   14.285709;-0.960922;66.666656;,\n   9.523804;-1.140873;71.428558;,\n   4.761899;-0.792691;71.428558;,\n   -0.000005;-0.404453;71.428566;,\n   -4.761910;0.013935;71.428566;,\n   -9.523813;0.088346;71.428566;,\n   42.857140;-0.202450;47.619041;,\n   42.857136;0.309247;52.380943;,\n   42.857140;0.242164;57.142849;,\n   42.857140;0.608813;61.904755;,\n   42.857140;0.156971;66.666656;,\n   38.095234;-0.075689;71.428558;,\n   33.333328;-0.110703;71.428558;,\n   28.571423;0.163211;71.428566;,\n   23.809519;-0.448917;71.428566;,\n   19.047615;-0.805722;71.428566;,\n   71.428558;-0.825014;47.619041;,\n   71.428558;-0.469043;52.380943;,\n   71.428566;0.034489;57.142849;,\n   71.428566;-0.200289;61.904755;,\n   71.428566;0.045184;66.666656;,\n   66.666656;-0.407994;71.428558;,\n   61.904755;-0.229676;71.428558;,\n   57.142853;0.593403;71.428566;,\n   52.380947;-0.092017;71.428566;,\n   47.619045;-0.035994;71.428566;,\n   -42.857147;-0.427180;76.190468;,\n   -42.857143;0.314200;80.952370;,\n   -42.857147;-0.057606;85.714279;,\n   -42.857147;0.372523;90.476181;,\n   -14.285719;0.019902;76.190468;,\n   -14.285717;-0.469934;80.952370;,\n   -14.285719;-0.360965;85.714279;,\n   -14.285719;-0.127913;90.476181;,\n   -14.285719;-0.098582;95.238083;,\n   -19.047621;-0.021066;99.999992;,\n   -23.809525;0.079518;99.999985;,\n   -28.571434;0.911401;99.999992;,\n   14.285707;-0.502925;76.190468;,\n   14.285707;-0.298658;80.952370;,\n   14.285709;-0.081354;85.714279;,\n   14.285707;-0.389222;90.476181;,\n   14.285709;0.108639;95.238083;,\n   9.523804;-0.039113;99.999992;,\n   4.761899;-0.055326;99.999985;,\n   -0.000005;0.095156;99.999992;,\n   -4.761910;0.063914;99.999985;,\n   -9.523813;-0.125103;99.999992;,\n   42.857140;-1.034266;76.190468;,\n   42.857136;-1.173705;80.952370;,\n   42.857140;-0.110575;85.714279;,\n   42.857140;0.089482;90.476181;,\n   23.809519;-0.215739;99.999985;,\n   19.047615;0.263260;99.999992;,\n   -47.619053;-0.896381;-90.476189;,\n   -57.142868;-0.328173;-85.714279;,\n   -52.380959;-0.656298;-85.714287;,\n   -47.619053;-0.432877;-85.714287;,\n   -61.904762;-0.513313;-80.952385;,\n   -57.142857;-0.960566;-80.952377;,\n   -52.380955;-0.566089;-80.952385;,\n   -47.619049;-1.267757;-80.952377;,\n   -66.666672;-0.336182;-76.190483;,\n   -61.904762;-0.397067;-76.190475;,\n   -57.142857;-0.479988;-76.190475;,\n   -52.380959;-0.531276;-76.190483;,\n   -47.619049;-0.742459;-76.190475;,\n   -38.095245;0.045469;-95.238098;,\n   -33.333336;0.102977;-95.238091;,\n   -28.571430;0.130415;-95.238091;,\n   -23.809528;-0.216483;-95.238106;,\n   -19.047625;-0.169905;-95.238091;,\n   -38.095245;-0.444137;-90.476181;,\n   -33.333332;-0.695001;-90.476196;,\n   -28.571432;0.611303;-90.476204;,\n   -23.809528;-0.606146;-90.476189;,\n   -19.047625;0.362023;-90.476189;,\n   -38.095245;-1.056779;-85.714272;,\n   -33.333340;-0.718648;-85.714279;,\n   -28.571434;0.199615;-85.714279;,\n   -23.809530;-0.253343;-85.714287;,\n   -19.047623;-0.399376;-85.714287;,\n   -38.095245;-0.913340;-80.952385;,\n   -33.333336;-0.903951;-80.952385;,\n   -28.571436;-0.603099;-80.952377;,\n   -23.809532;-0.025633;-80.952385;,\n   -19.047625;0.198069;-80.952377;,\n   -38.095242;-0.220551;-76.190483;,\n   -33.333340;-0.775552;-76.190475;,\n   -28.571432;-0.088182;-76.190475;,\n   -23.809528;-0.321007;-76.190483;,\n   -19.047623;0.017947;-76.190475;,\n   -9.523815;-0.077893;-95.238098;,\n   -4.761909;0.308261;-95.238091;,\n   -0.000005;-0.490944;-95.238091;,\n   4.761901;-0.627974;-95.238106;,\n   9.523804;-0.424610;-95.238091;,\n   -9.523813;-0.044581;-90.476181;,\n   -4.761909;0.159439;-90.476196;,\n   -0.000005;-0.443794;-90.476204;,\n   4.761900;-0.127339;-90.476189;,\n   9.523804;-0.250573;-90.476189;,\n   -9.523813;-0.061567;-85.714272;,\n   -4.761909;0.264794;-85.714279;,\n   -0.000004;0.601675;-85.714279;,\n   4.761900;-0.576284;-85.714287;,\n   9.523804;-0.400029;-85.714287;,\n   -9.523813;0.294668;-80.952385;,\n   -4.761909;-0.135345;-80.952385;,\n   -0.000005;0.062585;-80.952377;,\n   4.761900;-0.023677;-80.952385;,\n   9.523804;-0.732768;-80.952377;,\n   -9.523815;0.351763;-76.190483;,\n   -4.761909;0.180779;-76.190475;,\n   -0.000005;0.126858;-76.190475;,\n   4.761901;0.035790;-76.190483;,\n   9.523804;-0.244378;-76.190475;,\n   19.047617;-0.575421;-95.238098;,\n   23.809519;0.061376;-95.238091;,\n   28.571426;-0.336216;-95.238091;,\n   33.333332;0.180103;-95.238106;,\n   38.095234;-0.950449;-95.238091;,\n   19.047615;-0.320800;-90.476181;,\n   23.809519;-0.205761;-90.476196;,\n   28.571424;-0.332053;-90.476204;,\n   33.333328;0.028708;-90.476189;,\n   38.095230;-0.358080;-90.476189;,\n   19.047617;-0.081426;-85.714272;,\n   23.809517;-0.106021;-85.714279;,\n   28.571426;-0.354572;-85.714279;,\n   33.333332;-0.169037;-85.714287;,\n   38.095234;-0.146862;-85.714287;,\n   19.047615;0.048051;-80.952385;,\n   23.809521;-0.574941;-80.952385;,\n   28.571423;0.019022;-80.952377;,\n   33.333328;-0.485126;-80.952385;,\n   38.095234;0.118830;-80.952377;,\n   19.047617;-0.137680;-76.190483;,\n   23.809519;-0.555381;-76.190475;,\n   28.571423;0.379704;-76.190475;,\n   33.333328;0.264785;-76.190483;,\n   38.095230;-0.129358;-76.190475;,\n   47.619045;0.240993;-90.476181;,\n   47.619045;0.370391;-85.714272;,\n   52.380959;-0.804926;-85.714279;,\n   57.142849;-0.681500;-85.714279;,\n   47.619049;-0.513063;-80.952385;,\n   52.380947;0.252851;-80.952385;,\n   57.142857;0.166456;-80.952377;,\n   61.904758;-0.092455;-80.952385;,\n   47.619041;0.081938;-76.190483;,\n   52.380955;-0.371723;-76.190475;,\n   57.142857;0.392582;-76.190475;,\n   61.904751;-0.302392;-76.190483;,\n   66.666656;-0.426238;-76.190475;,\n   -76.190475;-0.348970;-66.666672;,\n   -80.952385;-0.405730;-61.904762;,\n   -76.190475;-0.803196;-61.904766;,\n   -85.714279;-0.199913;-57.142860;,\n   -80.952385;-0.717034;-57.142860;,\n   -76.190475;-0.750128;-57.142857;,\n   -85.714287;-0.086299;-52.380962;,\n   -80.952385;-0.218255;-52.380955;,\n   -76.190475;-0.017879;-52.380959;,\n   -90.476189;0.289871;-47.619053;,\n   -85.714287;0.408372;-47.619049;,\n   -80.952377;0.272326;-47.619057;,\n   -76.190475;0.132861;-47.619049;,\n   -66.666672;0.266427;-66.666664;,\n   -61.904770;-0.072512;-66.666664;,\n   -57.142864;-0.150835;-66.666664;,\n   -52.380962;-0.021293;-66.666672;,\n   -47.619057;-0.474822;-66.666672;,\n   -66.666672;0.487985;-61.904766;,\n   -61.904758;-0.309201;-61.904766;,\n   -57.142860;0.319654;-61.904766;,\n   -52.380955;1.311962;-61.904762;,\n   -47.619053;-0.171303;-61.904766;,\n   -66.666672;-0.229193;-57.142864;,\n   -61.904766;0.417655;-57.142853;,\n   -57.142868;0.166550;-57.142860;,\n   -52.380959;0.317161;-57.142860;,\n   -47.619053;0.296120;-57.142857;,\n   -66.666672;0.130392;-52.380959;,\n   -61.904762;-0.005004;-52.380955;,\n   -57.142857;-0.630300;-52.380962;,\n   -52.380955;0.486425;-52.380955;,\n   -47.619049;-0.289771;-52.380959;,\n   -66.666672;0.395921;-47.619045;,\n   -61.904762;0.500003;-47.619053;,\n   -57.142857;0.402763;-47.619049;,\n   -52.380959;0.551308;-47.619057;,\n   -47.619049;-0.121532;-47.619049;,\n   -38.095245;-0.010068;-66.666664;,\n   -33.333336;-0.289168;-66.666664;,\n   -28.571430;-0.496295;-66.666664;,\n   -23.809528;-0.467309;-66.666672;,\n   -19.047625;0.277623;-66.666672;,\n   -38.095245;-0.132215;-61.904766;,\n   -33.333332;-1.095695;-61.904766;,\n   -28.571432;-0.030175;-61.904766;,\n   -23.809528;-0.633231;-61.904762;,\n   -19.047625;0.155150;-61.904766;,\n   -38.095245;-0.245004;-57.142864;,\n   -33.333340;-0.246470;-57.142853;,\n   -28.571434;-0.801827;-57.142860;,\n   -23.809530;-0.406785;-57.142860;,\n   -19.047623;-0.079546;-57.142857;,\n   -38.095245;-0.125901;-52.380959;,\n   -33.333336;-0.249462;-52.380955;,\n   -28.571436;-0.489908;-52.380962;,\n   -23.809532;-0.264658;-52.380955;,\n   -19.047625;-0.025563;-52.380959;,\n   -38.095242;0.434170;-47.619045;,\n   -33.333340;0.213746;-47.619053;,\n   -28.571432;0.227585;-47.619049;,\n   -23.809528;0.409066;-47.619057;,\n   -19.047623;0.586967;-47.619049;,\n   -9.523815;0.243269;-66.666664;,\n   -4.761909;0.305613;-66.666664;,\n   -0.000005;0.749702;-66.666664;,\n   4.761901;-0.041101;-66.666672;,\n   9.523804;-0.224528;-66.666672;,\n   -9.523813;-0.138317;-61.904766;,\n   -4.761909;0.969622;-61.904766;,\n   -0.000005;0.390296;-61.904766;,\n   4.761900;0.515348;-61.904762;,\n   9.523804;0.101632;-61.904766;,\n   -9.523813;0.508570;-57.142864;,\n   -4.761909;0.220557;-57.142853;,\n   -0.000004;0.053783;-57.142860;,\n   4.761900;0.033699;-57.142860;,\n   9.523804;0.194044;-57.142857;,\n   -9.523813;-0.169694;-52.380959;,\n   -4.761909;0.481576;-52.380955;,\n   -0.000005;0.347434;-52.380962;,\n   4.761900;0.266849;-52.380955;,\n   9.523804;-0.116532;-52.380959;,\n   -9.523815;-0.231660;-47.619045;,\n   -4.761909;-0.377175;-47.619053;,\n   -0.000005;0.112933;-47.619049;,\n   4.761901;0.317320;-47.619057;,\n   9.523804;-0.017629;-47.619049;,\n   19.047617;0.135771;-66.666664;,\n   23.809519;0.019960;-66.666664;,\n   28.571426;-0.267989;-66.666664;,\n   33.333332;0.653463;-66.666672;,\n   38.095234;1.169628;-66.666672;,\n   19.047615;-0.067673;-61.904766;,\n   23.809519;0.597693;-61.904766;,\n   28.571424;0.044806;-61.904766;,\n   33.333328;-0.036723;-61.904762;,\n   38.095230;0.271063;-61.904766;,\n   19.047617;-0.361246;-57.142864;,\n   23.809517;-0.058579;-57.142853;,\n   28.571426;0.609813;-57.142860;,\n   33.333332;0.330539;-57.142860;,\n   38.095234;-0.057024;-57.142857;,\n   19.047615;-0.436143;-52.380959;,\n   23.809521;0.470412;-52.380955;,\n   28.571423;0.448475;-52.380962;,\n   33.333328;0.713128;-52.380955;,\n   38.095234;0.489472;-52.380959;,\n   19.047617;-0.600673;-47.619045;,\n   23.809519;-0.377628;-47.619053;,\n   28.571423;0.918299;-47.619049;,\n   33.333328;1.202303;-47.619057;,\n   38.095230;0.447862;-47.619049;,\n   47.619041;0.033839;-66.666664;,\n   52.380955;-0.946366;-66.666664;,\n   57.142857;-0.235814;-66.666664;,\n   61.904755;-0.488056;-66.666672;,\n   66.666656;0.116058;-66.666672;,\n   47.619045;-0.261705;-61.904766;,\n   52.380947;-0.553567;-61.904766;,\n   57.142849;-0.841473;-61.904766;,\n   61.904758;-0.209702;-61.904762;,\n   66.666656;-0.157042;-61.904766;,\n   47.619045;0.525451;-57.142864;,\n   52.380959;-0.712736;-57.142853;,\n   57.142849;-0.364831;-57.142860;,\n   61.904758;-0.605710;-57.142860;,\n   66.666664;-0.069805;-57.142857;,\n   47.619049;0.038909;-52.380959;,\n   52.380947;-0.769230;-52.380955;,\n   57.142857;-0.503422;-52.380962;,\n   61.904758;0.345566;-52.380955;,\n   66.666656;-0.560847;-52.380959;,\n   47.619041;0.506564;-47.619045;,\n   52.380955;-0.508165;-47.619053;,\n   57.142857;0.135078;-47.619049;,\n   61.904751;-1.073132;-47.619057;,\n   66.666656;-0.165831;-47.619049;,\n   76.190483;-0.072807;-66.666664;,\n   76.190475;-0.486434;-61.904766;,\n   80.952377;0.095965;-61.904766;,\n   76.190468;0.392118;-57.142864;,\n   80.952362;-0.160010;-57.142857;,\n   85.714279;0.029156;-57.142864;,\n   76.190475;0.389107;-52.380959;,\n   80.952385;-0.270554;-52.380955;,\n   85.714279;0.304861;-52.380959;,\n   90.476181;0.029144;-52.380955;,\n   76.190475;-0.280273;-47.619045;,\n   80.952377;0.047318;-47.619053;,\n   85.714279;0.077279;-47.619049;,\n   90.476181;0.522156;-47.619057;,\n   -95.238091;0.146004;-38.095249;,\n   -90.476189;-0.135323;-38.095245;,\n   -85.714302;-0.094774;-38.095245;,\n   -80.952385;-0.012592;-38.095238;,\n   -76.190475;0.214362;-38.095242;,\n   -95.238091;-0.663445;-33.333336;,\n   -90.476196;-0.571629;-33.333336;,\n   -85.714287;0.142352;-33.333340;,\n   -80.952385;-0.006924;-33.333336;,\n   -76.190475;0.942335;-33.333336;,\n   -95.238091;0.105121;-28.571430;,\n   -90.476196;0.379096;-28.571432;,\n   -85.714279;0.025746;-28.571434;,\n   -80.952385;0.014520;-28.571434;,\n   -76.190475;0.436127;-28.571432;,\n   -95.238098;0.037560;-23.809530;,\n   -90.476196;0.267005;-23.809528;,\n   -85.714287;0.863584;-23.809528;,\n   -80.952385;-0.166361;-23.809530;,\n   -76.190475;0.196967;-23.809528;,\n   -95.238098;-0.104465;-19.047628;,\n   -90.476189;0.122242;-19.047621;,\n   -85.714287;0.447682;-19.047623;,\n   -80.952377;0.063871;-19.047625;,\n   -76.190475;0.343448;-19.047625;,\n   -66.666672;0.590940;-38.095249;,\n   -61.904770;0.608232;-38.095245;,\n   -57.142864;0.552512;-38.095245;,\n   -52.380962;0.320589;-38.095238;,\n   -47.619057;0.278432;-38.095242;,\n   -66.666672;1.271968;-33.333336;,\n   -61.904758;0.403147;-33.333336;,\n   -57.142860;0.108861;-33.333340;,\n   -52.380955;-0.191607;-33.333336;,\n   -47.619053;0.253385;-33.333336;,\n   -66.666672;1.065984;-28.571430;,\n   -61.904766;0.646968;-28.571432;,\n   -57.142868;0.768861;-28.571434;,\n   -52.380959;0.366157;-28.571434;,\n   -47.619053;0.675626;-28.571432;,\n   -66.666672;1.103412;-23.809530;,\n   -61.904762;1.158456;-23.809528;,\n   -57.142857;0.210519;-23.809528;,\n   -52.380955;0.972075;-23.809530;,\n   -47.619049;0.647467;-23.809528;,\n   -66.666672;1.283420;-19.047628;,\n   -61.904762;1.341369;-19.047621;,\n   -57.142857;1.247629;-19.047623;,\n   -52.380959;0.956362;-19.047625;,\n   -47.619049;1.172287;-19.047625;,\n   -38.095245;-0.214886;-38.095249;,\n   -33.333336;0.484496;-38.095245;,\n   -28.571430;-0.136695;-38.095245;,\n   -23.809528;0.848725;-38.095238;,\n   -19.047625;0.345354;-38.095242;,\n   -38.095245;-0.436160;-33.333336;,\n   -33.333332;0.551390;-33.333336;,\n   -28.571432;0.495749;-33.333340;,\n   -23.809528;0.666285;-33.333336;,\n   -19.047625;0.129059;-33.333336;,\n   -38.095245;0.679556;-28.571430;,\n   -33.333340;0.879020;-28.571432;,\n   -28.571434;0.751337;-28.571434;,\n   -23.809530;0.503239;-28.571434;,\n   -19.047623;0.511175;-28.571432;,\n   -38.095245;0.953050;-23.809530;,\n   -33.333336;0.333945;-23.809528;,\n   -28.571436;0.857836;-23.809528;,\n   -23.809532;-0.429330;-23.809530;,\n   -19.047625;-0.056639;-23.809528;,\n   -38.095242;1.071013;-19.047628;,\n   -33.333340;0.435640;-19.047621;,\n   -28.571432;0.770570;-19.047623;,\n   -23.809528;0.340346;-19.047625;,\n   -19.047623;0.447750;-19.047625;,\n   -9.523815;-0.086783;-38.095249;,\n   -4.761909;0.113547;-38.095245;,\n   -0.000005;-0.197065;-38.095245;,\n   4.761901;-0.054983;-38.095238;,\n   9.523804;0.692805;-38.095242;,\n   -9.523813;0.274385;-33.333336;,\n   -4.761909;-0.232459;-33.333336;,\n   -0.000005;-0.380196;-33.333340;,\n   4.761900;0.399482;-33.333336;,\n   9.523804;0.062564;-33.333336;,\n   -9.523813;0.297241;-28.571430;,\n   -4.761909;0.415487;-28.571432;,\n   -0.000004;0.800085;-28.571434;,\n   4.761900;0.788055;-28.571434;,\n   9.523804;0.737738;-28.571432;,\n   -9.523813;0.525031;-23.809530;,\n   -4.761909;0.399502;-23.809528;,\n   -0.000005;0.520640;-23.809528;,\n   4.761900;0.163826;-23.809530;,\n   9.523804;1.190181;-23.809528;,\n   -9.523815;0.465551;-19.047628;,\n   -4.761909;0.210487;-19.047621;,\n   -0.000005;0.555673;-19.047623;,\n   4.761901;0.842914;-19.047625;,\n   9.523804;0.660211;-19.047625;,\n   19.047617;0.451290;-38.095249;,\n   23.809519;0.286698;-38.095245;,\n   28.571426;0.805214;-38.095245;,\n   33.333332;0.989717;-38.095238;,\n   38.095234;0.593022;-38.095242;,\n   19.047615;1.319814;-33.333336;,\n   23.809519;1.135292;-33.333336;,\n   28.571424;1.117218;-33.333340;,\n   33.333328;1.023826;-33.333336;,\n   38.095230;0.911118;-33.333336;,\n   19.047617;0.540009;-28.571430;,\n   23.809517;0.881057;-28.571432;,\n   28.571426;0.618853;-28.571434;,\n   33.333332;0.981026;-28.571434;,\n   38.095234;0.603346;-28.571432;,\n   19.047615;0.622427;-23.809530;,\n   23.809521;0.594324;-23.809528;,\n   28.571423;0.218313;-23.809528;,\n   33.333328;1.047722;-23.809530;,\n   38.095234;1.451933;-23.809528;,\n   19.047617;0.620442;-19.047628;,\n   23.809519;0.343850;-19.047621;,\n   28.571423;0.528112;-19.047623;,\n   33.333328;0.528256;-19.047625;,\n   38.095230;0.711731;-19.047625;,\n   47.619041;1.491915;-38.095249;,\n   52.380955;0.149788;-38.095245;,\n   57.142857;-0.120143;-38.095245;,\n   61.904755;-0.000747;-38.095238;,\n   66.666656;1.339226;-38.095242;,\n   47.619045;0.151090;-33.333336;,\n   52.380947;0.313079;-33.333336;,\n   57.142849;0.156893;-33.333340;,\n   61.904758;0.354590;-33.333336;,\n   66.666656;0.247437;-33.333336;,\n   47.619045;1.023633;-28.571430;,\n   52.380959;-0.145311;-28.571432;,\n   57.142849;0.631876;-28.571434;,\n   61.904758;0.844891;-28.571434;,\n   66.666664;1.026587;-28.571432;,\n   47.619049;0.998444;-23.809530;,\n   52.380947;0.614895;-23.809528;,\n   57.142857;-0.185409;-23.809528;,\n   61.904758;0.752258;-23.809530;,\n   66.666656;0.566804;-23.809528;,\n   47.619041;1.884505;-19.047628;,\n   52.380955;0.703374;-19.047621;,\n   57.142857;0.932738;-19.047623;,\n   61.904751;-0.012433;-19.047625;,\n   66.666656;0.598260;-19.047625;,\n   76.190483;0.585609;-38.095249;,\n   80.952385;0.112419;-38.095245;,\n   85.714272;0.569965;-38.095245;,\n   90.476196;0.070365;-38.095238;,\n   95.238098;0.810845;-38.095242;,\n   76.190475;0.958473;-33.333336;,\n   80.952377;0.519011;-33.333336;,\n   85.714279;1.036680;-33.333340;,\n   90.476189;0.312387;-33.333336;,\n   95.238091;0.684369;-33.333336;,\n   76.190468;0.903687;-28.571430;,\n   80.952362;0.370712;-28.571432;,\n   85.714279;0.401624;-28.571434;,\n   90.476189;0.465031;-28.571434;,\n   95.238083;0.871782;-28.571432;,\n   76.190475;0.067014;-23.809530;,\n   80.952385;-0.059502;-23.809528;,\n   85.714279;-0.401895;-23.809528;,\n   90.476181;0.112269;-23.809530;,\n   95.238083;0.295354;-23.809528;,\n   76.190475;0.241683;-19.047628;,\n   80.952377;0.139077;-19.047621;,\n   85.714279;0.032044;-19.047623;,\n   90.476181;0.370127;-19.047625;,\n   95.238083;0.035993;-19.047625;,\n   -95.238091;-0.635028;-9.523814;,\n   -90.476189;0.081866;-9.523813;,\n   -85.714302;0.542680;-9.523813;,\n   -80.952385;0.072004;-9.523814;,\n   -76.190475;0.769015;-9.523814;,\n   -95.238091;0.370450;-4.761909;,\n   -90.476196;0.126042;-4.761909;,\n   -85.714287;-0.035015;-4.761909;,\n   -80.952385;0.433681;-4.761909;,\n   -76.190475;0.785710;-4.761909;,\n   -95.238091;0.243324;-0.000005;,\n   -90.476196;0.458492;-0.000005;,\n   -85.714279;0.686098;-0.000005;,\n   -80.952385;0.255165;-0.000005;,\n   -76.190475;0.671934;-0.000005;,\n   -95.238098;0.680216;4.761900;,\n   -90.476196;0.493188;4.761901;,\n   -85.714287;0.510967;4.761900;,\n   -80.952385;-0.085318;4.761900;,\n   -76.190475;0.153707;4.761900;,\n   -95.238098;-0.113884;9.523805;,\n   -90.476189;-0.062231;9.523803;,\n   -85.714287;0.013318;9.523803;,\n   -80.952377;0.501502;9.523804;,\n   -76.190475;0.116553;9.523804;,\n   -66.666672;0.648186;-9.523814;,\n   -61.904770;1.037785;-9.523813;,\n   -57.142864;1.118643;-9.523813;,\n   -52.380962;0.152270;-9.523814;,\n   -47.619057;0.382152;-9.523814;,\n   -66.666672;-0.263512;-4.761909;,\n   -61.904758;1.228136;-4.761909;,\n   -57.142860;1.333070;-4.761909;,\n   -52.380955;0.844646;-4.761909;,\n   -47.619053;0.275482;-4.761909;,\n   -66.666672;-0.122993;-0.000005;,\n   -61.904766;-0.001749;-0.000005;,\n   -57.142868;0.388759;-0.000005;,\n   -52.380959;0.776936;-0.000005;,\n   -47.619053;0.057072;-0.000005;,\n   -66.666672;-0.154972;4.761900;,\n   -61.904762;-0.245416;4.761901;,\n   -57.142857;0.150180;4.761900;,\n   -52.380955;0.469004;4.761900;,\n   -47.619049;0.523502;4.761900;,\n   -66.666672;0.668283;9.523805;,\n   -61.904762;0.014012;9.523803;,\n   -57.142857;1.073029;9.523803;,\n   -52.380959;0.621311;9.523804;,\n   -47.619049;0.676246;9.523804;,\n   -38.095245;0.257905;-9.523814;,\n   -33.333336;0.409918;-9.523813;,\n   -28.571430;0.237781;-9.523813;,\n   -23.809528;1.043879;-9.523814;,\n   -19.047625;0.787480;-9.523814;,\n   -38.095245;0.408669;-4.761909;,\n   -33.333332;-0.055927;-4.761909;,\n   -28.571432;0.258839;-4.761909;,\n   -23.809528;0.549747;-4.761909;,\n   -19.047625;0.945331;-4.761909;,\n   -38.095245;0.346291;-0.000005;,\n   -33.333340;0.166681;-0.000005;,\n   -28.571434;0.184476;-0.000005;,\n   -23.809530;0.419668;-0.000005;,\n   -19.047623;0.156914;-0.000005;,\n   -38.095245;0.484803;4.761900;,\n   -33.333336;0.414197;4.761901;,\n   -28.571436;0.395152;4.761900;,\n   -23.809532;0.548786;4.761900;,\n   -19.047625;-0.148510;4.761900;,\n   -38.095242;0.264819;9.523805;,\n   -33.333340;0.227147;9.523803;,\n   -28.571432;0.518521;9.523803;,\n   -23.809528;-0.044758;9.523804;,\n   -19.047623;0.149496;9.523804;,\n   -9.523815;0.995608;-9.523814;,\n   -4.761909;1.512732;-9.523813;,\n   -0.000005;0.859293;-9.523813;,\n   4.761901;0.560019;-9.523814;,\n   9.523804;0.686237;-9.523814;,\n   -9.523813;1.376515;-4.761909;,\n   -4.761909;0.789060;-4.761909;,\n   -0.000005;0.791284;-4.761909;,\n   4.761900;0.844546;-4.761909;,\n   9.523804;0.953963;-4.761909;,\n   -9.523813;0.748610;-0.000005;,\n   -4.761909;-0.118583;-0.000005;,\n   -0.000004;0.563196;-0.000005;,\n   4.761900;0.647850;-0.000005;,\n   9.523804;0.984808;-0.000005;,\n   -9.523813;0.464913;4.761900;,\n   -4.761909;0.729785;4.761901;,\n   -0.000005;0.889329;4.761900;,\n   4.761900;0.917057;4.761900;,\n   9.523804;1.329822;4.761900;,\n   -9.523815;-0.044570;9.523805;,\n   -4.761909;0.210753;9.523803;,\n   -0.000005;0.873260;9.523803;,\n   4.761901;0.876039;9.523804;,\n   9.523804;1.378626;9.523804;,\n   19.047617;0.670248;-9.523814;,\n   23.809519;0.631106;-9.523813;,\n   28.571426;0.236182;-9.523813;,\n   33.333332;0.132501;-9.523814;,\n   38.095234;0.736855;-9.523814;,\n   19.047615;0.106248;-4.761909;,\n   23.809519;-0.385313;-4.761909;,\n   28.571424;0.358606;-4.761909;,\n   33.333328;0.369490;-4.761909;,\n   38.095230;-0.458202;-4.761909;,\n   19.047617;0.438385;-0.000005;,\n   23.809517;0.103508;-0.000005;,\n   28.571426;0.654476;-0.000005;,\n   33.333332;0.197987;-0.000005;,\n   38.095234;-0.468729;-0.000005;,\n   19.047615;0.402630;4.761900;,\n   23.809521;0.413054;4.761901;,\n   28.571423;0.697183;4.761900;,\n   33.333328;-0.211688;4.761900;,\n   38.095234;-0.481783;4.761900;,\n   19.047617;1.188652;9.523805;,\n   23.809519;0.765385;9.523803;,\n   28.571423;0.633057;9.523803;,\n   33.333328;-0.037992;9.523804;,\n   38.095230;-0.279323;9.523804;,\n   47.619041;1.065258;-9.523814;,\n   52.380955;0.678198;-9.523813;,\n   57.142857;0.212120;-9.523813;,\n   61.904755;1.334492;-9.523814;,\n   66.666656;0.436235;-9.523814;,\n   47.619045;0.288181;-4.761909;,\n   52.380947;1.176908;-4.761909;,\n   57.142849;0.975162;-4.761909;,\n   61.904758;0.550585;-4.761909;,\n   66.666656;0.058083;-4.761909;,\n   47.619045;-0.404481;-0.000005;,\n   52.380959;0.548954;-0.000005;,\n   57.142849;0.225667;-0.000005;,\n   61.904758;0.339342;-0.000005;,\n   66.666664;0.584654;-0.000005;,\n   47.619049;0.216021;4.761900;,\n   52.380947;0.048065;4.761901;,\n   57.142857;0.231755;4.761900;,\n   61.904758;-0.012498;4.761900;,\n   66.666656;0.332744;4.761900;,\n   47.619041;-0.071246;9.523805;,\n   52.380955;-0.208520;9.523803;,\n   57.142857;0.279395;9.523803;,\n   61.904751;0.154010;9.523804;,\n   66.666656;-0.188532;9.523804;,\n   76.190483;-0.088690;-9.523814;,\n   80.952385;0.390631;-9.523813;,\n   85.714272;-0.161228;-9.523813;,\n   90.476196;-0.238980;-9.523814;,\n   95.238098;0.173079;-9.523814;,\n   76.190475;-0.134629;-4.761909;,\n   80.952377;-0.278623;-4.761909;,\n   85.714279;0.152124;-4.761909;,\n   90.476189;-0.788111;-4.761909;,\n   95.238091;0.056065;-4.761909;,\n   76.190468;0.151857;-0.000005;,\n   80.952362;0.013362;-0.000005;,\n   85.714279;0.238772;-0.000004;,\n   90.476189;-0.584571;-0.000005;,\n   95.238083;-0.271175;-0.000005;,\n   76.190475;0.288078;4.761900;,\n   80.952385;-0.006765;4.761901;,\n   85.714279;-0.320527;4.761900;,\n   90.476181;-0.171760;4.761901;,\n   95.238083;-0.106328;4.761900;,\n   76.190475;-0.488811;9.523805;,\n   80.952377;0.259892;9.523803;,\n   85.714279;-0.964793;9.523803;,\n   90.476181;-0.619212;9.523804;,\n   95.238083;0.091132;9.523804;,\n   -95.238091;-0.201637;19.047617;,\n   -90.476189;-0.149839;19.047615;,\n   -85.714302;0.006371;19.047617;,\n   -80.952385;-0.033042;19.047615;,\n   -76.190475;-0.317115;19.047615;,\n   -95.238091;0.209303;23.809517;,\n   -90.476196;0.460540;23.809519;,\n   -85.714287;0.020164;23.809519;,\n   -80.952385;-0.128085;23.809521;,\n   -76.190475;0.149817;23.809519;,\n   -95.238091;0.420094;28.571424;,\n   -90.476196;0.492581;28.571423;,\n   -85.714279;0.095347;28.571424;,\n   -80.952385;0.419620;28.571423;,\n   -76.190475;0.362057;28.571423;,\n   -95.238098;-0.150883;33.333332;,\n   -90.476196;-0.282124;33.333332;,\n   -85.714287;-0.187727;33.333332;,\n   -80.952385;0.259263;33.333332;,\n   -76.190475;0.594422;33.333328;,\n   -95.238098;-0.571404;38.095238;,\n   -90.476189;-0.486190;38.095230;,\n   -85.714287;0.357521;38.095226;,\n   -80.952377;0.504628;38.095230;,\n   -76.190475;0.373769;38.095230;,\n   -66.666672;0.502245;19.047617;,\n   -61.904770;0.511736;19.047615;,\n   -57.142864;0.360597;19.047617;,\n   -52.380962;0.735265;19.047615;,\n   -47.619057;0.127262;19.047615;,\n   -66.666672;0.514087;23.809517;,\n   -61.904758;0.519105;23.809519;,\n   -57.142860;0.519451;23.809519;,\n   -52.380955;0.782563;23.809521;,\n   -47.619053;0.444003;23.809519;,\n   -66.666672;-0.234723;28.571424;,\n   -61.904766;0.326034;28.571423;,\n   -57.142868;0.051950;28.571424;,\n   -52.380959;-0.173723;28.571423;,\n   -47.619053;-0.238126;28.571423;,\n   -66.666672;0.537940;33.333332;,\n   -61.904762;-0.058904;33.333332;,\n   -57.142857;0.204335;33.333332;,\n   -52.380955;-0.088778;33.333332;,\n   -47.619049;0.203796;33.333328;,\n   -66.666672;0.652848;38.095238;,\n   -61.904762;0.415248;38.095230;,\n   -57.142857;0.087422;38.095226;,\n   -52.380959;-0.090355;38.095230;,\n   -47.619049;-0.059427;38.095230;,\n   -38.095245;0.161836;19.047617;,\n   -33.333336;-0.440482;19.047615;,\n   -28.571430;-0.285349;19.047617;,\n   -23.809528;0.407627;19.047615;,\n   -19.047625;0.433981;19.047615;,\n   -38.095245;0.020594;23.809517;,\n   -33.333332;-0.073424;23.809519;,\n   -28.571432;0.625639;23.809519;,\n   -23.809528;0.315404;23.809521;,\n   -19.047625;0.293077;23.809519;,\n   -38.095245;0.766912;28.571424;,\n   -33.333340;0.504977;28.571423;,\n   -28.571434;0.369143;28.571424;,\n   -23.809530;0.445399;28.571423;,\n   -19.047623;0.100101;28.571423;,\n   -38.095245;0.201413;33.333332;,\n   -33.333336;1.294783;33.333332;,\n   -28.571436;0.968459;33.333332;,\n   -23.809532;0.558453;33.333332;,\n   -19.047625;0.277103;33.333328;,\n   -38.095242;0.575762;38.095238;,\n   -33.333340;0.453316;38.095230;,\n   -28.571432;1.285199;38.095226;,\n   -23.809528;0.488240;38.095230;,\n   -19.047623;0.187016;38.095230;,\n   -9.523815;0.996402;19.047617;,\n   -4.761909;0.775935;19.047615;,\n   -0.000005;0.880439;19.047617;,\n   4.761901;0.612420;19.047615;,\n   9.523804;0.571617;19.047615;,\n   -9.523813;1.616749;23.809517;,\n   -4.761909;0.377220;23.809519;,\n   -0.000005;0.720718;23.809519;,\n   4.761900;0.472201;23.809521;,\n   9.523804;0.317466;23.809519;,\n   -9.523813;0.431987;28.571424;,\n   -4.761909;0.345291;28.571423;,\n   -0.000004;-0.074424;28.571424;,\n   4.761900;-0.542948;28.571423;,\n   9.523804;0.259391;28.571423;,\n   -9.523813;0.669768;33.333332;,\n   -4.761909;0.340621;33.333332;,\n   -0.000005;-0.096041;33.333332;,\n   4.761900;-0.622098;33.333332;,\n   9.523804;0.051470;33.333328;,\n   -9.523815;0.390742;38.095238;,\n   -4.761909;0.199370;38.095230;,\n   -0.000005;0.857651;38.095226;,\n   4.761901;0.552805;38.095230;,\n   9.523804;-0.119714;38.095230;,\n   19.047617;0.459538;19.047617;,\n   23.809519;0.618532;19.047615;,\n   28.571426;0.356688;19.047617;,\n   33.333332;0.198981;19.047615;,\n   38.095234;0.222746;19.047615;,\n   19.047615;0.095561;23.809517;,\n   23.809519;0.536586;23.809519;,\n   28.571424;0.152821;23.809519;,\n   33.333328;-0.680507;23.809521;,\n   38.095230;0.177823;23.809519;,\n   19.047617;0.005467;28.571424;,\n   23.809517;-0.100124;28.571423;,\n   28.571426;-0.181885;28.571424;,\n   33.333332;-0.433794;28.571423;,\n   38.095234;-0.490281;28.571423;,\n   19.047615;0.185628;33.333332;,\n   23.809521;-0.394754;33.333332;,\n   28.571423;-0.515903;33.333332;,\n   33.333328;-0.266749;33.333332;,\n   38.095234;-0.440623;33.333328;,\n   19.047617;-0.215529;38.095238;,\n   23.809519;-0.145184;38.095230;,\n   28.571423;-0.328802;38.095226;,\n   33.333328;-0.118301;38.095230;,\n   38.095230;-0.068659;38.095230;,\n   47.619041;0.250273;19.047617;,\n   52.380955;-0.139636;19.047615;,\n   57.142857;0.045368;19.047617;,\n   61.904755;0.484037;19.047615;,\n   66.666656;-0.962253;19.047615;,\n   47.619045;-0.242349;23.809517;,\n   52.380947;0.047723;23.809519;,\n   57.142849;-0.259574;23.809519;,\n   61.904758;0.171286;23.809521;,\n   66.666656;0.119474;23.809519;,\n   47.619045;0.854265;28.571424;,\n   52.380959;0.709659;28.571423;,\n   57.142849;0.114179;28.571424;,\n   61.904758;-0.737622;28.571423;,\n   66.666664;-0.540622;28.571423;,\n   47.619049;0.196880;33.333332;,\n   52.380947;0.418325;33.333332;,\n   57.142857;-0.165413;33.333332;,\n   61.904758;-0.018578;33.333332;,\n   66.666656;-0.542027;33.333328;,\n   47.619041;0.040305;38.095238;,\n   52.380955;-0.305511;38.095230;,\n   57.142857;-0.801721;38.095226;,\n   61.904751;-0.693914;38.095230;,\n   66.666656;-0.260167;38.095230;,\n   76.190483;-0.350931;19.047617;,\n   80.952385;-0.270984;19.047615;,\n   85.714272;-0.653663;19.047617;,\n   90.476196;-0.588821;19.047615;,\n   95.238098;-0.166806;19.047615;,\n   76.190475;-0.982747;23.809517;,\n   80.952377;-0.280588;23.809519;,\n   85.714279;-0.809163;23.809519;,\n   90.476189;-0.707869;23.809521;,\n   95.238091;-0.191508;23.809521;,\n   76.190468;-1.361749;28.571424;,\n   80.952362;-1.537214;28.571423;,\n   85.714279;-0.557252;28.571424;,\n   90.476189;-0.858880;28.571423;,\n   95.238083;-0.540427;28.571423;,\n   76.190475;-0.991974;33.333332;,\n   80.952385;-0.341072;33.333332;,\n   85.714279;-0.480612;33.333332;,\n   90.476181;-0.357981;33.333332;,\n   95.238083;-0.068596;33.333332;,\n   76.190475;-0.649106;38.095238;,\n   80.952377;-0.559025;38.095230;,\n   85.714279;-0.386252;38.095226;,\n   90.476181;0.099080;38.095230;,\n   -90.476189;-0.876558;47.619049;,\n   -85.714302;-0.346224;47.619041;,\n   -80.952385;-0.279265;47.619049;,\n   -76.190475;-0.593621;47.619045;,\n   -90.476196;-0.496902;52.380939;,\n   -85.714287;-0.441395;52.380951;,\n   -80.952385;-0.030910;52.380947;,\n   -76.190475;0.249934;52.380951;,\n   -85.714279;-0.433317;57.142853;,\n   -80.952385;-0.000843;57.142857;,\n   -76.190475;-0.835901;57.142849;,\n   -85.714287;0.363133;61.904758;,\n   -80.952385;-0.122559;61.904758;,\n   -76.190475;-0.282176;61.904758;,\n   -80.952377;0.289427;66.666664;,\n   -76.190475;0.455423;66.666664;,\n   -66.666672;0.605411;47.619045;,\n   -61.904770;-0.101593;47.619049;,\n   -57.142864;0.010784;47.619041;,\n   -52.380962;-0.305407;47.619049;,\n   -47.619057;-0.352808;47.619045;,\n   -66.666672;-0.066875;52.380955;,\n   -61.904758;-0.453473;52.380939;,\n   -57.142860;0.087123;52.380951;,\n   -52.380955;-0.189693;52.380947;,\n   -47.619053;0.324851;52.380951;,\n   -66.666672;-0.553944;57.142853;,\n   -61.904766;-0.676060;57.142849;,\n   -57.142868;-0.862220;57.142853;,\n   -52.380959;-0.121714;57.142857;,\n   -47.619053;-0.157393;57.142849;,\n   -66.666672;-0.748001;61.904766;,\n   -61.904762;-0.196270;61.904755;,\n   -57.142857;-0.844559;61.904758;,\n   -52.380955;-0.766034;61.904758;,\n   -47.619049;-0.394087;61.904758;,\n   -66.666672;-0.406123;66.666649;,\n   -61.904762;-0.455862;66.666656;,\n   -57.142857;-0.281796;66.666664;,\n   -52.380959;-0.495838;66.666664;,\n   -47.619049;-1.226247;66.666664;,\n   -38.095245;0.092546;47.619045;,\n   -33.333336;0.097091;47.619049;,\n   -28.571430;0.451482;47.619041;,\n   -23.809528;0.626763;47.619049;,\n   -19.047625;-0.020122;47.619045;,\n   -38.095245;-0.419869;52.380955;,\n   -33.333332;-0.212224;52.380939;,\n   -28.571432;-0.223933;52.380951;,\n   -23.809528;0.030272;52.380947;,\n   -19.047625;0.380474;52.380951;,\n   -38.095245;-0.268773;57.142853;,\n   -33.333340;0.039447;57.142849;,\n   -28.571434;-0.597401;57.142853;,\n   -23.809530;-0.248587;57.142857;,\n   -19.047623;0.346370;57.142849;,\n   -38.095245;-0.955208;61.904766;,\n   -33.333336;-0.925934;61.904755;,\n   -28.571436;-0.662956;61.904758;,\n   -23.809532;-0.401054;61.904758;,\n   -19.047625;0.134505;61.904758;,\n   -38.095242;-0.814418;66.666649;,\n   -33.333340;-1.112140;66.666656;,\n   -28.571432;-0.516252;66.666664;,\n   -23.809528;-0.760757;66.666664;,\n   -19.047623;-0.348394;66.666664;,\n   -9.523815;-0.110413;47.619045;,\n   -4.761909;0.305821;47.619049;,\n   -0.000005;0.281593;47.619041;,\n   4.761901;0.292163;47.619049;,\n   9.523804;-0.293571;47.619045;,\n   -9.523813;0.220246;52.380955;,\n   -4.761909;-0.295488;52.380939;,\n   -0.000005;-0.155451;52.380951;,\n   4.761900;0.391777;52.380947;,\n   9.523804;-0.325865;52.380951;,\n   -9.523813;0.437661;57.142853;,\n   -4.761909;-0.513525;57.142849;,\n   -0.000004;-0.649736;57.142853;,\n   4.761900;-0.020130;57.142857;,\n   9.523804;-0.557592;57.142849;,\n   -9.523813;-0.414858;61.904766;,\n   -4.761909;-0.065868;61.904755;,\n   -0.000005;-0.010068;61.904758;,\n   4.761900;-0.069373;61.904758;,\n   9.523804;-0.799663;61.904758;,\n   -9.523815;-0.369522;66.666649;,\n   -4.761909;-0.696942;66.666656;,\n   -0.000005;0.025907;66.666664;,\n   4.761901;-1.007324;66.666664;,\n   9.523804;-0.574893;66.666664;,\n   19.047617;0.325343;47.619045;,\n   23.809519;0.473680;47.619049;,\n   28.571426;0.275061;47.619041;,\n   33.333332;-0.256181;47.619049;,\n   38.095234;0.483084;47.619045;,\n   19.047615;-0.350834;52.380955;,\n   23.809519;-0.013383;52.380939;,\n   28.571424;-0.273459;52.380951;,\n   33.333328;0.254800;52.380947;,\n   38.095230;0.599137;52.380951;,\n   19.047617;-0.194767;57.142853;,\n   23.809517;-0.314225;57.142849;,\n   28.571426;-0.353765;57.142853;,\n   33.333332;0.507339;57.142857;,\n   38.095234;0.010199;57.142849;,\n   19.047615;-0.016212;61.904766;,\n   23.809521;0.033933;61.904755;,\n   28.571423;-0.351155;61.904758;,\n   33.333328;-0.111704;61.904758;,\n   38.095234;-0.173389;61.904758;,\n   19.047617;0.042704;66.666649;,\n   23.809519;-0.981737;66.666656;,\n   28.571423;-0.207663;66.666664;,\n   33.333328;-0.098233;66.666664;,\n   38.095230;0.349205;66.666664;,\n   47.619041;-0.111488;47.619045;,\n   52.380955;-0.173820;47.619049;,\n   57.142857;-0.055898;47.619041;,\n   61.904755;-0.458990;47.619049;,\n   66.666656;0.068232;47.619045;,\n   47.619045;-0.448598;52.380955;,\n   52.380947;-0.643468;52.380939;,\n   57.142849;-0.963284;52.380951;,\n   61.904758;-0.282064;52.380947;,\n   66.666656;-0.610852;52.380951;,\n   47.619045;0.255676;57.142853;,\n   52.380959;0.043661;57.142849;,\n   57.142849;-0.450146;57.142853;,\n   61.904758;-0.734543;57.142857;,\n   66.666664;-0.595717;57.142849;,\n   47.619049;0.295272;61.904766;,\n   52.380947;0.224996;61.904755;,\n   57.142857;0.410076;61.904758;,\n   61.904758;-0.102180;61.904758;,\n   66.666656;-0.641119;61.904758;,\n   47.619041;-0.063889;66.666649;,\n   52.380955;-0.052278;66.666656;,\n   57.142857;-0.260962;66.666664;,\n   61.904751;0.211714;66.666664;,\n   66.666656;-0.891935;66.666664;,\n   76.190483;0.384868;47.619045;,\n   80.952385;-0.498316;47.619049;,\n   85.714272;-0.452842;47.619045;,\n   90.476196;-0.679208;47.619049;,\n   76.190475;0.383476;52.380955;,\n   80.952377;0.228437;52.380943;,\n   85.714279;-0.298431;52.380951;,\n   76.190468;0.030241;57.142853;,\n   80.952362;-0.057542;57.142849;,\n   76.190475;-0.149108;61.904766;,\n   80.952385;0.231597;61.904755;,\n   76.190475;0.684127;66.666649;,\n   -66.666672;-0.805704;76.190475;,\n   -61.904770;-0.639796;76.190468;,\n   -57.142864;-0.707538;76.190475;,\n   -52.380962;-1.071568;76.190475;,\n   -47.619057;-0.374410;76.190468;,\n   -66.666672;-0.417351;80.952377;,\n   -61.904758;-0.230551;80.952385;,\n   -57.142860;-0.240226;80.952370;,\n   -52.380955;0.515422;80.952385;,\n   -47.619053;-0.344058;80.952370;,\n   -52.380959;-0.267540;85.714279;,\n   -47.619053;-0.400396;85.714272;,\n   -52.380955;0.632710;90.476189;,\n   -47.619049;0.289989;90.476181;,\n   -38.095245;-0.131742;76.190475;,\n   -33.333336;-0.165298;76.190468;,\n   -28.571430;0.479944;76.190475;,\n   -23.809528;-0.376538;76.190475;,\n   -19.047625;-0.480150;76.190468;,\n   -38.095245;-0.001046;80.952377;,\n   -33.333332;-0.343873;80.952385;,\n   -28.571432;0.302766;80.952370;,\n   -23.809528;0.061208;80.952385;,\n   -19.047625;-0.168522;80.952370;,\n   -38.095245;0.534184;85.714272;,\n   -33.333340;0.319921;85.714272;,\n   -28.571434;0.235242;85.714279;,\n   -23.809530;0.387477;85.714279;,\n   -19.047623;0.091821;85.714272;,\n   -38.095245;-0.278674;90.476181;,\n   -33.333336;-0.722953;90.476196;,\n   -28.571436;-0.670441;90.476181;,\n   -23.809532;-0.490729;90.476189;,\n   -19.047625;-0.106003;90.476181;,\n   -33.333340;-0.228621;95.238091;,\n   -28.571432;0.184142;95.238091;,\n   -23.809528;-0.230569;95.238091;,\n   -19.047623;-0.329850;95.238083;,\n   -9.523815;-0.422359;76.190475;,\n   -4.761909;-0.279259;76.190468;,\n   -0.000005;-0.393888;76.190475;,\n   4.761901;-0.153724;76.190475;,\n   9.523804;-0.603998;76.190468;,\n   -9.523813;-0.517870;80.952377;,\n   -4.761909;-0.318783;80.952385;,\n   -0.000005;-0.221239;80.952370;,\n   4.761900;-0.203658;80.952385;,\n   9.523804;-0.281561;80.952370;,\n   -9.523813;-0.602386;85.714272;,\n   -4.761909;-0.275787;85.714272;,\n   -0.000004;-0.346190;85.714279;,\n   4.761900;-0.680653;85.714279;,\n   9.523804;-0.553402;85.714272;,\n   -9.523813;-0.672190;90.476181;,\n   -4.761909;-0.708849;90.476196;,\n   -0.000005;-0.185962;90.476181;,\n   4.761900;-0.110973;90.476189;,\n   9.523804;-0.155267;90.476181;,\n   -9.523815;0.470404;95.238083;,\n   -4.761909;0.108812;95.238091;,\n   -0.000005;-0.220810;95.238091;,\n   4.761901;-0.266211;95.238091;,\n   9.523804;0.384882;95.238083;,\n   19.047617;-0.379222;76.190475;,\n   23.809519;-0.648977;76.190468;,\n   28.571426;-0.178253;76.190475;,\n   33.333332;-0.078896;76.190475;,\n   38.095234;-0.675569;76.190468;,\n   19.047615;-0.109131;80.952377;,\n   23.809519;0.306690;80.952385;,\n   28.571424;-0.406478;80.952370;,\n   33.333328;-0.045989;80.952385;,\n   38.095230;-0.416376;80.952370;,\n   19.047617;-0.794436;85.714272;,\n   23.809517;-0.613818;85.714272;,\n   28.571426;-0.121993;85.714279;,\n   33.333332;0.033380;85.714279;,\n   38.095234;-0.071678;85.714272;,\n   19.047615;-0.322759;90.476181;,\n   23.809521;0.144414;90.476196;,\n   28.571423;0.629921;90.476181;,\n   33.333328;-0.051256;90.476189;,\n   38.095234;0.560947;90.476181;,\n   19.047617;0.169525;95.238083;,\n   23.809519;-0.366049;95.238091;,\n   28.571423;-0.622185;95.238091;,\n   33.333328;-0.079609;95.238091;,\n   47.619041;-0.304020;76.190475;,\n   52.380955;-0.227923;76.190468;,\n   57.142857;-0.457192;76.190475;,\n   61.904755;-0.708188;76.190475;,\n   66.666656;-0.840111;76.190468;,\n   47.619045;-1.493818;80.952377;,\n   52.380947;-0.057613;80.952385;,\n   57.142849;-0.457289;80.952370;,\n   61.904758;-0.765565;80.952385;,\n   47.619045;-0.240735;85.714272;,\n   52.380959;-0.726876;85.714272;,\n   57.142849;-0.889818;85.714279;,\n   47.619049;-0.358727;90.476181;;\n\n    2830;\n 3;461,466,462;,\n 3;466,461,465;,\n 3;462,467,463;,\n 3;467,462,466;,\n 3;464,470,465;,\n 3;470,464,469;,\n 3;465,471,466;,\n 3;471,465,470;,\n 3;466,472,467;,\n 3;472,466,471;,\n 3;3,472,49;,\n 3;472,3,48;,\n 3;49,471,50;,\n 3;471,49,472;,\n 3;46,460,463;,\n 3;460,46,45;,\n 3;50,470,51;,\n 3;470,50,471;,\n 3;47,463,467;,\n 3;463,47,46;,\n 3;51,469,52;,\n 3;469,51,470;,\n 3;48,467,472;,\n 3;467,48,47;,\n 3;52,468,53;,\n 3;468,52,469;,\n 3;473,479,474;,\n 3;479,473,478;,\n 3;474,480,475;,\n 3;480,474,479;,\n 3;475,481,476;,\n 3;481,475,480;,\n 3;476,482,477;,\n 3;482,476,481;,\n 3;478,484,479;,\n 3;484,478,483;,\n 3;479,485,480;,\n 3;485,479,484;,\n 3;480,486,481;,\n 3;486,480,485;,\n 3;481,487,482;,\n 3;487,481,486;,\n 3;483,489,484;,\n 3;489,483,488;,\n 3;484,490,485;,\n 3;490,484,489;,\n 3;485,491,486;,\n 3;491,485,490;,\n 3;486,492,487;,\n 3;492,486,491;,\n 3;488,494,489;,\n 3;494,488,493;,\n 3;489,495,490;,\n 3;495,489,494;,\n 3;490,496,491;,\n 3;496,490,495;,\n 3;491,497,492;,\n 3;497,491,496;,\n 3;56,55,477;,\n 3;55,56,0;,\n 3;4,497,61;,\n 3;497,4,60;,\n 3;48,65,493;,\n 3;65,48,3;,\n 3;57,477,482;,\n 3;477,57,56;,\n 3;61,496,62;,\n 3;496,61,497;,\n 3;47,493,488;,\n 3;493,47,48;,\n 3;58,482,487;,\n 3;482,58,57;,\n 3;62,495,63;,\n 3;495,62,496;,\n 3;46,488,483;,\n 3;488,46,47;,\n 3;59,487,492;,\n 3;487,59,58;,\n 3;63,494,64;,\n 3;494,63,495;,\n 3;45,483,478;,\n 3;483,45,46;,\n 3;54,477,55;,\n 3;477,54,476;,\n 3;60,492,497;,\n 3;492,60,59;,\n 3;64,493,65;,\n 3;493,64,494;,\n 3;498,504,499;,\n 3;504,498,503;,\n 3;499,505,500;,\n 3;505,499,504;,\n 3;500,506,501;,\n 3;506,500,505;,\n 3;501,507,502;,\n 3;507,501,506;,\n 3;503,509,504;,\n 3;509,503,508;,\n 3;504,510,505;,\n 3;510,504,509;,\n 3;505,511,506;,\n 3;511,505,510;,\n 3;506,512,507;,\n 3;512,506,511;,\n 3;508,514,509;,\n 3;514,508,513;,\n 3;509,515,510;,\n 3;515,509,514;,\n 3;510,516,511;,\n 3;516,510,515;,\n 3;511,517,512;,\n 3;517,511,516;,\n 3;513,519,514;,\n 3;519,513,518;,\n 3;514,520,515;,\n 3;520,514,519;,\n 3;515,521,516;,\n 3;521,515,520;,\n 3;516,522,517;,\n 3;522,516,521;,\n 3;0,498,66;,\n 3;498,0,56;,\n 3;71,70,502;,\n 3;70,71,1;,\n 3;5,522,76;,\n 3;522,5,75;,\n 3;60,80,518;,\n 3;80,60,4;,\n 3;66,499,67;,\n 3;499,66,498;,\n 3;72,502,507;,\n 3;502,72,71;,\n 3;76,521,77;,\n 3;521,76,522;,\n 3;59,518,513;,\n 3;518,59,60;,\n 3;67,500,68;,\n 3;500,67,499;,\n 3;73,507,512;,\n 3;507,73,72;,\n 3;77,520,78;,\n 3;520,77,521;,\n 3;58,513,508;,\n 3;513,58,59;,\n 3;68,501,69;,\n 3;501,68,500;,\n 3;74,512,517;,\n 3;512,74,73;,\n 3;78,519,79;,\n 3;519,78,520;,\n 3;57,508,503;,\n 3;508,57,58;,\n 3;69,502,70;,\n 3;502,69,501;,\n 3;75,517,522;,\n 3;517,75,74;,\n 3;79,518,80;,\n 3;518,79,519;,\n 3;56,503,498;,\n 3;503,56,57;,\n 3;523,529,524;,\n 3;529,523,528;,\n 3;524,530,525;,\n 3;530,524,529;,\n 3;525,531,526;,\n 3;531,525,530;,\n 3;526,532,527;,\n 3;532,526,531;,\n 3;528,534,529;,\n 3;534,528,533;,\n 3;529,535,530;,\n 3;535,529,534;,\n 3;530,536,531;,\n 3;536,530,535;,\n 3;531,537,532;,\n 3;537,531,536;,\n 3;533,539,534;,\n 3;539,533,538;,\n 3;534,540,535;,\n 3;540,534,539;,\n 3;535,541,536;,\n 3;541,535,540;,\n 3;536,542,537;,\n 3;542,536,541;,\n 3;538,544,539;,\n 3;544,538,543;,\n 3;539,545,540;,\n 3;545,539,544;,\n 3;540,546,541;,\n 3;546,540,545;,\n 3;541,547,542;,\n 3;547,541,546;,\n 3;1,523,81;,\n 3;523,1,71;,\n 3;6,547,87;,\n 3;547,6,86;,\n 3;75,91,543;,\n 3;91,75,5;,\n 3;81,524,82;,\n 3;524,81,523;,\n 3;83,527,532;,\n 3;87,546,88;,\n 3;546,87,547;,\n 3;74,543,538;,\n 3;543,74,75;,\n 3;525,82,524;,\n 3;84,532,537;,\n 3;532,84,83;,\n 3;88,545,89;,\n 3;545,88,546;,\n 3;73,538,533;,\n 3;538,73,74;,\n 3;85,537,542;,\n 3;537,85,84;,\n 3;89,544,90;,\n 3;544,89,545;,\n 3;72,533,528;,\n 3;533,72,73;,\n 3;86,542,547;,\n 3;542,86,85;,\n 3;90,543,91;,\n 3;543,90,544;,\n 3;71,528,523;,\n 3;528,71,72;,\n 3;550,548,549;,\n 3;549,553,550;,\n 3;553,549,552;,\n 3;550,554,551;,\n 3;554,550,553;,\n 3;555,551,554;,\n 3;552,557,553;,\n 3;557,552,556;,\n 3;553,558,554;,\n 3;558,553,557;,\n 3;554,559,555;,\n 3;559,554,558;,\n 3;560,555,559;,\n 3;7,560,93;,\n 3;560,7,92;,\n 3;86,97,556;,\n 3;97,86,6;,\n 3;93,559,94;,\n 3;559,93,560;,\n 3;85,556,552;,\n 3;556,85,86;,\n 3;94,558,95;,\n 3;558,94,559;,\n 3;84,552,549;,\n 3;552,84,85;,\n 3;95,557,96;,\n 3;557,95,558;,\n 3;83,549,548;,\n 3;549,83,84;,\n 3;96,556,97;,\n 3;556,96,557;,\n 3;562,566,563;,\n 3;566,562,565;,\n 3;564,568,565;,\n 3;568,564,567;,\n 3;565,569,566;,\n 3;569,565,568;,\n 3;567,572,568;,\n 3;572,567,571;,\n 3;568,573,569;,\n 3;573,568,572;,\n 3;98,44,561;,\n 3;44,98,2;,\n 3;8,573,103;,\n 3;573,8,102;,\n 3;99,561,563;,\n 3;561,99,98;,\n 3;103,572,104;,\n 3;572,103,573;,\n 3;100,563,566;,\n 3;563,100,99;,\n 3;104,571,105;,\n 3;571,104,572;,\n 3;101,566,569;,\n 3;566,101,100;,\n 3;105,570,106;,\n 3;570,105,571;,\n 3;102,569,573;,\n 3;569,102,101;,\n 3;574,580,575;,\n 3;580,574,579;,\n 3;575,581,576;,\n 3;581,575,580;,\n 3;576,582,577;,\n 3;582,576,581;,\n 3;577,583,578;,\n 3;583,577,582;,\n 3;579,585,580;,\n 3;585,579,584;,\n 3;580,586,581;,\n 3;586,580,585;,\n 3;581,587,582;,\n 3;587,581,586;,\n 3;582,588,583;,\n 3;588,582,587;,\n 3;584,590,585;,\n 3;590,584,589;,\n 3;585,591,586;,\n 3;591,585,590;,\n 3;586,592,587;,\n 3;592,586,591;,\n 3;587,593,588;,\n 3;593,587,592;,\n 3;589,595,590;,\n 3;595,589,594;,\n 3;590,596,591;,\n 3;596,590,595;,\n 3;591,597,592;,\n 3;597,591,596;,\n 3;592,598,593;,\n 3;598,592,597;,\n 3;2,574,53;,\n 3;574,2,98;,\n 3;107,49,578;,\n 3;49,107,3;,\n 3;9,598,112;,\n 3;598,9,111;,\n 3;102,116,594;,\n 3;116,102,8;,\n 3;53,575,52;,\n 3;575,53,574;,\n 3;108,578,583;,\n 3;578,108,107;,\n 3;112,597,113;,\n 3;597,112,598;,\n 3;101,594,589;,\n 3;594,101,102;,\n 3;52,576,51;,\n 3;576,52,575;,\n 3;109,583,588;,\n 3;583,109,108;,\n 3;113,596,114;,\n 3;596,113,597;,\n 3;100,589,584;,\n 3;589,100,101;,\n 3;51,577,50;,\n 3;577,51,576;,\n 3;110,588,593;,\n 3;588,110,109;,\n 3;114,595,115;,\n 3;595,114,596;,\n 3;99,584,579;,\n 3;584,99,100;,\n 3;50,578,49;,\n 3;578,50,577;,\n 3;111,593,598;,\n 3;593,111,110;,\n 3;115,594,116;,\n 3;594,115,595;,\n 3;98,579,574;,\n 3;579,98,99;,\n 3;599,605,600;,\n 3;605,599,604;,\n 3;600,606,601;,\n 3;606,600,605;,\n 3;601,607,602;,\n 3;607,601,606;,\n 3;602,608,603;,\n 3;608,602,607;,\n 3;604,610,605;,\n 3;610,604,609;,\n 3;605,611,606;,\n 3;611,605,610;,\n 3;606,612,607;,\n 3;612,606,611;,\n 3;607,613,608;,\n 3;613,607,612;,\n 3;609,615,610;,\n 3;615,609,614;,\n 3;610,616,611;,\n 3;616,610,615;,\n 3;611,617,612;,\n 3;617,611,616;,\n 3;612,618,613;,\n 3;618,612,617;,\n 3;614,620,615;,\n 3;620,614,619;,\n 3;615,621,616;,\n 3;621,615,620;,\n 3;616,622,617;,\n 3;622,616,621;,\n 3;617,623,618;,\n 3;623,617,622;,\n 3;3,599,65;,\n 3;599,3,107;,\n 3;117,61,603;,\n 3;61,117,4;,\n 3;10,623,122;,\n 3;623,10,121;,\n 3;111,126,619;,\n 3;126,111,9;,\n 3;65,600,64;,\n 3;600,65,599;,\n 3;118,603,608;,\n 3;603,118,117;,\n 3;122,622,123;,\n 3;622,122,623;,\n 3;110,619,614;,\n 3;619,110,111;,\n 3;64,601,63;,\n 3;601,64,600;,\n 3;119,608,613;,\n 3;608,119,118;,\n 3;123,621,124;,\n 3;621,123,622;,\n 3;109,614,609;,\n 3;614,109,110;,\n 3;63,602,62;,\n 3;602,63,601;,\n 3;120,613,618;,\n 3;613,120,119;,\n 3;124,620,125;,\n 3;620,124,621;,\n 3;108,609,604;,\n 3;609,108,109;,\n 3;62,603,61;,\n 3;603,62,602;,\n 3;121,618,623;,\n 3;618,121,120;,\n 3;125,619,126;,\n 3;619,125,620;,\n 3;107,604,599;,\n 3;604,107,108;,\n 3;624,630,625;,\n 3;630,624,629;,\n 3;625,631,626;,\n 3;631,625,630;,\n 3;626,632,627;,\n 3;632,626,631;,\n 3;627,633,628;,\n 3;633,627,632;,\n 3;629,635,630;,\n 3;635,629,634;,\n 3;630,636,631;,\n 3;636,630,635;,\n 3;631,637,632;,\n 3;637,631,636;,\n 3;632,638,633;,\n 3;638,632,637;,\n 3;634,640,635;,\n 3;640,634,639;,\n 3;635,641,636;,\n 3;641,635,640;,\n 3;636,642,637;,\n 3;642,636,641;,\n 3;637,643,638;,\n 3;643,637,642;,\n 3;639,645,640;,\n 3;645,639,644;,\n 3;640,646,641;,\n 3;646,640,645;,\n 3;641,647,642;,\n 3;647,641,646;,\n 3;642,648,643;,\n 3;648,642,647;,\n 3;4,624,80;,\n 3;624,4,117;,\n 3;127,76,628;,\n 3;76,127,5;,\n 3;11,648,132;,\n 3;648,11,131;,\n 3;121,136,644;,\n 3;136,121,10;,\n 3;80,625,79;,\n 3;625,80,624;,\n 3;128,628,633;,\n 3;628,128,127;,\n 3;132,647,133;,\n 3;647,132,648;,\n 3;120,644,639;,\n 3;644,120,121;,\n 3;79,626,78;,\n 3;626,79,625;,\n 3;129,633,638;,\n 3;633,129,128;,\n 3;133,646,134;,\n 3;646,133,647;,\n 3;119,639,634;,\n 3;639,119,120;,\n 3;78,627,77;,\n 3;627,78,626;,\n 3;130,638,643;,\n 3;638,130,129;,\n 3;134,645,135;,\n 3;645,134,646;,\n 3;118,634,629;,\n 3;634,118,119;,\n 3;77,628,76;,\n 3;628,77,627;,\n 3;131,643,648;,\n 3;643,131,130;,\n 3;135,644,136;,\n 3;644,135,645;,\n 3;117,629,624;,\n 3;629,117,118;,\n 3;649,655,650;,\n 3;655,649,654;,\n 3;650,656,651;,\n 3;656,650,655;,\n 3;651,657,652;,\n 3;657,651,656;,\n 3;652,658,653;,\n 3;658,652,657;,\n 3;654,660,655;,\n 3;660,654,659;,\n 3;655,661,656;,\n 3;661,655,660;,\n 3;656,662,657;,\n 3;662,656,661;,\n 3;657,663,658;,\n 3;663,657,662;,\n 3;659,665,660;,\n 3;665,659,664;,\n 3;660,666,661;,\n 3;666,660,665;,\n 3;661,667,662;,\n 3;667,661,666;,\n 3;662,668,663;,\n 3;668,662,667;,\n 3;664,670,665;,\n 3;670,664,669;,\n 3;665,671,666;,\n 3;671,665,670;,\n 3;666,672,667;,\n 3;672,666,671;,\n 3;667,673,668;,\n 3;673,667,672;,\n 3;5,649,91;,\n 3;649,5,127;,\n 3;137,87,653;,\n 3;87,137,6;,\n 3;12,673,142;,\n 3;673,12,141;,\n 3;131,146,669;,\n 3;146,131,11;,\n 3;91,650,90;,\n 3;650,91,649;,\n 3;138,653,658;,\n 3;653,138,137;,\n 3;142,672,143;,\n 3;672,142,673;,\n 3;130,669,664;,\n 3;669,130,131;,\n 3;90,651,89;,\n 3;651,90,650;,\n 3;139,658,663;,\n 3;658,139,138;,\n 3;143,671,144;,\n 3;671,143,672;,\n 3;129,664,659;,\n 3;664,129,130;,\n 3;89,652,88;,\n 3;652,89,651;,\n 3;140,663,668;,\n 3;663,140,139;,\n 3;144,670,145;,\n 3;670,144,671;,\n 3;128,659,654;,\n 3;659,128,129;,\n 3;88,653,87;,\n 3;653,88,652;,\n 3;141,668,673;,\n 3;668,141,140;,\n 3;145,669,146;,\n 3;669,145,670;,\n 3;127,654,649;,\n 3;654,127,128;,\n 3;674,680,675;,\n 3;680,674,679;,\n 3;675,681,676;,\n 3;681,675,680;,\n 3;676,682,677;,\n 3;682,676,681;,\n 3;677,683,678;,\n 3;683,677,682;,\n 3;679,685,680;,\n 3;685,679,684;,\n 3;680,686,681;,\n 3;686,680,685;,\n 3;681,687,682;,\n 3;687,681,686;,\n 3;682,688,683;,\n 3;688,682,687;,\n 3;684,690,685;,\n 3;690,684,689;,\n 3;685,691,686;,\n 3;691,685,690;,\n 3;686,692,687;,\n 3;692,686,691;,\n 3;687,693,688;,\n 3;693,687,692;,\n 3;689,695,690;,\n 3;695,689,694;,\n 3;690,696,691;,\n 3;696,690,695;,\n 3;691,697,692;,\n 3;697,691,696;,\n 3;692,698,693;,\n 3;698,692,697;,\n 3;6,674,97;,\n 3;674,6,137;,\n 3;147,93,678;,\n 3;93,147,7;,\n 3;13,698,152;,\n 3;698,13,151;,\n 3;141,156,694;,\n 3;156,141,12;,\n 3;97,675,96;,\n 3;675,97,674;,\n 3;148,678,683;,\n 3;678,148,147;,\n 3;152,697,153;,\n 3;697,152,698;,\n 3;140,694,689;,\n 3;694,140,141;,\n 3;96,676,95;,\n 3;676,96,675;,\n 3;149,683,688;,\n 3;683,149,148;,\n 3;153,696,154;,\n 3;696,153,697;,\n 3;139,689,684;,\n 3;689,139,140;,\n 3;95,677,94;,\n 3;677,95,676;,\n 3;150,688,693;,\n 3;688,150,149;,\n 3;154,695,155;,\n 3;695,154,696;,\n 3;138,684,679;,\n 3;684,138,139;,\n 3;94,678,93;,\n 3;678,94,677;,\n 3;151,693,698;,\n 3;693,151,150;,\n 3;155,694,156;,\n 3;694,155,695;,\n 3;137,679,674;,\n 3;679,137,138;,\n 3;701,699,700;,\n 3;700,703,701;,\n 3;703,700,702;,\n 3;704,701,703;,\n 3;702,706,703;,\n 3;706,702,705;,\n 3;703,707,704;,\n 3;707,703,706;,\n 3;708,704,707;,\n 3;705,710,706;,\n 3;710,705,709;,\n 3;706,711,707;,\n 3;711,706,710;,\n 3;707,712,708;,\n 3;712,707,711;,\n 3;699,7,147;,\n 3;151,161,709;,\n 3;161,151,13;,\n 3;157,712,158;,\n 3;150,709,705;,\n 3;709,150,151;,\n 3;158,711,159;,\n 3;711,158,712;,\n 3;149,705,702;,\n 3;705,149,150;,\n 3;159,710,160;,\n 3;710,159,711;,\n 3;148,702,700;,\n 3;702,148,149;,\n 3;160,709,161;,\n 3;709,160,710;,\n 3;147,700,699;,\n 3;700,147,148;,\n 3;713,719,714;,\n 3;719,713,718;,\n 3;714,720,715;,\n 3;720,714,719;,\n 3;715,721,716;,\n 3;721,715,720;,\n 3;716,722,717;,\n 3;722,716,721;,\n 3;718,724,719;,\n 3;724,718,723;,\n 3;719,725,720;,\n 3;725,719,724;,\n 3;720,726,721;,\n 3;726,720,725;,\n 3;721,727,722;,\n 3;727,721,726;,\n 3;723,729,724;,\n 3;729,723,728;,\n 3;724,730,725;,\n 3;730,724,729;,\n 3;725,731,726;,\n 3;731,725,730;,\n 3;726,732,727;,\n 3;732,726,731;,\n 3;728,734,729;,\n 3;734,728,733;,\n 3;729,735,730;,\n 3;735,729,734;,\n 3;730,736,731;,\n 3;736,730,735;,\n 3;731,737,732;,\n 3;737,731,736;,\n 3;162,103,717;,\n 3;103,162,8;,\n 3;15,737,167;,\n 3;737,15,166;,\n 3;172,171,733;,\n 3;171,172,14;,\n 3;163,717,722;,\n 3;717,163,162;,\n 3;167,736,168;,\n 3;736,167,737;,\n 3;173,733,728;,\n 3;733,173,172;,\n 3;106,715,105;,\n 3;715,106,714;,\n 3;164,722,727;,\n 3;722,164,163;,\n 3;168,735,169;,\n 3;735,168,736;,\n 3;174,728,723;,\n 3;728,174,173;,\n 3;105,716,104;,\n 3;716,105,715;,\n 3;165,727,732;,\n 3;727,165,164;,\n 3;169,734,170;,\n 3;734,169,735;,\n 3;104,717,103;,\n 3;717,104,716;,\n 3;166,732,737;,\n 3;732,166,165;,\n 3;170,733,171;,\n 3;733,170,734;,\n 3;738,744,739;,\n 3;744,738,743;,\n 3;739,745,740;,\n 3;745,739,744;,\n 3;740,746,741;,\n 3;746,740,745;,\n 3;741,747,742;,\n 3;747,741,746;,\n 3;743,749,744;,\n 3;749,743,748;,\n 3;744,750,745;,\n 3;750,744,749;,\n 3;745,751,746;,\n 3;751,745,750;,\n 3;746,752,747;,\n 3;752,746,751;,\n 3;748,754,749;,\n 3;754,748,753;,\n 3;749,755,750;,\n 3;755,749,754;,\n 3;750,756,751;,\n 3;756,750,755;,\n 3;751,757,752;,\n 3;757,751,756;,\n 3;753,759,754;,\n 3;759,753,758;,\n 3;754,760,755;,\n 3;760,754,759;,\n 3;755,761,756;,\n 3;761,755,760;,\n 3;756,762,757;,\n 3;762,756,761;,\n 3;8,738,116;,\n 3;738,8,162;,\n 3;175,112,742;,\n 3;112,175,9;,\n 3;16,762,180;,\n 3;762,16,179;,\n 3;166,184,758;,\n 3;184,166,15;,\n 3;116,739,115;,\n 3;739,116,738;,\n 3;176,742,747;,\n 3;742,176,175;,\n 3;180,761,181;,\n 3;761,180,762;,\n 3;165,758,753;,\n 3;758,165,166;,\n 3;115,740,114;,\n 3;740,115,739;,\n 3;177,747,752;,\n 3;747,177,176;,\n 3;181,760,182;,\n 3;760,181,761;,\n 3;164,753,748;,\n 3;753,164,165;,\n 3;114,741,113;,\n 3;741,114,740;,\n 3;178,752,757;,\n 3;752,178,177;,\n 3;182,759,183;,\n 3;759,182,760;,\n 3;163,748,743;,\n 3;748,163,164;,\n 3;113,742,112;,\n 3;742,113,741;,\n 3;179,757,762;,\n 3;757,179,178;,\n 3;183,758,184;,\n 3;758,183,759;,\n 3;162,743,738;,\n 3;743,162,163;,\n 3;763,769,764;,\n 3;769,763,768;,\n 3;764,770,765;,\n 3;770,764,769;,\n 3;765,771,766;,\n 3;771,765,770;,\n 3;766,772,767;,\n 3;772,766,771;,\n 3;768,774,769;,\n 3;774,768,773;,\n 3;769,775,770;,\n 3;775,769,774;,\n 3;770,776,771;,\n 3;776,770,775;,\n 3;771,777,772;,\n 3;777,771,776;,\n 3;773,779,774;,\n 3;779,773,778;,\n 3;774,780,775;,\n 3;780,774,779;,\n 3;775,781,776;,\n 3;781,775,780;,\n 3;776,782,777;,\n 3;782,776,781;,\n 3;778,784,779;,\n 3;784,778,783;,\n 3;779,785,780;,\n 3;785,779,784;,\n 3;780,786,781;,\n 3;786,780,785;,\n 3;781,787,782;,\n 3;787,781,786;,\n 3;9,763,126;,\n 3;763,9,175;,\n 3;185,122,767;,\n 3;122,185,10;,\n 3;17,787,190;,\n 3;787,17,189;,\n 3;179,194,783;,\n 3;194,179,16;,\n 3;126,764,125;,\n 3;764,126,763;,\n 3;186,767,772;,\n 3;767,186,185;,\n 3;190,786,191;,\n 3;786,190,787;,\n 3;178,783,778;,\n 3;783,178,179;,\n 3;125,765,124;,\n 3;765,125,764;,\n 3;187,772,777;,\n 3;772,187,186;,\n 3;191,785,192;,\n 3;785,191,786;,\n 3;177,778,773;,\n 3;778,177,178;,\n 3;124,766,123;,\n 3;766,124,765;,\n 3;188,777,782;,\n 3;777,188,187;,\n 3;192,784,193;,\n 3;784,192,785;,\n 3;176,773,768;,\n 3;773,176,177;,\n 3;123,767,122;,\n 3;767,123,766;,\n 3;189,782,787;,\n 3;782,189,188;,\n 3;193,783,194;,\n 3;783,193,784;,\n 3;175,768,763;,\n 3;768,175,176;,\n 3;788,794,789;,\n 3;794,788,793;,\n 3;789,795,790;,\n 3;795,789,794;,\n 3;790,796,791;,\n 3;796,790,795;,\n 3;791,797,792;,\n 3;797,791,796;,\n 3;793,799,794;,\n 3;799,793,798;,\n 3;794,800,795;,\n 3;800,794,799;,\n 3;795,801,796;,\n 3;801,795,800;,\n 3;796,802,797;,\n 3;802,796,801;,\n 3;798,804,799;,\n 3;804,798,803;,\n 3;799,805,800;,\n 3;805,799,804;,\n 3;800,806,801;,\n 3;806,800,805;,\n 3;801,807,802;,\n 3;807,801,806;,\n 3;803,809,804;,\n 3;809,803,808;,\n 3;804,810,805;,\n 3;810,804,809;,\n 3;805,811,806;,\n 3;811,805,810;,\n 3;806,812,807;,\n 3;812,806,811;,\n 3;10,788,136;,\n 3;788,10,185;,\n 3;195,132,792;,\n 3;132,195,11;,\n 3;18,812,200;,\n 3;812,18,199;,\n 3;189,204,808;,\n 3;204,189,17;,\n 3;136,789,135;,\n 3;789,136,788;,\n 3;196,792,797;,\n 3;792,196,195;,\n 3;200,811,201;,\n 3;811,200,812;,\n 3;188,808,803;,\n 3;808,188,189;,\n 3;135,790,134;,\n 3;790,135,789;,\n 3;197,797,802;,\n 3;797,197,196;,\n 3;201,810,202;,\n 3;810,201,811;,\n 3;187,803,798;,\n 3;803,187,188;,\n 3;134,791,133;,\n 3;791,134,790;,\n 3;198,802,807;,\n 3;802,198,197;,\n 3;202,809,203;,\n 3;809,202,810;,\n 3;186,798,793;,\n 3;798,186,187;,\n 3;133,792,132;,\n 3;792,133,791;,\n 3;199,807,812;,\n 3;807,199,198;,\n 3;203,808,204;,\n 3;808,203,809;,\n 3;185,793,788;,\n 3;793,185,186;,\n 3;813,819,814;,\n 3;819,813,818;,\n 3;814,820,815;,\n 3;820,814,819;,\n 3;815,821,816;,\n 3;821,815,820;,\n 3;816,822,817;,\n 3;822,816,821;,\n 3;818,824,819;,\n 3;824,818,823;,\n 3;819,825,820;,\n 3;825,819,824;,\n 3;820,826,821;,\n 3;826,820,825;,\n 3;821,827,822;,\n 3;827,821,826;,\n 3;823,829,824;,\n 3;829,823,828;,\n 3;824,830,825;,\n 3;830,824,829;,\n 3;825,831,826;,\n 3;831,825,830;,\n 3;826,832,827;,\n 3;832,826,831;,\n 3;828,834,829;,\n 3;834,828,833;,\n 3;829,835,830;,\n 3;835,829,834;,\n 3;830,836,831;,\n 3;836,830,835;,\n 3;831,837,832;,\n 3;837,831,836;,\n 3;11,813,146;,\n 3;813,11,195;,\n 3;205,142,817;,\n 3;142,205,12;,\n 3;19,837,210;,\n 3;837,19,209;,\n 3;199,214,833;,\n 3;214,199,18;,\n 3;146,814,145;,\n 3;814,146,813;,\n 3;206,817,822;,\n 3;817,206,205;,\n 3;210,836,211;,\n 3;836,210,837;,\n 3;198,833,828;,\n 3;833,198,199;,\n 3;145,815,144;,\n 3;815,145,814;,\n 3;207,822,827;,\n 3;822,207,206;,\n 3;211,835,212;,\n 3;835,211,836;,\n 3;197,828,823;,\n 3;828,197,198;,\n 3;144,816,143;,\n 3;816,144,815;,\n 3;208,827,832;,\n 3;827,208,207;,\n 3;212,834,213;,\n 3;834,212,835;,\n 3;196,823,818;,\n 3;823,196,197;,\n 3;143,817,142;,\n 3;817,143,816;,\n 3;209,832,837;,\n 3;832,209,208;,\n 3;213,833,214;,\n 3;833,213,834;,\n 3;195,818,813;,\n 3;818,195,196;,\n 3;838,844,839;,\n 3;844,838,843;,\n 3;839,845,840;,\n 3;845,839,844;,\n 3;840,846,841;,\n 3;846,840,845;,\n 3;841,847,842;,\n 3;847,841,846;,\n 3;843,849,844;,\n 3;849,843,848;,\n 3;844,850,845;,\n 3;850,844,849;,\n 3;845,851,846;,\n 3;851,845,850;,\n 3;846,852,847;,\n 3;852,846,851;,\n 3;848,854,849;,\n 3;854,848,853;,\n 3;849,855,850;,\n 3;855,849,854;,\n 3;850,856,851;,\n 3;856,850,855;,\n 3;851,857,852;,\n 3;857,851,856;,\n 3;853,859,854;,\n 3;859,853,858;,\n 3;854,860,855;,\n 3;860,854,859;,\n 3;855,861,856;,\n 3;861,855,860;,\n 3;856,862,857;,\n 3;862,856,861;,\n 3;12,838,156;,\n 3;838,12,205;,\n 3;215,152,842;,\n 3;152,215,13;,\n 3;20,862,220;,\n 3;862,20,219;,\n 3;209,224,858;,\n 3;224,209,19;,\n 3;156,839,155;,\n 3;839,156,838;,\n 3;216,842,847;,\n 3;842,216,215;,\n 3;220,861,221;,\n 3;861,220,862;,\n 3;208,858,853;,\n 3;858,208,209;,\n 3;155,840,154;,\n 3;840,155,839;,\n 3;217,847,852;,\n 3;847,217,216;,\n 3;221,860,222;,\n 3;860,221,861;,\n 3;207,853,848;,\n 3;853,207,208;,\n 3;154,841,153;,\n 3;841,154,840;,\n 3;218,852,857;,\n 3;852,218,217;,\n 3;222,859,223;,\n 3;859,222,860;,\n 3;206,848,843;,\n 3;848,206,207;,\n 3;153,842,152;,\n 3;842,153,841;,\n 3;219,857,862;,\n 3;857,219,218;,\n 3;223,858,224;,\n 3;858,223,859;,\n 3;205,843,838;,\n 3;843,205,206;,\n 3;863,869,864;,\n 3;869,863,868;,\n 3;864,870,865;,\n 3;870,864,869;,\n 3;865,871,866;,\n 3;871,865,870;,\n 3;866,872,867;,\n 3;872,866,871;,\n 3;868,874,869;,\n 3;874,868,873;,\n 3;869,875,870;,\n 3;875,869,874;,\n 3;870,876,871;,\n 3;876,870,875;,\n 3;871,877,872;,\n 3;877,871,876;,\n 3;873,879,874;,\n 3;879,873,878;,\n 3;874,880,875;,\n 3;880,874,879;,\n 3;875,881,876;,\n 3;881,875,880;,\n 3;876,882,877;,\n 3;882,876,881;,\n 3;878,884,879;,\n 3;884,878,883;,\n 3;879,885,880;,\n 3;885,879,884;,\n 3;880,886,881;,\n 3;886,880,885;,\n 3;881,887,882;,\n 3;887,881,886;,\n 3;13,863,161;,\n 3;863,13,215;,\n 3;21,887,227;,\n 3;887,21,226;,\n 3;219,231,883;,\n 3;231,219,20;,\n 3;161,864,160;,\n 3;864,161,863;,\n 3;227,886,228;,\n 3;886,227,887;,\n 3;218,883,878;,\n 3;883,218,219;,\n 3;160,865,159;,\n 3;865,160,864;,\n 3;228,885,229;,\n 3;885,228,886;,\n 3;217,878,873;,\n 3;878,217,218;,\n 3;159,866,158;,\n 3;866,159,865;,\n 3;225,877,882;,\n 3;229,884,230;,\n 3;884,229,885;,\n 3;216,873,868;,\n 3;873,216,217;,\n 3;158,867,157;,\n 3;867,158,866;,\n 3;226,882,887;,\n 3;882,226,225;,\n 3;230,883,231;,\n 3;883,230,884;,\n 3;215,868,863;,\n 3;868,215,216;,\n 3;888,894,889;,\n 3;894,888,893;,\n 3;889,895,890;,\n 3;895,889,894;,\n 3;890,896,891;,\n 3;896,890,895;,\n 3;891,897,892;,\n 3;897,891,896;,\n 3;893,899,894;,\n 3;899,893,898;,\n 3;894,900,895;,\n 3;900,894,899;,\n 3;895,901,896;,\n 3;901,895,900;,\n 3;896,902,897;,\n 3;902,896,901;,\n 3;898,904,899;,\n 3;904,898,903;,\n 3;899,905,900;,\n 3;905,899,904;,\n 3;900,906,901;,\n 3;906,900,905;,\n 3;901,907,902;,\n 3;907,901,906;,\n 3;903,909,904;,\n 3;909,903,908;,\n 3;904,910,905;,\n 3;910,904,909;,\n 3;905,911,906;,\n 3;911,905,910;,\n 3;906,912,907;,\n 3;912,906,911;,\n 3;14,888,171;,\n 3;888,14,246;,\n 3;232,167,892;,\n 3;167,232,15;,\n 3;23,912,237;,\n 3;912,23,236;,\n 3;242,241,908;,\n 3;241,242,22;,\n 3;171,889,170;,\n 3;889,171,888;,\n 3;233,892,897;,\n 3;892,233,232;,\n 3;237,911,238;,\n 3;911,237,912;,\n 3;243,908,903;,\n 3;908,243,242;,\n 3;170,890,169;,\n 3;890,170,889;,\n 3;234,897,902;,\n 3;897,234,233;,\n 3;238,910,239;,\n 3;910,238,911;,\n 3;244,903,898;,\n 3;903,244,243;,\n 3;169,891,168;,\n 3;891,169,890;,\n 3;235,902,907;,\n 3;902,235,234;,\n 3;239,909,240;,\n 3;909,239,910;,\n 3;245,898,893;,\n 3;898,245,244;,\n 3;168,892,167;,\n 3;892,168,891;,\n 3;236,907,912;,\n 3;907,236,235;,\n 3;240,908,241;,\n 3;908,240,909;,\n 3;246,893,888;,\n 3;893,246,245;,\n 3;913,919,914;,\n 3;919,913,918;,\n 3;914,920,915;,\n 3;920,914,919;,\n 3;915,921,916;,\n 3;921,915,920;,\n 3;916,922,917;,\n 3;922,916,921;,\n 3;918,924,919;,\n 3;924,918,923;,\n 3;919,925,920;,\n 3;925,919,924;,\n 3;920,926,921;,\n 3;926,920,925;,\n 3;921,927,922;,\n 3;927,921,926;,\n 3;923,929,924;,\n 3;929,923,928;,\n 3;924,930,925;,\n 3;930,924,929;,\n 3;925,931,926;,\n 3;931,925,930;,\n 3;926,932,927;,\n 3;932,926,931;,\n 3;928,934,929;,\n 3;934,928,933;,\n 3;929,935,930;,\n 3;935,929,934;,\n 3;930,936,931;,\n 3;936,930,935;,\n 3;931,937,932;,\n 3;937,931,936;,\n 3;15,913,184;,\n 3;913,15,232;,\n 3;247,180,917;,\n 3;180,247,16;,\n 3;24,937,252;,\n 3;937,24,251;,\n 3;236,256,933;,\n 3;256,236,23;,\n 3;184,914,183;,\n 3;914,184,913;,\n 3;248,917,922;,\n 3;917,248,247;,\n 3;252,936,253;,\n 3;936,252,937;,\n 3;235,933,928;,\n 3;933,235,236;,\n 3;183,915,182;,\n 3;915,183,914;,\n 3;249,922,927;,\n 3;922,249,248;,\n 3;253,935,254;,\n 3;935,253,936;,\n 3;234,928,923;,\n 3;928,234,235;,\n 3;182,916,181;,\n 3;916,182,915;,\n 3;250,927,932;,\n 3;927,250,249;,\n 3;254,934,255;,\n 3;934,254,935;,\n 3;233,923,918;,\n 3;923,233,234;,\n 3;181,917,180;,\n 3;917,181,916;,\n 3;251,932,937;,\n 3;932,251,250;,\n 3;255,933,256;,\n 3;933,255,934;,\n 3;232,918,913;,\n 3;918,232,233;,\n 3;938,944,939;,\n 3;944,938,943;,\n 3;939,945,940;,\n 3;945,939,944;,\n 3;940,946,941;,\n 3;946,940,945;,\n 3;941,947,942;,\n 3;947,941,946;,\n 3;943,949,944;,\n 3;949,943,948;,\n 3;944,950,945;,\n 3;950,944,949;,\n 3;945,951,946;,\n 3;951,945,950;,\n 3;946,952,947;,\n 3;952,946,951;,\n 3;948,954,949;,\n 3;954,948,953;,\n 3;949,955,950;,\n 3;955,949,954;,\n 3;950,956,951;,\n 3;956,950,955;,\n 3;951,957,952;,\n 3;957,951,956;,\n 3;953,959,954;,\n 3;959,953,958;,\n 3;954,960,955;,\n 3;960,954,959;,\n 3;955,961,956;,\n 3;961,955,960;,\n 3;956,962,957;,\n 3;962,956,961;,\n 3;16,938,194;,\n 3;938,16,247;,\n 3;257,190,942;,\n 3;190,257,17;,\n 3;25,962,262;,\n 3;962,25,261;,\n 3;251,266,958;,\n 3;266,251,24;,\n 3;194,939,193;,\n 3;939,194,938;,\n 3;258,942,947;,\n 3;942,258,257;,\n 3;262,961,263;,\n 3;961,262,962;,\n 3;250,958,953;,\n 3;958,250,251;,\n 3;193,940,192;,\n 3;940,193,939;,\n 3;259,947,952;,\n 3;947,259,258;,\n 3;263,960,264;,\n 3;960,263,961;,\n 3;249,953,948;,\n 3;953,249,250;,\n 3;192,941,191;,\n 3;941,192,940;,\n 3;260,952,957;,\n 3;952,260,259;,\n 3;264,959,265;,\n 3;959,264,960;,\n 3;248,948,943;,\n 3;948,248,249;,\n 3;191,942,190;,\n 3;942,191,941;,\n 3;261,957,962;,\n 3;957,261,260;,\n 3;265,958,266;,\n 3;958,265,959;,\n 3;247,943,938;,\n 3;943,247,248;,\n 3;963,969,964;,\n 3;969,963,968;,\n 3;964,970,965;,\n 3;970,964,969;,\n 3;965,971,966;,\n 3;971,965,970;,\n 3;966,972,967;,\n 3;972,966,971;,\n 3;968,974,969;,\n 3;974,968,973;,\n 3;969,975,970;,\n 3;975,969,974;,\n 3;970,976,971;,\n 3;976,970,975;,\n 3;971,977,972;,\n 3;977,971,976;,\n 3;973,979,974;,\n 3;979,973,978;,\n 3;974,980,975;,\n 3;980,974,979;,\n 3;975,981,976;,\n 3;981,975,980;,\n 3;976,982,977;,\n 3;982,976,981;,\n 3;978,984,979;,\n 3;984,978,983;,\n 3;979,985,980;,\n 3;985,979,984;,\n 3;980,986,981;,\n 3;986,980,985;,\n 3;981,987,982;,\n 3;987,981,986;,\n 3;17,963,204;,\n 3;963,17,257;,\n 3;267,200,967;,\n 3;200,267,18;,\n 3;26,987,272;,\n 3;987,26,271;,\n 3;261,276,983;,\n 3;276,261,25;,\n 3;204,964,203;,\n 3;964,204,963;,\n 3;268,967,972;,\n 3;967,268,267;,\n 3;272,986,273;,\n 3;986,272,987;,\n 3;260,983,978;,\n 3;983,260,261;,\n 3;203,965,202;,\n 3;965,203,964;,\n 3;269,972,977;,\n 3;972,269,268;,\n 3;273,985,274;,\n 3;985,273,986;,\n 3;259,978,973;,\n 3;978,259,260;,\n 3;202,966,201;,\n 3;966,202,965;,\n 3;270,977,982;,\n 3;977,270,269;,\n 3;274,984,275;,\n 3;984,274,985;,\n 3;258,973,968;,\n 3;973,258,259;,\n 3;201,967,200;,\n 3;967,201,966;,\n 3;271,982,987;,\n 3;982,271,270;,\n 3;275,983,276;,\n 3;983,275,984;,\n 3;257,968,963;,\n 3;968,257,258;,\n 3;988,994,989;,\n 3;994,988,993;,\n 3;989,995,990;,\n 3;995,989,994;,\n 3;990,996,991;,\n 3;996,990,995;,\n 3;991,997,992;,\n 3;997,991,996;,\n 3;993,999,994;,\n 3;999,993,998;,\n 3;994,1000,995;,\n 3;1000,994,999;,\n 3;995,1001,996;,\n 3;1001,995,1000;,\n 3;996,1002,997;,\n 3;1002,996,1001;,\n 3;998,1004,999;,\n 3;1004,998,1003;,\n 3;999,1005,1000;,\n 3;1005,999,1004;,\n 3;1000,1006,1001;,\n 3;1006,1000,1005;,\n 3;1001,1007,1002;,\n 3;1007,1001,1006;,\n 3;1003,1009,1004;,\n 3;1009,1003,1008;,\n 3;1004,1010,1005;,\n 3;1010,1004,1009;,\n 3;1005,1011,1006;,\n 3;1011,1005,1010;,\n 3;1006,1012,1007;,\n 3;1012,1006,1011;,\n 3;18,988,214;,\n 3;988,18,267;,\n 3;277,210,992;,\n 3;210,277,19;,\n 3;27,1012,282;,\n 3;1012,27,281;,\n 3;271,286,1008;,\n 3;286,271,26;,\n 3;214,989,213;,\n 3;989,214,988;,\n 3;278,992,997;,\n 3;992,278,277;,\n 3;282,1011,283;,\n 3;1011,282,1012;,\n 3;270,1008,1003;,\n 3;1008,270,271;,\n 3;213,990,212;,\n 3;990,213,989;,\n 3;279,997,1002;,\n 3;997,279,278;,\n 3;283,1010,284;,\n 3;1010,283,1011;,\n 3;269,1003,998;,\n 3;1003,269,270;,\n 3;212,991,211;,\n 3;991,212,990;,\n 3;280,1002,1007;,\n 3;1002,280,279;,\n 3;284,1009,285;,\n 3;1009,284,1010;,\n 3;268,998,993;,\n 3;998,268,269;,\n 3;211,992,210;,\n 3;992,211,991;,\n 3;281,1007,1012;,\n 3;1007,281,280;,\n 3;285,1008,286;,\n 3;1008,285,1009;,\n 3;267,993,988;,\n 3;993,267,268;,\n 3;1013,1019,1014;,\n 3;1019,1013,1018;,\n 3;1014,1020,1015;,\n 3;1020,1014,1019;,\n 3;1015,1021,1016;,\n 3;1021,1015,1020;,\n 3;1016,1022,1017;,\n 3;1022,1016,1021;,\n 3;1018,1024,1019;,\n 3;1024,1018,1023;,\n 3;1019,1025,1020;,\n 3;1025,1019,1024;,\n 3;1020,1026,1021;,\n 3;1026,1020,1025;,\n 3;1021,1027,1022;,\n 3;1027,1021,1026;,\n 3;1023,1029,1024;,\n 3;1029,1023,1028;,\n 3;1024,1030,1025;,\n 3;1030,1024,1029;,\n 3;1025,1031,1026;,\n 3;1031,1025,1030;,\n 3;1026,1032,1027;,\n 3;1032,1026,1031;,\n 3;1028,1034,1029;,\n 3;1034,1028,1033;,\n 3;1029,1035,1030;,\n 3;1035,1029,1034;,\n 3;1030,1036,1031;,\n 3;1036,1030,1035;,\n 3;1031,1037,1032;,\n 3;1037,1031,1036;,\n 3;19,1013,224;,\n 3;1013,19,277;,\n 3;287,220,1017;,\n 3;220,287,20;,\n 3;28,1037,292;,\n 3;1037,28,291;,\n 3;281,296,1033;,\n 3;296,281,27;,\n 3;224,1014,223;,\n 3;1014,224,1013;,\n 3;288,1017,1022;,\n 3;1017,288,287;,\n 3;292,1036,293;,\n 3;1036,292,1037;,\n 3;280,1033,1028;,\n 3;1033,280,281;,\n 3;223,1015,222;,\n 3;1015,223,1014;,\n 3;289,1022,1027;,\n 3;1022,289,288;,\n 3;293,1035,294;,\n 3;1035,293,1036;,\n 3;279,1028,1023;,\n 3;1028,279,280;,\n 3;222,1016,221;,\n 3;1016,222,1015;,\n 3;290,1027,1032;,\n 3;1027,290,289;,\n 3;294,1034,295;,\n 3;1034,294,1035;,\n 3;278,1023,1018;,\n 3;1023,278,279;,\n 3;221,1017,220;,\n 3;1017,221,1016;,\n 3;291,1032,1037;,\n 3;1032,291,290;,\n 3;295,1033,296;,\n 3;1033,295,1034;,\n 3;277,1018,1013;,\n 3;1018,277,278;,\n 3;1038,1044,1039;,\n 3;1044,1038,1043;,\n 3;1039,1045,1040;,\n 3;1045,1039,1044;,\n 3;1040,1046,1041;,\n 3;1046,1040,1045;,\n 3;1041,1047,1042;,\n 3;1047,1041,1046;,\n 3;1043,1049,1044;,\n 3;1049,1043,1048;,\n 3;1044,1050,1045;,\n 3;1050,1044,1049;,\n 3;1045,1051,1046;,\n 3;1051,1045,1050;,\n 3;1046,1052,1047;,\n 3;1052,1046,1051;,\n 3;1048,1054,1049;,\n 3;1054,1048,1053;,\n 3;1049,1055,1050;,\n 3;1055,1049,1054;,\n 3;1050,1056,1051;,\n 3;1056,1050,1055;,\n 3;1051,1057,1052;,\n 3;1057,1051,1056;,\n 3;1053,1059,1054;,\n 3;1059,1053,1058;,\n 3;1054,1060,1055;,\n 3;1060,1054,1059;,\n 3;1055,1061,1056;,\n 3;1061,1055,1060;,\n 3;1056,1062,1057;,\n 3;1062,1056,1061;,\n 3;20,1038,231;,\n 3;1038,20,287;,\n 3;297,227,1042;,\n 3;227,297,21;,\n 3;29,1062,302;,\n 3;1062,29,301;,\n 3;291,306,1058;,\n 3;306,291,28;,\n 3;231,1039,230;,\n 3;1039,231,1038;,\n 3;298,1042,1047;,\n 3;1042,298,297;,\n 3;302,1061,303;,\n 3;1061,302,1062;,\n 3;290,1058,1053;,\n 3;1058,290,291;,\n 3;230,1040,229;,\n 3;1040,230,1039;,\n 3;299,1047,1052;,\n 3;1047,299,298;,\n 3;303,1060,304;,\n 3;1060,303,1061;,\n 3;289,1053,1048;,\n 3;1053,289,290;,\n 3;229,1041,228;,\n 3;1041,229,1040;,\n 3;300,1052,1057;,\n 3;1052,300,299;,\n 3;304,1059,305;,\n 3;1059,304,1060;,\n 3;288,1048,1043;,\n 3;1048,288,289;,\n 3;228,1042,227;,\n 3;1042,228,1041;,\n 3;301,1057,1062;,\n 3;1057,301,300;,\n 3;305,1058,306;,\n 3;1058,305,1059;,\n 3;287,1043,1038;,\n 3;1043,287,288;,\n 3;1063,1069,1064;,\n 3;1069,1063,1068;,\n 3;1064,1070,1065;,\n 3;1070,1064,1069;,\n 3;1065,1071,1066;,\n 3;1071,1065,1070;,\n 3;1066,1072,1067;,\n 3;1072,1066,1071;,\n 3;1068,1074,1069;,\n 3;1074,1068,1073;,\n 3;1069,1075,1070;,\n 3;1075,1069,1074;,\n 3;1070,1076,1071;,\n 3;1076,1070,1075;,\n 3;1071,1077,1072;,\n 3;1077,1071,1076;,\n 3;1073,1079,1074;,\n 3;1079,1073,1078;,\n 3;1074,1080,1075;,\n 3;1080,1074,1079;,\n 3;1075,1081,1076;,\n 3;1081,1075,1080;,\n 3;1076,1082,1077;,\n 3;1082,1076,1081;,\n 3;1078,1084,1079;,\n 3;1084,1078,1083;,\n 3;1079,1085,1080;,\n 3;1085,1079,1084;,\n 3;1080,1086,1081;,\n 3;1086,1080,1085;,\n 3;1081,1087,1082;,\n 3;1087,1081,1086;,\n 3;22,1063,241;,\n 3;1063,22,319;,\n 3;307,237,1067;,\n 3;237,307,23;,\n 3;30,1087,312;,\n 3;1087,30,311;,\n 3;241,1064,240;,\n 3;1064,241,1063;,\n 3;308,1067,1072;,\n 3;1067,308,307;,\n 3;312,1086,313;,\n 3;1086,312,1087;,\n 3;240,1065,239;,\n 3;1065,240,1064;,\n 3;309,1072,1077;,\n 3;1072,309,308;,\n 3;313,1085,314;,\n 3;1085,313,1086;,\n 3;317,1078,1073;,\n 3;239,1066,238;,\n 3;1066,239,1065;,\n 3;310,1077,1082;,\n 3;1077,310,309;,\n 3;314,1084,315;,\n 3;1084,314,1085;,\n 3;318,1073,1068;,\n 3;1073,318,317;,\n 3;238,1067,237;,\n 3;1067,238,1066;,\n 3;311,1082,1087;,\n 3;1082,311,310;,\n 3;315,1083,316;,\n 3;1083,315,1084;,\n 3;319,1068,1063;,\n 3;1068,319,318;,\n 3;1088,1094,1089;,\n 3;1094,1088,1093;,\n 3;1089,1095,1090;,\n 3;1095,1089,1094;,\n 3;1090,1096,1091;,\n 3;1096,1090,1095;,\n 3;1091,1097,1092;,\n 3;1097,1091,1096;,\n 3;1093,1099,1094;,\n 3;1099,1093,1098;,\n 3;1094,1100,1095;,\n 3;1100,1094,1099;,\n 3;1095,1101,1096;,\n 3;1101,1095,1100;,\n 3;1096,1102,1097;,\n 3;1102,1096,1101;,\n 3;1098,1104,1099;,\n 3;1104,1098,1103;,\n 3;1099,1105,1100;,\n 3;1105,1099,1104;,\n 3;1100,1106,1101;,\n 3;1106,1100,1105;,\n 3;1101,1107,1102;,\n 3;1107,1101,1106;,\n 3;1103,1109,1104;,\n 3;1109,1103,1108;,\n 3;1104,1110,1105;,\n 3;1110,1104,1109;,\n 3;1105,1111,1106;,\n 3;1111,1105,1110;,\n 3;1106,1112,1107;,\n 3;1112,1106,1111;,\n 3;23,1088,256;,\n 3;1088,23,307;,\n 3;320,252,1092;,\n 3;252,320,24;,\n 3;31,1112,325;,\n 3;1112,31,324;,\n 3;311,329,1108;,\n 3;329,311,30;,\n 3;256,1089,255;,\n 3;1089,256,1088;,\n 3;321,1092,1097;,\n 3;1092,321,320;,\n 3;325,1111,326;,\n 3;1111,325,1112;,\n 3;310,1108,1103;,\n 3;1108,310,311;,\n 3;255,1090,254;,\n 3;1090,255,1089;,\n 3;322,1097,1102;,\n 3;1097,322,321;,\n 3;326,1110,327;,\n 3;1110,326,1111;,\n 3;309,1103,1098;,\n 3;1103,309,310;,\n 3;254,1091,253;,\n 3;1091,254,1090;,\n 3;323,1102,1107;,\n 3;1102,323,322;,\n 3;327,1109,328;,\n 3;1109,327,1110;,\n 3;308,1098,1093;,\n 3;1098,308,309;,\n 3;253,1092,252;,\n 3;1092,253,1091;,\n 3;324,1107,1112;,\n 3;1107,324,323;,\n 3;328,1108,329;,\n 3;1108,328,1109;,\n 3;307,1093,1088;,\n 3;1093,307,308;,\n 3;1113,1119,1114;,\n 3;1119,1113,1118;,\n 3;1114,1120,1115;,\n 3;1120,1114,1119;,\n 3;1115,1121,1116;,\n 3;1121,1115,1120;,\n 3;1116,1122,1117;,\n 3;1122,1116,1121;,\n 3;1118,1124,1119;,\n 3;1124,1118,1123;,\n 3;1119,1125,1120;,\n 3;1125,1119,1124;,\n 3;1120,1126,1121;,\n 3;1126,1120,1125;,\n 3;1121,1127,1122;,\n 3;1127,1121,1126;,\n 3;1123,1129,1124;,\n 3;1129,1123,1128;,\n 3;1124,1130,1125;,\n 3;1130,1124,1129;,\n 3;1125,1131,1126;,\n 3;1131,1125,1130;,\n 3;1126,1132,1127;,\n 3;1132,1126,1131;,\n 3;1128,1134,1129;,\n 3;1134,1128,1133;,\n 3;1129,1135,1130;,\n 3;1135,1129,1134;,\n 3;1130,1136,1131;,\n 3;1136,1130,1135;,\n 3;1131,1137,1132;,\n 3;1137,1131,1136;,\n 3;24,1113,266;,\n 3;1113,24,320;,\n 3;330,262,1117;,\n 3;262,330,25;,\n 3;32,1137,335;,\n 3;1137,32,334;,\n 3;324,339,1133;,\n 3;339,324,31;,\n 3;266,1114,265;,\n 3;1114,266,1113;,\n 3;331,1117,1122;,\n 3;1117,331,330;,\n 3;335,1136,336;,\n 3;1136,335,1137;,\n 3;323,1133,1128;,\n 3;1133,323,324;,\n 3;265,1115,264;,\n 3;1115,265,1114;,\n 3;332,1122,1127;,\n 3;1122,332,331;,\n 3;336,1135,337;,\n 3;1135,336,1136;,\n 3;322,1128,1123;,\n 3;1128,322,323;,\n 3;264,1116,263;,\n 3;1116,264,1115;,\n 3;333,1127,1132;,\n 3;1127,333,332;,\n 3;337,1134,338;,\n 3;1134,337,1135;,\n 3;321,1123,1118;,\n 3;1123,321,322;,\n 3;263,1117,262;,\n 3;1117,263,1116;,\n 3;334,1132,1137;,\n 3;1132,334,333;,\n 3;338,1133,339;,\n 3;1133,338,1134;,\n 3;320,1118,1113;,\n 3;1118,320,321;,\n 3;1138,1144,1139;,\n 3;1144,1138,1143;,\n 3;1139,1145,1140;,\n 3;1145,1139,1144;,\n 3;1140,1146,1141;,\n 3;1146,1140,1145;,\n 3;1141,1147,1142;,\n 3;1147,1141,1146;,\n 3;1143,1149,1144;,\n 3;1149,1143,1148;,\n 3;1144,1150,1145;,\n 3;1150,1144,1149;,\n 3;1145,1151,1146;,\n 3;1151,1145,1150;,\n 3;1146,1152,1147;,\n 3;1152,1146,1151;,\n 3;1148,1154,1149;,\n 3;1154,1148,1153;,\n 3;1149,1155,1150;,\n 3;1155,1149,1154;,\n 3;1150,1156,1151;,\n 3;1156,1150,1155;,\n 3;1151,1157,1152;,\n 3;1157,1151,1156;,\n 3;1153,1159,1154;,\n 3;1159,1153,1158;,\n 3;1154,1160,1155;,\n 3;1160,1154,1159;,\n 3;1155,1161,1156;,\n 3;1161,1155,1160;,\n 3;1156,1162,1157;,\n 3;1162,1156,1161;,\n 3;25,1138,276;,\n 3;1138,25,330;,\n 3;340,272,1142;,\n 3;272,340,26;,\n 3;33,1162,345;,\n 3;1162,33,344;,\n 3;334,349,1158;,\n 3;349,334,32;,\n 3;276,1139,275;,\n 3;1139,276,1138;,\n 3;341,1142,1147;,\n 3;1142,341,340;,\n 3;345,1161,346;,\n 3;1161,345,1162;,\n 3;333,1158,1153;,\n 3;1158,333,334;,\n 3;275,1140,274;,\n 3;1140,275,1139;,\n 3;342,1147,1152;,\n 3;1147,342,341;,\n 3;346,1160,347;,\n 3;1160,346,1161;,\n 3;332,1153,1148;,\n 3;1153,332,333;,\n 3;274,1141,273;,\n 3;1141,274,1140;,\n 3;343,1152,1157;,\n 3;1152,343,342;,\n 3;347,1159,348;,\n 3;1159,347,1160;,\n 3;331,1148,1143;,\n 3;1148,331,332;,\n 3;273,1142,272;,\n 3;1142,273,1141;,\n 3;344,1157,1162;,\n 3;1157,344,343;,\n 3;348,1158,349;,\n 3;1158,348,1159;,\n 3;330,1143,1138;,\n 3;1143,330,331;,\n 3;1163,1169,1164;,\n 3;1169,1163,1168;,\n 3;1164,1170,1165;,\n 3;1170,1164,1169;,\n 3;1165,1171,1166;,\n 3;1171,1165,1170;,\n 3;1166,1172,1167;,\n 3;1172,1166,1171;,\n 3;1168,1174,1169;,\n 3;1174,1168,1173;,\n 3;1169,1175,1170;,\n 3;1175,1169,1174;,\n 3;1170,1176,1171;,\n 3;1176,1170,1175;,\n 3;1171,1177,1172;,\n 3;1177,1171,1176;,\n 3;1173,1179,1174;,\n 3;1179,1173,1178;,\n 3;1174,1180,1175;,\n 3;1180,1174,1179;,\n 3;1175,1181,1176;,\n 3;1181,1175,1180;,\n 3;1176,1182,1177;,\n 3;1182,1176,1181;,\n 3;1178,1184,1179;,\n 3;1184,1178,1183;,\n 3;1179,1185,1180;,\n 3;1185,1179,1184;,\n 3;1180,1186,1181;,\n 3;1186,1180,1185;,\n 3;1181,1187,1182;,\n 3;1187,1181,1186;,\n 3;26,1163,286;,\n 3;1163,26,340;,\n 3;350,282,1167;,\n 3;282,350,27;,\n 3;34,1187,355;,\n 3;1187,34,354;,\n 3;344,359,1183;,\n 3;359,344,33;,\n 3;286,1164,285;,\n 3;1164,286,1163;,\n 3;351,1167,1172;,\n 3;1167,351,350;,\n 3;355,1186,356;,\n 3;1186,355,1187;,\n 3;343,1183,1178;,\n 3;1183,343,344;,\n 3;285,1165,284;,\n 3;1165,285,1164;,\n 3;352,1172,1177;,\n 3;1172,352,351;,\n 3;356,1185,357;,\n 3;1185,356,1186;,\n 3;342,1178,1173;,\n 3;1178,342,343;,\n 3;284,1166,283;,\n 3;1166,284,1165;,\n 3;353,1177,1182;,\n 3;1177,353,352;,\n 3;357,1184,358;,\n 3;1184,357,1185;,\n 3;341,1173,1168;,\n 3;1173,341,342;,\n 3;283,1167,282;,\n 3;1167,283,1166;,\n 3;354,1182,1187;,\n 3;1182,354,353;,\n 3;358,1183,359;,\n 3;1183,358,1184;,\n 3;340,1168,1163;,\n 3;1168,340,341;,\n 3;1188,1194,1189;,\n 3;1194,1188,1193;,\n 3;1189,1195,1190;,\n 3;1195,1189,1194;,\n 3;1190,1196,1191;,\n 3;1196,1190,1195;,\n 3;1191,1197,1192;,\n 3;1197,1191,1196;,\n 3;1193,1199,1194;,\n 3;1199,1193,1198;,\n 3;1194,1200,1195;,\n 3;1200,1194,1199;,\n 3;1195,1201,1196;,\n 3;1201,1195,1200;,\n 3;1196,1202,1197;,\n 3;1202,1196,1201;,\n 3;1198,1204,1199;,\n 3;1204,1198,1203;,\n 3;1199,1205,1200;,\n 3;1205,1199,1204;,\n 3;1200,1206,1201;,\n 3;1206,1200,1205;,\n 3;1201,1207,1202;,\n 3;1207,1201,1206;,\n 3;1203,1209,1204;,\n 3;1209,1203,1208;,\n 3;1204,1210,1205;,\n 3;1210,1204,1209;,\n 3;1205,1211,1206;,\n 3;1211,1205,1210;,\n 3;1206,1212,1207;,\n 3;1212,1206,1211;,\n 3;27,1188,296;,\n 3;1188,27,350;,\n 3;360,292,1192;,\n 3;292,360,28;,\n 3;35,1212,365;,\n 3;1212,35,364;,\n 3;354,369,1208;,\n 3;369,354,34;,\n 3;296,1189,295;,\n 3;1189,296,1188;,\n 3;361,1192,1197;,\n 3;1192,361,360;,\n 3;365,1211,366;,\n 3;1211,365,1212;,\n 3;353,1208,1203;,\n 3;1208,353,354;,\n 3;295,1190,294;,\n 3;1190,295,1189;,\n 3;362,1197,1202;,\n 3;1197,362,361;,\n 3;366,1210,367;,\n 3;1210,366,1211;,\n 3;352,1203,1198;,\n 3;1203,352,353;,\n 3;294,1191,293;,\n 3;1191,294,1190;,\n 3;363,1202,1207;,\n 3;1202,363,362;,\n 3;367,1209,368;,\n 3;1209,367,1210;,\n 3;351,1198,1193;,\n 3;1198,351,352;,\n 3;293,1192,292;,\n 3;1192,293,1191;,\n 3;364,1207,1212;,\n 3;1207,364,363;,\n 3;368,1208,369;,\n 3;1208,368,1209;,\n 3;350,1193,1188;,\n 3;1193,350,351;,\n 3;1213,1219,1214;,\n 3;1219,1213,1218;,\n 3;1214,1220,1215;,\n 3;1220,1214,1219;,\n 3;1215,1221,1216;,\n 3;1221,1215,1220;,\n 3;1216,1222,1217;,\n 3;1222,1216,1221;,\n 3;1218,1224,1219;,\n 3;1224,1218,1223;,\n 3;1219,1225,1220;,\n 3;1225,1219,1224;,\n 3;1220,1226,1221;,\n 3;1226,1220,1225;,\n 3;1221,1227,1222;,\n 3;1227,1221,1226;,\n 3;1223,1229,1224;,\n 3;1229,1223,1228;,\n 3;1224,1230,1225;,\n 3;1230,1224,1229;,\n 3;1225,1231,1226;,\n 3;1231,1225,1230;,\n 3;1226,1232,1227;,\n 3;1232,1226,1231;,\n 3;1228,1234,1229;,\n 3;1234,1228,1233;,\n 3;1229,1235,1230;,\n 3;1235,1229,1234;,\n 3;1230,1236,1231;,\n 3;1236,1230,1235;,\n 3;28,1213,306;,\n 3;1213,28,360;,\n 3;370,302,1217;,\n 3;302,370,29;,\n 3;364,375,1233;,\n 3;375,364,35;,\n 3;306,1214,305;,\n 3;1214,306,1213;,\n 3;371,1217,1222;,\n 3;1217,371,370;,\n 3;363,1233,1228;,\n 3;1233,363,364;,\n 3;305,1215,304;,\n 3;1215,305,1214;,\n 3;372,1235,373;,\n 3;1235,372,1236;,\n 3;362,1228,1223;,\n 3;1228,362,363;,\n 3;304,1216,303;,\n 3;1216,304,1215;,\n 3;373,1234,374;,\n 3;1234,373,1235;,\n 3;361,1223,1218;,\n 3;1223,361,362;,\n 3;303,1217,302;,\n 3;1217,303,1216;,\n 3;374,1233,375;,\n 3;1233,374,1234;,\n 3;360,1218,1213;,\n 3;1218,360,361;,\n 3;1237,1242,1238;,\n 3;1242,1237,1241;,\n 3;1238,1243,1239;,\n 3;1243,1238,1242;,\n 3;1239,1244,1240;,\n 3;1244,1239,1243;,\n 3;1241,1245,1242;,\n 3;1242,1246,1243;,\n 3;1246,1242,1245;,\n 3;1243,1247,1244;,\n 3;1247,1243,1246;,\n 3;1245,1249,1246;,\n 3;1249,1245,1248;,\n 3;1246,1250,1247;,\n 3;1250,1246,1249;,\n 3;1248,1251,1249;,\n 3;1249,1252,1250;,\n 3;1252,1249,1251;,\n 3;376,312,1240;,\n 3;312,376,30;,\n 3;36,1252,381;,\n 3;1252,36,380;,\n 3;316,1237,315;,\n 3;377,1240,1244;,\n 3;1240,377,376;,\n 3;1251,381,1252;,\n 3;315,1238,314;,\n 3;1238,315,1237;,\n 3;378,1244,1247;,\n 3;1244,378,377;,\n 3;314,1239,313;,\n 3;1239,314,1238;,\n 3;379,1247,1250;,\n 3;1247,379,378;,\n 3;313,1240,312;,\n 3;1240,313,1239;,\n 3;380,1250,1252;,\n 3;1250,380,379;,\n 3;1253,1259,1254;,\n 3;1259,1253,1258;,\n 3;1254,1260,1255;,\n 3;1260,1254,1259;,\n 3;1255,1261,1256;,\n 3;1261,1255,1260;,\n 3;1256,1262,1257;,\n 3;1262,1256,1261;,\n 3;1258,1264,1259;,\n 3;1264,1258,1263;,\n 3;1259,1265,1260;,\n 3;1265,1259,1264;,\n 3;1260,1266,1261;,\n 3;1266,1260,1265;,\n 3;1261,1267,1262;,\n 3;1267,1261,1266;,\n 3;1263,1269,1264;,\n 3;1269,1263,1268;,\n 3;1264,1270,1265;,\n 3;1270,1264,1269;,\n 3;1265,1271,1266;,\n 3;1271,1265,1270;,\n 3;1266,1272,1267;,\n 3;1272,1266,1271;,\n 3;1268,1274,1269;,\n 3;1274,1268,1273;,\n 3;1269,1275,1270;,\n 3;1275,1269,1274;,\n 3;1270,1276,1271;,\n 3;1276,1270,1275;,\n 3;1271,1277,1272;,\n 3;1277,1271,1276;,\n 3;30,1253,329;,\n 3;1253,30,376;,\n 3;382,325,1257;,\n 3;325,382,31;,\n 3;37,1277,387;,\n 3;1277,37,386;,\n 3;380,391,1273;,\n 3;391,380,36;,\n 3;329,1254,328;,\n 3;1254,329,1253;,\n 3;383,1257,1262;,\n 3;1257,383,382;,\n 3;387,1276,388;,\n 3;1276,387,1277;,\n 3;379,1273,1268;,\n 3;1273,379,380;,\n 3;328,1255,327;,\n 3;1255,328,1254;,\n 3;384,1262,1267;,\n 3;1262,384,383;,\n 3;388,1275,389;,\n 3;1275,388,1276;,\n 3;378,1268,1263;,\n 3;1268,378,379;,\n 3;327,1256,326;,\n 3;1256,327,1255;,\n 3;385,1267,1272;,\n 3;1267,385,384;,\n 3;389,1274,390;,\n 3;1274,389,1275;,\n 3;377,1263,1258;,\n 3;1263,377,378;,\n 3;326,1257,325;,\n 3;1257,326,1256;,\n 3;386,1272,1277;,\n 3;1272,386,385;,\n 3;390,1273,391;,\n 3;1273,390,1274;,\n 3;376,1258,1253;,\n 3;1258,376,377;,\n 3;1278,1284,1279;,\n 3;1284,1278,1283;,\n 3;1279,1285,1280;,\n 3;1285,1279,1284;,\n 3;1280,1286,1281;,\n 3;1286,1280,1285;,\n 3;1281,1287,1282;,\n 3;1287,1281,1286;,\n 3;1283,1289,1284;,\n 3;1289,1283,1288;,\n 3;1284,1290,1285;,\n 3;1290,1284,1289;,\n 3;1285,1291,1286;,\n 3;1291,1285,1290;,\n 3;1286,1292,1287;,\n 3;1292,1286,1291;,\n 3;1288,1294,1289;,\n 3;1294,1288,1293;,\n 3;1289,1295,1290;,\n 3;1295,1289,1294;,\n 3;1290,1296,1291;,\n 3;1296,1290,1295;,\n 3;1291,1297,1292;,\n 3;1297,1291,1296;,\n 3;1293,1299,1294;,\n 3;1299,1293,1298;,\n 3;1294,1300,1295;,\n 3;1300,1294,1299;,\n 3;1295,1301,1296;,\n 3;1301,1295,1300;,\n 3;1296,1302,1297;,\n 3;1302,1296,1301;,\n 3;31,1278,339;,\n 3;1278,31,382;,\n 3;392,335,1282;,\n 3;335,392,32;,\n 3;38,1302,397;,\n 3;1302,38,396;,\n 3;386,401,1298;,\n 3;401,386,37;,\n 3;339,1279,338;,\n 3;1279,339,1278;,\n 3;393,1282,1287;,\n 3;1282,393,392;,\n 3;397,1301,398;,\n 3;1301,397,1302;,\n 3;385,1298,1293;,\n 3;1298,385,386;,\n 3;338,1280,337;,\n 3;1280,338,1279;,\n 3;394,1287,1292;,\n 3;1287,394,393;,\n 3;398,1300,399;,\n 3;1300,398,1301;,\n 3;384,1293,1288;,\n 3;1293,384,385;,\n 3;337,1281,336;,\n 3;1281,337,1280;,\n 3;395,1292,1297;,\n 3;1292,395,394;,\n 3;399,1299,400;,\n 3;1299,399,1300;,\n 3;383,1288,1283;,\n 3;1288,383,384;,\n 3;336,1282,335;,\n 3;1282,336,1281;,\n 3;396,1297,1302;,\n 3;1297,396,395;,\n 3;400,1298,401;,\n 3;1298,400,1299;,\n 3;382,1283,1278;,\n 3;1283,382,383;,\n 3;1303,1309,1304;,\n 3;1309,1303,1308;,\n 3;1304,1310,1305;,\n 3;1310,1304,1309;,\n 3;1305,1311,1306;,\n 3;1311,1305,1310;,\n 3;1306,1312,1307;,\n 3;1312,1306,1311;,\n 3;1308,1314,1309;,\n 3;1314,1308,1313;,\n 3;1309,1315,1310;,\n 3;1315,1309,1314;,\n 3;1310,1316,1311;,\n 3;1316,1310,1315;,\n 3;1311,1317,1312;,\n 3;1317,1311,1316;,\n 3;1313,1319,1314;,\n 3;1319,1313,1318;,\n 3;1314,1320,1315;,\n 3;1320,1314,1319;,\n 3;1315,1321,1316;,\n 3;1321,1315,1320;,\n 3;1316,1322,1317;,\n 3;1322,1316,1321;,\n 3;1318,1324,1319;,\n 3;1324,1318,1323;,\n 3;1319,1325,1320;,\n 3;1325,1319,1324;,\n 3;1320,1326,1321;,\n 3;1326,1320,1325;,\n 3;1321,1327,1322;,\n 3;1327,1321,1326;,\n 3;32,1303,349;,\n 3;1303,32,392;,\n 3;402,345,1307;,\n 3;345,402,33;,\n 3;39,1327,407;,\n 3;1327,39,406;,\n 3;396,411,1323;,\n 3;411,396,38;,\n 3;349,1304,348;,\n 3;1304,349,1303;,\n 3;403,1307,1312;,\n 3;1307,403,402;,\n 3;407,1326,408;,\n 3;1326,407,1327;,\n 3;395,1323,1318;,\n 3;1323,395,396;,\n 3;348,1305,347;,\n 3;1305,348,1304;,\n 3;404,1312,1317;,\n 3;1312,404,403;,\n 3;408,1325,409;,\n 3;1325,408,1326;,\n 3;394,1318,1313;,\n 3;1318,394,395;,\n 3;347,1306,346;,\n 3;1306,347,1305;,\n 3;405,1317,1322;,\n 3;1317,405,404;,\n 3;409,1324,410;,\n 3;1324,409,1325;,\n 3;393,1313,1308;,\n 3;1313,393,394;,\n 3;346,1307,345;,\n 3;1307,346,1306;,\n 3;406,1322,1327;,\n 3;1322,406,405;,\n 3;410,1323,411;,\n 3;1323,410,1324;,\n 3;392,1308,1303;,\n 3;1308,392,393;,\n 3;1328,1334,1329;,\n 3;1334,1328,1333;,\n 3;1329,1335,1330;,\n 3;1335,1329,1334;,\n 3;1330,1336,1331;,\n 3;1336,1330,1335;,\n 3;1331,1337,1332;,\n 3;1337,1331,1336;,\n 3;1333,1339,1334;,\n 3;1339,1333,1338;,\n 3;1334,1340,1335;,\n 3;1340,1334,1339;,\n 3;1335,1341,1336;,\n 3;1341,1335,1340;,\n 3;1336,1342,1337;,\n 3;1342,1336,1341;,\n 3;1338,1344,1339;,\n 3;1344,1338,1343;,\n 3;1339,1345,1340;,\n 3;1345,1339,1344;,\n 3;1340,1346,1341;,\n 3;1346,1340,1345;,\n 3;1341,1347,1342;,\n 3;1347,1341,1346;,\n 3;1343,1349,1344;,\n 3;1349,1343,1348;,\n 3;1344,1350,1345;,\n 3;1350,1344,1349;,\n 3;1345,1351,1346;,\n 3;1351,1345,1350;,\n 3;1346,1352,1347;,\n 3;1352,1346,1351;,\n 3;33,1328,359;,\n 3;1328,33,402;,\n 3;412,355,1332;,\n 3;355,412,34;,\n 3;40,1352,417;,\n 3;1352,40,416;,\n 3;406,421,1348;,\n 3;421,406,39;,\n 3;359,1329,358;,\n 3;1329,359,1328;,\n 3;413,1332,1337;,\n 3;1332,413,412;,\n 3;417,1351,418;,\n 3;1351,417,1352;,\n 3;405,1348,1343;,\n 3;1348,405,406;,\n 3;358,1330,357;,\n 3;1330,358,1329;,\n 3;414,1337,1342;,\n 3;1337,414,413;,\n 3;418,1350,419;,\n 3;1350,418,1351;,\n 3;404,1343,1338;,\n 3;1343,404,405;,\n 3;357,1331,356;,\n 3;1331,357,1330;,\n 3;415,1342,1347;,\n 3;1342,415,414;,\n 3;419,1349,420;,\n 3;1349,419,1350;,\n 3;403,1338,1333;,\n 3;1338,403,404;,\n 3;356,1332,355;,\n 3;1332,356,1331;,\n 3;416,1347,1352;,\n 3;1347,416,415;,\n 3;420,1348,421;,\n 3;1348,420,1349;,\n 3;402,1333,1328;,\n 3;1333,402,403;,\n 3;1353,1359,1354;,\n 3;1359,1353,1358;,\n 3;1354,1360,1355;,\n 3;1360,1354,1359;,\n 3;1355,1361,1356;,\n 3;1361,1355,1360;,\n 3;1356,1362,1357;,\n 3;1362,1356,1361;,\n 3;1358,1364,1359;,\n 3;1364,1358,1363;,\n 3;1359,1365,1360;,\n 3;1365,1359,1364;,\n 3;1360,1366,1361;,\n 3;1366,1360,1365;,\n 3;1361,1367,1362;,\n 3;1367,1361,1366;,\n 3;1363,1369,1364;,\n 3;1369,1363,1368;,\n 3;1364,1370,1365;,\n 3;1370,1364,1369;,\n 3;1365,1371,1366;,\n 3;1371,1365,1370;,\n 3;1366,1372,1367;,\n 3;1372,1366,1371;,\n 3;1368,1374,1369;,\n 3;1374,1368,1373;,\n 3;1369,1375,1370;,\n 3;1375,1369,1374;,\n 3;1370,1376,1371;,\n 3;1376,1370,1375;,\n 3;1371,1377,1372;,\n 3;1377,1371,1376;,\n 3;34,1353,369;,\n 3;1353,34,412;,\n 3;422,365,1357;,\n 3;365,422,35;,\n 3;41,1377,427;,\n 3;1377,41,426;,\n 3;416,431,1373;,\n 3;431,416,40;,\n 3;369,1354,368;,\n 3;1354,369,1353;,\n 3;423,1357,1362;,\n 3;1357,423,422;,\n 3;427,1376,428;,\n 3;1376,427,1377;,\n 3;415,1373,1368;,\n 3;1373,415,416;,\n 3;368,1355,367;,\n 3;1355,368,1354;,\n 3;424,1362,1367;,\n 3;1362,424,423;,\n 3;428,1375,429;,\n 3;1375,428,1376;,\n 3;414,1368,1363;,\n 3;1368,414,415;,\n 3;367,1356,366;,\n 3;1356,367,1355;,\n 3;425,1367,1372;,\n 3;1367,425,424;,\n 3;429,1374,430;,\n 3;1374,429,1375;,\n 3;413,1363,1358;,\n 3;1363,413,414;,\n 3;366,1357,365;,\n 3;1357,366,1356;,\n 3;426,1372,1377;,\n 3;1372,426,425;,\n 3;430,1373,431;,\n 3;1373,430,1374;,\n 3;412,1358,1353;,\n 3;1358,412,413;,\n 3;1378,1383,1379;,\n 3;1383,1378,1382;,\n 3;1379,1384,1380;,\n 3;1384,1379,1383;,\n 3;1382,1386,1383;,\n 3;1386,1382,1385;,\n 3;1385,1388,1386;,\n 3;1388,1385,1387;,\n 3;35,1378,375;,\n 3;1378,35,422;,\n 3;375,1379,374;,\n 3;1379,375,1378;,\n 3;425,1389,1387;,\n 3;1389,425,426;,\n 3;374,1380,373;,\n 3;1380,374,1379;,\n 3;424,1387,1385;,\n 3;1387,424,425;,\n 3;373,1381,372;,\n 3;1381,373,1380;,\n 3;423,1385,1382;,\n 3;1385,423,424;,\n 3;422,1382,1378;,\n 3;1382,422,423;,\n 3;1390,1396,1391;,\n 3;1396,1390,1395;,\n 3;1391,1397,1392;,\n 3;1397,1391,1396;,\n 3;1392,1398,1393;,\n 3;1398,1392,1397;,\n 3;1393,1399,1394;,\n 3;1399,1393,1398;,\n 3;1397,1400,1398;,\n 3;1398,1401,1399;,\n 3;1401,1398,1400;,\n 3;1400,1403,1401;,\n 3;1403,1400,1402;,\n 3;36,1390,391;,\n 3;432,387,1394;,\n 3;387,432,37;,\n 3;391,1391,390;,\n 3;1391,391,1390;,\n 3;433,1394,1399;,\n 3;1394,433,432;,\n 3;390,1392,389;,\n 3;1392,390,1391;,\n 3;434,1399,1401;,\n 3;1399,434,433;,\n 3;389,1393,388;,\n 3;1393,389,1392;,\n 3;435,1401,1403;,\n 3;1401,435,434;,\n 3;388,1394,387;,\n 3;1394,388,1393;,\n 3;1404,1410,1405;,\n 3;1410,1404,1409;,\n 3;1405,1411,1406;,\n 3;1411,1405,1410;,\n 3;1406,1412,1407;,\n 3;1412,1406,1411;,\n 3;1407,1413,1408;,\n 3;1413,1407,1412;,\n 3;1409,1415,1410;,\n 3;1415,1409,1414;,\n 3;1410,1416,1411;,\n 3;1416,1410,1415;,\n 3;1411,1417,1412;,\n 3;1417,1411,1416;,\n 3;1412,1418,1413;,\n 3;1418,1412,1417;,\n 3;1414,1420,1415;,\n 3;1420,1414,1419;,\n 3;1415,1421,1416;,\n 3;1421,1415,1420;,\n 3;1416,1422,1417;,\n 3;1422,1416,1421;,\n 3;1417,1423,1418;,\n 3;1423,1417,1422;,\n 3;1419,1424,1420;,\n 3;1420,1425,1421;,\n 3;1425,1420,1424;,\n 3;1421,1426,1422;,\n 3;1426,1421,1425;,\n 3;1422,1427,1423;,\n 3;1427,1422,1426;,\n 3;37,1404,401;,\n 3;1404,37,432;,\n 3;436,397,1408;,\n 3;397,436,38;,\n 3;42,1427,441;,\n 3;1427,42,440;,\n 3;401,1405,400;,\n 3;1405,401,1404;,\n 3;437,1408,1413;,\n 3;1408,437,436;,\n 3;441,1426,442;,\n 3;1426,441,1427;,\n 3;400,1406,399;,\n 3;1406,400,1405;,\n 3;438,1413,1418;,\n 3;1413,438,437;,\n 3;442,1425,443;,\n 3;1425,442,1426;,\n 3;434,1419,1414;,\n 3;1419,434,435;,\n 3;399,1407,398;,\n 3;1407,399,1406;,\n 3;439,1418,1423;,\n 3;1418,439,438;,\n 3;1424,443,1425;,\n 3;433,1414,1409;,\n 3;1414,433,434;,\n 3;398,1408,397;,\n 3;1408,398,1407;,\n 3;440,1423,1427;,\n 3;1423,440,439;,\n 3;432,1409,1404;,\n 3;1409,432,433;,\n 3;1428,1434,1429;,\n 3;1434,1428,1433;,\n 3;1429,1435,1430;,\n 3;1435,1429,1434;,\n 3;1430,1436,1431;,\n 3;1436,1430,1435;,\n 3;1431,1437,1432;,\n 3;1437,1431,1436;,\n 3;1433,1439,1434;,\n 3;1439,1433,1438;,\n 3;1434,1440,1435;,\n 3;1440,1434,1439;,\n 3;1435,1441,1436;,\n 3;1441,1435,1440;,\n 3;1436,1442,1437;,\n 3;1442,1436,1441;,\n 3;1438,1444,1439;,\n 3;1444,1438,1443;,\n 3;1439,1445,1440;,\n 3;1445,1439,1444;,\n 3;1440,1446,1441;,\n 3;1446,1440,1445;,\n 3;1441,1447,1442;,\n 3;1447,1441,1446;,\n 3;1443,1449,1444;,\n 3;1449,1443,1448;,\n 3;1444,1450,1445;,\n 3;1450,1444,1449;,\n 3;1445,1451,1446;,\n 3;1451,1445,1450;,\n 3;1446,1452,1447;,\n 3;1452,1446,1451;,\n 3;38,1428,411;,\n 3;1428,38,436;,\n 3;444,407,1432;,\n 3;407,444,39;,\n 3;43,1452,449;,\n 3;1452,43,448;,\n 3;440,453,1448;,\n 3;453,440,42;,\n 3;411,1429,410;,\n 3;1429,411,1428;,\n 3;445,1432,1437;,\n 3;1432,445,444;,\n 3;449,1451,450;,\n 3;1451,449,1452;,\n 3;439,1448,1443;,\n 3;1448,439,440;,\n 3;410,1430,409;,\n 3;1430,410,1429;,\n 3;446,1437,1442;,\n 3;1437,446,445;,\n 3;450,1450,451;,\n 3;1450,450,1451;,\n 3;438,1443,1438;,\n 3;1443,438,439;,\n 3;409,1431,408;,\n 3;1431,409,1430;,\n 3;447,1442,1447;,\n 3;1442,447,446;,\n 3;451,1449,452;,\n 3;1449,451,1450;,\n 3;437,1438,1433;,\n 3;1438,437,438;,\n 3;408,1432,407;,\n 3;1432,408,1431;,\n 3;448,1447,1452;,\n 3;1447,448,447;,\n 3;452,1448,453;,\n 3;1448,452,1449;,\n 3;436,1433,1428;,\n 3;1433,436,437;,\n 3;1453,1459,1454;,\n 3;1459,1453,1458;,\n 3;1454,1460,1455;,\n 3;1460,1454,1459;,\n 3;1455,1461,1456;,\n 3;1461,1455,1460;,\n 3;1456,1462,1457;,\n 3;1462,1456,1461;,\n 3;1458,1464,1459;,\n 3;1464,1458,1463;,\n 3;1459,1465,1460;,\n 3;1465,1459,1464;,\n 3;1460,1466,1461;,\n 3;1466,1460,1465;,\n 3;1461,1467,1462;,\n 3;1467,1461,1466;,\n 3;1463,1469,1464;,\n 3;1469,1463,1468;,\n 3;1464,1470,1465;,\n 3;1470,1464,1469;,\n 3;1465,1471,1466;,\n 3;1471,1465,1470;,\n 3;1466,1472,1467;,\n 3;1472,1466,1471;,\n 3;1468,1474,1469;,\n 3;1474,1468,1473;,\n 3;1469,1475,1470;,\n 3;1475,1469,1474;,\n 3;1470,1476,1471;,\n 3;1476,1470,1475;,\n 3;39,1453,421;,\n 3;1453,39,444;,\n 3;454,417,1457;,\n 3;417,454,40;,\n 3;448,459,1473;,\n 3;459,448,43;,\n 3;421,1454,420;,\n 3;1454,421,1453;,\n 3;455,1457,1462;,\n 3;1457,455,454;,\n 3;447,1473,1468;,\n 3;1473,447,448;,\n 3;420,1455,419;,\n 3;1455,420,1454;,\n 3;456,1462,1467;,\n 3;1462,456,455;,\n 3;446,1468,1463;,\n 3;1468,446,447;,\n 3;419,1456,418;,\n 3;1456,419,1455;,\n 3;457,1467,1472;,\n 3;1467,457,456;,\n 3;445,1463,1458;,\n 3;1463,445,446;,\n 3;418,1457,417;,\n 3;1457,418,1456;,\n 3;458,1473,459;,\n 3;1473,458,1474;,\n 3;444,1458,1453;,\n 3;1458,444,445;,\n 3;1477,1483,1478;,\n 3;1483,1477,1482;,\n 3;1478,1484,1479;,\n 3;1484,1478,1483;,\n 3;1479,1485,1480;,\n 3;1485,1479,1484;,\n 3;1482,1487,1483;,\n 3;1487,1482,1486;,\n 3;1483,1488,1484;,\n 3;1488,1483,1487;,\n 3;40,1477,431;,\n 3;1477,40,454;,\n 3;431,1478,430;,\n 3;1478,431,1477;,\n 3;430,1479,429;,\n 3;1479,430,1478;,\n 3;456,1489,1486;,\n 3;1489,456,457;,\n 3;429,1480,428;,\n 3;1480,429,1479;,\n 3;455,1486,1482;,\n 3;1486,455,456;,\n 3;428,1481,427;,\n 3;1481,428,1480;,\n 3;454,1482,1477;,\n 3;1482,454,455;;\n\n    MeshMaterialList {\n        1;\n    1;\n    0;;\n       Material {\n     0.945098;0.913726;0.843137;1.000000;;\n     23.000000;\n     1.000000;1.000000;1.000000;;\n         0.000000;0.000000;0.000000;;\n         TextureFilename { \"seafloor.bmp\"; }\n   }\n   }\n    MeshTextureCoords {\n    1490;\n    0.428571;1.000000;,\n    0.571429;1.000000;,\n    0.142857;0.857143;,\n    0.285714;0.857143;,\n    0.428571;0.857143;,\n    0.571429;0.857143;,\n    0.714286;0.857143;,\n    0.857143;0.857143;,\n    0.142857;0.714286;,\n    0.285714;0.714286;,\n    0.428571;0.714286;,\n    0.571429;0.714286;,\n    0.714286;0.714286;,\n    0.857143;0.714286;,\n    0.000000;0.571429;,\n    0.142857;0.571429;,\n    0.285714;0.571429;,\n    0.428571;0.571429;,\n    0.571429;0.571429;,\n    0.714286;0.571429;,\n    0.857143;0.571429;,\n    1.000000;0.571429;,\n    0.000000;0.428571;,\n    0.142857;0.428571;,\n    0.285714;0.428571;,\n    0.428571;0.428571;,\n    0.571429;0.428571;,\n    0.714286;0.428571;,\n    0.857143;0.428571;,\n    1.000000;0.428571;,\n    0.142857;0.285714;,\n    0.285714;0.285714;,\n    0.428571;0.285714;,\n    0.571429;0.285714;,\n    0.714286;0.285714;,\n    0.857143;0.285714;,\n    0.142857;0.142857;,\n    0.285714;0.142857;,\n    0.428571;0.142857;,\n    0.571429;0.142857;,\n    0.714286;0.142857;,\n    0.857143;0.142857;,\n    0.428571;0.000000;,\n    0.571429;0.000000;,\n    0.119048;0.857143;,\n    0.285714;0.952381;,\n    0.285714;0.928571;,\n    0.285714;0.904762;,\n    0.285714;0.880952;,\n    0.261905;0.857143;,\n    0.238095;0.857143;,\n    0.214286;0.857143;,\n    0.190476;0.857143;,\n    0.166667;0.857143;,\n    0.380952;1.000000;,\n    0.404762;1.000000;,\n    0.428571;0.976190;,\n    0.428571;0.952381;,\n    0.428571;0.928571;,\n    0.428571;0.904762;,\n    0.428571;0.880952;,\n    0.404762;0.857143;,\n    0.380952;0.857143;,\n    0.357143;0.857143;,\n    0.333333;0.857143;,\n    0.309524;0.857143;,\n    0.452381;1.000000;,\n    0.476190;1.000000;,\n    0.500000;1.000000;,\n    0.523810;1.000000;,\n    0.547619;1.000000;,\n    0.571429;0.976190;,\n    0.571429;0.952381;,\n    0.571429;0.928571;,\n    0.571429;0.904762;,\n    0.571429;0.880952;,\n    0.547619;0.857143;,\n    0.523810;0.857143;,\n    0.500000;0.857143;,\n    0.476190;0.857143;,\n    0.452381;0.857143;,\n    0.595238;1.000000;,\n    0.619048;1.000000;,\n    0.714286;0.952381;,\n    0.714286;0.928571;,\n    0.714286;0.904762;,\n    0.714286;0.880952;,\n    0.690476;0.857143;,\n    0.666667;0.857143;,\n    0.642857;0.857143;,\n    0.619048;0.857143;,\n    0.595238;0.857143;,\n    0.857143;0.880952;,\n    0.833333;0.857143;,\n    0.809524;0.857143;,\n    0.785714;0.857143;,\n    0.761905;0.857143;,\n    0.738095;0.857143;,\n    0.142857;0.833333;,\n    0.142857;0.809524;,\n    0.142857;0.785714;,\n    0.142857;0.761905;,\n    0.142857;0.738095;,\n    0.119048;0.714286;,\n    0.095238;0.714286;,\n    0.071429;0.714286;,\n    0.047619;0.714286;,\n    0.285714;0.833333;,\n    0.285714;0.809524;,\n    0.285714;0.785714;,\n    0.285714;0.761905;,\n    0.285714;0.738095;,\n    0.261905;0.714286;,\n    0.238095;0.714286;,\n    0.214286;0.714286;,\n    0.190476;0.714286;,\n    0.166667;0.714286;,\n    0.428571;0.833333;,\n    0.428571;0.809524;,\n    0.428571;0.785714;,\n    0.428571;0.761905;,\n    0.428571;0.738095;,\n    0.404762;0.714286;,\n    0.380952;0.714286;,\n    0.357143;0.714286;,\n    0.333333;0.714286;,\n    0.309524;0.714286;,\n    0.571429;0.833333;,\n    0.571429;0.809524;,\n    0.571429;0.785714;,\n    0.571429;0.761905;,\n    0.571429;0.738095;,\n    0.547619;0.714286;,\n    0.523810;0.714286;,\n    0.500000;0.714286;,\n    0.476190;0.714286;,\n    0.452381;0.714286;,\n    0.714286;0.833333;,\n    0.714286;0.809524;,\n    0.714286;0.785714;,\n    0.714286;0.761905;,\n    0.714286;0.738095;,\n    0.690476;0.714286;,\n    0.666667;0.714286;,\n    0.642857;0.714286;,\n    0.619048;0.714286;,\n    0.595238;0.714286;,\n    0.857143;0.833333;,\n    0.857143;0.809524;,\n    0.857143;0.785714;,\n    0.857143;0.761905;,\n    0.857143;0.738095;,\n    0.833333;0.714286;,\n    0.809524;0.714286;,\n    0.785714;0.714286;,\n    0.761905;0.714286;,\n    0.738095;0.714286;,\n    0.976190;0.714286;,\n    0.952381;0.714286;,\n    0.928571;0.714286;,\n    0.904762;0.714286;,\n    0.880952;0.714286;,\n    0.142857;0.690476;,\n    0.142857;0.666667;,\n    0.142857;0.642857;,\n    0.142857;0.619048;,\n    0.142857;0.595238;,\n    0.119048;0.571429;,\n    0.095238;0.571429;,\n    0.071429;0.571429;,\n    0.047619;0.571429;,\n    0.023810;0.571429;,\n    0.000000;0.595238;,\n    0.000000;0.619048;,\n    0.000000;0.642857;,\n    0.285714;0.690476;,\n    0.285714;0.666667;,\n    0.285714;0.642857;,\n    0.285714;0.619048;,\n    0.285714;0.595238;,\n    0.261905;0.571429;,\n    0.238095;0.571429;,\n    0.214286;0.571429;,\n    0.190476;0.571429;,\n    0.166667;0.571429;,\n    0.428571;0.690476;,\n    0.428571;0.666667;,\n    0.428571;0.642857;,\n    0.428571;0.619048;,\n    0.428571;0.595238;,\n    0.404762;0.571429;,\n    0.380952;0.571429;,\n    0.357143;0.571429;,\n    0.333333;0.571429;,\n    0.309524;0.571429;,\n    0.571429;0.690476;,\n    0.571429;0.666667;,\n    0.571429;0.642857;,\n    0.571429;0.619048;,\n    0.571429;0.595238;,\n    0.547619;0.571429;,\n    0.523810;0.571429;,\n    0.500000;0.571429;,\n    0.476190;0.571429;,\n    0.452381;0.571429;,\n    0.714286;0.690476;,\n    0.714286;0.666667;,\n    0.714286;0.642857;,\n    0.714286;0.619048;,\n    0.714286;0.595238;,\n    0.690476;0.571429;,\n    0.666667;0.571429;,\n    0.642857;0.571429;,\n    0.619048;0.571429;,\n    0.595238;0.571429;,\n    0.857143;0.690476;,\n    0.857143;0.666667;,\n    0.857143;0.642857;,\n    0.857143;0.619048;,\n    0.857143;0.595238;,\n    0.833333;0.571429;,\n    0.809524;0.571429;,\n    0.785714;0.571429;,\n    0.761905;0.571429;,\n    0.738095;0.571429;,\n    1.000000;0.619048;,\n    1.000000;0.595238;,\n    0.976190;0.571429;,\n    0.952381;0.571429;,\n    0.928571;0.571429;,\n    0.904762;0.571429;,\n    0.880952;0.571429;,\n    0.142857;0.547619;,\n    0.142857;0.523810;,\n    0.142857;0.500000;,\n    0.142857;0.476190;,\n    0.142857;0.452381;,\n    0.119048;0.428571;,\n    0.095238;0.428571;,\n    0.071429;0.428571;,\n    0.047619;0.428571;,\n    0.023810;0.428571;,\n    0.000000;0.452381;,\n    0.000000;0.476190;,\n    0.000000;0.500000;,\n    0.000000;0.523810;,\n    0.000000;0.547619;,\n    0.285714;0.547619;,\n    0.285714;0.523810;,\n    0.285714;0.500000;,\n    0.285714;0.476190;,\n    0.285714;0.452381;,\n    0.261905;0.428571;,\n    0.238095;0.428571;,\n    0.214286;0.428571;,\n    0.190476;0.428571;,\n    0.166667;0.428571;,\n    0.428571;0.547619;,\n    0.428571;0.523810;,\n    0.428571;0.500000;,\n    0.428571;0.476190;,\n    0.428571;0.452381;,\n    0.404762;0.428571;,\n    0.380952;0.428571;,\n    0.357143;0.428571;,\n    0.333333;0.428571;,\n    0.309524;0.428571;,\n    0.571429;0.547619;,\n    0.571429;0.523810;,\n    0.571429;0.500000;,\n    0.571429;0.476190;,\n    0.571429;0.452381;,\n    0.547619;0.428571;,\n    0.523810;0.428571;,\n    0.500000;0.428571;,\n    0.476190;0.428571;,\n    0.452381;0.428571;,\n    0.714286;0.547619;,\n    0.714286;0.523810;,\n    0.714286;0.500000;,\n    0.714286;0.476190;,\n    0.714286;0.452381;,\n    0.690476;0.428571;,\n    0.666667;0.428571;,\n    0.642857;0.428571;,\n    0.619048;0.428571;,\n    0.595238;0.428571;,\n    0.857143;0.547619;,\n    0.857143;0.523810;,\n    0.857143;0.500000;,\n    0.857143;0.476190;,\n    0.857143;0.452381;,\n    0.833333;0.428571;,\n    0.809524;0.428571;,\n    0.785714;0.428571;,\n    0.761905;0.428571;,\n    0.738095;0.428571;,\n    1.000000;0.547619;,\n    1.000000;0.523810;,\n    1.000000;0.500000;,\n    1.000000;0.476190;,\n    1.000000;0.452381;,\n    0.976190;0.428571;,\n    0.952381;0.428571;,\n    0.928571;0.428571;,\n    0.904762;0.428571;,\n    0.880952;0.428571;,\n    0.142857;0.404762;,\n    0.142857;0.380952;,\n    0.142857;0.357143;,\n    0.142857;0.333333;,\n    0.142857;0.309524;,\n    0.119048;0.285714;,\n    0.095238;0.285714;,\n    0.071429;0.285714;,\n    0.047619;0.285714;,\n    0.023810;0.285714;,\n    0.000000;0.357143;,\n    0.000000;0.380952;,\n    0.000000;0.404762;,\n    0.285714;0.404762;,\n    0.285714;0.380952;,\n    0.285714;0.357143;,\n    0.285714;0.333333;,\n    0.285714;0.309524;,\n    0.261905;0.285714;,\n    0.238095;0.285714;,\n    0.214286;0.285714;,\n    0.190476;0.285714;,\n    0.166667;0.285714;,\n    0.428571;0.404762;,\n    0.428571;0.380952;,\n    0.428571;0.357143;,\n    0.428571;0.333333;,\n    0.428571;0.309524;,\n    0.404762;0.285714;,\n    0.380952;0.285714;,\n    0.357143;0.285714;,\n    0.333333;0.285714;,\n    0.309524;0.285714;,\n    0.571429;0.404762;,\n    0.571429;0.380952;,\n    0.571429;0.357143;,\n    0.571429;0.333333;,\n    0.571429;0.309524;,\n    0.547619;0.285714;,\n    0.523810;0.285714;,\n    0.500000;0.285714;,\n    0.476190;0.285714;,\n    0.452381;0.285714;,\n    0.714286;0.404762;,\n    0.714286;0.380952;,\n    0.714286;0.357143;,\n    0.714286;0.333333;,\n    0.714286;0.309524;,\n    0.690476;0.285714;,\n    0.666667;0.285714;,\n    0.642857;0.285714;,\n    0.619048;0.285714;,\n    0.595238;0.285714;,\n    0.857143;0.404762;,\n    0.857143;0.380952;,\n    0.857143;0.357143;,\n    0.857143;0.333333;,\n    0.857143;0.309524;,\n    0.833333;0.285714;,\n    0.809524;0.285714;,\n    0.785714;0.285714;,\n    0.761905;0.285714;,\n    0.738095;0.285714;,\n    1.000000;0.404762;,\n    1.000000;0.380952;,\n    0.952381;0.285714;,\n    0.928571;0.285714;,\n    0.904762;0.285714;,\n    0.880952;0.285714;,\n    0.142857;0.261905;,\n    0.142857;0.238095;,\n    0.142857;0.214286;,\n    0.142857;0.190476;,\n    0.142857;0.166667;,\n    0.119048;0.142857;,\n    0.285714;0.261905;,\n    0.285714;0.238095;,\n    0.285714;0.214286;,\n    0.285714;0.190476;,\n    0.285714;0.166667;,\n    0.261905;0.142857;,\n    0.238095;0.142857;,\n    0.214286;0.142857;,\n    0.190476;0.142857;,\n    0.166667;0.142857;,\n    0.428571;0.261905;,\n    0.428571;0.238095;,\n    0.428571;0.214286;,\n    0.428571;0.190476;,\n    0.428571;0.166667;,\n    0.404762;0.142857;,\n    0.380952;0.142857;,\n    0.357143;0.142857;,\n    0.333333;0.142857;,\n    0.309524;0.142857;,\n    0.571429;0.261905;,\n    0.571429;0.238095;,\n    0.571429;0.214286;,\n    0.571429;0.190476;,\n    0.571429;0.166667;,\n    0.547619;0.142857;,\n    0.523810;0.142857;,\n    0.500000;0.142857;,\n    0.476190;0.142857;,\n    0.452381;0.142857;,\n    0.714286;0.261905;,\n    0.714286;0.238095;,\n    0.714286;0.214286;,\n    0.714286;0.190476;,\n    0.714286;0.166667;,\n    0.690476;0.142857;,\n    0.666667;0.142857;,\n    0.642857;0.142857;,\n    0.619048;0.142857;,\n    0.595238;0.142857;,\n    0.857143;0.261905;,\n    0.857143;0.238095;,\n    0.857143;0.214286;,\n    0.857143;0.190476;,\n    0.857143;0.166667;,\n    0.833333;0.142857;,\n    0.809524;0.142857;,\n    0.785714;0.142857;,\n    0.761905;0.142857;,\n    0.738095;0.142857;,\n    0.285714;0.119048;,\n    0.285714;0.095238;,\n    0.285714;0.071429;,\n    0.285714;0.047619;,\n    0.428571;0.119048;,\n    0.428571;0.095238;,\n    0.428571;0.071429;,\n    0.428571;0.047619;,\n    0.428571;0.023810;,\n    0.404762;0.000000;,\n    0.380952;0.000000;,\n    0.357143;0.000000;,\n    0.571429;0.119048;,\n    0.571429;0.095238;,\n    0.571429;0.071429;,\n    0.571429;0.047619;,\n    0.571429;0.023810;,\n    0.547619;0.000000;,\n    0.523810;0.000000;,\n    0.500000;0.000000;,\n    0.476190;0.000000;,\n    0.452381;0.000000;,\n    0.714286;0.119048;,\n    0.714286;0.095238;,\n    0.714286;0.071429;,\n    0.714286;0.047619;,\n    0.619048;0.000000;,\n    0.595238;0.000000;,\n    0.261905;0.952381;,\n    0.214286;0.928571;,\n    0.238095;0.928571;,\n    0.261905;0.928571;,\n    0.190476;0.904762;,\n    0.214286;0.904762;,\n    0.238095;0.904762;,\n    0.261905;0.904762;,\n    0.166667;0.880952;,\n    0.190476;0.880952;,\n    0.214286;0.880952;,\n    0.238095;0.880952;,\n    0.261905;0.880952;,\n    0.309524;0.976190;,\n    0.333333;0.976190;,\n    0.357143;0.976190;,\n    0.380952;0.976190;,\n    0.404762;0.976190;,\n    0.309524;0.952381;,\n    0.333333;0.952381;,\n    0.357143;0.952381;,\n    0.380952;0.952381;,\n    0.404762;0.952381;,\n    0.309524;0.928571;,\n    0.333333;0.928571;,\n    0.357143;0.928571;,\n    0.380952;0.928571;,\n    0.404762;0.928571;,\n    0.309524;0.904762;,\n    0.333333;0.904762;,\n    0.357143;0.904762;,\n    0.380952;0.904762;,\n    0.404762;0.904762;,\n    0.309524;0.880952;,\n    0.333333;0.880952;,\n    0.357143;0.880952;,\n    0.380952;0.880952;,\n    0.404762;0.880952;,\n    0.452381;0.976190;,\n    0.476190;0.976190;,\n    0.500000;0.976190;,\n    0.523810;0.976190;,\n    0.547619;0.976190;,\n    0.452381;0.952381;,\n    0.476190;0.952381;,\n    0.500000;0.952381;,\n    0.523810;0.952381;,\n    0.547619;0.952381;,\n    0.452381;0.928571;,\n    0.476190;0.928571;,\n    0.500000;0.928571;,\n    0.523810;0.928571;,\n    0.547619;0.928571;,\n    0.452381;0.904762;,\n    0.476190;0.904762;,\n    0.500000;0.904762;,\n    0.523810;0.904762;,\n    0.547619;0.904762;,\n    0.452381;0.880952;,\n    0.476190;0.880952;,\n    0.500000;0.880952;,\n    0.523810;0.880952;,\n    0.547619;0.880952;,\n    0.595238;0.976190;,\n    0.619048;0.976190;,\n    0.642857;0.976190;,\n    0.666667;0.976190;,\n    0.690476;0.976190;,\n    0.595238;0.952381;,\n    0.619048;0.952381;,\n    0.642857;0.952381;,\n    0.666667;0.952381;,\n    0.690476;0.952381;,\n    0.595238;0.928571;,\n    0.619048;0.928571;,\n    0.642857;0.928571;,\n    0.666667;0.928571;,\n    0.690476;0.928571;,\n    0.595238;0.904762;,\n    0.619048;0.904762;,\n    0.642857;0.904762;,\n    0.666667;0.904762;,\n    0.690476;0.904762;,\n    0.595238;0.880952;,\n    0.619048;0.880952;,\n    0.642857;0.880952;,\n    0.666667;0.880952;,\n    0.690476;0.880952;,\n    0.738095;0.952381;,\n    0.738095;0.928571;,\n    0.761905;0.928571;,\n    0.785714;0.928571;,\n    0.738095;0.904762;,\n    0.761905;0.904762;,\n    0.785714;0.904762;,\n    0.809524;0.904762;,\n    0.738095;0.880952;,\n    0.761905;0.880952;,\n    0.785714;0.880952;,\n    0.809524;0.880952;,\n    0.833333;0.880952;,\n    0.119048;0.833333;,\n    0.095238;0.809524;,\n    0.119048;0.809524;,\n    0.071429;0.785714;,\n    0.095238;0.785714;,\n    0.119048;0.785714;,\n    0.071429;0.761905;,\n    0.095238;0.761905;,\n    0.119048;0.761905;,\n    0.047619;0.738095;,\n    0.071429;0.738095;,\n    0.095238;0.738095;,\n    0.119048;0.738095;,\n    0.166667;0.833333;,\n    0.190476;0.833333;,\n    0.214286;0.833333;,\n    0.238095;0.833333;,\n    0.261905;0.833333;,\n    0.166667;0.809524;,\n    0.190476;0.809524;,\n    0.214286;0.809524;,\n    0.238095;0.809524;,\n    0.261905;0.809524;,\n    0.166667;0.785714;,\n    0.190476;0.785714;,\n    0.214286;0.785714;,\n    0.238095;0.785714;,\n    0.261905;0.785714;,\n    0.166667;0.761905;,\n    0.190476;0.761905;,\n    0.214286;0.761905;,\n    0.238095;0.761905;,\n    0.261905;0.761905;,\n    0.166667;0.738095;,\n    0.190476;0.738095;,\n    0.214286;0.738095;,\n    0.238095;0.738095;,\n    0.261905;0.738095;,\n    0.309524;0.833333;,\n    0.333333;0.833333;,\n    0.357143;0.833333;,\n    0.380952;0.833333;,\n    0.404762;0.833333;,\n    0.309524;0.809524;,\n    0.333333;0.809524;,\n    0.357143;0.809524;,\n    0.380952;0.809524;,\n    0.404762;0.809524;,\n    0.309524;0.785714;,\n    0.333333;0.785714;,\n    0.357143;0.785714;,\n    0.380952;0.785714;,\n    0.404762;0.785714;,\n    0.309524;0.761905;,\n    0.333333;0.761905;,\n    0.357143;0.761905;,\n    0.380952;0.761905;,\n    0.404762;0.761905;,\n    0.309524;0.738095;,\n    0.333333;0.738095;,\n    0.357143;0.738095;,\n    0.380952;0.738095;,\n    0.404762;0.738095;,\n    0.452381;0.833333;,\n    0.476190;0.833333;,\n    0.500000;0.833333;,\n    0.523810;0.833333;,\n    0.547619;0.833333;,\n    0.452381;0.809524;,\n    0.476190;0.809524;,\n    0.500000;0.809524;,\n    0.523810;0.809524;,\n    0.547619;0.809524;,\n    0.452381;0.785714;,\n    0.476190;0.785714;,\n    0.500000;0.785714;,\n    0.523810;0.785714;,\n    0.547619;0.785714;,\n    0.452381;0.761905;,\n    0.476190;0.761905;,\n    0.500000;0.761905;,\n    0.523810;0.761905;,\n    0.547619;0.761905;,\n    0.452381;0.738095;,\n    0.476190;0.738095;,\n    0.500000;0.738095;,\n    0.523810;0.738095;,\n    0.547619;0.738095;,\n    0.595238;0.833333;,\n    0.619048;0.833333;,\n    0.642857;0.833333;,\n    0.666667;0.833333;,\n    0.690476;0.833333;,\n    0.595238;0.809524;,\n    0.619048;0.809524;,\n    0.642857;0.809524;,\n    0.666667;0.809524;,\n    0.690476;0.809524;,\n    0.595238;0.785714;,\n    0.619048;0.785714;,\n    0.642857;0.785714;,\n    0.666667;0.785714;,\n    0.690476;0.785714;,\n    0.595238;0.761905;,\n    0.619048;0.761905;,\n    0.642857;0.761905;,\n    0.666667;0.761905;,\n    0.690476;0.761905;,\n    0.595238;0.738095;,\n    0.619048;0.738095;,\n    0.642857;0.738095;,\n    0.666667;0.738095;,\n    0.690476;0.738095;,\n    0.738095;0.833333;,\n    0.761905;0.833333;,\n    0.785714;0.833333;,\n    0.809524;0.833333;,\n    0.833333;0.833333;,\n    0.738095;0.809524;,\n    0.761905;0.809524;,\n    0.785714;0.809524;,\n    0.809524;0.809524;,\n    0.833333;0.809524;,\n    0.738095;0.785714;,\n    0.761905;0.785714;,\n    0.785714;0.785714;,\n    0.809524;0.785714;,\n    0.833333;0.785714;,\n    0.738095;0.761905;,\n    0.761905;0.761905;,\n    0.785714;0.761905;,\n    0.809524;0.761905;,\n    0.833333;0.761905;,\n    0.738095;0.738095;,\n    0.761905;0.738095;,\n    0.785714;0.738095;,\n    0.809524;0.738095;,\n    0.833333;0.738095;,\n    0.880952;0.833333;,\n    0.880952;0.809524;,\n    0.904762;0.809524;,\n    0.880952;0.785714;,\n    0.904762;0.785714;,\n    0.928571;0.785714;,\n    0.880952;0.761905;,\n    0.904762;0.761905;,\n    0.928571;0.761905;,\n    0.952381;0.761905;,\n    0.880952;0.738095;,\n    0.904762;0.738095;,\n    0.928571;0.738095;,\n    0.952381;0.738095;,\n    0.023810;0.690476;,\n    0.047619;0.690476;,\n    0.071429;0.690476;,\n    0.095238;0.690476;,\n    0.119048;0.690476;,\n    0.023810;0.666667;,\n    0.047619;0.666667;,\n    0.071429;0.666667;,\n    0.095238;0.666667;,\n    0.119048;0.666667;,\n    0.023810;0.642857;,\n    0.047619;0.642857;,\n    0.071429;0.642857;,\n    0.095238;0.642857;,\n    0.119048;0.642857;,\n    0.023810;0.619048;,\n    0.047619;0.619048;,\n    0.071429;0.619048;,\n    0.095238;0.619048;,\n    0.119048;0.619048;,\n    0.023810;0.595238;,\n    0.047619;0.595238;,\n    0.071429;0.595238;,\n    0.095238;0.595238;,\n    0.119048;0.595238;,\n    0.166667;0.690476;,\n    0.190476;0.690476;,\n    0.214286;0.690476;,\n    0.238095;0.690476;,\n    0.261905;0.690476;,\n    0.166667;0.666667;,\n    0.190476;0.666667;,\n    0.214286;0.666667;,\n    0.238095;0.666667;,\n    0.261905;0.666667;,\n    0.166667;0.642857;,\n    0.190476;0.642857;,\n    0.214286;0.642857;,\n    0.238095;0.642857;,\n    0.261905;0.642857;,\n    0.166667;0.619048;,\n    0.190476;0.619048;,\n    0.214286;0.619048;,\n    0.238095;0.619048;,\n    0.261905;0.619048;,\n    0.166667;0.595238;,\n    0.190476;0.595238;,\n    0.214286;0.595238;,\n    0.238095;0.595238;,\n    0.261905;0.595238;,\n    0.309524;0.690476;,\n    0.333333;0.690476;,\n    0.357143;0.690476;,\n    0.380952;0.690476;,\n    0.404762;0.690476;,\n    0.309524;0.666667;,\n    0.333333;0.666667;,\n    0.357143;0.666667;,\n    0.380952;0.666667;,\n    0.404762;0.666667;,\n    0.309524;0.642857;,\n    0.333333;0.642857;,\n    0.357143;0.642857;,\n    0.380952;0.642857;,\n    0.404762;0.642857;,\n    0.309524;0.619048;,\n    0.333333;0.619048;,\n    0.357143;0.619048;,\n    0.380952;0.619048;,\n    0.404762;0.619048;,\n    0.309524;0.595238;,\n    0.333333;0.595238;,\n    0.357143;0.595238;,\n    0.380952;0.595238;,\n    0.404762;0.595238;,\n    0.452381;0.690476;,\n    0.476190;0.690476;,\n    0.500000;0.690476;,\n    0.523810;0.690476;,\n    0.547619;0.690476;,\n    0.452381;0.666667;,\n    0.476190;0.666667;,\n    0.500000;0.666667;,\n    0.523810;0.666667;,\n    0.547619;0.666667;,\n    0.452381;0.642857;,\n    0.476190;0.642857;,\n    0.500000;0.642857;,\n    0.523810;0.642857;,\n    0.547619;0.642857;,\n    0.452381;0.619048;,\n    0.476190;0.619048;,\n    0.500000;0.619048;,\n    0.523810;0.619048;,\n    0.547619;0.619048;,\n    0.452381;0.595238;,\n    0.476190;0.595238;,\n    0.500000;0.595238;,\n    0.523810;0.595238;,\n    0.547619;0.595238;,\n    0.595238;0.690476;,\n    0.619048;0.690476;,\n    0.642857;0.690476;,\n    0.666667;0.690476;,\n    0.690476;0.690476;,\n    0.595238;0.666667;,\n    0.619048;0.666667;,\n    0.642857;0.666667;,\n    0.666667;0.666667;,\n    0.690476;0.666667;,\n    0.595238;0.642857;,\n    0.619048;0.642857;,\n    0.642857;0.642857;,\n    0.666667;0.642857;,\n    0.690476;0.642857;,\n    0.595238;0.619048;,\n    0.619048;0.619048;,\n    0.642857;0.619048;,\n    0.666667;0.619048;,\n    0.690476;0.619048;,\n    0.595238;0.595238;,\n    0.619048;0.595238;,\n    0.642857;0.595238;,\n    0.666667;0.595238;,\n    0.690476;0.595238;,\n    0.738095;0.690476;,\n    0.761905;0.690476;,\n    0.785714;0.690476;,\n    0.809524;0.690476;,\n    0.833333;0.690476;,\n    0.738095;0.666667;,\n    0.761905;0.666667;,\n    0.785714;0.666667;,\n    0.809524;0.666667;,\n    0.833333;0.666667;,\n    0.738095;0.642857;,\n    0.761905;0.642857;,\n    0.785714;0.642857;,\n    0.809524;0.642857;,\n    0.833333;0.642857;,\n    0.738095;0.619048;,\n    0.761905;0.619048;,\n    0.785714;0.619048;,\n    0.809524;0.619048;,\n    0.833333;0.619048;,\n    0.738095;0.595238;,\n    0.761905;0.595238;,\n    0.785714;0.595238;,\n    0.809524;0.595238;,\n    0.833333;0.595238;,\n    0.880952;0.690476;,\n    0.904762;0.690476;,\n    0.928571;0.690476;,\n    0.952381;0.690476;,\n    0.976190;0.690476;,\n    0.880952;0.666667;,\n    0.904762;0.666667;,\n    0.928571;0.666667;,\n    0.952381;0.666667;,\n    0.976190;0.666667;,\n    0.880952;0.642857;,\n    0.904762;0.642857;,\n    0.928571;0.642857;,\n    0.952381;0.642857;,\n    0.976190;0.642857;,\n    0.880952;0.619048;,\n    0.904762;0.619048;,\n    0.928571;0.619048;,\n    0.952381;0.619048;,\n    0.976190;0.619048;,\n    0.880952;0.595238;,\n    0.904762;0.595238;,\n    0.928571;0.595238;,\n    0.952381;0.595238;,\n    0.976190;0.595238;,\n    0.023810;0.547619;,\n    0.047619;0.547619;,\n    0.071429;0.547619;,\n    0.095238;0.547619;,\n    0.119048;0.547619;,\n    0.023810;0.523810;,\n    0.047619;0.523810;,\n    0.071429;0.523810;,\n    0.095238;0.523810;,\n    0.119048;0.523810;,\n    0.023810;0.500000;,\n    0.047619;0.500000;,\n    0.071429;0.500000;,\n    0.095238;0.500000;,\n    0.119048;0.500000;,\n    0.023810;0.476190;,\n    0.047619;0.476190;,\n    0.071429;0.476190;,\n    0.095238;0.476190;,\n    0.119048;0.476190;,\n    0.023810;0.452381;,\n    0.047619;0.452381;,\n    0.071429;0.452381;,\n    0.095238;0.452381;,\n    0.119048;0.452381;,\n    0.166667;0.547619;,\n    0.190476;0.547619;,\n    0.214286;0.547619;,\n    0.238095;0.547619;,\n    0.261905;0.547619;,\n    0.166667;0.523810;,\n    0.190476;0.523810;,\n    0.214286;0.523810;,\n    0.238095;0.523810;,\n    0.261905;0.523810;,\n    0.166667;0.500000;,\n    0.190476;0.500000;,\n    0.214286;0.500000;,\n    0.238095;0.500000;,\n    0.261905;0.500000;,\n    0.166667;0.476190;,\n    0.190476;0.476190;,\n    0.214286;0.476190;,\n    0.238095;0.476190;,\n    0.261905;0.476190;,\n    0.166667;0.452381;,\n    0.190476;0.452381;,\n    0.214286;0.452381;,\n    0.238095;0.452381;,\n    0.261905;0.452381;,\n    0.309524;0.547619;,\n    0.333333;0.547619;,\n    0.357143;0.547619;,\n    0.380952;0.547619;,\n    0.404762;0.547619;,\n    0.309524;0.523810;,\n    0.333333;0.523810;,\n    0.357143;0.523810;,\n    0.380952;0.523810;,\n    0.404762;0.523810;,\n    0.309524;0.500000;,\n    0.333333;0.500000;,\n    0.357143;0.500000;,\n    0.380952;0.500000;,\n    0.404762;0.500000;,\n    0.309524;0.476190;,\n    0.333333;0.476190;,\n    0.357143;0.476190;,\n    0.380952;0.476190;,\n    0.404762;0.476190;,\n    0.309524;0.452381;,\n    0.333333;0.452381;,\n    0.357143;0.452381;,\n    0.380952;0.452381;,\n    0.404762;0.452381;,\n    0.452381;0.547619;,\n    0.476190;0.547619;,\n    0.500000;0.547619;,\n    0.523810;0.547619;,\n    0.547619;0.547619;,\n    0.452381;0.523810;,\n    0.476190;0.523810;,\n    0.500000;0.523810;,\n    0.523810;0.523810;,\n    0.547619;0.523810;,\n    0.452381;0.500000;,\n    0.476190;0.500000;,\n    0.500000;0.500000;,\n    0.523810;0.500000;,\n    0.547619;0.500000;,\n    0.452381;0.476190;,\n    0.476190;0.476190;,\n    0.500000;0.476190;,\n    0.523810;0.476190;,\n    0.547619;0.476190;,\n    0.452381;0.452381;,\n    0.476190;0.452381;,\n    0.500000;0.452381;,\n    0.523810;0.452381;,\n    0.547619;0.452381;,\n    0.595238;0.547619;,\n    0.619048;0.547619;,\n    0.642857;0.547619;,\n    0.666667;0.547619;,\n    0.690476;0.547619;,\n    0.595238;0.523810;,\n    0.619048;0.523810;,\n    0.642857;0.523810;,\n    0.666667;0.523810;,\n    0.690476;0.523810;,\n    0.595238;0.500000;,\n    0.619048;0.500000;,\n    0.642857;0.500000;,\n    0.666667;0.500000;,\n    0.690476;0.500000;,\n    0.595238;0.476190;,\n    0.619048;0.476190;,\n    0.642857;0.476190;,\n    0.666667;0.476190;,\n    0.690476;0.476190;,\n    0.595238;0.452381;,\n    0.619048;0.452381;,\n    0.642857;0.452381;,\n    0.666667;0.452381;,\n    0.690476;0.452381;,\n    0.738095;0.547619;,\n    0.761905;0.547619;,\n    0.785714;0.547619;,\n    0.809524;0.547619;,\n    0.833333;0.547619;,\n    0.738095;0.523810;,\n    0.761905;0.523810;,\n    0.785714;0.523810;,\n    0.809524;0.523810;,\n    0.833333;0.523810;,\n    0.738095;0.500000;,\n    0.761905;0.500000;,\n    0.785714;0.500000;,\n    0.809524;0.500000;,\n    0.833333;0.500000;,\n    0.738095;0.476190;,\n    0.761905;0.476190;,\n    0.785714;0.476190;,\n    0.809524;0.476190;,\n    0.833333;0.476190;,\n    0.738095;0.452381;,\n    0.761905;0.452381;,\n    0.785714;0.452381;,\n    0.809524;0.452381;,\n    0.833333;0.452381;,\n    0.880952;0.547619;,\n    0.904762;0.547619;,\n    0.928571;0.547619;,\n    0.952381;0.547619;,\n    0.976190;0.547619;,\n    0.880952;0.523810;,\n    0.904762;0.523810;,\n    0.928571;0.523810;,\n    0.952381;0.523810;,\n    0.976190;0.523810;,\n    0.880952;0.500000;,\n    0.904762;0.500000;,\n    0.928571;0.500000;,\n    0.952381;0.500000;,\n    0.976190;0.500000;,\n    0.880952;0.476190;,\n    0.904762;0.476190;,\n    0.928571;0.476190;,\n    0.952381;0.476190;,\n    0.976190;0.476190;,\n    0.880952;0.452381;,\n    0.904762;0.452381;,\n    0.928571;0.452381;,\n    0.952381;0.452381;,\n    0.976190;0.452381;,\n    0.023810;0.404762;,\n    0.047619;0.404762;,\n    0.071429;0.404762;,\n    0.095238;0.404762;,\n    0.119048;0.404762;,\n    0.023810;0.380952;,\n    0.047619;0.380952;,\n    0.071429;0.380952;,\n    0.095238;0.380952;,\n    0.119048;0.380952;,\n    0.023810;0.357143;,\n    0.047619;0.357143;,\n    0.071429;0.357143;,\n    0.095238;0.357143;,\n    0.119048;0.357143;,\n    0.023810;0.333333;,\n    0.047619;0.333333;,\n    0.071429;0.333333;,\n    0.095238;0.333333;,\n    0.119048;0.333333;,\n    0.023810;0.309524;,\n    0.047619;0.309524;,\n    0.071429;0.309524;,\n    0.095238;0.309524;,\n    0.119048;0.309524;,\n    0.166667;0.404762;,\n    0.190476;0.404762;,\n    0.214286;0.404762;,\n    0.238095;0.404762;,\n    0.261905;0.404762;,\n    0.166667;0.380952;,\n    0.190476;0.380952;,\n    0.214286;0.380952;,\n    0.238095;0.380952;,\n    0.261905;0.380952;,\n    0.166667;0.357143;,\n    0.190476;0.357143;,\n    0.214286;0.357143;,\n    0.238095;0.357143;,\n    0.261905;0.357143;,\n    0.166667;0.333333;,\n    0.190476;0.333333;,\n    0.214286;0.333333;,\n    0.238095;0.333333;,\n    0.261905;0.333333;,\n    0.166667;0.309524;,\n    0.190476;0.309524;,\n    0.214286;0.309524;,\n    0.238095;0.309524;,\n    0.261905;0.309524;,\n    0.309524;0.404762;,\n    0.333333;0.404762;,\n    0.357143;0.404762;,\n    0.380952;0.404762;,\n    0.404762;0.404762;,\n    0.309524;0.380952;,\n    0.333333;0.380952;,\n    0.357143;0.380952;,\n    0.380952;0.380952;,\n    0.404762;0.380952;,\n    0.309524;0.357143;,\n    0.333333;0.357143;,\n    0.357143;0.357143;,\n    0.380952;0.357143;,\n    0.404762;0.357143;,\n    0.309524;0.333333;,\n    0.333333;0.333333;,\n    0.357143;0.333333;,\n    0.380952;0.333333;,\n    0.404762;0.333333;,\n    0.309524;0.309524;,\n    0.333333;0.309524;,\n    0.357143;0.309524;,\n    0.380952;0.309524;,\n    0.404762;0.309524;,\n    0.452381;0.404762;,\n    0.476190;0.404762;,\n    0.500000;0.404762;,\n    0.523810;0.404762;,\n    0.547619;0.404762;,\n    0.452381;0.380952;,\n    0.476190;0.380952;,\n    0.500000;0.380952;,\n    0.523810;0.380952;,\n    0.547619;0.380952;,\n    0.452381;0.357143;,\n    0.476190;0.357143;,\n    0.500000;0.357143;,\n    0.523810;0.357143;,\n    0.547619;0.357143;,\n    0.452381;0.333333;,\n    0.476190;0.333333;,\n    0.500000;0.333333;,\n    0.523810;0.333333;,\n    0.547619;0.333333;,\n    0.452381;0.309524;,\n    0.476190;0.309524;,\n    0.500000;0.309524;,\n    0.523810;0.309524;,\n    0.547619;0.309524;,\n    0.595238;0.404762;,\n    0.619048;0.404762;,\n    0.642857;0.404762;,\n    0.666667;0.404762;,\n    0.690476;0.404762;,\n    0.595238;0.380952;,\n    0.619048;0.380952;,\n    0.642857;0.380952;,\n    0.666667;0.380952;,\n    0.690476;0.380952;,\n    0.595238;0.357143;,\n    0.619048;0.357143;,\n    0.642857;0.357143;,\n    0.666667;0.357143;,\n    0.690476;0.357143;,\n    0.595238;0.333333;,\n    0.619048;0.333333;,\n    0.642857;0.333333;,\n    0.666667;0.333333;,\n    0.690476;0.333333;,\n    0.595238;0.309524;,\n    0.619048;0.309524;,\n    0.642857;0.309524;,\n    0.666667;0.309524;,\n    0.690476;0.309524;,\n    0.738095;0.404762;,\n    0.761905;0.404762;,\n    0.785714;0.404762;,\n    0.809524;0.404762;,\n    0.833333;0.404762;,\n    0.738095;0.380952;,\n    0.761905;0.380952;,\n    0.785714;0.380952;,\n    0.809524;0.380952;,\n    0.833333;0.380952;,\n    0.738095;0.357143;,\n    0.761905;0.357143;,\n    0.785714;0.357143;,\n    0.809524;0.357143;,\n    0.833333;0.357143;,\n    0.738095;0.333333;,\n    0.761905;0.333333;,\n    0.785714;0.333333;,\n    0.809524;0.333333;,\n    0.833333;0.333333;,\n    0.738095;0.309524;,\n    0.761905;0.309524;,\n    0.785714;0.309524;,\n    0.809524;0.309524;,\n    0.833333;0.309524;,\n    0.880952;0.404762;,\n    0.904762;0.404762;,\n    0.928571;0.404762;,\n    0.952381;0.404762;,\n    0.976190;0.404762;,\n    0.880952;0.380952;,\n    0.904762;0.380952;,\n    0.928571;0.380952;,\n    0.952381;0.380952;,\n    0.976190;0.380952;,\n    0.880952;0.357143;,\n    0.904762;0.357143;,\n    0.928571;0.357143;,\n    0.952381;0.357143;,\n    0.976190;0.357143;,\n    0.880952;0.333333;,\n    0.904762;0.333333;,\n    0.928571;0.333333;,\n    0.952381;0.333333;,\n    0.976190;0.333333;,\n    0.880952;0.309524;,\n    0.904762;0.309524;,\n    0.928571;0.309524;,\n    0.952381;0.309524;,\n    0.047619;0.261905;,\n    0.071429;0.261905;,\n    0.095238;0.261905;,\n    0.119048;0.261905;,\n    0.047619;0.238095;,\n    0.071429;0.238095;,\n    0.095238;0.238095;,\n    0.119048;0.238095;,\n    0.071429;0.214286;,\n    0.095238;0.214286;,\n    0.119048;0.214286;,\n    0.071429;0.190476;,\n    0.095238;0.190476;,\n    0.119048;0.190476;,\n    0.095238;0.166667;,\n    0.119048;0.166667;,\n    0.166667;0.261905;,\n    0.190476;0.261905;,\n    0.214286;0.261905;,\n    0.238095;0.261905;,\n    0.261905;0.261905;,\n    0.166667;0.238095;,\n    0.190476;0.238095;,\n    0.214286;0.238095;,\n    0.238095;0.238095;,\n    0.261905;0.238095;,\n    0.166667;0.214286;,\n    0.190476;0.214286;,\n    0.214286;0.214286;,\n    0.238095;0.214286;,\n    0.261905;0.214286;,\n    0.166667;0.190476;,\n    0.190476;0.190476;,\n    0.214286;0.190476;,\n    0.238095;0.190476;,\n    0.261905;0.190476;,\n    0.166667;0.166667;,\n    0.190476;0.166667;,\n    0.214286;0.166667;,\n    0.238095;0.166667;,\n    0.261905;0.166667;,\n    0.309524;0.261905;,\n    0.333333;0.261905;,\n    0.357143;0.261905;,\n    0.380952;0.261905;,\n    0.404762;0.261905;,\n    0.309524;0.238095;,\n    0.333333;0.238095;,\n    0.357143;0.238095;,\n    0.380952;0.238095;,\n    0.404762;0.238095;,\n    0.309524;0.214286;,\n    0.333333;0.214286;,\n    0.357143;0.214286;,\n    0.380952;0.214286;,\n    0.404762;0.214286;,\n    0.309524;0.190476;,\n    0.333333;0.190476;,\n    0.357143;0.190476;,\n    0.380952;0.190476;,\n    0.404762;0.190476;,\n    0.309524;0.166667;,\n    0.333333;0.166667;,\n    0.357143;0.166667;,\n    0.380952;0.166667;,\n    0.404762;0.166667;,\n    0.452381;0.261905;,\n    0.476190;0.261905;,\n    0.500000;0.261905;,\n    0.523810;0.261905;,\n    0.547619;0.261905;,\n    0.452381;0.238095;,\n    0.476190;0.238095;,\n    0.500000;0.238095;,\n    0.523810;0.238095;,\n    0.547619;0.238095;,\n    0.452381;0.214286;,\n    0.476190;0.214286;,\n    0.500000;0.214286;,\n    0.523810;0.214286;,\n    0.547619;0.214286;,\n    0.452381;0.190476;,\n    0.476190;0.190476;,\n    0.500000;0.190476;,\n    0.523810;0.190476;,\n    0.547619;0.190476;,\n    0.452381;0.166667;,\n    0.476190;0.166667;,\n    0.500000;0.166667;,\n    0.523810;0.166667;,\n    0.547619;0.166667;,\n    0.595238;0.261905;,\n    0.619048;0.261905;,\n    0.642857;0.261905;,\n    0.666667;0.261905;,\n    0.690476;0.261905;,\n    0.595238;0.238095;,\n    0.619048;0.238095;,\n    0.642857;0.238095;,\n    0.666667;0.238095;,\n    0.690476;0.238095;,\n    0.595238;0.214286;,\n    0.619048;0.214286;,\n    0.642857;0.214286;,\n    0.666667;0.214286;,\n    0.690476;0.214286;,\n    0.595238;0.190476;,\n    0.619048;0.190476;,\n    0.642857;0.190476;,\n    0.666667;0.190476;,\n    0.690476;0.190476;,\n    0.595238;0.166667;,\n    0.619048;0.166667;,\n    0.642857;0.166667;,\n    0.666667;0.166667;,\n    0.690476;0.166667;,\n    0.738095;0.261905;,\n    0.761905;0.261905;,\n    0.785714;0.261905;,\n    0.809524;0.261905;,\n    0.833333;0.261905;,\n    0.738095;0.238095;,\n    0.761905;0.238095;,\n    0.785714;0.238095;,\n    0.809524;0.238095;,\n    0.833333;0.238095;,\n    0.738095;0.214286;,\n    0.761905;0.214286;,\n    0.785714;0.214286;,\n    0.809524;0.214286;,\n    0.833333;0.214286;,\n    0.738095;0.190476;,\n    0.761905;0.190476;,\n    0.785714;0.190476;,\n    0.809524;0.190476;,\n    0.833333;0.190476;,\n    0.738095;0.166667;,\n    0.761905;0.166667;,\n    0.785714;0.166667;,\n    0.809524;0.166667;,\n    0.833333;0.166667;,\n    0.880952;0.261905;,\n    0.904762;0.261905;,\n    0.928571;0.261905;,\n    0.952381;0.261905;,\n    0.880952;0.238095;,\n    0.904762;0.238095;,\n    0.928571;0.238095;,\n    0.880952;0.214286;,\n    0.904762;0.214286;,\n    0.880952;0.190476;,\n    0.904762;0.190476;,\n    0.880952;0.166667;,\n    0.166667;0.119048;,\n    0.190476;0.119048;,\n    0.214286;0.119048;,\n    0.238095;0.119048;,\n    0.261905;0.119048;,\n    0.166667;0.095238;,\n    0.190476;0.095238;,\n    0.214286;0.095238;,\n    0.238095;0.095238;,\n    0.261905;0.095238;,\n    0.238095;0.071429;,\n    0.261905;0.071429;,\n    0.238095;0.047619;,\n    0.261905;0.047619;,\n    0.309524;0.119048;,\n    0.333333;0.119048;,\n    0.357143;0.119048;,\n    0.380952;0.119048;,\n    0.404762;0.119048;,\n    0.309524;0.095238;,\n    0.333333;0.095238;,\n    0.357143;0.095238;,\n    0.380952;0.095238;,\n    0.404762;0.095238;,\n    0.309524;0.071429;,\n    0.333333;0.071429;,\n    0.357143;0.071429;,\n    0.380952;0.071429;,\n    0.404762;0.071429;,\n    0.309524;0.047619;,\n    0.333333;0.047619;,\n    0.357143;0.047619;,\n    0.380952;0.047619;,\n    0.404762;0.047619;,\n    0.333333;0.023810;,\n    0.357143;0.023810;,\n    0.380952;0.023810;,\n    0.404762;0.023810;,\n    0.452381;0.119048;,\n    0.476190;0.119048;,\n    0.500000;0.119048;,\n    0.523810;0.119048;,\n    0.547619;0.119048;,\n    0.452381;0.095238;,\n    0.476190;0.095238;,\n    0.500000;0.095238;,\n    0.523810;0.095238;,\n    0.547619;0.095238;,\n    0.452381;0.071429;,\n    0.476190;0.071429;,\n    0.500000;0.071429;,\n    0.523810;0.071429;,\n    0.547619;0.071429;,\n    0.452381;0.047619;,\n    0.476190;0.047619;,\n    0.500000;0.047619;,\n    0.523810;0.047619;,\n    0.547619;0.047619;,\n    0.452381;0.023810;,\n    0.476190;0.023810;,\n    0.500000;0.023810;,\n    0.523810;0.023810;,\n    0.547619;0.023810;,\n    0.595238;0.119048;,\n    0.619048;0.119048;,\n    0.642857;0.119048;,\n    0.666667;0.119048;,\n    0.690476;0.119048;,\n    0.595238;0.095238;,\n    0.619048;0.095238;,\n    0.642857;0.095238;,\n    0.666667;0.095238;,\n    0.690476;0.095238;,\n    0.595238;0.071429;,\n    0.619048;0.071429;,\n    0.642857;0.071429;,\n    0.666667;0.071429;,\n    0.690476;0.071429;,\n    0.595238;0.047619;,\n    0.619048;0.047619;,\n    0.642857;0.047619;,\n    0.666667;0.047619;,\n    0.690476;0.047619;,\n    0.595238;0.023810;,\n    0.619048;0.023810;,\n    0.642857;0.023810;,\n    0.666667;0.023810;,\n    0.738095;0.119048;,\n    0.761905;0.119048;,\n    0.785714;0.119048;,\n    0.809524;0.119048;,\n    0.833333;0.119048;,\n    0.738095;0.095238;,\n    0.761905;0.095238;,\n    0.785714;0.095238;,\n    0.809524;0.095238;,\n    0.738095;0.071429;,\n    0.761905;0.071429;,\n    0.785714;0.071429;,\n    0.738095;0.047619;;\n  }\n }\n}\n"
  },
  {
    "path": "common/Addons/DXTest/DX8DolphinVS/trace.txt",
    "content": ""
  },
  {
    "path": "common/Addons/DXTest/DX9EnvMapping/airplane 2.x",
    "content": "xof 0303txt 0032\ntemplate VertexDuplicationIndices {\n <b8d65549-d7c9-4995-89cf-53a9a8b031e3>\n DWORD nIndices;\n DWORD nOriginalVertices;\n array DWORD indices[nIndices];\n}\n\ntemplate FVFData {\n <b6e70a0e-8ef9-4e83-94ad-ecc8b0c04897>\n DWORD dwFVF;\n DWORD nDWords;\n array DWORD data[nDWords];\n}\n\ntemplate EffectFloats {\n <f1cfe2b3-0de3-4e28-afa1-155a750a282d>\n DWORD nFloats;\n array FLOAT Floats[nFloats];\n}\n\ntemplate EffectString {\n <d55b097e-bdb6-4c52-b03d-6051c89d0e42>\n STRING Value;\n}\n\ntemplate EffectDWord {\n <622c0ed0-956e-4da9-908a-2af94f3ce716>\n DWORD Value;\n}\n\ntemplate EffectInstance {\n <e331f7e4-0559-4cc2-8e99-1cec1657928f>\n STRING EffectFilename;\n [...]\n}\n\ntemplate AnimTicksPerSecond {\n <9e415a43-7ba6-4a73-8743-b73d47e88476>\n DWORD AnimTicksPerSecond;\n}\n\ntemplate VertexElement {\n <f752461c-1e23-48f6-b9f8-8350850f336f>\n DWORD Type;\n DWORD Method;\n DWORD Usage;\n DWORD UsageIndex;\n}\n\ntemplate DeclData {\n <bf22e553-292c-4781-9fea-62bd554bdd93>\n DWORD nElements;\n array VertexElement Elements[nElements];\n DWORD nDWords;\n array DWORD data[nDWords];\n}\n\n\nFrame SCENE_ROOT {\n \n\n FrameTransformMatrix {\n  1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n }\n\n Frame airplane_b {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh {\n   245;\n   0.350782;0.134766;-3.705020;,\n   -0.299976;0.134766;-3.705020;,\n   0.350782;0.562877;-3.586500;,\n   -0.299976;0.562877;-3.586500;,\n   0.435276;0.357646;-2.367070;,\n   -0.384470;0.357646;-2.367070;,\n   0.390268;-0.269818;-2.919710;,\n   -0.339463;-0.269818;-2.919710;,\n   -0.226041;0.540056;-2.367070;,\n   0.276847;0.540056;-2.367070;,\n   0.438828;0.349993;-2.075790;,\n   0.253892;0.646877;-2.075800;,\n   -0.203087;0.646877;-2.075800;,\n   -0.388023;0.349993;-2.075790;,\n   -0.380393;-0.399859;-2.164040;,\n   0.431218;-0.400603;-2.164040;,\n   0.417014;0.254447;-0.762626;,\n   0.247847;0.503541;-0.762633;,\n   -0.197042;0.503541;-0.762633;,\n   -0.366208;0.254448;-0.762626;,\n   -0.375042;-0.511327;-1.030540;,\n   0.425848;-0.511328;-1.030540;,\n   0.127371;0.058052;2.965310;,\n   -0.076567;0.058052;2.965310;,\n   -0.076567;-0.267921;2.965320;,\n   0.127371;-0.267921;2.965320;,\n   -0.377115;0.302220;-1.419208;,\n   -0.200065;0.575209;-1.419217;,\n   0.250870;0.575209;-1.419217;,\n   0.427921;0.302220;-1.419208;,\n   0.208380;0.642622;-2.036815;,\n   -0.157575;0.642622;-2.036815;,\n   -0.155154;0.579488;-1.441064;,\n   0.205959;0.579488;-1.441064;,\n   0.205959;0.570954;-1.397582;,\n   -0.155154;0.570954;-1.397582;,\n   -0.152734;0.507819;-0.801831;,\n   0.203539;0.507819;-0.801831;,\n   0.356128;-0.048342;-2.036815;,\n   -0.305322;-0.048342;-2.036815;,\n   -0.305322;-0.104661;-1.441064;,\n   0.356128;-0.104661;-1.441064;,\n   0.356128;-0.113195;-1.397582;,\n   -0.305322;-0.113195;-1.397582;,\n   -0.305322;-0.176329;-0.780043;,\n   0.356128;-0.176329;-0.780043;,\n   0.356128;-0.267741;-1.908320;,\n   -0.305322;-0.267741;-1.908320;,\n   -0.305322;-0.296094;-1.608397;,\n   0.356128;-0.296094;-1.608397;,\n   0.356128;-0.334132;-1.265243;,\n   -0.305322;-0.334132;-1.265243;,\n   -0.305322;-0.365916;-0.954351;,\n   0.356128;-0.365916;-0.954351;,\n   -0.385296;0.338050;-1.911644;,\n   -0.323268;0.453416;-1.889030;,\n   -0.253817;0.453416;-1.889030;,\n   -0.305322;-0.062422;-1.887877;,\n   -0.379842;0.314164;-1.583353;,\n   -0.320955;0.433134;-1.601430;,\n   -0.251964;0.433134;-1.601430;,\n   -0.305322;-0.090581;-1.590002;,\n   0.436101;0.338050;-1.911644;,\n   0.374073;0.453416;-1.889030;,\n   0.304622;0.453416;-1.889030;,\n   0.356128;-0.062422;-1.887877;,\n   0.430648;0.314163;-1.583353;,\n   0.371759;0.433134;-1.601430;,\n   0.302769;0.433134;-1.601430;,\n   0.356128;-0.090581;-1.590002;,\n   0.425194;0.290277;-1.255062;,\n   0.375180;0.384325;-1.236900;,\n   0.305508;0.384325;-1.236900;,\n   0.356128;-0.128978;-1.243197;,\n   0.419741;0.266390;-0.926771;,\n   0.372827;0.354953;-0.926779;,\n   0.303624;0.354953;-0.926779;,\n   0.356128;-0.160545;-0.934428;,\n   -0.368935;0.266391;-0.926771;,\n   -0.322022;0.354953;-0.926779;,\n   -0.252819;0.354953;-0.926779;,\n   -0.305322;-0.160545;-0.934428;,\n   -0.374389;0.290277;-1.255062;,\n   -0.324375;0.384325;-1.236900;,\n   -0.254703;0.384325;-1.236900;,\n   -0.305322;-0.128978;-1.243197;,\n   0.350782;0.562877;-3.586500;,\n   0.350782;0.134766;-3.705020;,\n   -0.339463;-0.269818;-2.919710;,\n   -0.299976;0.562877;-3.586500;,\n   0.390268;-0.269818;-2.919710;,\n   0.350782;0.134766;-3.705020;,\n   0.350782;0.562877;-3.586500;,\n   -0.299976;0.562877;-3.586500;,\n   -0.384470;0.357646;-2.367070;,\n   0.276847;0.540056;-2.367070;,\n   0.350782;0.562877;-3.586500;,\n   -0.299976;0.562877;-3.586500;,\n   0.127371;0.058052;2.965310;,\n   -0.076567;0.058052;2.965310;,\n   0.276847;0.540056;-2.367070;,\n   0.253892;0.646877;-2.075800;,\n   -0.384470;0.357646;-2.367070;,\n   -0.203087;0.646877;-2.075800;,\n   -0.339463;-0.269818;-2.919710;,\n   0.390268;-0.269818;-2.919710;,\n   0.431218;-0.400603;-2.164040;,\n   -0.203087;0.646877;-2.075800;,\n   -0.375042;-0.511327;-1.030540;,\n   0.431218;-0.400603;-2.164040;,\n   0.247847;0.503541;-0.762633;,\n   0.127371;0.058052;2.965310;,\n   -0.076567;0.058052;2.965310;,\n   -0.076567;0.058052;2.965310;,\n   -0.375042;-0.511327;-1.030540;,\n   0.127371;-0.267921;2.965320;,\n   0.425848;-0.511328;-1.030540;,\n   0.127371;-0.267921;2.965320;,\n   0.253892;0.646877;-2.075800;,\n   -0.203087;0.646877;-2.075800;,\n   -0.323268;0.453416;-1.889030;,\n   0.374073;0.453416;-1.889030;,\n   -0.324375;0.384325;-1.236900;,\n   0.247847;0.503541;-0.762633;,\n   0.375180;0.384325;-1.236900;,\n   0.208380;0.642622;-2.036815;,\n   -0.253817;0.453416;-1.889030;,\n   -0.305322;-0.048342;-2.036815;,\n   0.205959;0.579488;-1.441064;,\n   0.205959;0.579488;-1.441064;,\n   0.302769;0.433134;-1.601430;,\n   0.205959;0.570954;-1.397582;,\n   -0.254703;0.384325;-1.236900;,\n   -0.305322;-0.113195;-1.397582;,\n   -0.152734;0.507819;-0.801831;,\n   0.203539;0.507819;-0.801831;,\n   0.203539;0.507819;-0.801831;,\n   0.303624;0.354953;-0.926779;,\n   0.356128;-0.048342;-2.036815;,\n   -0.305322;-0.048342;-2.036815;,\n   0.356128;-0.267741;-1.908320;,\n   0.356128;-0.104661;-1.441064;,\n   0.356128;-0.296094;-1.608397;,\n   -0.305322;-0.296094;-1.608397;,\n   0.356128;-0.104661;-1.441064;,\n   0.356128;-0.296094;-1.608397;,\n   0.356128;-0.113195;-1.397582;,\n   -0.305322;-0.113195;-1.397582;,\n   0.356128;-0.334132;-1.265243;,\n   0.356128;-0.176329;-0.780043;,\n   0.356128;-0.365916;-0.954351;,\n   -0.305322;-0.365916;-0.954351;,\n   0.356128;-0.176329;-0.780043;,\n   0.356128;-0.365916;-0.954351;,\n   -0.324375;0.384325;-1.236900;,\n   0.247847;0.503541;-0.762633;,\n   0.372827;0.354953;-0.926779;,\n   0.372827;0.354953;-0.926779;,\n   -0.323268;0.453416;-1.889030;,\n   0.371759;0.433134;-1.601430;,\n   -0.253817;0.453416;-1.889030;,\n   -0.254703;0.384325;-1.236900;,\n   0.303624;0.354953;-0.926779;,\n   0.356128;-0.365916;-0.954351;,\n   0.356128;-0.334132;-1.265243;,\n   0.302769;0.433134;-1.601430;,\n   0.356128;-0.296094;-1.608397;,\n   0.356128;-0.267741;-1.908320;,\n   -0.320955;0.433134;-1.601430;,\n   -0.155154;0.579488;-1.441064;,\n   -0.155154;0.579488;-1.441064;,\n   -0.305322;-0.296094;-1.608397;,\n   0.304622;0.453416;-1.889030;,\n   0.374073;0.453416;-1.889030;,\n   0.208380;0.642622;-2.036815;,\n   0.356128;-0.048342;-2.036815;,\n   0.356128;-0.267741;-1.908320;,\n   0.356128;-0.048342;-2.036815;,\n   0.375180;0.384325;-1.236900;,\n   0.205959;0.570954;-1.397582;,\n   0.356128;-0.113195;-1.397582;,\n   0.356128;-0.334132;-1.265243;,\n   0.356128;-0.113195;-1.397582;,\n   -0.322022;0.354953;-0.926779;,\n   -0.152734;0.507819;-0.801831;,\n   -0.152734;0.507819;-0.801831;,\n   -0.305322;-0.365916;-0.954351;,\n   0.435276;0.357646;-2.367070;,\n   0.435276;0.357646;-2.367070;,\n   0.425848;-0.511328;-1.030540;,\n   0.127371;-0.267921;2.965320;,\n   0.127371;0.058052;2.965310;,\n   0.371759;0.433134;-1.601430;,\n   0.250870;0.575209;-1.419217;,\n   0.250870;0.575209;-1.419217;,\n   0.372827;0.354953;-0.926779;,\n   -0.200065;0.575209;-1.419217;,\n   0.253892;0.646877;-2.075800;,\n   0.304622;0.453416;-1.889030;,\n   -0.203087;0.646877;-2.075800;,\n   -0.320955;0.433134;-1.601430;,\n   -0.200065;0.575209;-1.419217;,\n   -0.322022;0.354953;-0.926779;,\n   -0.322022;0.354953;-0.926779;,\n   -0.197042;0.503541;-0.762633;,\n   0.305508;0.384325;-1.236900;,\n   0.305508;0.384325;-1.236900;,\n   0.203539;0.507819;-0.801831;,\n   -0.299976;0.134766;-3.705020;,\n   -0.299976;0.562877;-3.586500;,\n   -0.226041;0.540056;-2.367070;,\n   -0.226041;0.540056;-2.367070;,\n   -0.157575;0.642622;-2.036815;,\n   -0.305322;-0.048342;-2.036815;,\n   -0.305322;-0.267741;-1.908320;,\n   -0.305322;-0.267741;-1.908320;,\n   -0.305322;-0.104661;-1.441064;,\n   -0.305322;-0.104661;-1.441064;,\n   -0.155154;0.570954;-1.397582;,\n   -0.305322;-0.113195;-1.397582;,\n   -0.305322;-0.334132;-1.265243;,\n   -0.305322;-0.334132;-1.265243;,\n   -0.305322;-0.176329;-0.780043;,\n   -0.305322;-0.176329;-0.780043;,\n   -0.197042;0.503541;-0.762633;,\n   -0.197042;0.503541;-0.762633;,\n   -0.076567;-0.267921;2.965320;,\n   -0.076567;-0.267921;2.965320;,\n   -0.380393;-0.399859;-2.164040;,\n   -0.380393;-0.399859;-2.164040;,\n   -0.299976;0.134766;-3.705020;,\n   -0.157575;0.642622;-2.036815;,\n   -0.251964;0.433134;-1.601430;,\n   -0.155154;0.579488;-1.441064;,\n   -0.251964;0.433134;-1.601430;,\n   -0.155154;0.570954;-1.397582;,\n   -0.252819;0.354953;-0.926779;,\n   -0.152734;0.507819;-0.801831;,\n   -0.252819;0.354953;-0.926779;,\n   0.205959;0.579488;-1.441064;,\n   0.356128;-0.104661;-1.441064;,\n   0.203539;0.507819;-0.801831;,\n   0.356128;-0.176329;-0.780043;,\n   -0.305322;-0.296094;-1.608397;,\n   -0.305322;-0.365916;-0.954351;;\n   168;\n   3;0,3,2;,\n   3;86,9,4;,\n   3;22,17,23;,\n   3;6,7,87;,\n   3;88,5,89;,\n   3;90,91,92;,\n   3;8,93,94;,\n   3;95,96,97;,\n   3;98,99,25;,\n   3;4,11,10;,\n   3;100,12,101;,\n   3;8,102,103;,\n   3;5,104,13;,\n   3;7,6,15;,\n   3;105,10,106;,\n   3;63,66,62;,\n   3;46,48,49;,\n   3;107,13,55;,\n   3;20,78,82;,\n   3;15,21,108;,\n   3;109,10,62;,\n   3;16,110,111;,\n   3;18,19,112;,\n   3;19,24,113;,\n   3;114,21,115;,\n   3;116,16,117;,\n   3;27,26,83;,\n   3;50,52,53;,\n   3;71,74,70;,\n   3;118,119,30;,\n   3;120,56,31;,\n   3;34,28,33;,\n   3;121,68,67;,\n   3;122,84,35;,\n   3;123,37,36;,\n   3;124,76,75;,\n   3;125,39,38;,\n   3;126,57,127;,\n   3;32,128,41;,\n   3;129,130,69;,\n   3;131,43,42;,\n   3;132,85,133;,\n   3;134,135,45;,\n   3;136,137,77;,\n   3;138,139,140;,\n   3;127,57,47;,\n   3;141,142,143;,\n   3;144,69,145;,\n   3;146,147,148;,\n   3;133,85,51;,\n   3;149,150,151;,\n   3;152,77,153;,\n   3;79,83,78;,\n   3;80,84,154;,\n   3;37,155,156;,\n   3;157,16,74;,\n   3;59,55,58;,\n   3;60,56,158;,\n   3;33,28,67;,\n   3;159,29,66;,\n   3;61,57,160;,\n   3;47,57,61;,\n   3;81,85,161;,\n   3;51,85,81;,\n   3;77,162,72;,\n   3;163,77,164;,\n   3;69,165,64;,\n   3;166,69,167;,\n   3;59,26,27;,\n   3;60,168,169;,\n   3;61,170,40;,\n   3;171,61,40;,\n   3;63,62,10;,\n   3;172,173,30;,\n   3;64,174,175;,\n   3;176,65,177;,\n   3;71,70,29;,\n   3;178,28,34;,\n   3;72,179,180;,\n   3;181,73,182;,\n   3;79,19,18;,\n   3;80,183,184;,\n   3;81,185,44;,\n   3;186,81,44;,\n   3;88,89,1;,\n   3;13,88,14;,\n   3;90,92,187;,\n   3;10,90,188;,\n   3;14,54,13;,\n   3;14,58,54;,\n   3;14,26,58;,\n   3;20,26,14;,\n   3;20,82,26;,\n   3;78,20,19;,\n   3;106,29,189;,\n   3;66,106,62;,\n   3;29,106,66;,\n   3;116,70,74;,\n   3;70,116,29;,\n   3;116,74,16;,\n   3;24,19,20;,\n   3;190,16,191;,\n   3;103,94,13;,\n   3;11,4,9;,\n   3;55,13,54;,\n   3;58,55,54;,\n   3;63,10,11;,\n   3;66,63,192;,\n   3;29,159,193;,\n   3;71,29,194;,\n   3;74,71,195;,\n   3;26,59,58;,\n   3;83,26,82;,\n   3;78,83,82;,\n   3;19,79,78;,\n   3;16,157,110;,\n   3;34,169,35;,\n   3;169,34,33;,\n   3;35,169,196;,\n   3;30,121,197;,\n   3;68,121,198;,\n   3;120,31,199;,\n   3;60,120,200;,\n   3;33,67,68;,\n   3;169,168,201;,\n   3;122,35,196;,\n   3;80,122,202;,\n   3;36,203,204;,\n   3;124,34,205;,\n   3;76,124,206;,\n   3;207,75,76;,\n   3;3,0,208;,\n   3;95,209,210;,\n   3;12,95,211;,\n   3;30,119,31;,\n   3;39,125,212;,\n   3;140,213,214;,\n   3;48,46,215;,\n   3;141,143,216;,\n   3;32,41,217;,\n   3;43,131,218;,\n   3;148,219,220;,\n   3;52,50,221;,\n   3;149,151,222;,\n   3;134,45,223;,\n   3;123,36,224;,\n   3;23,17,225;,\n   3;25,99,226;,\n   3;108,115,227;,\n   3;15,108,228;,\n   3;7,15,229;,\n   3;87,7,230;,\n   3;126,127,231;,\n   3;61,126,232;,\n   3;233,61,234;,\n   3;132,133,235;,\n   3;81,132,236;,\n   3;237,81,238;,\n   3;64,175,65;,\n   3;69,64,65;,\n   3;239,69,240;,\n   3;72,180,73;,\n   3;77,72,73;,\n   3;241,77,242;,\n   3;164,77,73;,\n   3;167,69,65;,\n   3;47,61,243;,\n   3;51,81,244;;\n\n   MeshNormals {\n    245;\n    0.000000;0.266808;-0.963750;,\n    -0.998959;0.012170;-0.043960;,\n    0.000000;0.266808;-0.963750;,\n    0.000000;0.266808;-0.963750;,\n    0.777074;0.629327;0.010145;,\n    -0.997991;-0.018108;-0.060716;,\n    0.000000;-0.944615;-0.328179;,\n    -0.000237;-0.947423;-0.319985;,\n    -0.754938;0.655688;0.011960;,\n    0.754937;0.655688;0.011960;,\n    0.996415;0.079394;-0.029230;,\n    0.822045;0.567067;-0.051743;,\n    0.000000;0.938853;-0.344317;,\n    -0.996412;0.079432;-0.029208;,\n    -0.999940;-0.004298;-0.010108;,\n    -0.000466;-0.992027;-0.126022;,\n    0.989979;0.115716;0.080940;,\n    0.000000;0.992935;0.118656;,\n    -0.823550;0.559299;0.094602;,\n    -0.989979;0.115715;0.080940;,\n    -0.998471;-0.009568;0.054440;,\n    -0.000001;-0.999666;0.025858;,\n    0.000000;0.992935;0.118656;,\n    0.000000;0.992935;0.118656;,\n    -0.997053;-0.010578;0.075983;,\n    0.000000;0.000031;1.000000;,\n    -0.997843;0.064118;0.014072;,\n    -0.837228;0.542995;0.064850;,\n    0.289480;0.946159;0.144857;,\n    0.997844;0.064107;0.014083;,\n    0.109412;0.900472;0.420927;,\n    -0.149218;0.834089;0.531065;,\n    0.000000;0.000000;-1.000000;,\n    0.093231;0.949373;-0.299999;,\n    0.053670;0.887061;0.458521;,\n    -0.070806;0.838773;0.539857;,\n    -0.147861;0.987223;-0.059393;,\n    0.238919;0.956807;-0.165642;,\n    0.000000;0.000000;1.000000;,\n    0.000000;0.000000;1.000000;,\n    0.985984;-0.166102;-0.015703;,\n    0.000000;0.000000;-1.000000;,\n    0.000000;0.000000;1.000000;,\n    0.000000;0.000000;1.000000;,\n    0.985451;-0.169080;-0.017286;,\n    0.000000;-0.031831;-0.999493;,\n    0.000000;0.995561;0.094115;,\n    1.000000;0.000000;0.000000;,\n    0.000000;0.995561;0.094115;,\n    0.000000;0.995561;0.094115;,\n    0.000000;0.994815;0.101705;,\n    1.000000;0.000000;0.000000;,\n    0.000000;0.994815;0.101705;,\n    0.000000;0.994815;0.101705;,\n    -0.997975;0.060060;0.020950;,\n    -0.873164;0.486615;0.028134;,\n    0.000000;0.901116;0.433577;,\n    0.997450;-0.071058;-0.006717;,\n    -0.995589;0.091093;0.022464;,\n    -0.864408;0.495225;0.086895;,\n    0.000000;0.989893;-0.141816;,\n    0.992556;-0.096346;-0.074495;,\n    0.997977;0.060033;0.020946;,\n    0.873163;0.486617;0.028135;,\n    -0.989858;-0.123422;0.070338;,\n    -0.997449;-0.071060;-0.006718;,\n    0.995593;0.091045;0.022459;,\n    0.087533;0.940546;-0.328195;,\n    0.000000;0.989893;-0.141815;,\n    -0.992556;-0.096347;-0.074494;,\n    0.997898;0.061299;0.021036;,\n    0.866886;0.497720;0.027980;,\n    -0.989865;-0.124386;0.068523;,\n    -0.997521;-0.070000;-0.007156;,\n    0.995837;0.088170;0.023112;,\n    0.000000;0.961996;-0.273062;,\n    0.000000;0.992194;-0.124703;,\n    -0.992624;-0.093847;-0.076743;,\n    -0.995837;0.088169;0.023114;,\n    -0.853004;0.514724;0.086275;,\n    0.000000;0.992194;-0.124703;,\n    0.992624;-0.093846;-0.076744;,\n    -0.997898;0.061298;0.021036;,\n    -0.866887;0.497719;0.027978;,\n    0.000000;0.908907;0.417000;,\n    0.997522;-0.069998;-0.007156;,\n    0.753723;0.654633;0.057950;,\n    0.000000;-0.888961;-0.457984;,\n    -0.998187;-0.003070;-0.060104;,\n    -0.998037;-0.002773;-0.062566;,\n    0.998364;-0.010093;-0.056285;,\n    0.998959;0.012170;-0.043959;,\n    0.998037;-0.002774;-0.062566;,\n    -0.753723;0.654633;0.057950;,\n    -0.780194;0.623981;0.044103;,\n    0.000000;0.999844;-0.017632;,\n    0.000000;0.999825;0.018711;,\n    0.000000;0.999825;0.018711;,\n    0.000000;0.000031;1.000000;,\n    0.000000;0.000031;1.000000;,\n    0.000000;0.938853;-0.344317;,\n    0.000000;0.938853;-0.344317;,\n    -0.742922;0.645252;-0.178094;,\n    -0.810819;0.580867;-0.071878;,\n    -0.998134;-0.059495;-0.013738;,\n    0.998493;-0.003687;-0.054747;,\n    0.999923;-0.003752;-0.011867;,\n    -0.848788;0.528730;0.001502;,\n    -0.000319;-0.998801;-0.048946;,\n    0.999804;-0.011987;0.015738;,\n    0.823550;0.559299;0.094603;,\n    0.823639;0.559360;0.093461;,\n    -0.823640;0.559359;0.093461;,\n    -0.996995;0.000002;0.077461;,\n    -0.000001;-0.998150;0.060802;,\n    -0.000001;-0.998150;0.060802;,\n    0.997693;-0.011877;0.066845;,\n    0.997044;-0.014871;0.075382;,\n    0.000000;0.994096;0.108500;,\n    0.000000;0.994096;0.108500;,\n    -0.135252;0.867776;0.478196;,\n    0.123156;0.967400;0.221293;,\n    -0.067228;0.872590;0.483805;,\n    0.000000;0.994097;0.108494;,\n    0.000000;0.953854;0.300270;,\n    0.000000;0.000000;1.000000;,\n    0.985155;-0.134238;0.106999;,\n    0.974843;-0.137104;0.175737;,\n    0.000000;0.000000;-1.000000;,\n    -0.889652;-0.100364;-0.445472;,\n    -0.889652;-0.100364;-0.445472;,\n    0.000000;0.000000;1.000000;,\n    0.985272;-0.135965;0.103693;,\n    0.974812;-0.140714;0.173036;,\n    0.000000;-0.031831;-0.999493;,\n    0.000000;-0.031831;-0.999493;,\n    -0.821165;-0.075242;-0.565709;,\n    -0.821165;-0.075242;-0.565709;,\n    0.000000;0.505373;0.862901;,\n    0.000000;0.505373;0.862901;,\n    0.000000;0.505373;0.862901;,\n    0.000000;0.658124;-0.752910;,\n    0.000000;0.658124;-0.752910;,\n    0.000000;0.658124;-0.752910;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    0.000000;0.513858;0.857875;,\n    0.000000;0.513858;0.857875;,\n    0.000000;0.513858;0.857875;,\n    0.000000;0.676821;-0.736148;,\n    0.000000;0.676821;-0.736148;,\n    0.000000;0.676821;-0.736148;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    0.000000;0.995545;0.094289;,\n    0.432857;0.807272;-0.401182;,\n    0.432857;0.807272;-0.401182;,\n    0.837833;0.536170;0.102751;,\n    0.000000;0.997523;0.070347;,\n    0.849402;0.516334;0.109159;,\n    0.995006;-0.099370;-0.009394;,\n    0.995135;-0.098012;-0.010020;,\n    -0.994755;-0.101085;-0.015617;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -0.994728;-0.101645;-0.013577;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -0.141911;0.799824;-0.583218;,\n    -0.069126;0.983432;-0.167579;,\n    0.976547;-0.214348;-0.020264;,\n    1.000000;0.000000;0.000000;,\n    0.000000;0.615561;0.788090;,\n    0.000000;0.615561;0.788090;,\n    -0.917390;-0.196164;0.346287;,\n    -0.965892;-0.159283;0.204162;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    0.230131;0.746346;0.624505;,\n    -0.920142;-0.201969;0.335482;,\n    -0.966035;-0.163039;0.200486;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    0.000000;0.632861;-0.774266;,\n    0.000000;0.632861;-0.774266;,\n    0.975625;-0.218308;-0.022319;,\n    1.000000;0.000000;0.000000;,\n    0.997456;-0.009298;-0.070678;,\n    0.998134;-0.059499;-0.013735;,\n    0.999989;-0.000299;0.004708;,\n    0.996995;0.000002;0.077462;,\n    0.996995;0.000002;0.077462;,\n    0.893188;0.448008;0.038781;,\n    0.831739;0.539441;0.131204;,\n    0.838991;0.544140;-0.002344;,\n    0.882523;0.467499;0.050974;,\n    -0.205690;0.786930;0.581750;,\n    0.385611;0.753550;0.532416;,\n    0.000000;0.997523;0.070347;,\n    -0.385611;0.753550;0.532416;,\n    0.000000;0.997523;0.070347;,\n    -0.300854;0.838548;-0.454229;,\n    0.000000;0.995545;0.094289;,\n    -0.432857;0.807272;-0.401182;,\n    -0.432857;0.807272;-0.401182;,\n    0.000000;0.652462;0.757821;,\n    0.000000;0.995545;0.094289;,\n    0.000000;0.632861;-0.774266;,\n    0.000000;0.266808;-0.963750;,\n    0.000000;0.999825;0.018711;,\n    0.000000;0.999825;0.018711;,\n    0.000000;0.938853;-0.344317;,\n    0.000000;0.000000;1.000000;,\n    0.000000;0.505373;0.862901;,\n    0.000000;0.505373;0.862901;,\n    0.000000;0.995561;0.094115;,\n    0.000000;0.658124;-0.752910;,\n    0.000000;0.000000;-1.000000;,\n    0.000000;0.000000;1.000000;,\n    0.000000;0.513858;0.857875;,\n    0.000000;0.513858;0.857875;,\n    0.000000;0.994815;0.101705;,\n    0.000000;0.676821;-0.736148;,\n    0.000000;-0.031831;-0.999493;,\n    0.000000;0.994097;0.108494;,\n    0.000000;0.992935;0.118656;,\n    0.000000;0.000031;1.000000;,\n    0.000000;-0.998150;0.060802;,\n    -0.000912;-0.995199;-0.097863;,\n    -0.000903;-0.985505;-0.169642;,\n    0.000000;-0.888961;-0.457984;,\n    0.917390;-0.196163;0.346288;,\n    0.994728;-0.101643;-0.013577;,\n    0.889652;-0.100362;-0.445474;,\n    0.889652;-0.100362;-0.445474;,\n    0.920141;-0.201967;0.335483;,\n    0.994755;-0.101083;-0.015617;,\n    0.821164;-0.075241;-0.565711;,\n    0.821164;-0.075241;-0.565711;,\n    -0.976547;-0.214350;-0.020264;,\n    -0.976547;-0.214350;-0.020264;,\n    -0.975624;-0.218309;-0.022320;,\n    -0.975624;-0.218309;-0.022320;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;;\n    168;\n    3;0,3,2;,\n    3;86,9,4;,\n    3;22,17,23;,\n    3;6,7,87;,\n    3;88,5,89;,\n    3;90,91,92;,\n    3;8,93,94;,\n    3;95,96,97;,\n    3;98,99,25;,\n    3;4,11,10;,\n    3;100,12,101;,\n    3;8,102,103;,\n    3;5,104,13;,\n    3;7,6,15;,\n    3;105,10,106;,\n    3;63,66,62;,\n    3;46,48,49;,\n    3;107,13,55;,\n    3;20,78,82;,\n    3;15,21,108;,\n    3;109,10,62;,\n    3;16,110,111;,\n    3;18,19,112;,\n    3;19,24,113;,\n    3;114,21,115;,\n    3;116,16,117;,\n    3;27,26,83;,\n    3;50,52,53;,\n    3;71,74,70;,\n    3;118,119,30;,\n    3;120,56,31;,\n    3;34,28,33;,\n    3;121,68,67;,\n    3;122,84,35;,\n    3;123,37,36;,\n    3;124,76,75;,\n    3;125,39,38;,\n    3;126,57,127;,\n    3;32,128,41;,\n    3;129,130,69;,\n    3;131,43,42;,\n    3;132,85,133;,\n    3;134,135,45;,\n    3;136,137,77;,\n    3;138,139,140;,\n    3;127,57,47;,\n    3;141,142,143;,\n    3;144,69,145;,\n    3;146,147,148;,\n    3;133,85,51;,\n    3;149,150,151;,\n    3;152,77,153;,\n    3;79,83,78;,\n    3;80,84,154;,\n    3;37,155,156;,\n    3;157,16,74;,\n    3;59,55,58;,\n    3;60,56,158;,\n    3;33,28,67;,\n    3;159,29,66;,\n    3;61,57,160;,\n    3;47,57,61;,\n    3;81,85,161;,\n    3;51,85,81;,\n    3;77,162,72;,\n    3;163,77,164;,\n    3;69,165,64;,\n    3;166,69,167;,\n    3;59,26,27;,\n    3;60,168,169;,\n    3;61,170,40;,\n    3;171,61,40;,\n    3;63,62,10;,\n    3;172,173,30;,\n    3;64,174,175;,\n    3;176,65,177;,\n    3;71,70,29;,\n    3;178,28,34;,\n    3;72,179,180;,\n    3;181,73,182;,\n    3;79,19,18;,\n    3;80,183,184;,\n    3;81,185,44;,\n    3;186,81,44;,\n    3;88,89,1;,\n    3;13,88,14;,\n    3;90,92,187;,\n    3;10,90,188;,\n    3;14,54,13;,\n    3;14,58,54;,\n    3;14,26,58;,\n    3;20,26,14;,\n    3;20,82,26;,\n    3;78,20,19;,\n    3;106,29,189;,\n    3;66,106,62;,\n    3;29,106,66;,\n    3;116,70,74;,\n    3;70,116,29;,\n    3;116,74,16;,\n    3;24,19,20;,\n    3;190,16,191;,\n    3;103,94,13;,\n    3;11,4,9;,\n    3;55,13,54;,\n    3;58,55,54;,\n    3;63,10,11;,\n    3;66,63,192;,\n    3;29,159,193;,\n    3;71,29,194;,\n    3;74,71,195;,\n    3;26,59,58;,\n    3;83,26,82;,\n    3;78,83,82;,\n    3;19,79,78;,\n    3;16,157,110;,\n    3;34,169,35;,\n    3;169,34,33;,\n    3;35,169,196;,\n    3;30,121,197;,\n    3;68,121,198;,\n    3;120,31,199;,\n    3;60,120,200;,\n    3;33,67,68;,\n    3;169,168,201;,\n    3;122,35,196;,\n    3;80,122,202;,\n    3;36,203,204;,\n    3;124,34,205;,\n    3;76,124,206;,\n    3;207,75,76;,\n    3;3,0,208;,\n    3;95,209,210;,\n    3;12,95,211;,\n    3;30,119,31;,\n    3;39,125,212;,\n    3;140,213,214;,\n    3;48,46,215;,\n    3;141,143,216;,\n    3;32,41,217;,\n    3;43,131,218;,\n    3;148,219,220;,\n    3;52,50,221;,\n    3;149,151,222;,\n    3;134,45,223;,\n    3;123,36,224;,\n    3;23,17,225;,\n    3;25,99,226;,\n    3;108,115,227;,\n    3;15,108,228;,\n    3;7,15,229;,\n    3;87,7,230;,\n    3;126,127,231;,\n    3;61,126,232;,\n    3;233,61,234;,\n    3;132,133,235;,\n    3;81,132,236;,\n    3;237,81,238;,\n    3;64,175,65;,\n    3;69,64,65;,\n    3;239,69,240;,\n    3;72,180,73;,\n    3;77,72,73;,\n    3;241,77,242;,\n    3;164,77,73;,\n    3;167,69,65;,\n    3;47,61,243;,\n    3;51,81,244;;\n   }\n\n   MeshTextureCoords {\n    245;\n    0.830568;-0.996310;,\n    0.858212;-0.998666;,\n    0.829807;-0.954350;,\n    0.668791;-0.954638;,\n    0.688022;-0.799051;,\n    0.814918;-0.798328;,\n    0.825319;-0.881120;,\n    0.694015;-0.881868;,\n    0.780420;-0.798524;,\n    0.718793;-0.798875;,\n    0.686482;-0.755391;,\n    0.736564;-0.755107;,\n    0.717833;-0.755213;,\n    0.816116;-0.754652;,\n    0.958007;-0.767074;,\n    0.832042;-0.767792;,\n    0.669243;-0.558620;,\n    0.797850;-0.557888;,\n    0.785955;-0.557956;,\n    0.833064;-0.557686;,\n    0.978120;-0.597025;,\n    0.830218;-0.617244;,\n    0.772987;-0.158226;,\n    0.736292;-0.158434;,\n    0.928672;-0.157336;,\n    0.000000;-3.000000;,\n    0.824591;-0.656169;,\n    0.772961;-0.656465;,\n    0.727517;-0.689972;,\n    0.677862;-0.657005;,\n    0.731321;-0.650436;,\n    0.766017;-0.650238;,\n    0.766005;-0.688355;,\n    0.731767;-0.688550;,\n    0.731783;-0.691332;,\n    0.766021;-0.691137;,\n    0.766008;-0.729253;,\n    0.732230;-0.729445;,\n    0.717313;-0.650516;,\n    0.780025;-0.650159;,\n    0.780242;-0.688273;,\n    0.717529;-0.688631;,\n    0.717545;-0.691413;,\n    0.780258;-0.691055;,\n    0.780483;-0.730565;,\n    0.717771;-0.730922;,\n    0.717360;-0.658737;,\n    0.780072;-0.658379;,\n    0.780182;-0.677568;,\n    0.717469;-0.677925;,\n    0.717594;-0.699880;,\n    0.780306;-0.699522;,\n    0.780420;-0.719412;,\n    0.717707;-0.719770;,\n    0.818235;-0.730032;,\n    0.796397;-0.726765;,\n    0.775196;-0.659641;,\n    0.780079;-0.659687;,\n    0.822472;-0.680790;,\n    0.799987;-0.683628;,\n    0.775125;-0.678043;,\n    0.780188;-0.678745;,\n    0.684327;-0.730794;,\n    0.703769;-0.727293;,\n    0.722250;-0.659943;,\n    0.717367;-0.660045;,\n    0.680017;-0.681602;,\n    0.715989;-0.678380;,\n    0.722530;-0.678342;,\n    0.717476;-0.679102;,\n    0.675707;-0.632409;,\n    0.691557;-0.629595;,\n    0.722403;-0.701666;,\n    0.717602;-0.701290;,\n    0.671397;-0.583216;,\n    0.716134;-0.721543;,\n    0.722695;-0.721506;,\n    0.717715;-0.721045;,\n    0.830946;-0.582307;,\n    0.814197;-0.582403;,\n    0.775452;-0.721205;,\n    0.780427;-0.720687;,\n    0.826709;-0.631548;,\n    0.808907;-0.628927;,\n    0.775518;-0.701363;,\n    0.780315;-0.700933;,\n    0.723684;-0.981664;,\n    0.818885;-0.998890;,\n    0.934058;-0.880501;,\n    0.777145;-0.981360;,\n    0.582647;-0.882503;,\n    0.651567;-0.999844;,\n    0.723684;-0.981664;,\n    0.777145;-0.981360;,\n    0.814918;-0.798328;,\n    0.804438;-0.798387;,\n    0.818784;-0.981122;,\n    0.701690;-0.981789;,\n    0.000000;-2.000000;,\n    1.000000;-2.000000;,\n    0.804438;-0.798387;,\n    0.800059;-0.754745;,\n    0.814918;-0.798328;,\n    0.759968;-0.754974;,\n    0.934058;-0.880501;,\n    0.582647;-0.882503;,\n    0.559939;-0.769342;,\n    0.759968;-0.754974;,\n    0.686110;-0.618066;,\n    0.559939;-0.769342;,\n    0.711262;-0.558381;,\n    0.632928;-0.159023;,\n    0.867023;-0.157690;,\n    0.867023;-0.157690;,\n    0.686110;-0.618066;,\n    0.772987;-0.158224;,\n    0.540292;-0.599520;,\n    0.577939;-0.159335;,\n    0.726992;-0.647967;,\n    0.770318;-0.647720;,\n    0.781781;-0.659604;,\n    0.715665;-0.659981;,\n    0.782123;-0.701326;,\n    0.728043;-0.731977;,\n    0.715798;-0.701704;,\n    0.731321;-0.650436;,\n    0.775196;-0.659641;,\n    0.780025;-0.650159;,\n    0.731767;-0.688550;,\n    0.731767;-0.688550;,\n    0.722530;-0.678342;,\n    0.731783;-0.691332;,\n    0.775518;-0.701363;,\n    0.780258;-0.691055;,\n    0.766008;-0.729253;,\n    0.732230;-0.729445;,\n    0.732230;-0.729445;,\n    0.722695;-0.721506;,\n    0.717313;-0.650516;,\n    0.780025;-0.650159;,\n    0.717360;-0.658737;,\n    0.717529;-0.688631;,\n    0.717469;-0.677925;,\n    0.780182;-0.677568;,\n    0.717529;-0.688631;,\n    0.717469;-0.677925;,\n    0.717545;-0.691413;,\n    0.780258;-0.691055;,\n    0.717594;-0.699880;,\n    0.717771;-0.730922;,\n    0.717707;-0.719770;,\n    0.780420;-0.719412;,\n    0.717771;-0.730922;,\n    0.717707;-0.719770;,\n    0.782123;-0.701326;,\n    0.728043;-0.731977;,\n    0.716134;-0.721543;,\n    0.686337;-0.583132;,\n    0.781781;-0.659604;,\n    0.700102;-0.684197;,\n    0.775196;-0.659641;,\n    0.775518;-0.701363;,\n    0.722695;-0.721506;,\n    0.717707;-0.719770;,\n    0.717594;-0.699880;,\n    0.722530;-0.678342;,\n    0.717469;-0.677925;,\n    0.717360;-0.658737;,\n    0.781666;-0.678005;,\n    0.766005;-0.688355;,\n    0.766005;-0.688355;,\n    0.780182;-0.677568;,\n    0.722250;-0.659943;,\n    0.715665;-0.659981;,\n    0.731321;-0.650436;,\n    0.717313;-0.650516;,\n    0.717360;-0.658737;,\n    0.717313;-0.650516;,\n    0.715798;-0.701704;,\n    0.731783;-0.691332;,\n    0.717545;-0.691413;,\n    0.717594;-0.699880;,\n    0.717545;-0.691413;,\n    0.782013;-0.721168;,\n    0.766008;-0.729253;,\n    0.766008;-0.729253;,\n    0.780420;-0.719412;,\n    0.688022;-0.799051;,\n    0.688022;-0.799051;,\n    0.540292;-0.599520;,\n    0.577939;-0.159335;,\n    0.632928;-0.159023;,\n    0.700102;-0.684197;,\n    0.723913;-0.656744;,\n    0.723913;-0.656744;,\n    0.686337;-0.583132;,\n    0.770271;-0.689728;,\n    0.726992;-0.647967;,\n    0.722250;-0.659943;,\n    0.770318;-0.647720;,\n    0.781666;-0.678005;,\n    0.770271;-0.689728;,\n    0.782013;-0.721168;,\n    0.782013;-0.721168;,\n    0.770224;-0.731737;,\n    0.722403;-0.701666;,\n    0.722403;-0.701666;,\n    0.732230;-0.729445;,\n    0.669552;-0.996598;,\n    0.701690;-0.981789;,\n    0.713951;-0.798903;,\n    0.713951;-0.798903;,\n    0.766017;-0.650238;,\n    0.780025;-0.650159;,\n    0.780072;-0.658379;,\n    0.780072;-0.658379;,\n    0.780242;-0.688273;,\n    0.780242;-0.688273;,\n    0.766021;-0.691137;,\n    0.780258;-0.691055;,\n    0.780306;-0.699522;,\n    0.780306;-0.699522;,\n    0.780483;-0.730565;,\n    0.780483;-0.730565;,\n    0.770224;-0.731737;,\n    0.717799;-0.558344;,\n    1.000000;-3.000000;,\n    0.736292;-0.158433;,\n    0.686005;-0.768624;,\n    0.686005;-0.768624;,\n    0.701791;-0.999557;,\n    0.766017;-0.650238;,\n    0.775125;-0.678043;,\n    0.766005;-0.688355;,\n    0.775125;-0.678043;,\n    0.766021;-0.691137;,\n    0.775452;-0.721205;,\n    0.766008;-0.729253;,\n    0.775452;-0.721205;,\n    0.731767;-0.688550;,\n    0.717529;-0.688631;,\n    0.732230;-0.729445;,\n    0.717771;-0.730922;,\n    0.780182;-0.677568;,\n    0.780420;-0.719412;;\n   }\n\n   MeshMaterialList {\n    1;\n    168;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.800000;0.800000;0.000000;;\n     0.000000;\n     0.000000;0.000000;0.000000;;\n     0.000000;0.000000;0.000000;;\n\n     TextureFilename {\n      \"bihull.bmp\";\n     }\n    }\n   }\n\n   VertexDuplicationIndices {\n    245;\n    86;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    64,\n    65,\n    66,\n    67,\n    68,\n    69,\n    70,\n    71,\n    72,\n    73,\n    74,\n    75,\n    76,\n    77,\n    78,\n    79,\n    80,\n    81,\n    82,\n    83,\n    84,\n    85,\n    2,\n    0,\n    7,\n    3,\n    6,\n    0,\n    2,\n    3,\n    5,\n    9,\n    2,\n    3,\n    22,\n    23,\n    9,\n    11,\n    5,\n    12,\n    7,\n    6,\n    15,\n    12,\n    20,\n    15,\n    17,\n    22,\n    23,\n    23,\n    20,\n    25,\n    21,\n    25,\n    11,\n    12,\n    55,\n    63,\n    83,\n    17,\n    71,\n    30,\n    56,\n    39,\n    33,\n    33,\n    68,\n    34,\n    84,\n    43,\n    36,\n    37,\n    37,\n    76,\n    38,\n    39,\n    46,\n    41,\n    49,\n    48,\n    41,\n    49,\n    42,\n    43,\n    50,\n    45,\n    53,\n    52,\n    45,\n    53,\n    83,\n    17,\n    75,\n    75,\n    55,\n    67,\n    56,\n    84,\n    76,\n    53,\n    50,\n    68,\n    49,\n    46,\n    59,\n    32,\n    32,\n    48,\n    64,\n    63,\n    30,\n    38,\n    46,\n    38,\n    71,\n    34,\n    42,\n    50,\n    42,\n    79,\n    36,\n    36,\n    52,\n    4,\n    4,\n    21,\n    25,\n    22,\n    67,\n    28,\n    28,\n    75,\n    27,\n    11,\n    64,\n    12,\n    59,\n    27,\n    79,\n    79,\n    18,\n    72,\n    72,\n    37,\n    1,\n    3,\n    8,\n    8,\n    31,\n    39,\n    47,\n    47,\n    40,\n    40,\n    35,\n    43,\n    51,\n    51,\n    44,\n    44,\n    18,\n    18,\n    24,\n    24,\n    14,\n    14,\n    1,\n    31,\n    60,\n    32,\n    60,\n    35,\n    80,\n    36,\n    80,\n    33,\n    41,\n    37,\n    45,\n    48,\n    52;\n   }\n  }\n }\n\n Frame wing_poles {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.102858,0.000000,1.000000;;\n  }\n\n  Mesh {\n   256;\n   3.678300;-0.288631;-2.509480;,\n   3.553570;1.099530;-2.604250;,\n   3.553570;-0.288631;-2.509480;,\n   3.678300;1.099530;-2.604250;,\n   3.678300;-0.299920;-2.369920;,\n   3.553570;-0.299920;-2.369920;,\n   3.678300;1.081790;-2.474930;,\n   3.553570;1.081790;-2.474930;,\n   3.673010;-0.379267;-1.559630;,\n   3.548290;1.013120;-1.654870;,\n   3.548290;-0.379267;-1.559630;,\n   3.673010;1.013120;-1.654870;,\n   3.673010;-0.396630;-1.420710;,\n   3.548290;-0.396630;-1.420710;,\n   3.673010;0.997639;-1.525250;,\n   3.548290;0.997639;-1.525250;,\n   1.741860;-0.288631;-2.509480;,\n   1.617140;1.099530;-2.604250;,\n   1.617140;-0.288631;-2.509480;,\n   1.741860;1.099530;-2.604250;,\n   1.741860;-0.299920;-2.369920;,\n   1.617140;-0.299920;-2.369920;,\n   1.741860;1.081790;-2.474930;,\n   1.617140;1.081790;-2.474930;,\n   1.736570;-0.379267;-1.559630;,\n   1.611850;1.013120;-1.654870;,\n   1.611850;-0.379267;-1.559630;,\n   1.736570;1.013120;-1.654870;,\n   1.736570;-0.396630;-1.420710;,\n   1.611850;-0.396630;-1.420710;,\n   1.736570;0.997639;-1.525250;,\n   1.611850;0.997639;-1.525250;,\n   -1.544050;-0.288631;-2.509480;,\n   -1.668770;1.099530;-2.604250;,\n   -1.668770;-0.288631;-2.509480;,\n   -1.544050;1.099530;-2.604250;,\n   -1.544050;-0.299920;-2.369920;,\n   -1.668770;-0.299920;-2.369920;,\n   -1.544050;1.081790;-2.474930;,\n   -1.668770;1.081790;-2.474930;,\n   -1.549350;-0.379267;-1.559630;,\n   -1.674070;1.013120;-1.654870;,\n   -1.674070;-0.379267;-1.559630;,\n   -1.549350;1.013120;-1.654870;,\n   -1.549350;-0.396629;-1.420710;,\n   -1.674070;-0.396629;-1.420710;,\n   -1.549350;0.997639;-1.525250;,\n   -1.674070;0.997639;-1.525250;,\n   -3.599630;-0.288630;-2.509480;,\n   -3.724350;1.099530;-2.604250;,\n   -3.724350;-0.288630;-2.509480;,\n   -3.599630;1.099530;-2.604250;,\n   -3.599630;-0.299919;-2.369920;,\n   -3.724350;-0.299919;-2.369920;,\n   -3.599630;1.081790;-2.474930;,\n   -3.724350;1.081790;-2.474930;,\n   -3.599630;-0.379267;-1.559630;,\n   -3.724350;1.013120;-1.654870;,\n   -3.724350;-0.379267;-1.559630;,\n   -3.599630;1.013120;-1.654870;,\n   -3.599630;-0.396629;-1.420710;,\n   -3.724350;-0.396629;-1.420710;,\n   -3.599630;0.997639;-1.525250;,\n   -3.724350;0.997639;-1.525250;,\n   3.553570;-0.288631;-2.509480;,\n   3.678300;-0.288631;-2.509480;,\n   3.553570;-0.288631;-2.509480;,\n   3.553570;-0.299920;-2.369920;,\n   3.678300;-0.299920;-2.369920;,\n   3.553570;-0.299920;-2.369920;,\n   3.678300;1.099530;-2.604250;,\n   3.553570;1.099530;-2.604250;,\n   3.553570;1.081790;-2.474930;,\n   3.678300;1.081790;-2.474930;,\n   3.678300;1.099530;-2.604250;,\n   3.553570;1.081790;-2.474930;,\n   3.553570;-0.299920;-2.369920;,\n   3.553570;1.081790;-2.474930;,\n   3.553570;-0.288631;-2.509480;,\n   3.553570;-0.288631;-2.509480;,\n   3.553570;1.081790;-2.474930;,\n   3.553570;1.099530;-2.604250;,\n   3.678300;1.081790;-2.474930;,\n   3.678300;-0.299920;-2.369920;,\n   3.678300;-0.288631;-2.509480;,\n   3.678300;1.081790;-2.474930;,\n   3.678300;-0.288631;-2.509480;,\n   3.678300;1.099530;-2.604250;,\n   3.548290;-0.379267;-1.559630;,\n   3.673010;-0.379267;-1.559630;,\n   3.548290;-0.379267;-1.559630;,\n   3.548290;-0.396630;-1.420710;,\n   3.673010;-0.396630;-1.420710;,\n   3.548290;-0.396630;-1.420710;,\n   3.673010;1.013120;-1.654870;,\n   3.548290;1.013120;-1.654870;,\n   3.548290;0.997639;-1.525250;,\n   3.673010;0.997639;-1.525250;,\n   3.673010;1.013120;-1.654870;,\n   3.548290;0.997639;-1.525250;,\n   3.548290;-0.396630;-1.420710;,\n   3.548290;0.997639;-1.525250;,\n   3.548290;-0.379267;-1.559630;,\n   3.548290;-0.379267;-1.559630;,\n   3.548290;0.997639;-1.525250;,\n   3.548290;1.013120;-1.654870;,\n   3.673010;0.997639;-1.525250;,\n   3.673010;-0.396630;-1.420710;,\n   3.673010;-0.379267;-1.559630;,\n   3.673010;0.997639;-1.525250;,\n   3.673010;-0.379267;-1.559630;,\n   3.673010;1.013120;-1.654870;,\n   1.617140;-0.288631;-2.509480;,\n   1.741860;-0.288631;-2.509480;,\n   1.617140;-0.288631;-2.509480;,\n   1.617140;-0.299920;-2.369920;,\n   1.741860;-0.299920;-2.369920;,\n   1.617140;-0.299920;-2.369920;,\n   1.741860;1.099530;-2.604250;,\n   1.617140;1.099530;-2.604250;,\n   1.617140;1.081790;-2.474930;,\n   1.741860;1.081790;-2.474930;,\n   1.741860;1.099530;-2.604250;,\n   1.617140;1.081790;-2.474930;,\n   1.617140;-0.299920;-2.369920;,\n   1.617140;1.081790;-2.474930;,\n   1.617140;-0.288631;-2.509480;,\n   1.617140;-0.288631;-2.509480;,\n   1.617140;1.081790;-2.474930;,\n   1.617140;1.099530;-2.604250;,\n   1.741860;1.081790;-2.474930;,\n   1.741860;-0.299920;-2.369920;,\n   1.741860;-0.288631;-2.509480;,\n   1.741860;1.081790;-2.474930;,\n   1.741860;-0.288631;-2.509480;,\n   1.741860;1.099530;-2.604250;,\n   1.611850;-0.379267;-1.559630;,\n   1.736570;-0.379267;-1.559630;,\n   1.611850;-0.379267;-1.559630;,\n   1.611850;-0.396630;-1.420710;,\n   1.736570;-0.396630;-1.420710;,\n   1.611850;-0.396630;-1.420710;,\n   1.736570;1.013120;-1.654870;,\n   1.611850;1.013120;-1.654870;,\n   1.611850;0.997639;-1.525250;,\n   1.736570;0.997639;-1.525250;,\n   1.736570;1.013120;-1.654870;,\n   1.611850;0.997639;-1.525250;,\n   1.611850;-0.396630;-1.420710;,\n   1.611850;0.997639;-1.525250;,\n   1.611850;-0.379267;-1.559630;,\n   1.611850;-0.379267;-1.559630;,\n   1.611850;0.997639;-1.525250;,\n   1.611850;1.013120;-1.654870;,\n   1.736570;0.997639;-1.525250;,\n   1.736570;-0.396630;-1.420710;,\n   1.736570;-0.379267;-1.559630;,\n   1.736570;0.997639;-1.525250;,\n   1.736570;-0.379267;-1.559630;,\n   1.736570;1.013120;-1.654870;,\n   -1.668770;-0.288631;-2.509480;,\n   -1.544050;-0.288631;-2.509480;,\n   -1.668770;-0.288631;-2.509480;,\n   -1.668770;-0.299920;-2.369920;,\n   -1.544050;-0.299920;-2.369920;,\n   -1.668770;-0.299920;-2.369920;,\n   -1.544050;1.099530;-2.604250;,\n   -1.668770;1.099530;-2.604250;,\n   -1.668770;1.081790;-2.474930;,\n   -1.544050;1.081790;-2.474930;,\n   -1.544050;1.099530;-2.604250;,\n   -1.668770;1.081790;-2.474930;,\n   -1.668770;-0.299920;-2.369920;,\n   -1.668770;1.081790;-2.474930;,\n   -1.668770;-0.288631;-2.509480;,\n   -1.668770;-0.288631;-2.509480;,\n   -1.668770;1.081790;-2.474930;,\n   -1.668770;1.099530;-2.604250;,\n   -1.544050;1.081790;-2.474930;,\n   -1.544050;-0.299920;-2.369920;,\n   -1.544050;-0.288631;-2.509480;,\n   -1.544050;1.081790;-2.474930;,\n   -1.544050;-0.288631;-2.509480;,\n   -1.544050;1.099530;-2.604250;,\n   -1.674070;-0.379267;-1.559630;,\n   -1.549350;-0.379267;-1.559630;,\n   -1.674070;-0.379267;-1.559630;,\n   -1.674070;-0.396629;-1.420710;,\n   -1.549350;-0.396629;-1.420710;,\n   -1.674070;-0.396629;-1.420710;,\n   -1.549350;1.013120;-1.654870;,\n   -1.674070;1.013120;-1.654870;,\n   -1.674070;0.997639;-1.525250;,\n   -1.549350;0.997639;-1.525250;,\n   -1.549350;1.013120;-1.654870;,\n   -1.674070;0.997639;-1.525250;,\n   -1.674070;-0.396629;-1.420710;,\n   -1.674070;0.997639;-1.525250;,\n   -1.674070;-0.379267;-1.559630;,\n   -1.674070;-0.379267;-1.559630;,\n   -1.674070;0.997639;-1.525250;,\n   -1.674070;1.013120;-1.654870;,\n   -1.549350;0.997639;-1.525250;,\n   -1.549350;-0.396629;-1.420710;,\n   -1.549350;-0.379267;-1.559630;,\n   -1.549350;0.997639;-1.525250;,\n   -1.549350;-0.379267;-1.559630;,\n   -1.549350;1.013120;-1.654870;,\n   -3.724350;-0.288630;-2.509480;,\n   -3.599630;-0.288630;-2.509480;,\n   -3.724350;-0.288630;-2.509480;,\n   -3.724350;-0.299919;-2.369920;,\n   -3.599630;-0.299919;-2.369920;,\n   -3.724350;-0.299919;-2.369920;,\n   -3.599630;1.099530;-2.604250;,\n   -3.724350;1.099530;-2.604250;,\n   -3.724350;1.081790;-2.474930;,\n   -3.599630;1.081790;-2.474930;,\n   -3.599630;1.099530;-2.604250;,\n   -3.724350;1.081790;-2.474930;,\n   -3.724350;-0.299919;-2.369920;,\n   -3.724350;1.081790;-2.474930;,\n   -3.724350;-0.288630;-2.509480;,\n   -3.724350;-0.288630;-2.509480;,\n   -3.724350;1.081790;-2.474930;,\n   -3.724350;1.099530;-2.604250;,\n   -3.599630;1.081790;-2.474930;,\n   -3.599630;-0.299919;-2.369920;,\n   -3.599630;-0.288630;-2.509480;,\n   -3.599630;1.081790;-2.474930;,\n   -3.599630;-0.288630;-2.509480;,\n   -3.599630;1.099530;-2.604250;,\n   -3.724350;-0.379267;-1.559630;,\n   -3.599630;-0.379267;-1.559630;,\n   -3.724350;-0.379267;-1.559630;,\n   -3.724350;-0.396629;-1.420710;,\n   -3.599630;-0.396629;-1.420710;,\n   -3.724350;-0.396629;-1.420710;,\n   -3.599630;1.013120;-1.654870;,\n   -3.724350;1.013120;-1.654870;,\n   -3.724350;0.997639;-1.525250;,\n   -3.599630;0.997639;-1.525250;,\n   -3.599630;1.013120;-1.654870;,\n   -3.724350;0.997639;-1.525250;,\n   -3.724350;-0.396629;-1.420710;,\n   -3.724350;0.997639;-1.525250;,\n   -3.724350;-0.379267;-1.559630;,\n   -3.724350;-0.379267;-1.559630;,\n   -3.724350;0.997639;-1.525250;,\n   -3.724350;1.013120;-1.654870;,\n   -3.599630;0.997639;-1.525250;,\n   -3.599630;-0.396629;-1.420710;,\n   -3.599630;-0.379267;-1.559630;,\n   -3.599630;0.997639;-1.525250;,\n   -3.599630;-0.379267;-1.559630;,\n   -3.599630;1.013120;-1.654870;;\n   96;\n   3;0,2,1;,\n   3;3,0,1;,\n   3;4,5,64;,\n   3;65,4,66;,\n   3;6,7,67;,\n   3;68,6,69;,\n   3;70,71,72;,\n   3;73,74,75;,\n   3;76,77,78;,\n   3;79,80,81;,\n   3;82,83,84;,\n   3;85,86,87;,\n   3;8,10,9;,\n   3;11,8,9;,\n   3;12,13,88;,\n   3;89,12,90;,\n   3;14,15,91;,\n   3;92,14,93;,\n   3;94,95,96;,\n   3;97,98,99;,\n   3;100,101,102;,\n   3;103,104,105;,\n   3;106,107,108;,\n   3;109,110,111;,\n   3;16,18,17;,\n   3;19,16,17;,\n   3;20,21,112;,\n   3;113,20,114;,\n   3;22,23,115;,\n   3;116,22,117;,\n   3;118,119,120;,\n   3;121,122,123;,\n   3;124,125,126;,\n   3;127,128,129;,\n   3;130,131,132;,\n   3;133,134,135;,\n   3;24,26,25;,\n   3;27,24,25;,\n   3;28,29,136;,\n   3;137,28,138;,\n   3;30,31,139;,\n   3;140,30,141;,\n   3;142,143,144;,\n   3;145,146,147;,\n   3;148,149,150;,\n   3;151,152,153;,\n   3;154,155,156;,\n   3;157,158,159;,\n   3;32,34,33;,\n   3;35,32,33;,\n   3;36,37,160;,\n   3;161,36,162;,\n   3;38,39,163;,\n   3;164,38,165;,\n   3;166,167,168;,\n   3;169,170,171;,\n   3;172,173,174;,\n   3;175,176,177;,\n   3;178,179,180;,\n   3;181,182,183;,\n   3;40,42,41;,\n   3;43,40,41;,\n   3;44,45,184;,\n   3;185,44,186;,\n   3;46,47,187;,\n   3;188,46,189;,\n   3;190,191,192;,\n   3;193,194,195;,\n   3;196,197,198;,\n   3;199,200,201;,\n   3;202,203,204;,\n   3;205,206,207;,\n   3;48,50,49;,\n   3;51,48,49;,\n   3;52,53,208;,\n   3;209,52,210;,\n   3;54,55,211;,\n   3;212,54,213;,\n   3;214,215,216;,\n   3;217,218,219;,\n   3;220,221,222;,\n   3;223,224,225;,\n   3;226,227,228;,\n   3;229,230,231;,\n   3;56,58,57;,\n   3;59,56,57;,\n   3;60,61,232;,\n   3;233,60,234;,\n   3;62,63,235;,\n   3;236,62,237;,\n   3;238,239,240;,\n   3;241,242,243;,\n   3;244,245,246;,\n   3;247,248,249;,\n   3;250,251,252;,\n   3;253,254,255;;\n\n   MeshNormals {\n    256;\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.074768;0.997201;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.074768;0.997201;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.992280;-0.124014;,\n    0.000000;-0.992280;-0.124014;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.074769;0.997201;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.068112;-0.997678;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.068241;-0.997669;,\n    0.000000;-0.992281;-0.124014;,\n    0.000000;-0.992281;-0.124014;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.074769;0.997201;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;-0.992280;-0.124020;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.074768;0.997201;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.992280;-0.124014;,\n    0.000000;-0.992280;-0.124014;,\n    0.000000;-0.992280;-0.124014;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;-0.996744;-0.080627;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.075782;0.997124;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    0.000000;0.990722;0.135906;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;-0.992281;-0.124014;,\n    0.000000;-0.992281;-0.124014;,\n    0.000000;-0.992281;-0.124014;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.074769;0.997201;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    0.000000;0.992943;0.118591;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;;\n    96;\n    3;0,2,1;,\n    3;3,0,1;,\n    3;4,5,64;,\n    3;65,4,66;,\n    3;6,7,67;,\n    3;68,6,69;,\n    3;70,71,72;,\n    3;73,74,75;,\n    3;76,77,78;,\n    3;79,80,81;,\n    3;82,83,84;,\n    3;85,86,87;,\n    3;8,10,9;,\n    3;11,8,9;,\n    3;12,13,88;,\n    3;89,12,90;,\n    3;14,15,91;,\n    3;92,14,93;,\n    3;94,95,96;,\n    3;97,98,99;,\n    3;100,101,102;,\n    3;103,104,105;,\n    3;106,107,108;,\n    3;109,110,111;,\n    3;16,18,17;,\n    3;19,16,17;,\n    3;20,21,112;,\n    3;113,20,114;,\n    3;22,23,115;,\n    3;116,22,117;,\n    3;118,119,120;,\n    3;121,122,123;,\n    3;124,125,126;,\n    3;127,128,129;,\n    3;130,131,132;,\n    3;133,134,135;,\n    3;24,26,25;,\n    3;27,24,25;,\n    3;28,29,136;,\n    3;137,28,138;,\n    3;30,31,139;,\n    3;140,30,141;,\n    3;142,143,144;,\n    3;145,146,147;,\n    3;148,149,150;,\n    3;151,152,153;,\n    3;154,155,156;,\n    3;157,158,159;,\n    3;32,34,33;,\n    3;35,32,33;,\n    3;36,37,160;,\n    3;161,36,162;,\n    3;38,39,163;,\n    3;164,38,165;,\n    3;166,167,168;,\n    3;169,170,171;,\n    3;172,173,174;,\n    3;175,176,177;,\n    3;178,179,180;,\n    3;181,182,183;,\n    3;40,42,41;,\n    3;43,40,41;,\n    3;44,45,184;,\n    3;185,44,186;,\n    3;46,47,187;,\n    3;188,46,189;,\n    3;190,191,192;,\n    3;193,194,195;,\n    3;196,197,198;,\n    3;199,200,201;,\n    3;202,203,204;,\n    3;205,206,207;,\n    3;48,50,49;,\n    3;51,48,49;,\n    3;52,53,208;,\n    3;209,52,210;,\n    3;54,55,211;,\n    3;212,54,213;,\n    3;214,215,216;,\n    3;217,218,219;,\n    3;220,221,222;,\n    3;223,224,225;,\n    3;226,227,228;,\n    3;229,230,231;,\n    3;56,58,57;,\n    3;59,56,57;,\n    3;60,61,232;,\n    3;233,60,234;,\n    3;62,63,235;,\n    3;236,62,237;,\n    3;238,239,240;,\n    3;241,242,243;,\n    3;244,245,246;,\n    3;247,248,249;,\n    3;250,251,252;,\n    3;253,254,255;;\n   }\n\n   MeshTextureCoords {\n    256;\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.757168;-0.549623;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.336112;-0.543522;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.757168;-0.549623;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.336112;-0.543522;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.757168;-0.549623;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.336112;-0.543522;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.696424;-0.300613;,\n    0.757168;-0.549623;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.757168;-0.549623;,\n    0.699814;-0.548370;,\n    0.696424;-0.300613;,\n    0.758321;-0.301410;,\n    0.699814;-0.548370;,\n    0.758321;-0.301410;,\n    0.757168;-0.549623;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.275443;-0.293785;,\n    0.336112;-0.543522;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.336112;-0.543522;,\n    0.278624;-0.542429;,\n    0.275443;-0.293785;,\n    0.337055;-0.295011;,\n    0.278624;-0.542429;,\n    0.337055;-0.295011;,\n    0.336112;-0.543522;;\n   }\n\n   MeshMaterialList {\n    1;\n    96;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.800000;0.800000;0.000000;;\n     0.000000;\n     0.000000;0.000000;0.000000;;\n     0.000000;0.000000;0.000000;;\n\n     TextureFilename {\n      \"bihull.bmp\";\n     }\n    }\n   }\n\n   VertexDuplicationIndices {\n    256;\n    64;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    48,\n    49,\n    50,\n    51,\n    52,\n    53,\n    54,\n    55,\n    56,\n    57,\n    58,\n    59,\n    60,\n    61,\n    62,\n    63,\n    2,\n    0,\n    2,\n    5,\n    4,\n    5,\n    3,\n    1,\n    7,\n    6,\n    3,\n    7,\n    5,\n    7,\n    2,\n    2,\n    7,\n    1,\n    6,\n    4,\n    0,\n    6,\n    0,\n    3,\n    10,\n    8,\n    10,\n    13,\n    12,\n    13,\n    11,\n    9,\n    15,\n    14,\n    11,\n    15,\n    13,\n    15,\n    10,\n    10,\n    15,\n    9,\n    14,\n    12,\n    8,\n    14,\n    8,\n    11,\n    18,\n    16,\n    18,\n    21,\n    20,\n    21,\n    19,\n    17,\n    23,\n    22,\n    19,\n    23,\n    21,\n    23,\n    18,\n    18,\n    23,\n    17,\n    22,\n    20,\n    16,\n    22,\n    16,\n    19,\n    26,\n    24,\n    26,\n    29,\n    28,\n    29,\n    27,\n    25,\n    31,\n    30,\n    27,\n    31,\n    29,\n    31,\n    26,\n    26,\n    31,\n    25,\n    30,\n    28,\n    24,\n    30,\n    24,\n    27,\n    34,\n    32,\n    34,\n    37,\n    36,\n    37,\n    35,\n    33,\n    39,\n    38,\n    35,\n    39,\n    37,\n    39,\n    34,\n    34,\n    39,\n    33,\n    38,\n    36,\n    32,\n    38,\n    32,\n    35,\n    42,\n    40,\n    42,\n    45,\n    44,\n    45,\n    43,\n    41,\n    47,\n    46,\n    43,\n    47,\n    45,\n    47,\n    42,\n    42,\n    47,\n    41,\n    46,\n    44,\n    40,\n    46,\n    40,\n    43,\n    50,\n    48,\n    50,\n    53,\n    52,\n    53,\n    51,\n    49,\n    55,\n    54,\n    51,\n    55,\n    53,\n    55,\n    50,\n    50,\n    55,\n    49,\n    54,\n    52,\n    48,\n    54,\n    48,\n    51,\n    58,\n    56,\n    58,\n    61,\n    60,\n    61,\n    59,\n    57,\n    63,\n    62,\n    59,\n    63,\n    61,\n    63,\n    58,\n    58,\n    63,\n    57,\n    62,\n    60,\n    56,\n    62,\n    56,\n    59;\n   }\n  }\n }\n\n Frame wings {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.102858,0.000000,1.000000;;\n  }\n\n  Mesh {\n   232;\n   -4.473780;0.990354;-1.090251;,\n   -0.345427;0.933506;-1.140405;,\n   -4.473780;0.932796;-1.091078;,\n   -0.345427;0.991065;-1.139578;,\n   -4.641020;1.112137;-1.503675;,\n   -4.641020;1.054581;-1.504503;,\n   -4.766460;1.131689;-2.085040;,\n   -4.766460;1.074128;-2.085866;,\n   -4.543460;1.139982;-2.660581;,\n   -4.543460;1.082430;-2.661408;,\n   0.027874;1.140218;-2.677020;,\n   0.027874;1.082668;-2.677857;,\n   4.543460;1.139982;-2.660581;,\n   4.543460;1.082430;-2.661408;,\n   4.766460;1.130975;-2.035712;,\n   4.766460;1.073424;-2.036540;,\n   4.710710;1.111661;-1.470787;,\n   4.710710;1.054106;-1.471615;,\n   4.529530;0.990117;-1.073802;,\n   4.529530;0.932558;-1.074629;,\n   0.393257;0.991065;-1.139578;,\n   0.393257;0.933506;-1.140405;,\n   0.013937;1.111899;-1.487227;,\n   0.013937;1.054343;-1.488064;,\n   -4.301710;-0.500205;-1.103060;,\n   -0.332142;-0.553724;-1.156760;,\n   -4.301710;-0.557592;-1.107570;,\n   -0.332142;-0.496337;-1.152240;,\n   -4.462520;-0.352204;-1.507840;,\n   -4.462520;-0.409591;-1.512360;,\n   -4.583130;-0.295474;-2.086770;,\n   -4.583130;-0.352861;-2.091280;,\n   -4.368720;-0.250351;-2.660590;,\n   -4.368720;-0.307738;-2.665110;,\n   0.026802;-0.249062;-2.676990;,\n   0.026802;-0.306449;-2.681500;,\n   4.368720;-0.250351;-2.660590;,\n   4.368720;-0.307738;-2.665100;,\n   4.583130;-0.299342;-2.037580;,\n   4.583130;-0.356729;-2.042090;,\n   4.529530;-0.354782;-1.475050;,\n   4.529530;-0.412169;-1.479570;,\n   4.355310;-0.501494;-1.086660;,\n   4.355310;-0.558881;-1.091180;,\n   0.378131;-0.496337;-1.152240;,\n   0.378131;-0.553724;-1.156760;,\n   0.013401;-0.353493;-1.491450;,\n   0.013401;-0.410880;-1.495960;,\n   -4.473780;0.990354;-1.090251;,\n   -0.345427;0.933506;-1.140405;,\n   -4.473780;0.932796;-1.091078;,\n   -4.473780;0.990354;-1.090251;,\n   -4.641020;1.112137;-1.503675;,\n   -4.473780;0.932796;-1.091078;,\n   -4.641020;1.054581;-1.504503;,\n   -4.641020;1.112137;-1.503675;,\n   -4.766460;1.131689;-2.085040;,\n   -4.641020;1.054581;-1.504503;,\n   -4.766460;1.074128;-2.085866;,\n   -4.766460;1.131689;-2.085040;,\n   -4.543460;1.139982;-2.660581;,\n   -4.766460;1.074128;-2.085866;,\n   -4.543460;1.082430;-2.661408;,\n   -4.543460;1.139982;-2.660581;,\n   0.027874;1.140218;-2.677020;,\n   -4.543460;1.082430;-2.661408;,\n   0.027874;1.082668;-2.677857;,\n   0.027874;1.140218;-2.677020;,\n   4.543460;1.139982;-2.660581;,\n   0.027874;1.082668;-2.677857;,\n   4.543460;1.082430;-2.661408;,\n   4.543460;1.139982;-2.660581;,\n   4.766460;1.130975;-2.035712;,\n   4.543460;1.082430;-2.661408;,\n   4.766460;1.073424;-2.036540;,\n   4.766460;1.130975;-2.035712;,\n   4.710710;1.111661;-1.470787;,\n   4.766460;1.073424;-2.036540;,\n   4.710710;1.054106;-1.471615;,\n   4.710710;1.111661;-1.470787;,\n   4.529530;0.990117;-1.073802;,\n   4.710710;1.054106;-1.471615;,\n   4.529530;0.932558;-1.074629;,\n   4.529530;0.990117;-1.073802;,\n   0.393257;0.991065;-1.139578;,\n   4.529530;0.932558;-1.074629;,\n   0.393257;0.933506;-1.140405;,\n   0.393257;0.991065;-1.139578;,\n   0.013937;1.111899;-1.487227;,\n   0.393257;0.933506;-1.140405;,\n   -0.345427;0.991065;-1.139578;,\n   -0.345427;0.933506;-1.140405;,\n   0.013937;1.054343;-1.488064;,\n   0.013937;1.111899;-1.487227;,\n   -0.345427;0.991065;-1.139578;,\n   0.013937;1.054343;-1.488064;,\n   4.543460;1.082430;-2.661408;,\n   4.766460;1.073424;-2.036540;,\n   0.027874;1.082668;-2.677857;,\n   4.766460;1.073424;-2.036540;,\n   4.710710;1.054106;-1.471615;,\n   0.027874;1.082668;-2.677857;,\n   4.710710;1.054106;-1.471615;,\n   4.529530;0.932558;-1.074629;,\n   4.529530;0.932558;-1.074629;,\n   0.393257;0.933506;-1.140405;,\n   0.393257;0.933506;-1.140405;,\n   0.013937;1.054343;-1.488064;,\n   0.013937;1.054343;-1.488064;,\n   -0.345427;0.933506;-1.140405;,\n   -4.473780;0.932796;-1.091078;,\n   -0.345427;0.933506;-1.140405;,\n   -4.473780;0.932796;-1.091078;,\n   -4.641020;1.054581;-1.504503;,\n   -4.766460;1.074128;-2.085866;,\n   -4.543460;1.082430;-2.661408;,\n   -4.641020;1.054581;-1.504503;,\n   -4.766460;1.074128;-2.085866;,\n   4.766460;1.130975;-2.035712;,\n   4.543460;1.139982;-2.660581;,\n   0.027874;1.140218;-2.677020;,\n   4.710710;1.111661;-1.470787;,\n   4.766460;1.130975;-2.035712;,\n   0.027874;1.140218;-2.677020;,\n   4.529530;0.990117;-1.073802;,\n   4.710710;1.111661;-1.470787;,\n   0.393257;0.991065;-1.139578;,\n   4.529530;0.990117;-1.073802;,\n   0.013937;1.111899;-1.487227;,\n   0.393257;0.991065;-1.139578;,\n   -4.766460;1.131689;-2.085040;,\n   -4.543460;1.139982;-2.660581;,\n   0.013937;1.111899;-1.487227;,\n   -0.345427;0.991065;-1.139578;,\n   -0.345427;0.991065;-1.139578;,\n   -4.473780;0.990354;-1.090251;,\n   -4.766460;1.131689;-2.085040;,\n   -4.641020;1.112137;-1.503675;,\n   -4.641020;1.112137;-1.503675;,\n   -4.473780;0.990354;-1.090251;,\n   -4.301710;-0.500205;-1.103060;,\n   -0.332142;-0.553724;-1.156760;,\n   -4.301710;-0.557592;-1.107570;,\n   -4.301710;-0.500205;-1.103060;,\n   -4.462520;-0.352204;-1.507840;,\n   -4.301710;-0.557592;-1.107570;,\n   -4.462520;-0.409591;-1.512360;,\n   -4.462520;-0.352204;-1.507840;,\n   -4.583130;-0.295474;-2.086770;,\n   -4.462520;-0.409591;-1.512360;,\n   -4.583130;-0.352861;-2.091280;,\n   -4.583130;-0.295474;-2.086770;,\n   -4.368720;-0.250351;-2.660590;,\n   -4.583130;-0.352861;-2.091280;,\n   -4.368720;-0.307738;-2.665110;,\n   -4.368720;-0.250351;-2.660590;,\n   0.026802;-0.249062;-2.676990;,\n   -4.368720;-0.307738;-2.665110;,\n   0.026802;-0.306449;-2.681500;,\n   0.026802;-0.249062;-2.676990;,\n   4.368720;-0.250351;-2.660590;,\n   0.026802;-0.306449;-2.681500;,\n   4.368720;-0.307738;-2.665100;,\n   4.368720;-0.250351;-2.660590;,\n   4.583130;-0.299342;-2.037580;,\n   4.368720;-0.307738;-2.665100;,\n   4.583130;-0.356729;-2.042090;,\n   4.583130;-0.299342;-2.037580;,\n   4.529530;-0.354782;-1.475050;,\n   4.583130;-0.356729;-2.042090;,\n   4.529530;-0.412169;-1.479570;,\n   4.529530;-0.354782;-1.475050;,\n   4.355310;-0.501494;-1.086660;,\n   4.529530;-0.412169;-1.479570;,\n   4.355310;-0.558881;-1.091180;,\n   4.355310;-0.501494;-1.086660;,\n   0.378131;-0.496337;-1.152240;,\n   4.355310;-0.558881;-1.091180;,\n   0.378131;-0.553724;-1.156760;,\n   0.378131;-0.496337;-1.152240;,\n   0.013401;-0.353493;-1.491450;,\n   0.378131;-0.553724;-1.156760;,\n   -0.332142;-0.496337;-1.152240;,\n   -0.332142;-0.553724;-1.156760;,\n   0.013401;-0.410880;-1.495960;,\n   0.013401;-0.353493;-1.491450;,\n   -0.332142;-0.496337;-1.152240;,\n   0.013401;-0.410880;-1.495960;,\n   4.368720;-0.307738;-2.665100;,\n   4.583130;-0.356729;-2.042090;,\n   0.026802;-0.306449;-2.681500;,\n   4.583130;-0.356729;-2.042090;,\n   4.529530;-0.412169;-1.479570;,\n   0.026802;-0.306449;-2.681500;,\n   4.529530;-0.412169;-1.479570;,\n   4.355310;-0.558881;-1.091180;,\n   4.355310;-0.558881;-1.091180;,\n   0.378131;-0.553724;-1.156760;,\n   0.378131;-0.553724;-1.156760;,\n   0.013401;-0.410880;-1.495960;,\n   0.013401;-0.410880;-1.495960;,\n   -0.332142;-0.553724;-1.156760;,\n   -4.301710;-0.557592;-1.107570;,\n   -0.332142;-0.553724;-1.156760;,\n   -4.301710;-0.557592;-1.107570;,\n   -4.462520;-0.409591;-1.512360;,\n   -4.583130;-0.352861;-2.091280;,\n   -4.368720;-0.307738;-2.665110;,\n   -4.462520;-0.409591;-1.512360;,\n   -4.583130;-0.352861;-2.091280;,\n   4.583130;-0.299342;-2.037580;,\n   4.368720;-0.250351;-2.660590;,\n   0.026802;-0.249062;-2.676990;,\n   4.529530;-0.354782;-1.475050;,\n   4.583130;-0.299342;-2.037580;,\n   0.026802;-0.249062;-2.676990;,\n   4.355310;-0.501494;-1.086660;,\n   4.529530;-0.354782;-1.475050;,\n   0.378131;-0.496337;-1.152240;,\n   4.355310;-0.501494;-1.086660;,\n   0.013401;-0.353493;-1.491450;,\n   0.378131;-0.496337;-1.152240;,\n   -4.583130;-0.295474;-2.086770;,\n   -4.368720;-0.250351;-2.660590;,\n   0.013401;-0.353493;-1.491450;,\n   -0.332142;-0.496337;-1.152240;,\n   -0.332142;-0.496337;-1.152240;,\n   -4.301710;-0.500205;-1.103060;,\n   -4.583130;-0.295474;-2.086770;,\n   -4.462520;-0.352204;-1.507840;,\n   -4.462520;-0.352204;-1.507840;,\n   -4.301710;-0.500205;-1.103060;;\n   88;\n   3;0,2,1;,\n   3;3,48,49;,\n   3;4,5,50;,\n   3;51,52,53;,\n   3;6,7,54;,\n   3;55,56,57;,\n   3;8,9,58;,\n   3;59,60,61;,\n   3;10,11,62;,\n   3;63,64,65;,\n   3;12,13,66;,\n   3;67,68,69;,\n   3;14,15,70;,\n   3;71,72,73;,\n   3;16,17,74;,\n   3;75,76,77;,\n   3;18,19,78;,\n   3;79,80,81;,\n   3;20,21,82;,\n   3;83,84,85;,\n   3;22,23,86;,\n   3;87,88,89;,\n   3;90,91,92;,\n   3;93,94,95;,\n   3;96,97,98;,\n   3;99,100,101;,\n   3;102,103,98;,\n   3;104,105,98;,\n   3;106,107,98;,\n   3;108,109,98;,\n   3;110,98,111;,\n   3;98,112,113;,\n   3;98,114,115;,\n   3;98,116,117;,\n   3;118,119,120;,\n   3;121,122,123;,\n   3;124,125,120;,\n   3;126,127,120;,\n   3;128,129,120;,\n   3;130,120,131;,\n   3;132,120,133;,\n   3;134,120,135;,\n   3;136,137,120;,\n   3;120,138,139;,\n   3;24,26,25;,\n   3;27,140,141;,\n   3;28,29,142;,\n   3;143,144,145;,\n   3;30,31,146;,\n   3;147,148,149;,\n   3;32,33,150;,\n   3;151,152,153;,\n   3;34,35,154;,\n   3;155,156,157;,\n   3;36,37,158;,\n   3;159,160,161;,\n   3;38,39,162;,\n   3;163,164,165;,\n   3;40,41,166;,\n   3;167,168,169;,\n   3;42,43,170;,\n   3;171,172,173;,\n   3;44,45,174;,\n   3;175,176,177;,\n   3;46,47,178;,\n   3;179,180,181;,\n   3;182,183,184;,\n   3;185,186,187;,\n   3;188,189,190;,\n   3;191,192,193;,\n   3;194,195,190;,\n   3;196,197,190;,\n   3;198,199,190;,\n   3;200,201,190;,\n   3;202,190,203;,\n   3;190,204,205;,\n   3;190,206,207;,\n   3;190,208,209;,\n   3;210,211,212;,\n   3;213,214,215;,\n   3;216,217,212;,\n   3;218,219,212;,\n   3;220,221,212;,\n   3;222,212,223;,\n   3;224,212,225;,\n   3;226,212,227;,\n   3;228,229,212;,\n   3;212,230,231;;\n\n   MeshNormals {\n    232;\n    0.011949;-0.014367;0.999825;,\n    0.011949;-0.014367;0.999825;,\n    0.011949;-0.014367;0.999825;,\n    0.011949;-0.014367;0.999825;,\n    -0.927560;-0.005375;0.373635;,\n    -0.927560;-0.005375;0.373635;,\n    -0.977521;-0.003025;0.210817;,\n    -0.977521;-0.003025;0.210817;,\n    -0.932466;0.005190;-0.361219;,\n    -0.932466;0.005190;-0.361219;,\n    -0.003599;0.014540;-0.999888;,\n    -0.003599;0.014540;-0.999888;,\n    0.003643;0.014365;-0.999890;,\n    0.003643;0.014365;-0.999890;,\n    0.941833;0.004835;-0.336047;,\n    0.941833;0.004835;-0.336047;,\n    0.995170;-0.001412;0.098160;,\n    0.995170;-0.001412;0.098160;,\n    0.910404;-0.005943;0.413678;,\n    0.910404;-0.005943;0.413678;,\n    -0.015902;-0.014366;0.999770;,\n    -0.015902;-0.014366;0.999770;,\n    -0.677482;-0.010696;0.735462;,\n    -0.677482;-0.010696;0.735462;,\n    0.012429;-0.078342;0.996849;,\n    0.012429;-0.078342;0.996849;,\n    0.012429;-0.078342;0.996849;,\n    0.012427;-0.078513;0.996836;,\n    -0.932491;-0.028361;0.360079;,\n    -0.932491;-0.028361;0.360079;,\n    -0.979166;-0.015909;0.202436;,\n    -0.979166;-0.015909;0.202436;,\n    -0.937098;0.027410;-0.347988;,\n    -0.937098;0.027410;-0.347988;,\n    -0.003740;0.078346;-0.996919;,\n    -0.003740;0.078346;-0.996919;,\n    0.003789;0.078350;-0.996919;,\n    0.003789;0.078350;-0.996919;,\n    0.945878;0.025425;-0.323526;,\n    0.945878;0.025425;-0.323526;,\n    0.995532;-0.007414;0.094129;,\n    0.995532;-0.007414;0.094129;,\n    0.916339;-0.031439;0.399166;,\n    0.916339;-0.031439;0.399166;,\n    -0.016538;-0.078509;0.996776;,\n    -0.016538;-0.078509;0.996776;,\n    -0.691715;-0.056581;0.719950;,\n    -0.691715;-0.056581;0.719950;,\n    0.011949;-0.014367;0.999825;,\n    0.011949;-0.014367;0.999825;,\n    -0.927560;-0.005375;0.373635;,\n    -0.927559;-0.005369;0.373638;,\n    -0.927559;-0.005369;0.373638;,\n    -0.927559;-0.005369;0.373638;,\n    -0.977521;-0.003025;0.210817;,\n    -0.977521;-0.003033;0.210816;,\n    -0.977521;-0.003033;0.210816;,\n    -0.977521;-0.003033;0.210816;,\n    -0.932466;0.005190;-0.361219;,\n    -0.932466;0.005183;-0.361220;,\n    -0.932466;0.005183;-0.361220;,\n    -0.932466;0.005183;-0.361220;,\n    -0.003599;0.014540;-0.999888;,\n    -0.003596;0.014365;-0.999890;,\n    -0.003596;0.014365;-0.999890;,\n    -0.003596;0.014365;-0.999890;,\n    0.003643;0.014365;-0.999890;,\n    0.003641;0.014540;-0.999888;,\n    0.003641;0.014540;-0.999888;,\n    0.003641;0.014540;-0.999888;,\n    0.941833;0.004835;-0.336047;,\n    0.941833;0.004828;-0.336047;,\n    0.941833;0.004828;-0.336047;,\n    0.941833;0.004828;-0.336047;,\n    0.995170;-0.001412;0.098160;,\n    0.995170;-0.001412;0.098161;,\n    0.995170;-0.001412;0.098161;,\n    0.995170;-0.001412;0.098161;,\n    0.910404;-0.005943;0.413678;,\n    0.910404;-0.005951;0.413677;,\n    0.910404;-0.005951;0.413677;,\n    0.910404;-0.005951;0.413677;,\n    -0.015902;-0.014366;0.999770;,\n    -0.015902;-0.014364;0.999770;,\n    -0.015902;-0.014364;0.999770;,\n    -0.015902;-0.014364;0.999770;,\n    -0.677482;-0.010696;0.735462;,\n    -0.677450;-0.010568;0.735493;,\n    -0.677450;-0.010568;0.735493;,\n    -0.677450;-0.010568;0.735493;,\n    0.697055;-0.010302;0.716943;,\n    0.697055;-0.010302;0.716943;,\n    0.697055;-0.010302;0.716943;,\n    0.697066;-0.010427;0.716931;,\n    0.697066;-0.010427;0.716931;,\n    0.697066;-0.010427;0.716931;,\n    -0.000000;-0.999896;-0.014411;,\n    -0.000000;-0.999896;-0.014411;,\n    -0.000020;-0.995155;-0.098319;,\n    0.002640;-0.999421;-0.033915;,\n    0.002640;-0.999421;-0.033915;,\n    0.002640;-0.999421;-0.033915;,\n    0.062636;-0.961952;-0.265941;,\n    0.062636;-0.961952;-0.265941;,\n    0.001312;-0.995296;-0.096874;,\n    0.001312;-0.995296;-0.096874;,\n    -0.281605;-0.959175;-0.026133;,\n    -0.281605;-0.959175;-0.026133;,\n    0.301962;-0.953128;-0.019154;,\n    0.301962;-0.953128;-0.019154;,\n    -0.000985;-0.995303;-0.096803;,\n    -0.000985;-0.995303;-0.096803;,\n    -0.059505;-0.963815;-0.259846;,\n    -0.059505;-0.963815;-0.259846;,\n    0.000000;-0.999896;-0.014423;,\n    0.000000;-0.999896;-0.014423;,\n    -0.002308;-0.999449;-0.033106;,\n    -0.002308;-0.999449;-0.033106;,\n    -0.000000;0.999896;0.014413;,\n    -0.000000;0.999896;0.014413;,\n    0.000021;0.995155;0.098314;,\n    -0.002640;0.999421;0.033908;,\n    -0.002640;0.999421;0.033908;,\n    -0.002640;0.999421;0.033908;,\n    -0.062635;0.961954;0.265933;,\n    -0.062635;0.961954;0.265933;,\n    -0.001312;0.995296;0.096869;,\n    -0.001312;0.995296;0.096869;,\n    0.281602;0.959175;0.026129;,\n    0.281602;0.959175;0.026129;,\n    0.000000;0.999896;0.014408;,\n    0.000000;0.999896;0.014408;,\n    -0.301959;0.953129;0.019149;,\n    -0.301959;0.953129;0.019149;,\n    0.000985;0.995304;0.096797;,\n    0.000985;0.995304;0.096797;,\n    0.002311;0.999449;0.033114;,\n    0.002311;0.999449;0.033114;,\n    0.059504;0.963816;0.259842;,\n    0.059504;0.963816;0.259842;,\n    0.012427;-0.078513;0.996836;,\n    0.012427;-0.078513;0.996836;,\n    -0.932491;-0.028361;0.360079;,\n    -0.932482;-0.028301;0.360106;,\n    -0.932482;-0.028301;0.360106;,\n    -0.932482;-0.028301;0.360106;,\n    -0.979166;-0.015909;0.202436;,\n    -0.979167;-0.015944;0.202430;,\n    -0.979167;-0.015944;0.202430;,\n    -0.979167;-0.015944;0.202430;,\n    -0.937098;0.027410;-0.347988;,\n    -0.937096;0.027348;-0.347999;,\n    -0.937096;0.027348;-0.347999;,\n    -0.937096;0.027348;-0.347999;,\n    -0.003740;0.078346;-0.996919;,\n    -0.003743;0.078523;-0.996905;,\n    -0.003743;0.078523;-0.996905;,\n    -0.003743;0.078523;-0.996905;,\n    0.003789;0.078350;-0.996919;,\n    0.003789;0.078346;-0.996919;,\n    0.003789;0.078346;-0.996919;,\n    0.003789;0.078346;-0.996919;,\n    0.945878;0.025425;-0.323526;,\n    0.945878;0.025427;-0.323526;,\n    0.945878;0.025427;-0.323526;,\n    0.945878;0.025427;-0.323526;,\n    0.995532;-0.007414;0.094129;,\n    0.995533;-0.007397;0.094129;,\n    0.995533;-0.007397;0.094129;,\n    0.995533;-0.007397;0.094129;,\n    0.916339;-0.031439;0.399166;,\n    0.916339;-0.031440;0.399166;,\n    0.916339;-0.031440;0.399166;,\n    0.916339;-0.031440;0.399166;,\n    -0.016538;-0.078509;0.996776;,\n    -0.016538;-0.078509;0.996776;,\n    -0.016538;-0.078509;0.996776;,\n    -0.016538;-0.078509;0.996776;,\n    -0.691715;-0.056581;0.719950;,\n    -0.691746;-0.056702;0.719911;,\n    -0.691746;-0.056702;0.719911;,\n    -0.691746;-0.056702;0.719911;,\n    0.710989;-0.055215;0.701032;,\n    0.710989;-0.055215;0.701032;,\n    0.710989;-0.055215;0.701032;,\n    0.710979;-0.055096;0.701052;,\n    0.710979;-0.055096;0.701052;,\n    0.710979;-0.055096;0.701052;,\n    0.000000;-0.996922;-0.078394;,\n    0.000000;-0.996922;-0.078394;,\n    -0.000021;-0.986820;-0.161823;,\n    0.002746;-0.995200;-0.097822;,\n    0.002746;-0.995200;-0.097822;,\n    0.002746;-0.995200;-0.097822;,\n    0.065131;-0.942804;-0.326923;,\n    0.065131;-0.942804;-0.326923;,\n    0.001365;-0.987053;-0.160390;,\n    0.001365;-0.987053;-0.160390;,\n    -0.291928;-0.952457;-0.087199;,\n    -0.291928;-0.952457;-0.087199;,\n    0.312879;-0.946432;-0.079832;,\n    0.312879;-0.946432;-0.079832;,\n    -0.001025;-0.987065;-0.160319;,\n    -0.001025;-0.987065;-0.160319;,\n    -0.061874;-0.945069;-0.320960;,\n    -0.061874;-0.945069;-0.320960;,\n    0.000000;-0.996923;-0.078393;,\n    0.000000;-0.996923;-0.078393;,\n    -0.002403;-0.995279;-0.097030;,\n    -0.002403;-0.995279;-0.097030;,\n    -0.000000;0.996922;0.078394;,\n    -0.000000;0.996922;0.078394;,\n    0.000021;0.986820;0.161822;,\n    -0.002745;0.995200;0.097820;,\n    -0.002745;0.995200;0.097820;,\n    -0.002745;0.995200;0.097820;,\n    -0.065131;0.942804;0.326923;,\n    -0.065131;0.942804;0.326923;,\n    -0.001365;0.987053;0.160389;,\n    -0.001365;0.987053;0.160389;,\n    0.291926;0.952458;0.087199;,\n    0.291926;0.952458;0.087199;,\n    0.000000;0.996922;0.078394;,\n    0.000000;0.996922;0.078394;,\n    -0.312877;0.946433;0.079832;,\n    -0.312877;0.946433;0.079832;,\n    0.001024;0.987065;0.160318;,\n    0.001024;0.987065;0.160318;,\n    0.002402;0.995279;0.097028;,\n    0.002402;0.995279;0.097028;,\n    0.061876;0.945067;0.320966;,\n    0.061876;0.945067;0.320966;;\n    88;\n    3;0,2,1;,\n    3;3,48,49;,\n    3;4,5,50;,\n    3;51,52,53;,\n    3;6,7,54;,\n    3;55,56,57;,\n    3;8,9,58;,\n    3;59,60,61;,\n    3;10,11,62;,\n    3;63,64,65;,\n    3;12,13,66;,\n    3;67,68,69;,\n    3;14,15,70;,\n    3;71,72,73;,\n    3;16,17,74;,\n    3;75,76,77;,\n    3;18,19,78;,\n    3;79,80,81;,\n    3;20,21,82;,\n    3;83,84,85;,\n    3;22,23,86;,\n    3;87,88,89;,\n    3;90,91,92;,\n    3;93,94,95;,\n    3;96,97,98;,\n    3;99,100,101;,\n    3;102,103,98;,\n    3;104,105,98;,\n    3;106,107,98;,\n    3;108,109,98;,\n    3;110,98,111;,\n    3;98,112,113;,\n    3;98,114,115;,\n    3;98,116,117;,\n    3;118,119,120;,\n    3;121,122,123;,\n    3;124,125,120;,\n    3;126,127,120;,\n    3;128,129,120;,\n    3;130,120,131;,\n    3;132,120,133;,\n    3;134,120,135;,\n    3;136,137,120;,\n    3;120,138,139;,\n    3;24,26,25;,\n    3;27,140,141;,\n    3;28,29,142;,\n    3;143,144,145;,\n    3;30,31,146;,\n    3;147,148,149;,\n    3;32,33,150;,\n    3;151,152,153;,\n    3;34,35,154;,\n    3;155,156,157;,\n    3;36,37,158;,\n    3;159,160,161;,\n    3;38,39,162;,\n    3;163,164,165;,\n    3;40,41,166;,\n    3;167,168,169;,\n    3;42,43,170;,\n    3;171,172,173;,\n    3;44,45,174;,\n    3;175,176,177;,\n    3;46,47,178;,\n    3;179,180,181;,\n    3;182,183,184;,\n    3;185,186,187;,\n    3;188,189,190;,\n    3;191,192,193;,\n    3;194,195,190;,\n    3;196,197,190;,\n    3;198,199,190;,\n    3;200,201,190;,\n    3;202,190,203;,\n    3;190,204,205;,\n    3;190,206,207;,\n    3;190,208,209;,\n    3;210,211,212;,\n    3;213,214,215;,\n    3;216,217,212;,\n    3;218,219,212;,\n    3;220,221,212;,\n    3;222,212,223;,\n    3;224,212,225;,\n    3;226,212,227;,\n    3;228,229,212;,\n    3;212,230,231;;\n   }\n\n   MeshTextureCoords {\n    232;\n    0.030702;-0.010231;,\n    0.463765;-0.041427;,\n    0.030702;-0.010746;,\n    0.463765;-0.040913;,\n    0.013159;-0.267384;,\n    0.013159;-0.267899;,\n    0.000000;-0.628997;,\n    0.000000;-0.629511;,\n    0.023393;-0.986988;,\n    0.023393;-0.987503;,\n    0.502924;-0.997213;,\n    0.502924;-0.997734;,\n    0.976607;-0.986988;,\n    0.976607;-0.987503;,\n    1.000000;-0.598315;,\n    1.000000;-0.598830;,\n    0.994152;-0.246928;,\n    0.994152;-0.247442;,\n    0.975146;0.000000;,\n    0.975146;-0.000514;,\n    0.541252;-0.040913;,\n    0.541252;-0.041427;,\n    0.501462;-0.257153;,\n    0.501462;-0.257674;,\n    0.048752;-0.018199;,\n    0.465158;-0.051600;,\n    0.048752;-0.021004;,\n    0.465158;-0.048789;,\n    0.031883;-0.269975;,\n    0.031883;-0.272786;,\n    0.019231;-0.630073;,\n    0.019231;-0.632879;,\n    0.041723;-0.986994;,\n    0.041723;-0.989805;,\n    0.502812;-0.997195;,\n    0.502812;-1.000000;,\n    0.958277;-0.986994;,\n    0.958277;-0.989799;,\n    0.980769;-0.599477;,\n    0.980769;-0.602282;,\n    0.975146;-0.249579;,\n    0.975146;-0.252391;,\n    0.956871;-0.007998;,\n    0.956871;-0.010809;,\n    0.539666;-0.048789;,\n    0.539666;-0.051600;,\n    0.501406;-0.259780;,\n    0.501406;-0.262585;,\n    0.030702;-0.010231;,\n    0.463765;-0.041427;,\n    0.030702;-0.010746;,\n    0.030702;-0.010231;,\n    0.013159;-0.267384;,\n    0.030702;-0.010746;,\n    0.013159;-0.267899;,\n    0.013159;-0.267384;,\n    0.000000;-0.628997;,\n    0.013159;-0.267899;,\n    0.000000;-0.629511;,\n    0.000000;-0.628997;,\n    0.023393;-0.986988;,\n    0.000000;-0.629511;,\n    0.023393;-0.987503;,\n    0.023393;-0.986988;,\n    0.502924;-0.997213;,\n    0.023393;-0.987503;,\n    0.502924;-0.997734;,\n    0.502924;-0.997213;,\n    0.976607;-0.986988;,\n    0.502924;-0.997734;,\n    0.976607;-0.987503;,\n    0.976607;-0.986988;,\n    1.000000;-0.598315;,\n    0.976607;-0.987503;,\n    1.000000;-0.598830;,\n    1.000000;-0.598315;,\n    0.994152;-0.246928;,\n    1.000000;-0.598830;,\n    0.994152;-0.247442;,\n    0.994152;-0.246928;,\n    0.975146;0.000000;,\n    0.994152;-0.247442;,\n    0.975146;-0.000514;,\n    0.975146;0.000000;,\n    0.541252;-0.040913;,\n    0.975146;-0.000514;,\n    0.541252;-0.041427;,\n    0.541252;-0.040913;,\n    0.501462;-0.257153;,\n    0.541252;-0.041427;,\n    0.463765;-0.040913;,\n    0.463765;-0.041427;,\n    0.501462;-0.257674;,\n    0.501462;-0.257153;,\n    0.463765;-0.040913;,\n    0.501462;-0.257674;,\n    0.976607;-0.987503;,\n    1.000000;-0.598830;,\n    0.502924;-0.997734;,\n    1.000000;-0.598830;,\n    0.994152;-0.247442;,\n    0.502924;-0.997734;,\n    0.994152;-0.247442;,\n    0.975146;-0.000514;,\n    0.975146;-0.000514;,\n    0.541252;-0.041427;,\n    0.541252;-0.041427;,\n    0.501462;-0.257674;,\n    0.501462;-0.257674;,\n    0.463765;-0.041427;,\n    0.030702;-0.010746;,\n    0.463765;-0.041427;,\n    0.030702;-0.010746;,\n    0.013159;-0.267899;,\n    0.000000;-0.629511;,\n    0.023393;-0.987503;,\n    0.013159;-0.267899;,\n    0.000000;-0.629511;,\n    1.000000;-0.598315;,\n    0.976607;-0.986988;,\n    0.502924;-0.997213;,\n    0.994152;-0.246928;,\n    1.000000;-0.598315;,\n    0.502924;-0.997213;,\n    0.975146;0.000000;,\n    0.994152;-0.246928;,\n    0.541252;-0.040913;,\n    0.975146;0.000000;,\n    0.501462;-0.257153;,\n    0.541252;-0.040913;,\n    0.000000;-0.628997;,\n    0.023393;-0.986988;,\n    0.501462;-0.257153;,\n    0.463765;-0.040913;,\n    0.463765;-0.040913;,\n    0.030702;-0.010231;,\n    0.000000;-0.628997;,\n    0.013159;-0.267384;,\n    0.013159;-0.267384;,\n    0.030702;-0.010231;,\n    0.048752;-0.018199;,\n    0.465158;-0.051600;,\n    0.048752;-0.021004;,\n    0.048752;-0.018199;,\n    0.031883;-0.269975;,\n    0.048752;-0.021004;,\n    0.031883;-0.272786;,\n    0.031883;-0.269975;,\n    0.019231;-0.630073;,\n    0.031883;-0.272786;,\n    0.019231;-0.632879;,\n    0.019231;-0.630073;,\n    0.041723;-0.986994;,\n    0.019231;-0.632879;,\n    0.041723;-0.989805;,\n    0.041723;-0.986994;,\n    0.502812;-0.997195;,\n    0.041723;-0.989805;,\n    0.502812;-1.000000;,\n    0.502812;-0.997195;,\n    0.958277;-0.986994;,\n    0.502812;-1.000000;,\n    0.958277;-0.989799;,\n    0.958277;-0.986994;,\n    0.980769;-0.599477;,\n    0.958277;-0.989799;,\n    0.980769;-0.602282;,\n    0.980769;-0.599477;,\n    0.975146;-0.249579;,\n    0.980769;-0.602282;,\n    0.975146;-0.252391;,\n    0.975146;-0.249579;,\n    0.956871;-0.007998;,\n    0.975146;-0.252391;,\n    0.956871;-0.010809;,\n    0.956871;-0.007998;,\n    0.539666;-0.048789;,\n    0.956871;-0.010809;,\n    0.539666;-0.051600;,\n    0.539666;-0.048789;,\n    0.501406;-0.259780;,\n    0.539666;-0.051600;,\n    0.465158;-0.048789;,\n    0.465158;-0.051600;,\n    0.501406;-0.262585;,\n    0.501406;-0.259780;,\n    0.465158;-0.048789;,\n    0.501406;-0.262585;,\n    0.958277;-0.989799;,\n    0.980769;-0.602282;,\n    0.502812;-1.000000;,\n    0.980769;-0.602282;,\n    0.975146;-0.252391;,\n    0.502812;-1.000000;,\n    0.975146;-0.252391;,\n    0.956871;-0.010809;,\n    0.956871;-0.010809;,\n    0.539666;-0.051600;,\n    0.539666;-0.051600;,\n    0.501406;-0.262585;,\n    0.501406;-0.262585;,\n    0.465158;-0.051600;,\n    0.048752;-0.021004;,\n    0.465158;-0.051600;,\n    0.048752;-0.021004;,\n    0.031883;-0.272786;,\n    0.019231;-0.632879;,\n    0.041723;-0.989805;,\n    0.031883;-0.272786;,\n    0.019231;-0.632879;,\n    0.980769;-0.599477;,\n    0.958277;-0.986994;,\n    0.502812;-0.997195;,\n    0.975146;-0.249579;,\n    0.980769;-0.599477;,\n    0.502812;-0.997195;,\n    0.956871;-0.007998;,\n    0.975146;-0.249579;,\n    0.539666;-0.048789;,\n    0.956871;-0.007998;,\n    0.501406;-0.259780;,\n    0.539666;-0.048789;,\n    0.019231;-0.630073;,\n    0.041723;-0.986994;,\n    0.501406;-0.259780;,\n    0.465158;-0.048789;,\n    0.465158;-0.048789;,\n    0.048752;-0.018199;,\n    0.019231;-0.630073;,\n    0.031883;-0.269975;,\n    0.031883;-0.269975;,\n    0.048752;-0.018199;;\n   }\n\n   MeshMaterialList {\n    1;\n    88;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.800000;0.800000;0.000000;;\n     0.000000;\n     0.000000;0.000000;0.000000;;\n     0.000000;0.000000;0.000000;;\n\n     TextureFilename {\n      \"wings.bmp\";\n     }\n    }\n   }\n\n   VertexDuplicationIndices {\n    232;\n    48;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    36,\n    37,\n    38,\n    39,\n    40,\n    41,\n    42,\n    43,\n    44,\n    45,\n    46,\n    47,\n    0,\n    1,\n    2,\n    0,\n    4,\n    2,\n    5,\n    4,\n    6,\n    5,\n    7,\n    6,\n    8,\n    7,\n    9,\n    8,\n    10,\n    9,\n    11,\n    10,\n    12,\n    11,\n    13,\n    12,\n    14,\n    13,\n    15,\n    14,\n    16,\n    15,\n    17,\n    16,\n    18,\n    17,\n    19,\n    18,\n    20,\n    19,\n    21,\n    20,\n    22,\n    21,\n    3,\n    1,\n    23,\n    22,\n    3,\n    23,\n    13,\n    15,\n    11,\n    15,\n    17,\n    11,\n    17,\n    19,\n    19,\n    21,\n    21,\n    23,\n    23,\n    1,\n    2,\n    1,\n    2,\n    5,\n    7,\n    9,\n    5,\n    7,\n    14,\n    12,\n    10,\n    16,\n    14,\n    10,\n    18,\n    16,\n    20,\n    18,\n    22,\n    20,\n    6,\n    8,\n    22,\n    3,\n    3,\n    0,\n    6,\n    4,\n    4,\n    0,\n    24,\n    25,\n    26,\n    24,\n    28,\n    26,\n    29,\n    28,\n    30,\n    29,\n    31,\n    30,\n    32,\n    31,\n    33,\n    32,\n    34,\n    33,\n    35,\n    34,\n    36,\n    35,\n    37,\n    36,\n    38,\n    37,\n    39,\n    38,\n    40,\n    39,\n    41,\n    40,\n    42,\n    41,\n    43,\n    42,\n    44,\n    43,\n    45,\n    44,\n    46,\n    45,\n    27,\n    25,\n    47,\n    46,\n    27,\n    47,\n    37,\n    39,\n    35,\n    39,\n    41,\n    35,\n    41,\n    43,\n    43,\n    45,\n    45,\n    47,\n    47,\n    25,\n    26,\n    25,\n    26,\n    29,\n    31,\n    33,\n    29,\n    31,\n    38,\n    36,\n    34,\n    40,\n    38,\n    34,\n    42,\n    40,\n    44,\n    42,\n    46,\n    44,\n    30,\n    32,\n    46,\n    27,\n    27,\n    24,\n    30,\n    28,\n    28,\n    24;\n   }\n  }\n }\n\n Frame elevator {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh {\n   130;\n   -0.128434;-0.037724;3.371460;,\n   -0.066407;-0.031770;2.810290;,\n   -0.128434;-0.094919;3.364950;,\n   -0.066407;0.025424;2.816800;,\n   -0.397218;-0.084501;3.782320;,\n   -0.397218;-0.141695;3.775810;,\n   -1.197060;-0.086840;3.802860;,\n   -1.197060;-0.144034;3.796350;,\n   -1.548550;-0.035385;3.350910;,\n   -1.548550;-0.092580;3.344400;,\n   -1.569220;0.002036;3.022230;,\n   -1.569220;-0.055158;3.015720;,\n   -1.321120;0.044135;2.652450;,\n   -1.321120;-0.013059;2.645940;,\n   -0.831407;0.088573;2.262140;,\n   -0.831407;0.031378;2.255630;,\n   -0.045731;0.142366;1.789650;,\n   -0.045731;0.085171;1.783140;,\n   0.164738;-0.037724;3.371460;,\n   0.164738;-0.094919;3.364950;,\n   0.102711;-0.031770;2.810290;,\n   0.102711;0.025424;2.816800;,\n   0.433521;-0.084501;3.782320;,\n   0.433521;-0.141695;3.775810;,\n   1.233360;-0.086840;3.802860;,\n   1.233360;-0.144034;3.796350;,\n   1.584850;-0.035385;3.350920;,\n   1.584850;-0.092580;3.344400;,\n   1.605530;0.002036;3.022230;,\n   1.605530;-0.055158;3.015720;,\n   1.357420;0.044135;2.652450;,\n   1.357420;-0.013059;2.645940;,\n   0.867711;0.088573;2.262140;,\n   0.867711;0.031378;2.255630;,\n   0.082035;0.142366;1.789650;,\n   0.082035;0.085171;1.783140;,\n   -0.397218;-0.141695;3.775810;,\n   -0.397218;-0.084501;3.782320;,\n   -0.397218;-0.141695;3.775810;,\n   -1.197060;-0.144034;3.796350;,\n   -1.197060;-0.086840;3.802860;,\n   -1.197060;-0.144034;3.796350;,\n   -1.548550;-0.092580;3.344400;,\n   -1.548550;-0.035385;3.350910;,\n   -1.548550;-0.092580;3.344400;,\n   -1.569220;-0.055158;3.015720;,\n   -1.569220;0.002036;3.022230;,\n   -1.569220;-0.055158;3.015720;,\n   -0.045731;0.085171;1.783140;,\n   -0.045731;0.142366;1.789650;,\n   -0.045731;0.085171;1.783140;,\n   -0.045731;0.085171;1.783140;,\n   -0.066407;-0.031770;2.810290;,\n   -0.831407;0.031378;2.255630;,\n   -0.831407;0.031378;2.255630;,\n   -0.066407;-0.031770;2.810290;,\n   -1.321120;-0.013059;2.645940;,\n   -0.128434;-0.094919;3.364950;,\n   -1.321120;-0.013059;2.645940;,\n   -0.128434;-0.094919;3.364950;,\n   -1.569220;-0.055158;3.015720;,\n   -1.569220;-0.055158;3.015720;,\n   -1.548550;-0.092580;3.344400;,\n   -1.548550;-0.092580;3.344400;,\n   -1.197060;-0.144034;3.796350;,\n   -1.197060;-0.144034;3.796350;,\n   -0.397218;-0.141695;3.775810;,\n   -0.066407;0.025424;2.816800;,\n   -0.045731;0.142366;1.789650;,\n   -0.831407;0.088573;2.262140;,\n   -0.066407;0.025424;2.816800;,\n   -0.831407;0.088573;2.262140;,\n   -1.321120;0.044135;2.652450;,\n   -0.128434;-0.037724;3.371460;,\n   -1.321120;0.044135;2.652450;,\n   -0.128434;-0.037724;3.371460;,\n   -1.569220;0.002036;3.022230;,\n   -1.569220;0.002036;3.022230;,\n   -1.548550;-0.035385;3.350910;,\n   -1.548550;-0.035385;3.350910;,\n   -1.197060;-0.086840;3.802860;,\n   -1.197060;-0.086840;3.802860;,\n   -0.397218;-0.084501;3.782320;,\n   0.433521;-0.141695;3.775810;,\n   0.433521;-0.084501;3.782320;,\n   0.433521;-0.141695;3.775810;,\n   1.233360;-0.144034;3.796350;,\n   1.233360;-0.086840;3.802860;,\n   1.233360;-0.144034;3.796350;,\n   1.584850;-0.092580;3.344400;,\n   1.584850;-0.035385;3.350920;,\n   1.584850;-0.092580;3.344400;,\n   1.605530;-0.055158;3.015720;,\n   1.605530;0.002036;3.022230;,\n   1.605530;-0.055158;3.015720;,\n   0.082035;0.085171;1.783140;,\n   0.082035;0.142366;1.789650;,\n   0.082035;0.085171;1.783140;,\n   0.082035;0.085171;1.783140;,\n   0.867711;0.031378;2.255630;,\n   0.102711;-0.031770;2.810290;,\n   0.867711;0.031378;2.255630;,\n   1.357420;-0.013059;2.645940;,\n   0.102711;-0.031770;2.810290;,\n   1.357420;-0.013059;2.645940;,\n   0.164738;-0.094919;3.364950;,\n   1.605530;-0.055158;3.015720;,\n   0.164738;-0.094919;3.364950;,\n   1.605530;-0.055158;3.015720;,\n   1.584850;-0.092580;3.344400;,\n   1.584850;-0.092580;3.344400;,\n   1.233360;-0.144034;3.796350;,\n   1.233360;-0.144034;3.796350;,\n   0.433521;-0.141695;3.775810;,\n   0.102711;0.025424;2.816800;,\n   0.867711;0.088573;2.262140;,\n   0.082035;0.142366;1.789650;,\n   0.102711;0.025424;2.816800;,\n   1.357420;0.044135;2.652450;,\n   0.867711;0.088573;2.262140;,\n   0.164738;-0.037724;3.371460;,\n   1.357420;0.044135;2.652450;,\n   0.164738;-0.037724;3.371460;,\n   1.605530;0.002036;3.022230;,\n   1.584850;-0.035385;3.350920;,\n   1.605530;0.002036;3.022230;,\n   1.233360;-0.086840;3.802860;,\n   1.584850;-0.035385;3.350920;,\n   0.433521;-0.084501;3.782320;,\n   1.233360;-0.086840;3.802860;;\n   64;\n   3;0,2,1;,\n   3;3,0,1;,\n   3;4,5,2;,\n   3;0,4,2;,\n   3;6,7,36;,\n   3;37,6,38;,\n   3;8,9,39;,\n   3;40,8,41;,\n   3;10,11,42;,\n   3;43,10,44;,\n   3;12,13,45;,\n   3;46,12,47;,\n   3;14,15,13;,\n   3;12,14,13;,\n   3;16,17,15;,\n   3;14,16,15;,\n   3;3,1,48;,\n   3;49,3,50;,\n   3;51,52,53;,\n   3;54,55,56;,\n   3;52,57,58;,\n   3;56,59,60;,\n   3;61,57,62;,\n   3;63,57,64;,\n   3;65,57,66;,\n   3;67,68,69;,\n   3;70,71,72;,\n   3;73,67,74;,\n   3;75,72,76;,\n   3;73,77,78;,\n   3;73,79,80;,\n   3;73,81,82;,\n   3;18,20,19;,\n   3;21,20,18;,\n   3;22,19,23;,\n   3;18,19,22;,\n   3;24,83,25;,\n   3;84,85,24;,\n   3;26,86,27;,\n   3;87,88,26;,\n   3;28,89,29;,\n   3;90,91,28;,\n   3;30,92,31;,\n   3;93,94,30;,\n   3;32,31,33;,\n   3;30,31,32;,\n   3;34,33,35;,\n   3;32,33,34;,\n   3;21,95,20;,\n   3;96,97,21;,\n   3;98,99,100;,\n   3;101,102,103;,\n   3;100,104,105;,\n   3;102,106,107;,\n   3;108,109,105;,\n   3;110,111,105;,\n   3;112,113,105;,\n   3;114,115,116;,\n   3;117,118,119;,\n   3;120,121,114;,\n   3;122,123,118;,\n   3;120,124,125;,\n   3;120,126,127;,\n   3;120,128,129;;\n\n   MeshNormals {\n    130;\n    0.968583;-0.028125;0.247096;,\n    0.997742;-0.007595;0.066725;,\n    0.917723;-0.044923;0.394674;,\n    0.999226;-0.004449;0.039087;,\n    0.838444;-0.061634;0.541492;,\n    0.838444;-0.061634;0.541492;,\n    0.025837;-0.113055;0.993253;,\n    0.025837;-0.113055;0.993253;,\n    -0.791285;-0.069150;0.607525;,\n    -0.791285;-0.069149;0.607525;,\n    -0.998053;-0.007053;0.061962;,\n    -0.998053;-0.007053;0.061962;,\n    -0.755569;0.074084;-0.650867;,\n    -0.686154;0.082270;-0.722790;,\n    -0.581366;0.092016;-0.808422;,\n    -0.546195;0.094732;-0.832284;,\n    -0.517804;0.096749;-0.850011;,\n    -0.517804;0.096749;-0.850011;,\n    -0.968583;-0.028125;0.247095;,\n    -0.917723;-0.044923;0.394673;,\n    -0.997742;-0.007595;0.066725;,\n    -0.999226;-0.004449;0.039087;,\n    -0.838445;-0.061634;0.541490;,\n    -0.838445;-0.061634;0.541490;,\n    -0.025838;-0.113055;0.993253;,\n    -0.025838;-0.113055;0.993253;,\n    0.791282;-0.069203;0.607523;,\n    0.791285;-0.069254;0.607513;,\n    0.998052;-0.007061;0.061991;,\n    0.998052;-0.007056;0.061993;,\n    0.755563;0.074085;-0.650873;,\n    0.686153;0.082270;-0.722790;,\n    0.581367;0.092016;-0.808421;,\n    0.546195;0.094732;-0.832284;,\n    0.517804;0.096749;-0.850011;,\n    0.517804;0.096749;-0.850011;,\n    0.025837;-0.113055;0.993253;,\n    0.025837;-0.113055;0.993253;,\n    0.025837;-0.113055;0.993253;,\n    -0.791285;-0.069149;0.607525;,\n    -0.791285;-0.069151;0.607524;,\n    -0.791285;-0.069151;0.607524;,\n    -0.998053;-0.007053;0.061962;,\n    -0.998053;-0.007053;0.061962;,\n    -0.998053;-0.007053;0.061962;,\n    -0.832063;0.062731;-0.551122;,\n    -0.832063;0.062731;-0.551122;,\n    -0.832063;0.062731;-0.551122;,\n    0.999800;-0.002261;0.019868;,\n    0.999800;-0.002261;0.019868;,\n    0.999800;-0.002261;0.019868;,\n    0.000000;-0.993581;-0.113119;,\n    0.000000;-0.993581;-0.113120;,\n    0.000000;-0.993581;-0.113119;,\n    0.000000;-0.993581;-0.113119;,\n    0.000000;-0.993581;-0.113119;,\n    -0.000000;-0.993581;-0.113119;,\n    0.000000;-0.993581;-0.113121;,\n    0.000000;-0.993581;-0.113121;,\n    -0.000001;-0.993581;-0.113119;,\n    -0.000001;-0.993581;-0.113119;,\n    0.000001;-0.993581;-0.113125;,\n    0.000001;-0.993581;-0.113125;,\n    0.000000;-0.993581;-0.113118;,\n    0.000000;-0.993581;-0.113118;,\n    0.000001;-0.993582;-0.113118;,\n    0.000001;-0.993582;-0.113118;,\n    0.000000;0.993581;0.113120;,\n    0.000001;0.993581;0.113120;,\n    0.000001;0.993581;0.113120;,\n    -0.000001;0.993581;0.113122;,\n    -0.000001;0.993581;0.113122;,\n    -0.000000;0.993581;0.113120;,\n    -0.000000;0.993581;0.113120;,\n    -0.000000;0.993581;0.113119;,\n    0.000000;0.993582;0.113118;,\n    0.000000;0.993582;0.113118;,\n    -0.000000;0.993581;0.113122;,\n    -0.000000;0.993581;0.113122;,\n    -0.000000;0.993581;0.113121;,\n    -0.000000;0.993581;0.113121;,\n    -0.000001;0.993581;0.113120;,\n    -0.000001;0.993581;0.113120;,\n    -0.025838;-0.113055;0.993253;,\n    -0.025838;-0.113055;0.993253;,\n    -0.025838;-0.113055;0.993253;,\n    0.791285;-0.069254;0.607513;,\n    0.791279;-0.069151;0.607533;,\n    0.791279;-0.069151;0.607533;,\n    0.998052;-0.007056;0.061993;,\n    0.998052;-0.007067;0.061990;,\n    0.998052;-0.007067;0.061990;,\n    0.832053;0.062732;-0.551138;,\n    0.832053;0.062732;-0.551138;,\n    0.832053;0.062732;-0.551138;,\n    -0.999800;-0.002261;0.019868;,\n    -0.999800;-0.002261;0.019868;,\n    -0.999800;-0.002261;0.019868;,\n    -0.000000;-0.993581;-0.113119;,\n    -0.000000;-0.993581;-0.113119;,\n    -0.000000;-0.993581;-0.113120;,\n    -0.000000;-0.993581;-0.113119;,\n    0.000000;-0.993581;-0.113119;,\n    -0.000000;-0.993581;-0.113119;,\n    -0.000000;-0.993581;-0.113121;,\n    -0.000000;-0.993581;-0.113121;,\n    0.000001;-0.993581;-0.113119;,\n    0.000001;-0.993581;-0.113119;,\n    -0.000001;-0.993581;-0.113125;,\n    -0.000001;-0.993581;-0.113125;,\n    -0.000000;-0.993581;-0.113118;,\n    -0.000000;-0.993581;-0.113118;,\n    -0.000001;-0.993582;-0.113118;,\n    -0.000001;-0.993582;-0.113118;,\n    -0.000000;0.993581;0.113120;,\n    -0.000001;0.993581;0.113120;,\n    -0.000001;0.993581;0.113120;,\n    0.000001;0.993581;0.113122;,\n    0.000000;0.993581;0.113120;,\n    0.000001;0.993581;0.113122;,\n    -0.000000;0.993581;0.113120;,\n    0.000000;0.993581;0.113119;,\n    -0.000000;0.993582;0.113118;,\n    -0.000000;0.993582;0.113118;,\n    -0.000000;0.993582;0.113118;,\n    -0.000000;0.993582;0.113118;,\n    -0.000000;0.993581;0.113123;,\n    -0.000000;0.993581;0.113123;,\n    0.000001;0.993581;0.113120;,\n    0.000001;0.993581;0.113120;;\n    64;\n    3;0,2,1;,\n    3;3,0,1;,\n    3;4,5,2;,\n    3;0,4,2;,\n    3;6,7,36;,\n    3;37,6,38;,\n    3;8,9,39;,\n    3;40,8,41;,\n    3;10,11,42;,\n    3;43,10,44;,\n    3;12,13,45;,\n    3;46,12,47;,\n    3;14,15,13;,\n    3;12,14,13;,\n    3;16,17,15;,\n    3;14,16,15;,\n    3;3,1,48;,\n    3;49,3,50;,\n    3;51,52,53;,\n    3;54,55,56;,\n    3;52,57,58;,\n    3;56,59,60;,\n    3;61,57,62;,\n    3;63,57,64;,\n    3;65,57,66;,\n    3;67,68,69;,\n    3;70,71,72;,\n    3;73,67,74;,\n    3;75,72,76;,\n    3;73,77,78;,\n    3;73,79,80;,\n    3;73,81,82;,\n    3;18,20,19;,\n    3;21,20,18;,\n    3;22,19,23;,\n    3;18,19,22;,\n    3;24,83,25;,\n    3;84,85,24;,\n    3;26,86,27;,\n    3;87,88,26;,\n    3;28,89,29;,\n    3;90,91,28;,\n    3;30,92,31;,\n    3;93,94,30;,\n    3;32,31,33;,\n    3;30,31,32;,\n    3;34,33,35;,\n    3;32,33,34;,\n    3;21,95,20;,\n    3;96,97,21;,\n    3;98,99,100;,\n    3;101,102,103;,\n    3;100,104,105;,\n    3;102,106,107;,\n    3;108,109,105;,\n    3;110,111,105;,\n    3;112,113,105;,\n    3;114,115,116;,\n    3;117,118,119;,\n    3;120,121,114;,\n    3;122,123,118;,\n    3;120,124,125;,\n    3;120,126,127;,\n    3;120,128,129;;\n   }\n\n   MeshTextureCoords {\n    130;\n    0.728944;-0.039637;,\n    0.735880;-0.078113;,\n    0.728944;-0.040083;,\n    0.735880;-0.077667;,\n    0.698889;-0.011466;,\n    0.698889;-0.011913;,\n    0.609451;-0.010058;,\n    0.609451;-0.010504;,\n    0.570147;-0.041046;,\n    0.570147;-0.041492;,\n    0.567836;-0.063581;,\n    0.567836;-0.064028;,\n    0.595578;-0.088935;,\n    0.595578;-0.089381;,\n    0.650338;-0.115697;,\n    0.650338;-0.116143;,\n    0.738192;-0.148093;,\n    0.738192;-0.148539;,\n    0.761727;-0.039637;,\n    0.761727;-0.040083;,\n    0.754791;-0.078113;,\n    0.754791;-0.077667;,\n    0.791782;-0.011466;,\n    0.791782;-0.011913;,\n    0.881220;-0.010058;,\n    0.881220;-0.010504;,\n    0.920524;-0.041045;,\n    0.920524;-0.041492;,\n    0.922836;-0.063581;,\n    0.922836;-0.064028;,\n    0.895092;-0.088935;,\n    0.895092;-0.089381;,\n    0.840333;-0.115697;,\n    0.840333;-0.116143;,\n    0.752479;-0.148093;,\n    0.752479;-0.148539;,\n    0.698889;-0.011913;,\n    0.698889;-0.011466;,\n    0.698889;-0.011913;,\n    0.609451;-0.010504;,\n    0.609451;-0.010058;,\n    0.609451;-0.010504;,\n    0.570147;-0.041492;,\n    0.570147;-0.041046;,\n    0.570147;-0.041492;,\n    0.567836;-0.064028;,\n    0.567836;-0.063581;,\n    0.567836;-0.064028;,\n    0.738192;-0.148539;,\n    0.738192;-0.148093;,\n    0.738192;-0.148539;,\n    0.738192;-0.148539;,\n    0.735880;-0.078113;,\n    0.650338;-0.116143;,\n    0.650338;-0.116143;,\n    0.735880;-0.078113;,\n    0.595578;-0.089381;,\n    0.728944;-0.040083;,\n    0.595578;-0.089381;,\n    0.728944;-0.040083;,\n    0.567836;-0.064028;,\n    0.567836;-0.064028;,\n    0.570147;-0.041492;,\n    0.570147;-0.041492;,\n    0.609451;-0.010504;,\n    0.609451;-0.010504;,\n    0.698889;-0.011913;,\n    0.735880;-0.077667;,\n    0.738192;-0.148093;,\n    0.650338;-0.115697;,\n    0.735880;-0.077667;,\n    0.650338;-0.115697;,\n    0.595578;-0.088935;,\n    0.728944;-0.039637;,\n    0.595578;-0.088935;,\n    0.728944;-0.039637;,\n    0.567836;-0.063581;,\n    0.567836;-0.063581;,\n    0.570147;-0.041046;,\n    0.570147;-0.041046;,\n    0.609451;-0.010058;,\n    0.609451;-0.010058;,\n    0.698889;-0.011466;,\n    0.791782;-0.011913;,\n    0.791782;-0.011466;,\n    0.791782;-0.011913;,\n    0.881220;-0.010504;,\n    0.881220;-0.010058;,\n    0.881220;-0.010504;,\n    0.920524;-0.041492;,\n    0.920524;-0.041045;,\n    0.920524;-0.041492;,\n    0.922836;-0.064028;,\n    0.922836;-0.063581;,\n    0.922836;-0.064028;,\n    0.752479;-0.148539;,\n    0.752479;-0.148093;,\n    0.752479;-0.148539;,\n    0.752479;-0.148539;,\n    0.840333;-0.116143;,\n    0.754791;-0.078113;,\n    0.840333;-0.116143;,\n    0.895092;-0.089381;,\n    0.754791;-0.078113;,\n    0.895092;-0.089381;,\n    0.761727;-0.040083;,\n    0.922836;-0.064028;,\n    0.761727;-0.040083;,\n    0.922836;-0.064028;,\n    0.920524;-0.041492;,\n    0.920524;-0.041492;,\n    0.881220;-0.010504;,\n    0.881220;-0.010504;,\n    0.791782;-0.011913;,\n    0.754791;-0.077667;,\n    0.840333;-0.115697;,\n    0.752479;-0.148093;,\n    0.754791;-0.077667;,\n    0.895092;-0.088935;,\n    0.840333;-0.115697;,\n    0.761727;-0.039637;,\n    0.895092;-0.088935;,\n    0.761727;-0.039637;,\n    0.922836;-0.063581;,\n    0.920524;-0.041045;,\n    0.922836;-0.063581;,\n    0.881220;-0.010058;,\n    0.920524;-0.041045;,\n    0.791782;-0.011466;,\n    0.881220;-0.010058;;\n   }\n\n   MeshMaterialList {\n    1;\n    64;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.800000;0.800000;0.000000;;\n     0.000000;\n     0.000000;0.000000;0.000000;;\n     0.000000;0.000000;0.000000;;\n\n     TextureFilename {\n      \"bihull.bmp\";\n     }\n    }\n   }\n\n   VertexDuplicationIndices {\n    130;\n    36;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    34,\n    35,\n    5,\n    4,\n    5,\n    7,\n    6,\n    7,\n    9,\n    8,\n    9,\n    11,\n    10,\n    11,\n    17,\n    16,\n    17,\n    17,\n    1,\n    15,\n    15,\n    1,\n    13,\n    2,\n    13,\n    2,\n    11,\n    11,\n    9,\n    9,\n    7,\n    7,\n    5,\n    3,\n    16,\n    14,\n    3,\n    14,\n    12,\n    0,\n    12,\n    0,\n    10,\n    10,\n    8,\n    8,\n    6,\n    6,\n    4,\n    23,\n    22,\n    23,\n    25,\n    24,\n    25,\n    27,\n    26,\n    27,\n    29,\n    28,\n    29,\n    35,\n    34,\n    35,\n    35,\n    33,\n    20,\n    33,\n    31,\n    20,\n    31,\n    19,\n    29,\n    19,\n    29,\n    27,\n    27,\n    25,\n    25,\n    23,\n    21,\n    32,\n    34,\n    21,\n    30,\n    32,\n    18,\n    30,\n    18,\n    28,\n    26,\n    28,\n    24,\n    26,\n    22,\n    24;\n   }\n  }\n }\n\n Frame landing_ge {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh {\n   115;\n   -0.332232;-0.839157;-2.205240;,\n   -0.301452;-0.399248;-1.389050;,\n   -0.466850;-0.782954;-2.205250;,\n   -0.166834;-0.455451;-1.389050;,\n   -0.118593;-0.343572;-2.500480;,\n   -0.253211;-0.287369;-2.500480;,\n   -0.104810;-0.311602;-2.622040;,\n   -0.239428;-0.255398;-2.622040;,\n   -0.366690;-0.919094;-2.309440;,\n   -0.501308;-0.862891;-2.309440;,\n   -0.373581;-0.935075;-2.092360;,\n   -0.508199;-0.878872;-2.092360;,\n   -0.184063;-0.495413;-1.206710;,\n   -0.318681;-0.439210;-1.206710;,\n   0.350102;-0.839157;-2.205240;,\n   0.484721;-0.782954;-2.205250;,\n   0.319323;-0.399248;-1.389050;,\n   0.184705;-0.455451;-1.389050;,\n   0.136464;-0.343572;-2.500480;,\n   0.271082;-0.287369;-2.500480;,\n   0.122681;-0.311602;-2.622040;,\n   0.257299;-0.255398;-2.622040;,\n   0.384560;-0.919094;-2.309440;,\n   0.519178;-0.862891;-2.309440;,\n   0.391452;-0.935075;-2.092360;,\n   0.526070;-0.878872;-2.092360;,\n   0.201934;-0.495413;-1.206710;,\n   0.336552;-0.439210;-1.206710;,\n   0.477166;-0.784128;-2.245480;,\n   -0.472640;-0.875959;-2.086410;,\n   -0.472640;-0.784128;-2.245480;,\n   0.477166;-0.875959;-2.086410;,\n   0.477166;-0.967799;-2.245470;,\n   -0.472640;-0.967799;-2.245470;,\n   -0.466850;-0.782954;-2.205250;,\n   -0.332232;-0.839157;-2.205240;,\n   -0.466850;-0.782954;-2.205250;,\n   -0.501308;-0.862891;-2.309440;,\n   -0.366690;-0.919094;-2.309440;,\n   -0.501308;-0.862891;-2.309440;,\n   -0.508199;-0.878872;-2.092360;,\n   -0.373581;-0.935075;-2.092360;,\n   -0.508199;-0.878872;-2.092360;,\n   -0.318681;-0.439210;-1.206710;,\n   -0.301452;-0.399248;-1.389050;,\n   -0.508199;-0.878872;-2.092360;,\n   -0.301452;-0.399248;-1.389050;,\n   -0.466850;-0.782954;-2.205250;,\n   -0.508199;-0.878872;-2.092360;,\n   -0.466850;-0.782954;-2.205250;,\n   -0.501308;-0.862891;-2.309440;,\n   -0.239428;-0.255398;-2.622040;,\n   -0.501308;-0.862891;-2.309440;,\n   -0.253211;-0.287369;-2.500480;,\n   -0.253211;-0.287369;-2.500480;,\n   -0.166834;-0.455451;-1.389050;,\n   -0.184063;-0.495413;-1.206710;,\n   -0.373581;-0.935075;-2.092360;,\n   -0.332232;-0.839157;-2.205240;,\n   -0.166834;-0.455451;-1.389050;,\n   -0.373581;-0.935075;-2.092360;,\n   -0.332232;-0.839157;-2.205240;,\n   -0.366690;-0.919094;-2.309440;,\n   -0.366690;-0.919094;-2.309440;,\n   -0.104810;-0.311602;-2.622040;,\n   -0.118593;-0.343572;-2.500480;,\n   -0.118593;-0.343572;-2.500480;,\n   0.484721;-0.782954;-2.205250;,\n   0.350102;-0.839157;-2.205240;,\n   0.484721;-0.782954;-2.205250;,\n   0.519178;-0.862891;-2.309440;,\n   0.384560;-0.919094;-2.309440;,\n   0.519178;-0.862891;-2.309440;,\n   0.526070;-0.878872;-2.092360;,\n   0.391452;-0.935075;-2.092360;,\n   0.526070;-0.878872;-2.092360;,\n   0.336552;-0.439210;-1.206710;,\n   0.526070;-0.878872;-2.092360;,\n   0.319323;-0.399248;-1.389050;,\n   0.319323;-0.399248;-1.389050;,\n   0.526070;-0.878872;-2.092360;,\n   0.484721;-0.782954;-2.205250;,\n   0.519178;-0.862891;-2.309440;,\n   0.484721;-0.782954;-2.205250;,\n   0.257299;-0.255398;-2.622040;,\n   0.271082;-0.287369;-2.500480;,\n   0.519178;-0.862891;-2.309440;,\n   0.271082;-0.287369;-2.500480;,\n   0.184705;-0.455451;-1.389050;,\n   0.391452;-0.935075;-2.092360;,\n   0.201934;-0.495413;-1.206710;,\n   0.350102;-0.839157;-2.205240;,\n   0.391452;-0.935075;-2.092360;,\n   0.184705;-0.455451;-1.389050;,\n   0.350102;-0.839157;-2.205240;,\n   0.384560;-0.919094;-2.309440;,\n   0.384560;-0.919094;-2.309440;,\n   0.136464;-0.343572;-2.500480;,\n   0.122681;-0.311602;-2.622040;,\n   0.136464;-0.343572;-2.500480;,\n   -0.472640;-0.784128;-2.245480;,\n   0.477166;-0.784128;-2.245480;,\n   -0.472640;-0.784128;-2.245480;,\n   0.477166;-0.875959;-2.086410;,\n   -0.472640;-0.875959;-2.086410;,\n   -0.472640;-0.967799;-2.245470;,\n   0.477166;-0.967799;-2.245470;,\n   0.477166;-0.875959;-2.086410;,\n   -0.472640;-0.967799;-2.245470;,\n   -0.472640;-0.784128;-2.245480;,\n   -0.472640;-0.967799;-2.245470;,\n   -0.472640;-0.875959;-2.086410;,\n   0.477166;-0.967799;-2.245470;,\n   0.477166;-0.784128;-2.245480;,\n   0.477166;-0.875959;-2.086410;;\n   48;\n   3;0,2,1;,\n   3;3,0,1;,\n   3;4,5,34;,\n   3;35,4,36;,\n   3;8,9,7;,\n   3;6,8,7;,\n   3;10,11,37;,\n   3;38,10,39;,\n   3;12,13,40;,\n   3;41,12,42;,\n   3;43,44,45;,\n   3;46,47,48;,\n   3;45,49,50;,\n   3;51,52,53;,\n   3;54,50,47;,\n   3;55,56,57;,\n   3;58,59,60;,\n   3;61,57,62;,\n   3;63,64,65;,\n   3;62,66,58;,\n   3;14,16,15;,\n   3;17,16,14;,\n   3;18,67,19;,\n   3;68,69,18;,\n   3;22,21,23;,\n   3;20,21,22;,\n   3;24,70,25;,\n   3;71,72,24;,\n   3;26,73,27;,\n   3;74,75,26;,\n   3;76,77,78;,\n   3;79,80,81;,\n   3;77,82,83;,\n   3;84,85,86;,\n   3;87,81,82;,\n   3;88,89,90;,\n   3;91,92,93;,\n   3;94,95,89;,\n   3;96,97,98;,\n   3;95,91,99;,\n   3;28,30,29;,\n   3;31,28,29;,\n   3;32,33,100;,\n   3;101,32,102;,\n   3;103,104,105;,\n   3;106,107,108;,\n   3;109,110,111;,\n   3;112,113,114;;\n\n   MeshNormals {\n    115;\n    0.342963;0.821428;-0.455666;,\n    0.342963;0.821428;-0.455666;,\n    0.342978;0.821423;-0.455664;,\n    0.342948;0.821433;-0.455668;,\n    0.184888;0.442924;0.877288;,\n    0.184914;0.442907;0.877292;,\n    -0.164614;-0.394279;-0.904127;,\n    -0.164613;-0.394279;-0.904127;,\n    -0.164613;-0.394279;-0.904127;,\n    -0.164612;-0.394279;-0.904128;,\n    -0.384038;-0.919853;-0.079908;,\n    -0.384038;-0.919853;-0.079908;,\n    -0.338924;-0.811793;0.475523;,\n    -0.338924;-0.811794;0.475523;,\n    -0.342962;0.821429;-0.455666;,\n    -0.342976;0.821424;-0.455664;,\n    -0.342962;0.821429;-0.455666;,\n    -0.342948;0.821434;-0.455668;,\n    -0.184888;0.442925;0.877288;,\n    -0.184914;0.442907;0.877292;,\n    0.164614;-0.394279;-0.904127;,\n    0.164613;-0.394279;-0.904127;,\n    0.164613;-0.394279;-0.904127;,\n    0.164612;-0.394279;-0.904127;,\n    0.384038;-0.919853;-0.079910;,\n    0.384038;-0.919853;-0.079910;,\n    0.338924;-0.811793;0.475523;,\n    0.338924;-0.811794;0.475523;,\n    0.000000;0.866045;0.499967;,\n    0.000000;0.866045;0.499967;,\n    0.000000;0.866045;0.499967;,\n    0.000000;0.866045;0.499967;,\n    0.000000;-0.000055;-1.000000;,\n    0.000000;-0.000055;-1.000000;,\n    0.184914;0.442907;0.877292;,\n    0.184863;0.442942;0.877284;,\n    0.184863;0.442942;0.877284;,\n    -0.384038;-0.919853;-0.079908;,\n    -0.384038;-0.919853;-0.079909;,\n    -0.384038;-0.919853;-0.079909;,\n    -0.338924;-0.811794;0.475523;,\n    -0.338924;-0.811793;0.475523;,\n    -0.338924;-0.811793;0.475523;,\n    -0.918309;0.395863;-0.000011;,\n    -0.918309;0.395863;-0.000011;,\n    -0.918310;0.395863;-0.000011;,\n    -0.918311;0.395861;-0.000009;,\n    -0.918310;0.395862;-0.000009;,\n    -0.918311;0.395861;-0.000009;,\n    -0.918310;0.395862;-0.000008;,\n    -0.918310;0.395863;-0.000009;,\n    -0.918309;0.395864;-0.000007;,\n    -0.918309;0.395864;-0.000007;,\n    -0.918309;0.395864;-0.000007;,\n    -0.918309;0.395863;-0.000010;,\n    0.918309;-0.395864;0.000011;,\n    0.918309;-0.395864;0.000011;,\n    0.918310;-0.395863;0.000011;,\n    0.918310;-0.395862;0.000009;,\n    0.918310;-0.395861;0.000009;,\n    0.918310;-0.395861;0.000009;,\n    0.918310;-0.395862;0.000008;,\n    0.918310;-0.395863;0.000009;,\n    0.918310;-0.395863;0.000011;,\n    0.918310;-0.395863;0.000011;,\n    0.918310;-0.395863;0.000011;,\n    0.918309;-0.395863;0.000010;,\n    -0.184914;0.442907;0.877292;,\n    -0.184862;0.442943;0.877284;,\n    -0.184862;0.442943;0.877284;,\n    0.384038;-0.919853;-0.079910;,\n    0.384038;-0.919853;-0.079910;,\n    0.384038;-0.919853;-0.079910;,\n    0.338924;-0.811794;0.475523;,\n    0.338924;-0.811793;0.475523;,\n    0.338924;-0.811793;0.475523;,\n    0.918309;0.395863;-0.000011;,\n    0.918310;0.395863;-0.000012;,\n    0.918309;0.395863;-0.000011;,\n    0.918310;0.395861;-0.000009;,\n    0.918310;0.395861;-0.000009;,\n    0.918311;0.395861;-0.000012;,\n    0.918311;0.395859;-0.000016;,\n    0.918312;0.395857;-0.000013;,\n    0.918310;0.395862;-0.000008;,\n    0.918310;0.395862;-0.000008;,\n    0.918310;0.395862;-0.000008;,\n    0.918311;0.395860;-0.000016;,\n    -0.918309;-0.395863;0.000011;,\n    -0.918309;-0.395864;0.000011;,\n    -0.918309;-0.395863;0.000011;,\n    -0.918309;-0.395864;0.000011;,\n    -0.918308;-0.395865;0.000013;,\n    -0.918308;-0.395865;0.000013;,\n    -0.918308;-0.395866;0.000012;,\n    -0.918310;-0.395863;0.000010;,\n    -0.918310;-0.395861;0.000012;,\n    -0.918310;-0.395861;0.000012;,\n    -0.918310;-0.395861;0.000012;,\n    -0.918310;-0.395862;0.000009;,\n    0.000000;-0.000055;-1.000000;,\n    0.000000;-0.000055;-1.000000;,\n    0.000000;-0.000055;-1.000000;,\n    0.000000;-0.866010;0.500027;,\n    0.000000;-0.866010;0.500027;,\n    0.000000;-0.866010;0.500027;,\n    0.000000;-0.866010;0.500027;,\n    0.000000;-0.866010;0.500027;,\n    0.000000;-0.866010;0.500027;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;;\n    48;\n    3;0,2,1;,\n    3;3,0,1;,\n    3;4,5,34;,\n    3;35,4,36;,\n    3;8,9,7;,\n    3;6,8,7;,\n    3;10,11,37;,\n    3;38,10,39;,\n    3;12,13,40;,\n    3;41,12,42;,\n    3;43,44,45;,\n    3;46,47,48;,\n    3;45,49,50;,\n    3;51,52,53;,\n    3;54,50,47;,\n    3;55,56,57;,\n    3;58,59,60;,\n    3;61,57,62;,\n    3;63,64,65;,\n    3;62,66,58;,\n    3;14,16,15;,\n    3;17,16,14;,\n    3;18,67,19;,\n    3;68,69,18;,\n    3;22,21,23;,\n    3;20,21,22;,\n    3;24,70,25;,\n    3;71,72,24;,\n    3;26,73,27;,\n    3;74,75,26;,\n    3;76,77,78;,\n    3;79,80,81;,\n    3;77,82,83;,\n    3;84,85,86;,\n    3;87,81,82;,\n    3;88,89,90;,\n    3;91,92,93;,\n    3;94,95,89;,\n    3;96,97,98;,\n    3;95,91,99;,\n    3;28,30,29;,\n    3;31,28,29;,\n    3;32,33,100;,\n    3;101,32,102;,\n    3;103,104,105;,\n    3;106,107,108;,\n    3;109,110,111;,\n    3;112,113,114;;\n   }\n\n   MeshTextureCoords {\n    115;\n    0.765075;-0.667283;,\n    0.719267;-0.701212;,\n    0.765075;-0.671618;,\n    0.719267;-0.696878;,\n    0.781645;-0.705506;,\n    0.781645;-0.709841;,\n    0.788467;-0.707972;,\n    0.788467;-0.712307;,\n    0.770923;-0.661118;,\n    0.770923;-0.665453;,\n    0.758739;-0.659886;,\n    0.758739;-0.664221;,\n    0.709033;-0.693795;,\n    0.709033;-0.698130;,\n    0.765075;-0.667283;,\n    0.765075;-0.671618;,\n    0.719267;-0.701212;,\n    0.719267;-0.696878;,\n    0.781645;-0.705506;,\n    0.781645;-0.709841;,\n    0.788467;-0.707972;,\n    0.788467;-0.712307;,\n    0.770923;-0.661118;,\n    0.770923;-0.665453;,\n    0.758739;-0.659886;,\n    0.758739;-0.664221;,\n    0.709033;-0.693795;,\n    0.709033;-0.698130;,\n    0.767333;-0.671528;,\n    0.758405;-0.664445;,\n    0.767333;-0.671528;,\n    0.758405;-0.664445;,\n    0.767332;-0.657362;,\n    0.767332;-0.657362;,\n    0.765075;-0.671618;,\n    0.765075;-0.667283;,\n    0.765075;-0.671618;,\n    0.770923;-0.665453;,\n    0.770923;-0.661118;,\n    0.770923;-0.665453;,\n    0.758739;-0.664221;,\n    0.758739;-0.659886;,\n    0.758739;-0.664221;,\n    0.709033;-0.698130;,\n    0.719267;-0.701212;,\n    0.758739;-0.664221;,\n    0.719267;-0.701212;,\n    0.765075;-0.671618;,\n    0.758739;-0.664221;,\n    0.765075;-0.671618;,\n    0.770923;-0.665453;,\n    0.788467;-0.712307;,\n    0.770923;-0.665453;,\n    0.781645;-0.709841;,\n    0.781645;-0.709841;,\n    0.719267;-0.696878;,\n    0.709033;-0.693795;,\n    0.758739;-0.659886;,\n    0.765075;-0.667283;,\n    0.719267;-0.696878;,\n    0.758739;-0.659886;,\n    0.765075;-0.667283;,\n    0.770923;-0.661118;,\n    0.770923;-0.661118;,\n    0.788467;-0.707972;,\n    0.781645;-0.705506;,\n    0.781645;-0.705506;,\n    0.765075;-0.671618;,\n    0.765075;-0.667283;,\n    0.765075;-0.671618;,\n    0.770923;-0.665453;,\n    0.770923;-0.661118;,\n    0.770923;-0.665453;,\n    0.758739;-0.664221;,\n    0.758739;-0.659886;,\n    0.758739;-0.664221;,\n    0.709033;-0.698130;,\n    0.758739;-0.664221;,\n    0.719267;-0.701212;,\n    0.719267;-0.701212;,\n    0.758739;-0.664221;,\n    0.765075;-0.671618;,\n    0.770923;-0.665453;,\n    0.765075;-0.671618;,\n    0.788467;-0.712307;,\n    0.781645;-0.709841;,\n    0.770923;-0.665453;,\n    0.781645;-0.709841;,\n    0.719267;-0.696878;,\n    0.758739;-0.659886;,\n    0.709033;-0.693795;,\n    0.765075;-0.667283;,\n    0.758739;-0.659886;,\n    0.719267;-0.696878;,\n    0.765075;-0.667283;,\n    0.770923;-0.661118;,\n    0.770923;-0.661118;,\n    0.781645;-0.705506;,\n    0.788467;-0.707972;,\n    0.781645;-0.705506;,\n    0.767333;-0.671528;,\n    0.767333;-0.671528;,\n    0.767333;-0.671528;,\n    0.758405;-0.664445;,\n    0.758405;-0.664445;,\n    0.767332;-0.657362;,\n    0.767332;-0.657362;,\n    0.758405;-0.664445;,\n    0.767332;-0.657362;,\n    0.767333;-0.671528;,\n    0.767332;-0.657362;,\n    0.758405;-0.664445;,\n    0.767332;-0.657362;,\n    0.767333;-0.671528;,\n    0.758405;-0.664445;;\n   }\n\n   MeshMaterialList {\n    1;\n    48;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.800000;0.800000;0.000000;;\n     0.000000;\n     0.000000;0.000000;0.000000;;\n     0.000000;0.000000;0.000000;;\n\n     TextureFilename {\n      \"bihull.bmp\";\n     }\n    }\n   }\n\n   VertexDuplicationIndices {\n    115;\n    34;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    32,\n    33,\n    2,\n    0,\n    2,\n    9,\n    8,\n    9,\n    11,\n    10,\n    11,\n    13,\n    1,\n    11,\n    1,\n    2,\n    11,\n    2,\n    9,\n    7,\n    9,\n    5,\n    5,\n    3,\n    12,\n    10,\n    0,\n    3,\n    10,\n    0,\n    8,\n    8,\n    6,\n    4,\n    4,\n    15,\n    14,\n    15,\n    23,\n    22,\n    23,\n    25,\n    24,\n    25,\n    27,\n    25,\n    16,\n    16,\n    25,\n    15,\n    23,\n    15,\n    21,\n    19,\n    23,\n    19,\n    17,\n    24,\n    26,\n    14,\n    24,\n    17,\n    14,\n    22,\n    22,\n    18,\n    20,\n    18,\n    30,\n    28,\n    30,\n    31,\n    29,\n    33,\n    32,\n    31,\n    33,\n    30,\n    33,\n    29,\n    32,\n    28,\n    31;\n   }\n  }\n }\n\n Frame propeller {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh {\n   126;\n   0.028211;0.340125;-3.703910;,\n   -0.500602;-0.266123;-3.935770;,\n   -0.500602;-0.282022;-3.891560;,\n   0.028211;0.359467;-3.742510;,\n   -0.704121;-0.324004;-3.948780;,\n   -0.704121;-0.339903;-3.916290;,\n   -0.773006;-0.205283;-3.934830;,\n   -0.773006;-0.227069;-3.861230;,\n   -0.674174;-0.021319;-3.880370;,\n   -0.674175;-0.043106;-3.806770;,\n   -0.042034;0.423927;-3.730310;,\n   -0.042034;0.404586;-3.691700;,\n   0.765492;0.896056;-3.528760;,\n   0.765492;0.917842;-3.602350;,\n   0.110126;0.406971;-3.691250;,\n   0.110126;0.426312;-3.729860;,\n   0.837510;1.110660;-3.470300;,\n   0.837510;1.120700;-3.526240;,\n   0.722281;1.162050;-3.461600;,\n   0.722281;1.183810;-3.494090;,\n   0.527832;1.068700;-3.477651;,\n   0.527832;1.090480;-3.551250;,\n   0.045309;0.476535;-3.678090;,\n   0.045309;0.495876;-3.716690;,\n   0.041230;0.468197;-3.464810;,\n   0.041230;0.575044;-3.803820;,\n   0.141430;0.369703;-3.499430;,\n   0.141430;0.477488;-3.841010;,\n   -0.058970;0.369703;-3.499430;,\n   -0.058970;0.477488;-3.841010;,\n   0.041230;0.271208;-3.534050;,\n   0.041230;0.379933;-3.878200;,\n   -0.500602;-0.282022;-3.891560;,\n   -0.500602;-0.282022;-3.891560;,\n   -0.500602;-0.266123;-3.935770;,\n   -0.704121;-0.339903;-3.916290;,\n   -0.704121;-0.339903;-3.916290;,\n   -0.704121;-0.324004;-3.948780;,\n   -0.773006;-0.227069;-3.861230;,\n   -0.773006;-0.227069;-3.861230;,\n   -0.773006;-0.205283;-3.934830;,\n   -0.042034;0.404586;-3.691700;,\n   0.028211;0.340125;-3.703910;,\n   0.028211;0.359467;-3.742510;,\n   -0.042034;0.404586;-3.691700;,\n   0.028211;0.359467;-3.742510;,\n   -0.042034;0.423927;-3.730310;,\n   -0.042034;0.404586;-3.691700;,\n   -0.500602;-0.282022;-3.891560;,\n   0.028211;0.340125;-3.703910;,\n   -0.674175;-0.043106;-3.806770;,\n   -0.500602;-0.282022;-3.891560;,\n   -0.042034;0.404586;-3.691700;,\n   -0.773006;-0.227069;-3.861230;,\n   -0.674175;-0.043106;-3.806770;,\n   -0.773006;-0.227069;-3.861230;,\n   -0.704121;-0.339903;-3.916290;,\n   -0.042034;0.423927;-3.730310;,\n   0.028211;0.359467;-3.742510;,\n   -0.500602;-0.266123;-3.935770;,\n   -0.674174;-0.021319;-3.880370;,\n   -0.042034;0.423927;-3.730310;,\n   -0.500602;-0.266123;-3.935770;,\n   -0.773006;-0.205283;-3.934830;,\n   -0.674174;-0.021319;-3.880370;,\n   -0.773006;-0.205283;-3.934830;,\n   -0.704121;-0.324004;-3.948780;,\n   0.765492;0.896056;-3.528760;,\n   0.765492;0.896056;-3.528760;,\n   0.765492;0.917842;-3.602350;,\n   0.837510;1.110660;-3.470300;,\n   0.837510;1.110660;-3.470300;,\n   0.837510;1.120700;-3.526240;,\n   0.722281;1.162050;-3.461600;,\n   0.722281;1.162050;-3.461600;,\n   0.722281;1.183810;-3.494090;,\n   0.110126;0.406971;-3.691250;,\n   0.045309;0.476535;-3.678090;,\n   0.110126;0.426312;-3.729860;,\n   0.110126;0.426312;-3.729860;,\n   0.045309;0.476535;-3.678090;,\n   0.045309;0.495876;-3.716690;,\n   0.765492;0.896056;-3.528760;,\n   0.045309;0.476535;-3.678090;,\n   0.110126;0.406971;-3.691250;,\n   0.765492;0.896056;-3.528760;,\n   0.527832;1.068700;-3.477651;,\n   0.045309;0.476535;-3.678090;,\n   0.722281;1.162050;-3.461600;,\n   0.527832;1.068700;-3.477651;,\n   0.837510;1.110660;-3.470300;,\n   0.722281;1.162050;-3.461600;,\n   0.110126;0.426312;-3.729860;,\n   0.045309;0.495876;-3.716690;,\n   0.765492;0.917842;-3.602350;,\n   0.045309;0.495876;-3.716690;,\n   0.527832;1.090480;-3.551250;,\n   0.765492;0.917842;-3.602350;,\n   0.527832;1.090480;-3.551250;,\n   0.722281;1.183810;-3.494090;,\n   0.722281;1.183810;-3.494090;,\n   0.837510;1.120700;-3.526240;,\n   0.041230;0.468197;-3.464810;,\n   0.041230;0.468197;-3.464810;,\n   0.041230;0.575044;-3.803820;,\n   -0.058970;0.369703;-3.499430;,\n   -0.058970;0.369703;-3.499430;,\n   -0.058970;0.477488;-3.841010;,\n   0.141430;0.369703;-3.499430;,\n   0.041230;0.271208;-3.534050;,\n   0.141430;0.477488;-3.841010;,\n   0.141430;0.477488;-3.841010;,\n   0.041230;0.271208;-3.534050;,\n   0.041230;0.379933;-3.878200;,\n   0.041230;0.271208;-3.534050;,\n   0.041230;0.468197;-3.464810;,\n   -0.058970;0.369703;-3.499430;,\n   0.041230;0.271208;-3.534050;,\n   0.141430;0.369703;-3.499430;,\n   0.041230;0.468197;-3.464810;,\n   -0.058970;0.477488;-3.841010;,\n   0.041230;0.575044;-3.803820;,\n   0.041230;0.379933;-3.878200;,\n   0.041230;0.575044;-3.803820;,\n   0.141430;0.477488;-3.841010;,\n   0.041230;0.379933;-3.878200;;\n   52;\n   3;0,2,1;,\n   3;0,1,3;,\n   3;32,5,4;,\n   3;33,4,34;,\n   3;35,7,6;,\n   3;36,6,37;,\n   3;38,9,8;,\n   3;39,8,40;,\n   3;9,11,10;,\n   3;9,10,8;,\n   3;41,42,43;,\n   3;44,45,46;,\n   3;47,48,49;,\n   3;50,51,52;,\n   3;53,48,54;,\n   3;55,56,48;,\n   3;57,58,59;,\n   3;60,61,62;,\n   3;63,64,59;,\n   3;65,59,66;,\n   3;12,14,13;,\n   3;13,14,15;,\n   3;16,67,17;,\n   3;17,68,69;,\n   3;18,70,19;,\n   3;19,71,72;,\n   3;20,73,21;,\n   3;21,74,75;,\n   3;22,20,23;,\n   3;23,20,21;,\n   3;76,77,78;,\n   3;79,80,81;,\n   3;82,83,84;,\n   3;85,86,87;,\n   3;82,88,89;,\n   3;90,91,82;,\n   3;92,93,94;,\n   3;95,96,97;,\n   3;98,99,94;,\n   3;94,100,101;,\n   3;24,26,25;,\n   3;25,26,27;,\n   3;28,102,29;,\n   3;29,103,104;,\n   3;30,105,31;,\n   3;31,106,107;,\n   3;108,109,110;,\n   3;111,112,113;,\n   3;114,115,116;,\n   3;117,118,119;,\n   3;120,121,122;,\n   3;123,124,125;;\n\n   MeshNormals {\n    126;\n    0.775058;-0.581430;-0.247436;,\n    0.775058;-0.581430;-0.247436;,\n    0.775209;-0.594435;-0.213773;,\n    0.773742;-0.566373;-0.283803;,\n    0.285789;-0.885233;-0.366997;,\n    0.295109;-0.858217;-0.419969;,\n    -0.868420;-0.467227;-0.165967;,\n    -0.873871;-0.466163;-0.137987;,\n    -0.716883;0.668521;0.197887;,\n    -0.645648;0.718503;0.258633;,\n    -0.592399;0.756437;0.277250;,\n    -0.581483;0.727398;0.364378;,\n    0.617941;-0.753882;-0.223183;,\n    0.614338;-0.740842;-0.271556;,\n    0.614338;-0.740842;-0.271556;,\n    0.603930;-0.712626;-0.356978;,\n    0.951019;-0.304272;-0.054610;,\n    0.949850;-0.303673;-0.074613;,\n    0.381383;0.768069;0.514409;,\n    0.466572;0.832304;0.299302;,\n    -0.746148;0.628060;0.220917;,\n    -0.704705;0.672146;0.227180;,\n    -0.788789;0.549538;0.275353;,\n    -0.789213;0.576613;0.211329;,\n    0.721289;0.660600;0.208204;,\n    0.721090;0.660763;0.208379;,\n    0.721090;0.660763;0.208379;,\n    0.720891;0.660925;0.208554;,\n    -0.721293;0.660526;0.208428;,\n    -0.721090;0.660763;0.208379;,\n    -0.721300;-0.660448;-0.208651;,\n    -0.721095;-0.660687;-0.208603;,\n    0.295109;-0.858217;-0.419969;,\n    0.277863;-0.903944;-0.325081;,\n    0.277863;-0.903944;-0.325081;,\n    -0.873871;-0.466163;-0.137987;,\n    -0.853381;-0.468231;-0.229129;,\n    -0.853381;-0.468231;-0.229129;,\n    -0.888981;0.439113;0.129974;,\n    -0.888980;0.439113;0.129980;,\n    -0.888980;0.439113;0.129980;,\n    0.668263;0.665097;0.333273;,\n    0.668263;0.665097;0.333273;,\n    0.668263;0.665097;0.333273;,\n    0.668244;0.665153;0.333197;,\n    0.668244;0.665153;0.333197;,\n    0.668244;0.665153;0.333197;,\n    -0.055995;-0.244388;0.968059;,\n    -0.009023;-0.299842;0.953946;,\n    -0.055995;-0.244388;0.968059;,\n    0.043524;-0.305908;0.951066;,\n    0.043524;-0.305908;0.951066;,\n    0.043524;-0.305908;0.951066;,\n    0.044301;-0.305389;0.951196;,\n    0.044301;-0.305389;0.951196;,\n    0.013269;-0.431954;0.901798;,\n    0.013269;-0.431954;0.901798;,\n    0.059789;0.248151;-0.966874;,\n    0.059789;0.248151;-0.966874;,\n    0.052087;0.231567;-0.971424;,\n    0.050236;0.254194;-0.965848;,\n    0.050236;0.254194;-0.965848;,\n    0.050236;0.254194;-0.965848;,\n    0.053994;0.256665;-0.964991;,\n    0.053994;0.256665;-0.964991;,\n    0.025950;0.131500;-0.990977;,\n    0.025950;0.131500;-0.990977;,\n    0.951019;-0.304272;-0.054610;,\n    0.948712;-0.303138;-0.089743;,\n    0.948712;-0.303138;-0.089743;,\n    0.381383;0.768069;0.514409;,\n    0.507104;0.848330;0.152257;,\n    0.507104;0.848330;0.152257;,\n    -0.435483;0.863194;0.255443;,\n    -0.490176;0.724204;0.485031;,\n    -0.490176;0.724204;0.485031;,\n    -0.724305;-0.616460;-0.308805;,\n    -0.724305;-0.616460;-0.308805;,\n    -0.724305;-0.616460;-0.308805;,\n    -0.724317;-0.616416;-0.308863;,\n    -0.724317;-0.616416;-0.308863;,\n    -0.724317;-0.616416;-0.308863;,\n    -0.024055;-0.241918;0.969998;,\n    -0.061008;-0.240125;0.968823;,\n    -0.061008;-0.240125;0.968823;,\n    -0.018431;-0.307055;0.951513;,\n    -0.018431;-0.307055;0.951513;,\n    -0.018431;-0.307055;0.951513;,\n    0.034805;-0.239337;0.970313;,\n    0.034805;-0.239337;0.970313;,\n    -0.038695;-0.250525;0.967336;,\n    -0.038695;-0.250525;0.967336;,\n    0.030220;0.213045;-0.976575;,\n    0.030220;0.213045;-0.976575;,\n    0.034132;0.304299;-0.951965;,\n    -0.007806;0.273919;-0.961721;,\n    -0.007806;0.273919;-0.961721;,\n    -0.007806;0.273919;-0.961721;,\n    0.083968;0.387347;-0.918102;,\n    0.083968;0.387347;-0.918102;,\n    -0.057116;0.368416;-0.927905;,\n    -0.057116;0.368416;-0.927905;,\n    -0.721293;0.660526;0.208428;,\n    -0.720884;0.661003;0.208331;,\n    -0.720884;0.661003;0.208331;,\n    -0.721300;-0.660448;-0.208651;,\n    -0.720888;-0.660928;-0.208555;,\n    -0.720888;-0.660928;-0.208555;,\n    0.721296;-0.660522;-0.208427;,\n    0.721296;-0.660522;-0.208427;,\n    0.721296;-0.660522;-0.208427;,\n    0.720895;-0.660850;-0.208778;,\n    0.720895;-0.660850;-0.208778;,\n    0.720895;-0.660850;-0.208778;,\n    -0.000002;-0.331604;0.943419;,\n    -0.000002;-0.331604;0.943419;,\n    -0.000002;-0.331604;0.943419;,\n    0.000002;-0.331604;0.943419;,\n    0.000002;-0.331604;0.943419;,\n    0.000002;-0.331604;0.943419;,\n    -0.000001;0.356214;-0.934405;,\n    -0.000001;0.356214;-0.934405;,\n    -0.000001;0.356214;-0.934405;,\n    0.000001;0.356213;-0.934405;,\n    0.000001;0.356213;-0.934405;,\n    0.000001;0.356213;-0.934405;;\n    52;\n    3;0,2,1;,\n    3;0,1,3;,\n    3;32,5,4;,\n    3;33,4,34;,\n    3;35,7,6;,\n    3;36,6,37;,\n    3;38,9,8;,\n    3;39,8,40;,\n    3;9,11,10;,\n    3;9,10,8;,\n    3;41,42,43;,\n    3;44,45,46;,\n    3;47,48,49;,\n    3;50,51,52;,\n    3;53,48,54;,\n    3;55,56,48;,\n    3;57,58,59;,\n    3;60,61,62;,\n    3;63,64,59;,\n    3;65,59,66;,\n    3;12,14,13;,\n    3;13,14,15;,\n    3;16,67,17;,\n    3;17,68,69;,\n    3;18,70,19;,\n    3;19,71,72;,\n    3;20,73,21;,\n    3;21,74,75;,\n    3;22,20,23;,\n    3;23,20,21;,\n    3;76,77,78;,\n    3;79,80,81;,\n    3;82,83,84;,\n    3;85,86,87;,\n    3;82,88,89;,\n    3;90,91,82;,\n    3;92,93,94;,\n    3;95,96,97;,\n    3;98,99,94;,\n    3;94,100,101;,\n    3;24,26,25;,\n    3;25,26,27;,\n    3;28,102,29;,\n    3;29,103,104;,\n    3;30,105,31;,\n    3;31,106,107;,\n    3;108,109,110;,\n    3;111,112,113;,\n    3;114,115,116;,\n    3;117,118,119;,\n    3;120,121,122;,\n    3;123,124,125;;\n   }\n\n   MeshMaterialList {\n    1;\n    52;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.599216;0.401569;0.000000;;\n     20.000000;\n     0.500000;0.500000;0.500000;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    126;\n    32;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    24,\n    25,\n    26,\n    27,\n    28,\n    29,\n    30,\n    31,\n    2,\n    2,\n    1,\n    5,\n    5,\n    4,\n    7,\n    7,\n    6,\n    11,\n    0,\n    3,\n    11,\n    3,\n    10,\n    11,\n    2,\n    0,\n    9,\n    2,\n    11,\n    7,\n    9,\n    7,\n    5,\n    10,\n    3,\n    1,\n    8,\n    10,\n    1,\n    6,\n    8,\n    6,\n    4,\n    12,\n    12,\n    13,\n    16,\n    16,\n    17,\n    18,\n    18,\n    19,\n    14,\n    22,\n    15,\n    15,\n    22,\n    23,\n    12,\n    22,\n    14,\n    12,\n    20,\n    22,\n    18,\n    20,\n    16,\n    18,\n    15,\n    23,\n    13,\n    23,\n    21,\n    13,\n    21,\n    19,\n    19,\n    17,\n    24,\n    24,\n    25,\n    28,\n    28,\n    29,\n    26,\n    30,\n    27,\n    27,\n    30,\n    31,\n    30,\n    24,\n    28,\n    30,\n    26,\n    24,\n    29,\n    25,\n    31,\n    25,\n    27,\n    31;\n   }\n  }\n }\n\n Frame rudder {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh {\n   78;\n   0.061133;0.101338;3.037190;,\n   -0.015619;0.040559;2.809300;,\n   -0.015619;0.101338;3.037190;,\n   0.061133;0.040559;2.809300;,\n   0.061133;-0.521583;3.052400;,\n   -0.015619;-0.521583;3.052400;,\n   0.061133;-0.430417;3.341070;,\n   -0.015619;-0.430417;3.341070;,\n   0.061133;-0.065769;3.751280;,\n   -0.015619;-0.065769;3.751280;,\n   0.061133;0.298873;3.948780;,\n   -0.015619;0.298873;3.948780;,\n   0.061133;0.678702;3.903190;,\n   -0.015619;0.678702;3.903190;,\n   0.061133;0.952174;3.660090;,\n   -0.015619;0.952174;3.660090;,\n   0.061133;0.967358;3.341040;,\n   -0.015619;0.967358;3.341040;,\n   0.061133;0.845805;3.052370;,\n   -0.015619;0.845805;3.052370;,\n   0.061133;0.086118;2.049640;,\n   -0.015619;0.086118;2.049640;,\n   -0.015619;0.101338;3.037190;,\n   0.061133;0.101338;3.037190;,\n   -0.015619;0.101338;3.037190;,\n   -0.015619;-0.521583;3.052400;,\n   0.061133;-0.521583;3.052400;,\n   -0.015619;-0.521583;3.052400;,\n   -0.015619;0.298873;3.948780;,\n   0.061133;0.298873;3.948780;,\n   -0.015619;0.298873;3.948780;,\n   -0.015619;0.678702;3.903190;,\n   0.061133;0.678702;3.903190;,\n   -0.015619;0.678702;3.903190;,\n   -0.015619;0.952174;3.660090;,\n   0.061133;0.952174;3.660090;,\n   -0.015619;0.952174;3.660090;,\n   -0.015619;0.086118;2.049640;,\n   0.061133;0.086118;2.049640;,\n   -0.015619;0.086118;2.049640;,\n   -0.015619;0.086118;2.049640;,\n   -0.015619;0.040559;2.809300;,\n   -0.015619;0.845805;3.052370;,\n   -0.015619;0.040559;2.809300;,\n   -0.015619;0.101338;3.037190;,\n   -0.015619;0.845805;3.052370;,\n   -0.015619;-0.521583;3.052400;,\n   -0.015619;-0.430417;3.341070;,\n   -0.015619;0.101338;3.037190;,\n   -0.015619;-0.430417;3.341070;,\n   -0.015619;-0.065769;3.751280;,\n   -0.015619;-0.065769;3.751280;,\n   -0.015619;0.298873;3.948780;,\n   -0.015619;0.298873;3.948780;,\n   -0.015619;0.678702;3.903190;,\n   -0.015619;0.678702;3.903190;,\n   -0.015619;0.967358;3.341040;,\n   -0.015619;0.952174;3.660090;,\n   -0.015619;0.967358;3.341040;,\n   0.061133;0.040559;2.809300;,\n   0.061133;0.086118;2.049640;,\n   0.061133;0.845805;3.052370;,\n   0.061133;0.101338;3.037190;,\n   0.061133;0.040559;2.809300;,\n   0.061133;0.845805;3.052370;,\n   0.061133;-0.430417;3.341070;,\n   0.061133;-0.521583;3.052400;,\n   0.061133;0.101338;3.037190;,\n   0.061133;-0.065769;3.751280;,\n   0.061133;-0.430417;3.341070;,\n   0.061133;-0.065769;3.751280;,\n   0.061133;0.298873;3.948780;,\n   0.061133;0.678702;3.903190;,\n   0.061133;0.298873;3.948780;,\n   0.061133;0.678702;3.903190;,\n   0.061133;0.967358;3.341040;,\n   0.061133;0.952174;3.660090;,\n   0.061133;0.967358;3.341040;;\n   40;\n   3;0,2,1;,\n   3;3,0,1;,\n   3;4,5,22;,\n   3;23,4,24;,\n   3;6,7,25;,\n   3;26,6,27;,\n   3;8,9,7;,\n   3;6,8,7;,\n   3;10,11,9;,\n   3;8,10,9;,\n   3;12,13,28;,\n   3;29,12,30;,\n   3;14,15,31;,\n   3;32,14,33;,\n   3;16,17,34;,\n   3;35,16,36;,\n   3;18,19,17;,\n   3;16,18,17;,\n   3;20,21,19;,\n   3;18,20,19;,\n   3;3,1,37;,\n   3;38,3,39;,\n   3;40,41,42;,\n   3;43,44,45;,\n   3;46,47,48;,\n   3;49,50,44;,\n   3;44,51,42;,\n   3;50,52,42;,\n   3;53,54,42;,\n   3;42,55,56;,\n   3;54,57,58;,\n   3;59,60,61;,\n   3;62,63,64;,\n   3;65,66,67;,\n   3;68,69,62;,\n   3;70,62,61;,\n   3;71,68,61;,\n   3;72,73,61;,\n   3;74,61,75;,\n   3;76,72,77;;\n\n   MeshNormals {\n    78;\n    0.000000;-0.966226;0.257696;,\n    0.000000;-0.998051;0.062406;,\n    0.000000;-0.966226;0.257696;,\n    0.000000;-0.999849;-0.017362;,\n    0.000000;-0.024410;-0.999702;,\n    0.000000;-0.024410;-0.999702;,\n    0.000000;-0.874780;0.484520;,\n    0.000000;-0.803934;0.594719;,\n    0.000000;-0.681213;0.732085;,\n    0.000000;-0.592796;0.805353;,\n    0.000000;-0.476256;0.879306;,\n    0.000000;-0.476256;0.879306;,\n    0.000000;0.119173;0.992873;,\n    0.000000;0.119173;0.992873;,\n    0.000000;0.664385;0.747391;,\n    0.000000;0.664385;0.747391;,\n    0.000000;0.995195;-0.097917;,\n    0.000000;0.969162;-0.246426;,\n    0.000000;0.844316;-0.535846;,\n    0.000000;0.813354;-0.581769;,\n    0.000000;0.797076;-0.603879;,\n    0.000000;0.797076;-0.603879;,\n    0.000000;-0.024410;-0.999702;,\n    0.000000;-0.024410;-0.999702;,\n    0.000000;-0.024410;-0.999702;,\n    0.000000;-0.953576;0.301153;,\n    0.000000;-0.953576;0.301153;,\n    0.000000;-0.953576;0.301153;,\n    0.000000;0.119173;0.992873;,\n    0.000000;0.119173;0.992873;,\n    0.000000;0.119173;0.992873;,\n    0.000000;0.664385;0.747391;,\n    0.000000;0.664385;0.747391;,\n    0.000000;0.664385;0.747391;,\n    0.000000;0.998869;0.047537;,\n    0.000000;0.998869;0.047537;,\n    0.000000;0.998869;0.047537;,\n    0.000000;-0.998206;-0.059865;,\n    0.000000;-0.998206;-0.059865;,\n    0.000000;-0.998206;-0.059865;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;;\n    40;\n    3;0,2,1;,\n    3;3,0,1;,\n    3;4,5,22;,\n    3;23,4,24;,\n    3;6,7,25;,\n    3;26,6,27;,\n    3;8,9,7;,\n    3;6,8,7;,\n    3;10,11,9;,\n    3;8,10,9;,\n    3;12,13,28;,\n    3;29,12,30;,\n    3;14,15,31;,\n    3;32,14,33;,\n    3;16,17,34;,\n    3;35,16,36;,\n    3;18,19,17;,\n    3;16,18,17;,\n    3;20,21,19;,\n    3;18,20,19;,\n    3;3,1,37;,\n    3;38,3,39;,\n    3;40,41,42;,\n    3;43,44,45;,\n    3;46,47,48;,\n    3;49,50,44;,\n    3;44,51,42;,\n    3;50,52,42;,\n    3;53,54,42;,\n    3;42,55,56;,\n    3;54,57,58;,\n    3;59,60,61;,\n    3;62,63,64;,\n    3;65,66,67;,\n    3;68,69,62;,\n    3;70,62,61;,\n    3;71,68,61;,\n    3;72,73,61;,\n    3;74,61,75;,\n    3;76,72,77;;\n   }\n\n   MeshTextureCoords {\n    78;\n    0.309227;-0.075001;,\n    0.317107;-0.090309;,\n    0.309227;-0.075001;,\n    0.317107;-0.090309;,\n    0.389982;-0.073979;,\n    0.389982;-0.073979;,\n    0.378164;-0.054587;,\n    0.378164;-0.054587;,\n    0.330891;-0.027031;,\n    0.330891;-0.027031;,\n    0.283619;-0.013764;,\n    0.283619;-0.013764;,\n    0.234379;-0.016826;,\n    0.234379;-0.016826;,\n    0.198926;-0.033157;,\n    0.198926;-0.033157;,\n    0.196958;-0.054589;,\n    0.196958;-0.054589;,\n    0.212716;-0.073981;,\n    0.212716;-0.073981;,\n    0.311200;-0.141340;,\n    0.311200;-0.141340;,\n    0.309227;-0.075001;,\n    0.309227;-0.075001;,\n    0.309227;-0.075001;,\n    0.389982;-0.073979;,\n    0.389982;-0.073979;,\n    0.389982;-0.073979;,\n    0.283619;-0.013764;,\n    0.283619;-0.013764;,\n    0.283619;-0.013764;,\n    0.234379;-0.016826;,\n    0.234379;-0.016826;,\n    0.234379;-0.016826;,\n    0.198926;-0.033157;,\n    0.198926;-0.033157;,\n    0.198926;-0.033157;,\n    0.311200;-0.141340;,\n    0.311200;-0.141340;,\n    0.311200;-0.141340;,\n    0.311200;-0.141340;,\n    0.317107;-0.090309;,\n    0.212716;-0.073981;,\n    0.317107;-0.090309;,\n    0.309227;-0.075001;,\n    0.212716;-0.073981;,\n    0.389982;-0.073979;,\n    0.378164;-0.054587;,\n    0.309227;-0.075001;,\n    0.378164;-0.054587;,\n    0.330891;-0.027031;,\n    0.330891;-0.027031;,\n    0.283619;-0.013764;,\n    0.283619;-0.013764;,\n    0.234379;-0.016826;,\n    0.234379;-0.016826;,\n    0.196958;-0.054589;,\n    0.198926;-0.033157;,\n    0.196958;-0.054589;,\n    0.317107;-0.090309;,\n    0.311200;-0.141340;,\n    0.212716;-0.073981;,\n    0.309227;-0.075001;,\n    0.317107;-0.090309;,\n    0.212716;-0.073981;,\n    0.378164;-0.054587;,\n    0.389982;-0.073979;,\n    0.309227;-0.075001;,\n    0.330891;-0.027031;,\n    0.378164;-0.054587;,\n    0.330891;-0.027031;,\n    0.283619;-0.013764;,\n    0.234379;-0.016826;,\n    0.283619;-0.013764;,\n    0.234379;-0.016826;,\n    0.196958;-0.054589;,\n    0.198926;-0.033157;,\n    0.196958;-0.054589;;\n   }\n\n   MeshMaterialList {\n    1;\n    40;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.800000;0.800000;0.800000;0.000000;;\n     0.000000;\n     0.000000;0.000000;0.000000;;\n     0.000000;0.000000;0.000000;;\n\n     TextureFilename {\n      \"bihull.bmp\";\n     }\n    }\n   }\n\n   VertexDuplicationIndices {\n    78;\n    22;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    2,\n    0,\n    2,\n    5,\n    4,\n    5,\n    11,\n    10,\n    11,\n    13,\n    12,\n    13,\n    15,\n    14,\n    15,\n    21,\n    20,\n    21,\n    21,\n    1,\n    19,\n    1,\n    2,\n    19,\n    5,\n    7,\n    2,\n    7,\n    9,\n    9,\n    11,\n    11,\n    13,\n    13,\n    17,\n    15,\n    17,\n    3,\n    20,\n    18,\n    0,\n    3,\n    18,\n    6,\n    4,\n    0,\n    8,\n    6,\n    8,\n    10,\n    12,\n    10,\n    12,\n    16,\n    14,\n    16;\n   }\n  }\n }\n\n Frame wheels {\n  \n\n  FrameTransformMatrix {\n   1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;\n  }\n\n  Mesh {\n   100;\n   0.769060;-0.602981;-2.024790;,\n   0.490834;-0.893387;-1.857120;,\n   0.490834;-0.602981;-2.024790;,\n   0.769060;-0.893387;-1.857120;,\n   0.769060;-0.602990;-2.360130;,\n   0.490834;-0.602990;-2.360130;,\n   0.769060;-0.893404;-2.527790;,\n   0.490834;-0.893404;-2.527790;,\n   0.769060;-1.183810;-2.360110;,\n   0.490834;-1.183810;-2.360110;,\n   0.769060;-1.183800;-2.024780;,\n   0.490834;-1.183800;-2.024780;,\n   -0.411969;-0.602981;-2.024790;,\n   -0.690195;-0.893387;-1.857120;,\n   -0.690195;-0.602981;-2.024790;,\n   -0.411969;-0.893387;-1.857120;,\n   -0.411969;-0.602990;-2.360130;,\n   -0.690195;-0.602990;-2.360130;,\n   -0.411969;-0.893404;-2.527790;,\n   -0.690195;-0.893404;-2.527790;,\n   -0.411969;-1.183810;-2.360110;,\n   -0.690195;-1.183810;-2.360110;,\n   -0.411969;-1.183800;-2.024780;,\n   -0.690195;-1.183800;-2.024780;,\n   0.490834;-0.602981;-2.024790;,\n   0.769060;-0.602981;-2.024790;,\n   0.490834;-0.602981;-2.024790;,\n   0.490834;-0.602990;-2.360130;,\n   0.769060;-0.602990;-2.360130;,\n   0.490834;-0.602990;-2.360130;,\n   0.490834;-0.893404;-2.527790;,\n   0.769060;-0.893404;-2.527790;,\n   0.490834;-0.893404;-2.527790;,\n   0.490834;-1.183810;-2.360110;,\n   0.769060;-1.183810;-2.360110;,\n   0.490834;-1.183810;-2.360110;,\n   0.769060;-0.893387;-1.857120;,\n   0.490834;-0.893387;-1.857120;,\n   0.490834;-1.183800;-2.024780;,\n   0.769060;-1.183800;-2.024780;,\n   0.769060;-0.893387;-1.857120;,\n   0.490834;-1.183800;-2.024780;,\n   0.490834;-0.602981;-2.024790;,\n   0.490834;-0.602990;-2.360130;,\n   0.490834;-0.893387;-1.857120;,\n   0.490834;-0.602990;-2.360130;,\n   0.490834;-0.893404;-2.527790;,\n   0.490834;-0.893387;-1.857120;,\n   0.490834;-0.893404;-2.527790;,\n   0.490834;-1.183810;-2.360110;,\n   0.490834;-1.183810;-2.360110;,\n   0.490834;-1.183800;-2.024780;,\n   0.769060;-0.602990;-2.360130;,\n   0.769060;-0.602981;-2.024790;,\n   0.769060;-0.893387;-1.857120;,\n   0.769060;-0.893404;-2.527790;,\n   0.769060;-0.602990;-2.360130;,\n   0.769060;-0.893387;-1.857120;,\n   0.769060;-1.183810;-2.360110;,\n   0.769060;-0.893404;-2.527790;,\n   0.769060;-1.183800;-2.024780;,\n   0.769060;-1.183810;-2.360110;,\n   -0.690195;-0.602981;-2.024790;,\n   -0.411969;-0.602981;-2.024790;,\n   -0.690195;-0.602981;-2.024790;,\n   -0.690195;-0.602990;-2.360130;,\n   -0.411969;-0.602990;-2.360130;,\n   -0.690195;-0.602990;-2.360130;,\n   -0.690195;-0.893404;-2.527790;,\n   -0.411969;-0.893404;-2.527790;,\n   -0.690195;-0.893404;-2.527790;,\n   -0.690195;-1.183810;-2.360110;,\n   -0.411969;-1.183810;-2.360110;,\n   -0.690195;-1.183810;-2.360110;,\n   -0.411969;-0.893387;-1.857120;,\n   -0.690195;-0.893387;-1.857120;,\n   -0.690195;-1.183800;-2.024780;,\n   -0.411969;-1.183800;-2.024780;,\n   -0.411969;-0.893387;-1.857120;,\n   -0.690195;-1.183800;-2.024780;,\n   -0.690195;-0.602981;-2.024790;,\n   -0.690195;-0.602990;-2.360130;,\n   -0.690195;-0.893387;-1.857120;,\n   -0.690195;-0.602990;-2.360130;,\n   -0.690195;-0.893404;-2.527790;,\n   -0.690195;-0.893387;-1.857120;,\n   -0.690195;-0.893404;-2.527790;,\n   -0.690195;-1.183810;-2.360110;,\n   -0.690195;-1.183810;-2.360110;,\n   -0.690195;-1.183800;-2.024780;,\n   -0.411969;-0.602990;-2.360130;,\n   -0.411969;-0.602981;-2.024790;,\n   -0.411969;-0.893387;-1.857120;,\n   -0.411969;-0.893404;-2.527790;,\n   -0.411969;-0.602990;-2.360130;,\n   -0.411969;-0.893387;-1.857120;,\n   -0.411969;-1.183810;-2.360110;,\n   -0.411969;-0.893404;-2.527790;,\n   -0.411969;-1.183800;-2.024780;,\n   -0.411969;-1.183810;-2.360110;;\n   40;\n   3;0,2,1;,\n   3;3,0,1;,\n   3;4,5,24;,\n   3;25,4,26;,\n   3;6,7,27;,\n   3;28,6,29;,\n   3;8,9,30;,\n   3;31,8,32;,\n   3;10,11,33;,\n   3;34,10,35;,\n   3;36,37,38;,\n   3;39,40,41;,\n   3;42,43,44;,\n   3;45,46,47;,\n   3;48,49,44;,\n   3;50,51,44;,\n   3;52,53,54;,\n   3;55,56,57;,\n   3;58,59,54;,\n   3;60,61,54;,\n   3;12,14,13;,\n   3;15,12,13;,\n   3;16,17,62;,\n   3;63,16,64;,\n   3;18,19,65;,\n   3;66,18,67;,\n   3;20,21,68;,\n   3;69,20,70;,\n   3;22,23,71;,\n   3;72,22,73;,\n   3;74,75,76;,\n   3;77,78,79;,\n   3;80,81,82;,\n   3;83,84,85;,\n   3;86,87,82;,\n   3;88,89,82;,\n   3;90,91,92;,\n   3;93,94,95;,\n   3;96,97,92;,\n   3;98,99,92;;\n\n   MeshNormals {\n    100;\n    0.000000;0.500009;0.866020;,\n    0.000000;0.500009;0.866020;,\n    0.000000;0.500009;0.866020;,\n    0.000000;0.500009;0.866020;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;0.500009;0.866020;,\n    0.000000;0.500009;0.866020;,\n    0.000000;0.500009;0.866020;,\n    0.000000;0.500009;0.866020;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;1.000000;-0.000027;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;0.499976;-0.866039;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-0.500031;-0.866007;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-1.000000;0.000030;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    0.000000;-0.499978;0.866038;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    -1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;,\n    1.000000;0.000000;0.000000;;\n    40;\n    3;0,2,1;,\n    3;3,0,1;,\n    3;4,5,24;,\n    3;25,4,26;,\n    3;6,7,27;,\n    3;28,6,29;,\n    3;8,9,30;,\n    3;31,8,32;,\n    3;10,11,33;,\n    3;34,10,35;,\n    3;36,37,38;,\n    3;39,40,41;,\n    3;42,43,44;,\n    3;45,46,47;,\n    3;48,49,44;,\n    3;50,51,44;,\n    3;52,53,54;,\n    3;55,56,57;,\n    3;58,59,54;,\n    3;60,61,54;,\n    3;12,14,13;,\n    3;15,12,13;,\n    3;16,17,62;,\n    3;63,16,64;,\n    3;18,19,65;,\n    3;66,18,67;,\n    3;20,21,68;,\n    3;69,20,70;,\n    3;22,23,71;,\n    3;72,22,73;,\n    3;74,75,76;,\n    3;77,78,79;,\n    3;80,81,82;,\n    3;83,84,85;,\n    3;86,87,82;,\n    3;88,89,82;,\n    3;90,91,92;,\n    3;93,94,95;,\n    3;96,97,92;,\n    3;98,99,92;;\n   }\n\n   MeshMaterialList {\n    1;\n    40;\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0;\n\n    Material {\n     0.000000;0.000000;0.000000;0.000000;;\n     20.000000;\n     0.256863;0.256863;0.256863;;\n     0.000000;0.000000;0.000000;;\n    }\n   }\n\n   VertexDuplicationIndices {\n    100;\n    24;\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10,\n    11,\n    12,\n    13,\n    14,\n    15,\n    16,\n    17,\n    18,\n    19,\n    20,\n    21,\n    22,\n    23,\n    2,\n    0,\n    2,\n    5,\n    4,\n    5,\n    7,\n    6,\n    7,\n    9,\n    8,\n    9,\n    3,\n    1,\n    11,\n    10,\n    3,\n    11,\n    2,\n    5,\n    1,\n    5,\n    7,\n    1,\n    7,\n    9,\n    9,\n    11,\n    4,\n    0,\n    3,\n    6,\n    4,\n    3,\n    8,\n    6,\n    10,\n    8,\n    14,\n    12,\n    14,\n    17,\n    16,\n    17,\n    19,\n    18,\n    19,\n    21,\n    20,\n    21,\n    15,\n    13,\n    23,\n    22,\n    15,\n    23,\n    14,\n    17,\n    13,\n    17,\n    19,\n    13,\n    19,\n    21,\n    21,\n    23,\n    16,\n    12,\n    15,\n    18,\n    16,\n    15,\n    20,\n    18,\n    22,\n    20;\n   }\n  }\n }\n}"
  },
  {
    "path": "common/Addons/DXTest/DX9EnvMapping/lobby_skybox.x",
    "content": "xof 0302txt 0064\r\ntemplate Header {\r\n <3D82AB43-62DA-11cf-AB39-0020AF71E433>\r\n WORD major;\r\n WORD minor;\r\n DWORD flags;\r\n}\r\n\r\ntemplate Vector {\r\n <3D82AB5E-62DA-11cf-AB39-0020AF71E433>\r\n FLOAT x;\r\n FLOAT y;\r\n FLOAT z;\r\n}\r\n\r\ntemplate Coords2d {\r\n <F6F23F44-7686-11cf-8F52-0040333594A3>\r\n FLOAT u;\r\n FLOAT v;\r\n}\r\n\r\ntemplate Matrix4x4 {\r\n <F6F23F45-7686-11cf-8F52-0040333594A3>\r\n array FLOAT matrix[16];\r\n}\r\n\r\ntemplate ColorRGBA {\r\n <35FF44E0-6C7C-11cf-8F52-0040333594A3>\r\n FLOAT red;\r\n FLOAT green;\r\n FLOAT blue;\r\n FLOAT alpha;\r\n}\r\n\r\ntemplate ColorRGB {\r\n <D3E16E81-7835-11cf-8F52-0040333594A3>\r\n FLOAT red;\r\n FLOAT green;\r\n FLOAT blue;\r\n}\r\n\r\ntemplate IndexedColor {\r\n <1630B820-7842-11cf-8F52-0040333594A3>\r\n DWORD index;\r\n ColorRGBA indexColor;\r\n}\r\n\r\ntemplate Boolean {\r\n <4885AE61-78E8-11cf-8F52-0040333594A3>\r\n WORD truefalse;\r\n}\r\n\r\ntemplate Boolean2d {\r\n <4885AE63-78E8-11cf-8F52-0040333594A3>\r\n Boolean u;\r\n Boolean v;\r\n}\r\n\r\ntemplate MaterialWrap {\r\n <4885AE60-78E8-11cf-8F52-0040333594A3>\r\n Boolean u;\r\n Boolean v;\r\n}\r\n\r\ntemplate TextureFilename {\r\n <A42790E1-7810-11cf-8F52-0040333594A3>\r\n STRING filename;\r\n}\r\n\r\ntemplate Material {\r\n <3D82AB4D-62DA-11cf-AB39-0020AF71E433>\r\n ColorRGBA faceColor;\r\n FLOAT power;\r\n ColorRGB specularColor;\r\n ColorRGB emissiveColor;\r\n [...]\r\n}\r\n\r\ntemplate MeshFace {\r\n <3D82AB5F-62DA-11cf-AB39-0020AF71E433>\r\n DWORD nFaceVertexIndices;\r\n array DWORD faceVertexIndices[nFaceVertexIndices];\r\n}\r\n\r\ntemplate MeshFaceWraps {\r\n <4885AE62-78E8-11cf-8F52-0040333594A3>\r\n DWORD nFaceWrapValues;\r\n Boolean2d faceWrapValues;\r\n}\r\n\r\ntemplate MeshTextureCoords {\r\n <F6F23F40-7686-11cf-8F52-0040333594A3>\r\n DWORD nTextureCoords;\r\n array Coords2d textureCoords[nTextureCoords];\r\n}\r\n\r\ntemplate MeshMaterialList {\r\n <F6F23F42-7686-11cf-8F52-0040333594A3>\r\n DWORD nMaterials;\r\n DWORD nFaceIndexes;\r\n array DWORD faceIndexes[nFaceIndexes];\r\n [Material]\r\n}\r\n\r\ntemplate MeshNormals {\r\n <F6F23F43-7686-11cf-8F52-0040333594A3>\r\n DWORD nNormals;\r\n array Vector normals[nNormals];\r\n DWORD nFaceNormals;\r\n array MeshFace faceNormals[nFaceNormals];\r\n}\r\n\r\ntemplate MeshVertexColors {\r\n <1630B821-7842-11cf-8F52-0040333594A3>\r\n DWORD nVertexColors;\r\n array IndexedColor vertexColors[nVertexColors];\r\n}\r\n\r\ntemplate Mesh {\r\n <3D82AB44-62DA-11cf-AB39-0020AF71E433>\r\n DWORD nVertices;\r\n array Vector vertices[nVertices];\r\n DWORD nFaces;\r\n array MeshFace faces[nFaces];\r\n [...]\r\n}\r\n\r\ntemplate FrameTransformMatrix {\r\n <F6F23F41-7686-11cf-8F52-0040333594A3>\r\n Matrix4x4 frameMatrix;\r\n}\r\n\r\ntemplate Frame {\r\n <3D82AB46-62DA-11cf-AB39-0020AF71E433>\r\n [...]\r\n}\r\n\r\nHeader {\r\n 1;\r\n 0;\r\n 1;\r\n}\r\n\r\nFrame CUBE_Root {\r\n FrameTransformMatrix {\r\n  3.000000, 0.000000, 0.000000, 0.000000,\r\n  0.000000, 3.000000, 0.000000, 0.000000,\r\n  0.000000, 0.000000, 3.000000, 0.000000,\r\n  0.000000, 0.000000, 0.000000, 1.000000;;\r\n }\r\n\r\nMesh Unnamed_0 {\r\n 4;\r\n 1.000000;1.000000;-1.000000;,    // 0\r\n -1.000000;1.000000;-1.000000;,   // 1\r\n -1.000000;1.000000;1.000000;,    // 2\r\n 1.000000;1.000000;1.000000;;     // 3\r\n\r\n 2;\r\n 3;0,2,1;,\r\n 3;0,3,2;;\r\n\r\n  MeshMaterialList {\r\n      1;\r\n  2;\r\n  0,\r\n  0;\r\n     Material {\r\n     1.000000;1.000000;1.000000;1.000000;;\r\n     0.000000;\r\n     1.000000;1.000000;1.000000;;\r\n       0.000000;0.000000;0.000000;;\r\n          TextureFilename {\r\n      \"LobbyYPos.jpg\";\r\n     }\r\n     }\r\n }\r\n  MeshNormals {\r\n 4;\r\n 0.000000;1.000000;0.000000;,\r\n 0.000000;1.000000;0.000000;,\r\n 0.000000;1.000000;0.000000;,\r\n 0.000000;1.000000;0.000000;;\r\n\r\n 2;\r\n 3;0,1,2;,\r\n 3;0,2,3;;\r\n }\r\n  MeshTextureCoords {\r\n    4;\r\n    1.000000;0.000000;;\r\n    0.000000;0.000000;,\r\n    0.000000;1.000000;,\r\n    1.000000;1.000000;,\r\n }\r\n}\r\n\r\nMesh Unnamed_1 {\r\n 4;\r\n 1.000000;1.000000;-1.000000;,    // 0\r\n 1.000000;1.000000;1.000000;,     // 3\r\n 1.000000;-1.000000;1.000000;,    // 7\r\n 1.000000;-1.000000;-1.000000;,   // 4\r\n\r\n 2;\r\n 3;0,2,1;,\r\n 3;0,3,2;;\r\n\r\n  MeshMaterialList {\r\n      1;\r\n  2;\r\n  0,\r\n  0;\r\n     Material {\r\n     1.000000;1.000000;1.000000;1.000000;;\r\n     0.000000;\r\n     1.000000;1.000000;1.000000;;\r\n       0.000000;0.000000;0.000000;;\r\n          TextureFilename {\r\n      \"LobbyXPos.jpg\";\r\n     }\r\n     }\r\n }\r\n  MeshNormals {\r\n 4;\r\n 1.000000;0.000000;0.000000;,\r\n 1.000000;0.000000;0.000000;,\r\n 1.000000;0.000000;0.000000;,\r\n 1.000000;0.000000;0.000000;,\r\n\r\n\r\n 2;\r\n 3;0,1,2;,\r\n 3;0,2,3;;\r\n }\r\n  MeshTextureCoords {\r\n    4;\r\n    1.000000;0.000000;;\r\n    0.000000;0.000000;,\r\n    0.000000;1.000000;,\r\n    1.000000;1.000000;,\r\n }\r\n}\r\n\r\nMesh Unnamed_2 {\r\n 4;\r\n -1.000000;1.000000;-1.000000;,   // 1\r\n -1.000000;-1.000000;-1.000000;,  // 5\r\n -1.000000;-1.000000;1.000000;,   // 6\r\n -1.000000;1.000000;1.000000;,    // 2\r\n\r\n 2;\r\n 3;0,2,1;,\r\n 3;0,3,2;;\r\n\r\n  MeshMaterialList {\r\n      1;\r\n  2;\r\n  0,\r\n  0;\r\n     Material {\r\n     1.000000;1.000000;1.000000;1.000000;;\r\n     0.000000;\r\n     1.000000;1.000000;1.000000;;\r\n       0.000000;0.000000;0.000000;;\r\n          TextureFilename {\r\n      \"LobbyXNeg.jpg\";\r\n     }\r\n     }\r\n }\r\n  MeshNormals {\r\n 4;\r\n -1.000000;0.000000;0.000000;,\r\n -1.000000;0.000000;0.000000;,\r\n -1.000000;0.000000;0.000000;,\r\n -1.000000;0.000000;0.000000;,\r\n\r\n\r\n 2;\r\n 3;0,1,2;,\r\n 3;0,2,3;;\r\n }\r\n  MeshTextureCoords {\r\n    4;\r\n    0.000000;0.000000;,\r\n    0.000000;1.000000;,\r\n    1.000000;1.000000;,\r\n    1.000000;0.000000;;\r\n }\r\n}\r\n\r\nMesh Unnamed_3 {\r\n 4;\r\n 1.000000;1.000000;1.000000;,     // 3\r\n -1.000000;1.000000;1.000000;,    // 2\r\n -1.000000;-1.000000;1.000000;,   // 6\r\n 1.000000;-1.000000;1.000000;,    // 7\r\n\r\n 2;\r\n 3;0,2,1;,\r\n 3;0,3,2;;\r\n\r\n  MeshMaterialList {\r\n      1;\r\n  2;\r\n  0,\r\n  0;\r\n     Material {\r\n     1.000000;1.000000;1.000000;1.000000;;\r\n     0.000000;\r\n     1.000000;1.000000;1.000000;;\r\n       0.000000;0.000000;0.000000;;\r\n          TextureFilename {\r\n      \"LobbyZPos.jpg\";\r\n     }\r\n     }\r\n }\r\n  MeshNormals {\r\n 4;\r\n 0.000000;0.000000;1.000000;,\r\n 0.000000;0.000000;1.000000;,\r\n 0.000000;0.000000;1.000000;,\r\n 0.000000;0.000000;1.000000;,\r\n\r\n\r\n 2;\r\n 3;0,1,2;,\r\n 3;0,2,3;;\r\n }\r\n  MeshTextureCoords {\r\n    4;\r\n    1.000000;0.000000;;\r\n    0.000000;0.000000;,\r\n    0.000000;1.000000;,\r\n    1.000000;1.000000;,\r\n }\r\n}\r\n\r\nMesh Unnamed_4 {\r\n 4;\r\n 1.000000;1.000000;-1.000000;,    // 0\r\n 1.000000;-1.000000;-1.000000;,   // 4\r\n -1.000000;-1.000000;-1.000000;,  // 5\r\n -1.000000;1.000000;-1.000000;,   // 1\r\n\r\n 2;\r\n 3;0,2,1;,\r\n 3;0,3,2;;\r\n\r\n  MeshMaterialList {\r\n      1;\r\n  2;\r\n  0,\r\n  0;\r\n     Material {\r\n     1.000000;1.000000;1.000000;1.000000;;\r\n     0.000000;\r\n     1.000000;1.000000;1.000000;;\r\n       0.000000;0.000000;0.000000;;\r\n          TextureFilename {\r\n      \"LobbyZNeg.jpg\";\r\n     }\r\n     }\r\n }\r\n  MeshNormals {\r\n 4;\r\n 0.000000;0.000000;-1.000000;,\r\n 0.000000;0.000000;-1.000000;,\r\n 0.000000;0.000000;-1.000000;,\r\n 0.000000;0.000000;-1.000000;,\r\n\r\n\r\n 2;\r\n 3;0,1,2;,\r\n 3;0,2,3;;\r\n }\r\n  MeshTextureCoords {\r\n    4;\r\n    0.000000;0.000000;,\r\n    0.000000;1.000000;,\r\n    1.000000;1.000000;,\r\n    1.000000;0.000000;;\r\n }\r\n}\r\n\r\nMesh Unnamed_5 {\r\n 4;\r\n 1.000000;-1.000000;-1.000000;,   // 4\r\n 1.000000;-1.000000;1.000000;,    // 7\r\n -1.000000;-1.000000;1.000000;,   // 6\r\n -1.000000;-1.000000;-1.000000;;  // 5\r\n\r\n 2;\r\n 3;0,2,1;,\r\n 3;0,3,2;;\r\n\r\n  MeshMaterialList {\r\n      1;\r\n  2;\r\n  0,\r\n  0;\r\n     Material {\r\n     1.000000;1.000000;1.000000;1.000000;;\r\n     0.000000;\r\n     1.000000;1.000000;1.000000;;\r\n       0.000000;0.000000;0.000000;;\r\n          TextureFilename {\r\n      \"LobbyYNeg.jpg\";\r\n     }\r\n     }\r\n }\r\n  MeshNormals {\r\n 4;\r\n 0.000000;-1.000000;0.000000;,\r\n 0.000000;-1.000000;0.000000;,\r\n 0.000000;-1.000000;0.000000;,\r\n 0.000000;-1.000000;0.000000;;\r\n\r\n\r\n 2;\r\n 3;0,1,2;,\r\n 3;0,2,3;;\r\n }\r\n  MeshTextureCoords {\r\n    4;\r\n    1.000000;1.000000;,\r\n    1.000000;0.000000;;\r\n    0.000000;0.000000;,\r\n    0.000000;1.000000;,\r\n }\r\n}\r\n\r\n}\r\n"
  },
  {
    "path": "common/Addons/DXTest/DX9StencilMirror/StencilMirror_d3d9.log",
    "content": "info:  Game: StencilMirror.exe\r\ninfo:  DXVK: v1.10.3-async\r\ninfo:  Built-in extension providers:\r\ninfo:    Win32 WSI\r\ninfo:    OpenVR\r\ninfo:    OpenXR\r\ninfo:  OpenVR: could not open registry key, status 2\r\ninfo:  OpenVR: Failed to locate module\r\ninfo:  Enabled instance extensions:\r\ninfo:    VK_KHR_get_surface_capabilities2\r\ninfo:    VK_KHR_surface\r\ninfo:    VK_KHR_win32_surface\r\ninfo:  D3D9: VK_FORMAT_D16_UNORM_S8_UINT -> VK_FORMAT_D24_UNORM_S8_UINT\r\ninfo:  Intel(R) HD Graphics 4600 (HSW GT2):\r\ninfo:    Driver: 24.2.99\r\ninfo:    Vulkan: 1.2.289\r\ninfo:    Memory Heap[0]: \r\ninfo:      Size: 1536 MiB\r\ninfo:      Flags: 0x1\r\ninfo:      Memory Type[0]: Property Flags = 0x1\r\ninfo:      Memory Type[1]: Property Flags = 0xf\r\ninfo:  Process set as DPI aware\r\ninfo:  Device properties:\r\ninfo:    Device name:     : Intel(R) HD Graphics 4600 (HSW GT2)\r\ninfo:    Driver version   : 24.2.99\r\ninfo:  Enabled device extensions:\r\ninfo:    VK_EXT_4444_formats\r\ninfo:    VK_EXT_depth_clip_enable\r\ninfo:    VK_EXT_extended_dynamic_state\r\ninfo:    VK_EXT_host_query_reset\r\ninfo:    VK_EXT_non_seamless_cube_map\r\ninfo:    VK_EXT_robustness2\r\ninfo:    VK_EXT_shader_demote_to_helper_invocation\r\ninfo:    VK_EXT_shader_viewport_index_layer\r\ninfo:    VK_EXT_transform_feedback\r\ninfo:    VK_EXT_vertex_attribute_divisor\r\ninfo:    VK_KHR_create_renderpass2\r\ninfo:    VK_KHR_depth_stencil_resolve\r\ninfo:    VK_KHR_draw_indirect_count\r\ninfo:    VK_KHR_driver_properties\r\ninfo:    VK_KHR_image_format_list\r\ninfo:    VK_KHR_sampler_mirror_clamp_to_edge\r\ninfo:    VK_KHR_shader_float_controls\r\ninfo:    VK_KHR_swapchain\r\ninfo:    VK_KHR_timeline_semaphore\r\ninfo:  Device features:\r\ninfo:    robustBufferAccess                     : 1\r\ninfo:    fullDrawIndexUint32                    : 1\r\ninfo:    imageCubeArray                         : 1\r\ninfo:    independentBlend                       : 1\r\ninfo:    geometryShader                         : 1\r\ninfo:    tessellationShader                     : 0\r\ninfo:    sampleRateShading                      : 1\r\ninfo:    dualSrcBlend                           : 0\r\ninfo:    logicOp                                : 0\r\ninfo:    multiDrawIndirect                      : 0\r\ninfo:    drawIndirectFirstInstance              : 0\r\ninfo:    depthClamp                             : 1\r\ninfo:    depthBiasClamp                         : 1\r\ninfo:    fillModeNonSolid                       : 1\r\ninfo:    depthBounds                            : 0\r\ninfo:    multiViewport                          : 1\r\ninfo:    samplerAnisotropy                      : 1\r\ninfo:    textureCompressionBC                   : 1\r\ninfo:    occlusionQueryPrecise                  : 1\r\ninfo:    pipelineStatisticsQuery                : 1\r\ninfo:    vertexPipelineStoresAndAtomics         : 0\r\ninfo:    fragmentStoresAndAtomics               : 0\r\ninfo:    shaderImageGatherExtended              : 0\r\ninfo:    shaderStorageImageExtendedFormats      : 0\r\ninfo:    shaderStorageImageReadWithoutFormat    : 0\r\ninfo:    shaderStorageImageWriteWithoutFormat   : 1\r\ninfo:    shaderClipDistance                     : 1\r\ninfo:    shaderCullDistance                     : 1\r\ninfo:    shaderFloat64                          : 0\r\ninfo:    shaderInt64                            : 0\r\ninfo:    variableMultisampleRate                : 0\r\ninfo:  VK_EXT_4444_formats\r\ninfo:    formatA4R4G4B4                         : 1\r\ninfo:    formatA4B4G4R4                         : 0\r\ninfo:  VK_EXT_custom_border_color\r\ninfo:    customBorderColors                     : 0\r\ninfo:    customBorderColorWithoutFormat         : 0\r\ninfo:  VK_EXT_depth_clip_enable\r\ninfo:    depthClipEnable                        : 1\r\ninfo:  VK_EXT_extended_dynamic_state\r\ninfo:    extendedDynamicState                   : 1\r\ninfo:  VK_EXT_host_query_reset\r\ninfo:    hostQueryReset                         : 1\r\ninfo:  VK_EXT_memory_priority\r\ninfo:    memoryPriority                         : 0\r\ninfo:  VK_EXT_non_seamless_cube_map\r\ninfo:    nonSeamlessCubeMap                     : 1\r\ninfo:  VK_EXT_robustness2\r\ninfo:    robustBufferAccess2                    : 1\r\ninfo:    robustImageAccess2                     : 0\r\ninfo:    nullDescriptor                         : 1\r\ninfo:  VK_EXT_shader_demote_to_helper_invocation\r\ninfo:    shaderDemoteToHelperInvocation         : 1\r\ninfo:  VK_EXT_transform_feedback\r\ninfo:    transformFeedback                      : 0\r\ninfo:    geometryStreams                        : 0\r\ninfo:  VK_EXT_vertex_attribute_divisor\r\ninfo:    vertexAttributeInstanceRateDivisor     : 1\r\ninfo:    vertexAttributeInstanceRateZeroDivisor : 1\r\ninfo:  VK_KHR_buffer_device_address\r\ninfo:    bufferDeviceAddress                    : 0\r\ninfo:  VK_KHR_timeline_semaphore\r\ninfo:    timelineSemaphore                      : 0\r\ninfo:  Queue families:\r\ninfo:    Graphics : 0\r\ninfo:    Transfer : 0\r\nwarn:  DXVK: No state cache file found\r\nwarn:  DXVK: Creating new state cache file\r\ninfo:  D3D9DeviceEx::ResetSwapChain:\r\ninfo:    Requested Presentation Parameters\r\ninfo:      - Width:              400\r\ninfo:      - Height:             300\r\ninfo:      - Format:             D3D9Format::X8R8G8B8\r\ninfo:      - Auto Depth Stencil: true\r\ninfo:                  ^ Format: D3D9Format::D24S8\r\ninfo:      - Windowed:           true\r\ninfo:  Presenter: Actual swap chain properties:\r\ninfo:    Format:       VK_FORMAT_B8G8R8A8_UNORM\r\ninfo:    Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR\r\ninfo:    Buffer size:  400x300\r\ninfo:    Image count:  3\r\ninfo:    Exclusive FS: 0\r\nwarn:  D3D9DeviceEx::SetRenderState: Unhandled render state 26\r\ninfo:  Presenter: Actual swap chain properties:\r\ninfo:    Format:       VK_FORMAT_B8G8R8A8_UNORM\r\ninfo:    Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR\r\ninfo:    Buffer size:  400x300\r\ninfo:    Image count:  3\r\ninfo:    Exclusive FS: 0\r\n"
  },
  {
    "path": "common/Addons/DXTest/DX9StencilMirror/heli.x",
    "content": "xof 0302txt 0064\r\n//  DV3881 Copyright Viewpoint Datalabs Intl., Inc.\r\n//  www.viewpoint.com, 800-643-8303, 801-229-3333\r\n//  for Microsoft Corporation DirectX format only\r\n//  see license agreement for description of rights\r\n//  Model by Viewpoint Datalabs Intl., Inc.\r\n\r\ntemplate Header {\r\n\t<3D82AB43-62DA-11cf-AB39-0020AF71E433>\r\n\tWORD major;\r\n\tWORD minor;\r\n\tDWORD flags;\r\n}\r\n\r\ntemplate ColorRGBA {\r\n\t<35FF44E0-6C7C-11cf-8F52-0040333594A3>\r\n\tFLOAT red;\r\n\tFLOAT green;\r\n\tFLOAT blue;\r\n\tFLOAT alpha;\r\n}\r\n\r\ntemplate ColorRGB {\r\n\t<D3E16E81-7835-11cf-8F52-0040333594A3>\r\n\tFLOAT red;  \r\n\tFLOAT green;\r\n\tFLOAT blue; \r\n}\r\n\r\ntemplate Material {\r\n\t<3D82AB4D-62DA-11cf-AB39-0020AF71E433>\r\n\tColorRGBA faceColor;\r\n\tFLOAT power;\r\n\tColorRGB specularColor;\r\n\tColorRGB emissiveColor;\r\n\t[...]\r\n}\r\n\r\ntemplate Vector {\r\n\t<3D82AB5E-62DA-11cf-AB39-0020AF71E433>\r\n\tFLOAT x;\r\n\tFLOAT y;\r\n\tFLOAT z;\r\n}\r\n\r\ntemplate MeshFace {\r\n\t<3D82AB5F-62DA-11cf-AB39-0020AF71E433>\r\n\tDWORD nFaceVertexIndices;\r\n\tarray DWORD faceVertexIndices[nFaceVertexIndices];\r\n}\r\n\r\ntemplate Mesh {\r\n\t<3D82AB44-62DA-11cf-AB39-0020AF71E433>\r\n\tDWORD nVertices;\r\n\tarray Vector vertices[nVertices];\r\n\tDWORD nFaces;\r\n\tarray MeshFace faces[nFaces];\r\n\t[...]\r\n}\r\n\r\ntemplate MeshMaterialList {\r\n\t<F6F23F42-7686-11cf-8F52-0040333594A3>\r\n\tDWORD nMaterials;\r\n\tDWORD nFaceIndexes;\r\n\tarray DWORD faceIndexes[nFaceIndexes];\r\n\t[Material]\r\n}\r\n\r\ntemplate Frame {\r\n\t<3D82AB46-62DA-11cf-AB39-0020AF71E433>\r\n\t[...]\r\n}\r\n\r\ntemplate AnimationKey {\r\n\t<10DD46A8-775B-11cf-8F52-0040333594A3>\r\n\tDWORD keyType;\r\n\tDWORD nKeys;\r\n\tarray TimedFloatKeys keys[nKeys];\r\n}\r\n\r\ntemplate Animation {\r\n\t<3D82AB4F-62DA-11cf-AB39-0020AF71E433>\r\n\t[...]\r\n}\r\n\r\n\ttemplate AnimationSet {\r\n\t <3D82AB50-62DA-11cf-AB39-0020AF71E433>\r\n\t [Animation]\r\n}\r\n\r\n\r\nHeader {\r\n\t 1;\r\n\t 0;\r\n\t 1;\r\n}\r\n\r\nFrame Root{\r\n\tFrame guard {\r\n\t\tMesh mesh-guard {\r\n\t\t\t8;\r\n\t\t\t0.000190;0.520175;6.491285;,\r\n\t\t\t0.000191;-0.379825;6.531285;,\r\n\t\t\t0.000182;-0.399825;6.161285;,\r\n\t\t\t0.000175;-0.359825;5.891285;,\r\n\t\t\t0.000199;0.310175;6.811285;,\r\n\t\t\t0.000198;0.430175;6.761285;,\r\n\t\t\t0.000198;-0.129825;6.761285;,\r\n\t\t\t0.000146;0.160175;4.791285;;\r\n\r\n\t\t\t7;\r\n\t\t\t3; 2,1,0;,\r\n\t\t\t4; 5,4,2,3;,\r\n\t\t\t4; 4,6,1,2;,\r\n\t\t\t3; 1,6,0;,\r\n\t\t\t3; 0,5,3;,\r\n\t\t\t4; 7,3,2,0;,\r\n\t\t\t4; 6,4,5,0;;\r\n  MeshNormals {\r\n    2;\r\n  -1.000;-0.000;0.000;,\r\n  1.000;-0.000;-0.000;;\r\n\r\n  7;\r\n  3;0,0,0;,\r\n  4;1,1,1,1;,\r\n  4;1,1,1,1;,\r\n  3;0,0,0;,\r\n  3;1,1,1;,\r\n  4;0,0,0,0;,\r\n  4;0,0,0,0;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t7;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial red {\r\n\t\t\t\t\t0.771400;0.000000;0.000000;1.000000;;\r\n\t\t\t\t\t136.430000;\r\n\t\t\t\t\t0.885700;0.000000;0.000000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame stab {\r\n\t\tMesh mesh-stab {\r\n\t\t\t16;\r\n\t\t\t0.950119;0.130175;3.791260;,\r\n\t\t\t0.170119;0.130175;3.791281;,\r\n\t\t\t0.170126;0.130175;4.051281;,\r\n\t\t\t0.950126;0.130175;4.051260;,\r\n\t\t\t-0.949881;0.180175;3.791310;,\r\n\t\t\t-0.169881;0.180175;3.791289;,\r\n\t\t\t-0.169874;0.180175;4.051289;,\r\n\t\t\t-0.949874;0.180175;4.051310;,\r\n\t\t\t-0.949874;0.130175;4.051310;,\r\n\t\t\t-0.169874;0.130175;4.051289;,\r\n\t\t\t-0.169881;0.130175;3.791289;,\r\n\t\t\t-0.949881;0.130175;3.791310;,\r\n\t\t\t0.950126;0.180175;4.051260;,\r\n\t\t\t0.170126;0.180175;4.051281;,\r\n\t\t\t0.170119;0.180175;3.791281;,\r\n\t\t\t0.950119;0.180175;3.791260;;\r\n\r\n\t\t\t12;\r\n\t\t\t4; 3,2,1,0;,\r\n\t\t\t4; 7,6,5,4;,\r\n\t\t\t4; 11,10,9,8;,\r\n\t\t\t4; 15,14,13,12;,\r\n\t\t\t4; 4,11,8,7;,\r\n\t\t\t4; 5,10,11,4;,\r\n\t\t\t4; 6,9,10,5;,\r\n\t\t\t4; 7,8,9,6;,\r\n\t\t\t4; 12,3,0,15;,\r\n\t\t\t4; 13,2,3,12;,\r\n\t\t\t4; 14,1,2,13;,\r\n\t\t\t4; 15,0,1,14;;\r\n  MeshNormals {\r\n    6;\r\n  0.000;-1.000;0.000;,\r\n  -0.000;0.000;-1.000;,\r\n  0.000;0.000;1.000;,\r\n  -1.000;0.000;0.000;,\r\n  0.000;1.000;0.000;,\r\n  1.000;0.000;-0.000;;\r\n\r\n  12;\r\n  4;0,0,0,0;,\r\n  4;4,4,4,4;,\r\n  4;0,0,0,0;,\r\n  4;4,4,4,4;,\r\n  4;3,3,3,3;,\r\n  4;1,1,1,1;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;3,3,3,3;,\r\n  4;1,1,1,1;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t12;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial red {\r\n\t\t\t\t\t0.771400;0.000000;0.000000;1.000000;;\r\n\t\t\t\t\t136.430000;\r\n\t\t\t\t\t0.885700;0.000000;0.000000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame tail {\r\n\t\tMesh mesh-tail {\r\n\t\t\t16;\r\n\t\t\t-0.059821;0.410175;6.041286;,\r\n\t\t\t0.060179;0.410175;6.041284;,\r\n\t\t\t0.320046;-0.709825;0.981277;,\r\n\t\t\t-0.319954;-0.709825;0.981293;,\r\n\t\t\t-0.319956;0.060175;0.911293;,\r\n\t\t\t-0.529983;-1.219825;-0.098701;,\r\n\t\t\t-0.529983;0.160175;-0.098701;,\r\n\t\t\t0.559968;-1.249825;-1.948730;,\r\n\t\t\t0.559968;0.190175;-1.948730;,\r\n\t\t\t-0.560032;0.190175;-1.948700;,\r\n\t\t\t-0.560032;-1.249825;-1.948700;,\r\n\t\t\t0.530017;0.160175;-0.098729;,\r\n\t\t\t0.530017;-1.219825;-0.098729;,\r\n\t\t\t0.060182;0.650175;6.161283;,\r\n\t\t\t0.320044;0.060175;0.911277;,\r\n\t\t\t-0.059818;0.650175;6.161286;;\r\n\r\n\t\t\t14;\r\n\t\t\t4; 3,2,1,0;,\r\n\t\t\t4; 6,5,3,4;,\r\n\t\t\t4; 10,9,8,7;,\r\n\t\t\t4; 5,6,9,10;,\r\n\t\t\t4; 8,9,6,11;,\r\n\t\t\t4; 5,12,2,3;,\r\n\t\t\t4; 2,14,13,1;,\r\n\t\t\t4; 4,3,0,15;,\r\n\t\t\t4; 11,6,4,14;,\r\n\t\t\t4; 15,0,1,13;,\r\n\t\t\t4; 7,8,11,12;,\r\n\t\t\t4; 10,7,12,5;,\r\n\t\t\t4; 12,11,14,2;,\r\n\t\t\t4; 14,4,15,13;;\r\n  MeshNormals {\r\n    12;\r\n  0.000;-0.793;0.609;,\r\n  -0.000;0.994;-0.112;,\r\n  0.000;-0.944;0.331;,\r\n  0.000;-1.000;0.016;,\r\n  -0.992;0.002;0.124;,\r\n  1.000;0.000;0.016;,\r\n  0.000;1.000;0.016;,\r\n  -0.000;0.000;-1.000;,\r\n  0.995;0.000;0.095;,\r\n  0.000;-0.977;0.213;,\r\n  -1.000;0.000;0.016;,\r\n  0.000;-0.447;0.894;;\r\n\r\n  14;\r\n  4;2,2,0,0;,\r\n  4;4,4,4,4;,\r\n  4;7,7,7,7;,\r\n  4;4,4,10,10;,\r\n  4;6,6,6,6;,\r\n  4;9,9,2,2;,\r\n  4;8,8,5,5;,\r\n  4;4,4,10,10;,\r\n  4;6,6,6,6;,\r\n  4;11,0,0,11;,\r\n  4;5,5,8,8;,\r\n  4;3,3,9,9;,\r\n  4;8,8,8,8;,\r\n  4;6,6,1,1;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t14;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial red {\r\n\t\t\t\t\t0.771400;0.000000;0.000000;1.000000;;\r\n\t\t\t\t\t136.430000;\r\n\t\t\t\t\t0.885700;0.000000;0.000000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame rrotor {\r\n\t\tMesh mesh-rrotor {\r\n\t\t\t40;\r\n\t\t\t0.212859;1.370680;5.720087;,\r\n\t\t\t0.212852;1.326606;5.441804;,\r\n\t\t\t0.212845;1.198697;5.190759;,\r\n\t\t\t0.212840;0.999473;4.991526;,\r\n\t\t\t0.212837;0.748434;4.863605;,\r\n\t\t\t0.212835;0.470153;4.819518;,\r\n\t\t\t0.212837;0.191868;4.863579;,\r\n\t\t\t0.212840;-0.059183;4.991477;,\r\n\t\t\t0.212845;-0.258425;5.190692;,\r\n\t\t\t0.212852;-0.386358;5.441724;,\r\n\t\t\t0.212859;-0.430458;5.720003;,\r\n\t\t\t0.212866;-0.386409;5.998291;,\r\n\t\t\t0.212873;-0.258523;6.249347;,\r\n\t\t\t0.212878;-0.059318;6.448599;,\r\n\t\t\t0.212882;0.191709;6.576543;,\r\n\t\t\t0.212883;0.469986;6.620656;,\r\n\t\t\t0.212882;0.748275;6.576621;,\r\n\t\t\t0.212878;0.999338;6.448746;,\r\n\t\t\t0.212873;1.198599;6.249550;,\r\n\t\t\t0.212866;1.326554;5.998529;,\r\n\t\t\t0.112866;1.326554;5.998529;,\r\n\t\t\t0.112873;1.198599;6.249550;,\r\n\t\t\t0.112878;0.999338;6.448746;,\r\n\t\t\t0.112882;0.748275;6.576621;,\r\n\t\t\t0.112883;0.469986;6.620656;,\r\n\t\t\t0.112882;0.191709;6.576543;,\r\n\t\t\t0.112878;-0.059318;6.448599;,\r\n\t\t\t0.112873;-0.258523;6.249347;,\r\n\t\t\t0.112866;-0.386409;5.998291;,\r\n\t\t\t0.112859;-0.430458;5.720003;,\r\n\t\t\t0.112852;-0.386358;5.441724;,\r\n\t\t\t0.112845;-0.258425;5.190692;,\r\n\t\t\t0.112840;-0.059183;4.991477;,\r\n\t\t\t0.112837;0.191868;4.863579;,\r\n\t\t\t0.112835;0.470153;4.819518;,\r\n\t\t\t0.112837;0.748434;4.863605;,\r\n\t\t\t0.112840;0.999473;4.991526;,\r\n\t\t\t0.112845;1.198697;5.190759;,\r\n\t\t\t0.112852;1.326606;5.441804;,\r\n\t\t\t0.112859;1.370680;5.720087;;\r\n\r\n\t\t\t22;\r\n\t\t\t20; 19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0;,\r\n\t\t\t20; 39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20;,\r\n\t\t\t4; 11,28,29,10;,\r\n\t\t\t4; 12,27,28,11;,\r\n\t\t\t4; 13,26,27,12;,\r\n\t\t\t4; 14,25,26,13;,\r\n\t\t\t4; 15,24,25,14;,\r\n\t\t\t4; 16,23,24,15;,\r\n\t\t\t4; 17,22,23,16;,\r\n\t\t\t4; 18,21,22,17;,\r\n\t\t\t4; 19,20,21,18;,\r\n\t\t\t4; 0,39,20,19;,\r\n\t\t\t4; 1,38,39,0;,\r\n\t\t\t4; 2,37,38,1;,\r\n\t\t\t4; 3,36,37,2;,\r\n\t\t\t4; 4,35,36,3;,\r\n\t\t\t4; 5,34,35,4;,\r\n\t\t\t4; 6,33,34,5;,\r\n\t\t\t4; 7,32,33,6;,\r\n\t\t\t4; 9,30,31,8;,\r\n\t\t\t4; 10,29,30,9;,\r\n\t\t\t4; 8,31,32,7;;\r\n  MeshNormals {\r\n    22;\r\n  1.000;-0.000;-0.000;,\r\n  0.000;1.000;0.000;,\r\n  0.000;0.951;-0.309;,\r\n  0.000;0.809;-0.588;,\r\n  0.000;0.588;-0.809;,\r\n  0.000;0.309;-0.951;,\r\n  0.000;0.000;-1.000;,\r\n  0.000;-0.309;-0.951;,\r\n  0.000;-0.588;-0.809;,\r\n  0.000;-0.809;-0.588;,\r\n  0.000;-0.951;-0.309;,\r\n  0.000;-1.000;-0.000;,\r\n  0.000;-0.951;0.309;,\r\n  0.000;-0.809;0.588;,\r\n  0.000;-0.588;0.809;,\r\n  0.000;-0.309;0.951;,\r\n  0.000;-0.000;1.000;,\r\n  0.000;0.309;0.951;,\r\n  0.000;0.588;0.809;,\r\n  0.000;0.809;0.588;,\r\n  -1.000;0.000;0.000;,\r\n  0.000;0.951;0.309;;\r\n\r\n  22;\r\n  20;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;,\r\n  20;20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20;,\r\n  4;12,12,11,11;,\r\n  4;13,13,12,12;,\r\n  4;14,14,13,13;,\r\n  4;15,15,14,14;,\r\n  4;16,16,15,15;,\r\n  4;17,17,16,16;,\r\n  4;18,18,17,17;,\r\n  4;19,19,18,18;,\r\n  4;21,21,19,19;,\r\n  4;1,1,21,21;,\r\n  4;2,2,1,1;,\r\n  4;3,3,2,2;,\r\n  4;4,4,3,3;,\r\n  4;5,5,4,4;,\r\n  4;6,6,5,5;,\r\n  4;7,7,6,6;,\r\n  4;8,8,7,7;,\r\n  4;10,10,9,9;,\r\n  4;11,11,10,10;,\r\n  4;9,9,8,8;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t22;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial grey {\r\n                                        0.183700;0.183700;0.183700;0.500000;;\r\n\t\t\t\t\t65.890000;\r\n\t\t\t\t\t0.500000;0.500000;0.500000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame mroter {\r\n\t\tMesh mesh-mroter {\r\n\t\t\t40;\r\n\t\t\t5.765566;1.499817;1.125585;,\r\n\t\t\t4.904222;1.499794;2.815463;,\r\n\t\t\t3.562846;1.499759;4.156475;,\r\n\t\t\t1.872734;1.499714;5.017361;,\r\n\t\t\t-0.000684;1.499665;5.313855;,\r\n\t\t\t-1.874033;1.499616;5.016938;,\r\n\t\t\t-3.563951;1.499571;4.155673;,\r\n\t\t\t-4.905024;1.499536;2.814358;,\r\n\t\t\t-5.765989;1.499513;1.124287;,\r\n\t\t\t-6.062570;1.499506;-0.749118;,\r\n\t\t\t-5.765740;1.499513;-2.622481;,\r\n\t\t\t-4.904552;1.499536;-4.312439;,\r\n\t\t\t-3.563300;1.499571;-5.653574;,\r\n\t\t\t-1.873269;1.499616;-6.514617;,\r\n\t\t\t0.000122;1.499665;-6.811285;,\r\n\t\t\t1.873499;1.499714;-6.514541;,\r\n\t\t\t3.563497;1.499759;-5.653433;,\r\n\t\t\t4.904694;1.499794;-4.312243;,\r\n\t\t\t5.765815;1.499817;-2.622251;,\r\n\t\t\t6.062570;1.499825;-0.748874;,\r\n\t\t\t6.062570;1.399825;-0.748874;,\r\n\t\t\t5.765815;1.399817;-2.622251;,\r\n\t\t\t4.904694;1.399794;-4.312243;,\r\n\t\t\t3.563497;1.399759;-5.653433;,\r\n\t\t\t1.873499;1.399714;-6.514541;,\r\n\t\t\t0.000122;1.399665;-6.811285;,\r\n\t\t\t-1.873269;1.399616;-6.514617;,\r\n\t\t\t-3.563300;1.399571;-5.653574;,\r\n\t\t\t-4.904552;1.399536;-4.312439;,\r\n\t\t\t-5.765740;1.399513;-2.622481;,\r\n\t\t\t-6.062570;1.399506;-0.749118;,\r\n\t\t\t-5.765989;1.399513;1.124287;,\r\n\t\t\t-4.905024;1.399536;2.814358;,\r\n\t\t\t-3.563951;1.399571;4.155673;,\r\n\t\t\t-1.874033;1.399616;5.016938;,\r\n\t\t\t-0.000684;1.399665;5.313855;,\r\n\t\t\t1.872734;1.399714;5.017361;,\r\n\t\t\t3.562846;1.399759;4.156475;,\r\n\t\t\t4.904222;1.399794;2.815463;,\r\n\t\t\t5.765566;1.399817;1.125585;;\r\n\r\n\t\t\t22;\r\n\t\t\t20; 19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0;,\r\n\t\t\t20; 39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20;,\r\n\t\t\t4; 14,25,26,13;,\r\n\t\t\t4; 15,24,25,14;,\r\n\t\t\t4; 16,23,24,15;,\r\n\t\t\t4; 17,22,23,16;,\r\n\t\t\t4; 18,21,22,17;,\r\n\t\t\t4; 19,20,21,18;,\r\n\t\t\t4; 0,39,20,19;,\r\n\t\t\t4; 1,38,39,0;,\r\n\t\t\t4; 2,37,38,1;,\r\n\t\t\t4; 3,36,37,2;,\r\n\t\t\t4; 4,35,36,3;,\r\n\t\t\t4; 5,34,35,4;,\r\n\t\t\t4; 7,32,33,6;,\r\n\t\t\t4; 8,31,32,7;,\r\n\t\t\t4; 10,29,30,9;,\r\n\t\t\t4; 11,28,29,10;,\r\n\t\t\t4; 13,26,27,12;,\r\n\t\t\t4; 6,33,34,5;,\r\n\t\t\t4; 12,27,28,11;,\r\n\t\t\t4; 9,30,31,8;;\r\n  MeshNormals {\r\n    22;\r\n  -0.000;1.000;-0.000;,\r\n  0.951;0.000;0.309;,\r\n  0.809;0.000;0.588;,\r\n  0.588;0.000;0.809;,\r\n  0.309;0.000;0.951;,\r\n  -0.000;0.000;1.000;,\r\n  -0.309;0.000;0.951;,\r\n  -0.588;0.000;0.809;,\r\n  -0.809;0.000;0.588;,\r\n  -0.951;0.000;0.309;,\r\n  -1.000;0.000;-0.000;,\r\n  -0.951;0.000;-0.309;,\r\n  -0.809;0.000;-0.588;,\r\n  -0.588;0.000;-0.809;,\r\n  -0.309;0.000;-0.951;,\r\n  0.000;0.000;-1.000;,\r\n  0.309;0.000;-0.951;,\r\n  0.588;0.000;-0.809;,\r\n  0.809;0.000;-0.588;,\r\n  0.951;0.000;-0.309;,\r\n  0.000;-1.000;-0.000;,\r\n  1.000;0.000;0.000;;\r\n\r\n  22;\r\n  20;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;,\r\n  20;20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20;,\r\n  4;15,15,14,14;,\r\n  4;16,16,15,15;,\r\n  4;17,17,16,16;,\r\n  4;18,18,17,17;,\r\n  4;19,19,18,18;,\r\n  4;21,21,19,19;,\r\n  4;1,1,21,21;,\r\n  4;2,2,1,1;,\r\n  4;3,3,2,2;,\r\n  4;4,4,3,3;,\r\n  4;5,5,4,4;,\r\n  4;6,6,5,5;,\r\n  4;8,8,7,7;,\r\n  4;9,9,8,8;,\r\n  4;11,11,10,10;,\r\n  4;12,12,11,11;,\r\n  4;14,14,13,13;,\r\n  4;7,7,6,6;,\r\n  4;13,13,12,12;,\r\n  4;10,10,9,9;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t22;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial grey {\r\n                                        0.183700;0.183700;0.183700;0.500000;;\r\n\t\t\t\t\t65.890000;\r\n\t\t\t\t\t0.500000;0.500000;0.500000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame shaft {\r\n\t\tMesh mesh-shaft {\r\n\t\t\t24;\r\n\t\t\t-0.260000;-0.079825;-0.748708;,\r\n\t\t\t-0.129994;-0.079825;-0.528712;,\r\n\t\t\t0.130006;-0.079825;-0.528718;,\r\n\t\t\t-0.130006;-0.079825;-0.978712;,\r\n\t\t\t0.050002;1.470175;-0.658716;,\r\n\t\t\t0.110000;1.470175;-0.748718;,\r\n\t\t\t0.110000;0.900175;-0.748718;,\r\n\t\t\t0.050002;0.900175;-0.658716;,\r\n\t\t\t-0.049998;0.900175;-0.658714;,\r\n\t\t\t0.130006;0.710175;-0.528718;,\r\n\t\t\t-0.129994;0.710175;-0.528712;,\r\n\t\t\t0.049997;0.900175;-0.848716;,\r\n\t\t\t0.129994;0.710175;-0.978718;,\r\n\t\t\t0.260000;0.710175;-0.748722;,\r\n\t\t\t0.260000;-0.079825;-0.748722;,\r\n\t\t\t0.129994;-0.079825;-0.978718;,\r\n\t\t\t-0.260000;0.710175;-0.748708;,\r\n\t\t\t-0.050003;1.470175;-0.848714;,\r\n\t\t\t0.049997;1.470175;-0.848716;,\r\n\t\t\t-0.050003;0.900175;-0.848714;,\r\n\t\t\t-0.130006;0.710175;-0.978712;,\r\n\t\t\t-0.110000;1.470175;-0.748712;,\r\n\t\t\t-0.110000;0.900175;-0.748712;,\r\n\t\t\t-0.049998;1.470175;-0.658714;;\r\n\r\n\t\t\t22;\r\n\t\t\t4; 3,2,1,0;,\r\n\t\t\t4; 7,6,5,4;,\r\n\t\t\t4; 10,9,7,8;,\r\n\t\t\t4; 13,12,11,6;,\r\n\t\t\t4; 15,12,13,14;,\r\n\t\t\t4; 2,9,10,1;,\r\n\t\t\t4; 1,10,16,0;,\r\n\t\t\t4; 5,18,17,4;,\r\n\t\t\t4; 12,20,19,11;,\r\n\t\t\t4; 19,22,21,17;,\r\n\t\t\t4; 6,11,18,5;,\r\n\t\t\t4; 4,17,21,23;,\r\n\t\t\t4; 8,7,4,23;,\r\n\t\t\t4; 16,10,8,22;,\r\n\t\t\t4; 9,13,6,7;,\r\n\t\t\t4; 3,20,12,15;,\r\n\t\t\t4; 14,13,9,2;,\r\n\t\t\t4; 0,16,20,3;,\r\n\t\t\t4; 14,2,3,15;,\r\n\t\t\t4; 20,16,22,19;,\r\n\t\t\t4; 22,8,23,21;,\r\n\t\t\t4; 11,19,17,18;;\r\n  MeshNormals {\r\n    25;\r\n  0.000;-1.000;0.000;,\r\n  -0.832;0.000;0.555;,\r\n  0.857;0.000;-0.515;,\r\n  -0.871;0.000;-0.492;,\r\n  0.472;0.000;0.882;,\r\n  0.832;0.000;0.555;,\r\n  0.927;0.375;0.019;,\r\n  0.447;0.360;0.819;,\r\n  -0.444;0.366;0.818;,\r\n  0.476;0.298;0.827;,\r\n  -0.474;0.303;0.827;,\r\n  0.459;0.369;-0.808;,\r\n  0.481;0.303;-0.823;,\r\n  0.953;0.302;0.009;,\r\n  0.000;1.000;0.000;,\r\n  -0.472;0.000;0.882;,\r\n  -0.953;0.304;0.007;,\r\n  -0.000;0.000;-1.000;,\r\n  0.861;0.000;0.509;,\r\n  -0.461;0.366;-0.808;,\r\n  -0.483;0.300;-0.823;,\r\n  0.493;0.000;-0.870;,\r\n  -0.926;0.378;0.016;,\r\n  -0.493;0.000;-0.870;,\r\n  -0.861;0.000;0.509;;\r\n\r\n  22;\r\n  4;0,0,0,0;,\r\n  4;7,6,5,4;,\r\n  4;10,9,7,8;,\r\n  4;13,12,11,6;,\r\n  4;2,12,13,2;,\r\n  4;4,9,10,15;,\r\n  4;15,10,16,24;,\r\n  4;14,14,14,14;,\r\n  4;12,20,19,11;,\r\n  4;19,22,3,23;,\r\n  4;6,11,21,2;,\r\n  4;14,14,14,14;,\r\n  4;8,7,4,15;,\r\n  4;16,10,8,22;,\r\n  4;9,13,6,7;,\r\n  4;17,20,12,17;,\r\n  4;18,13,9,4;,\r\n  4;3,16,20,3;,\r\n  4;0,0,0,0;,\r\n  4;20,16,22,19;,\r\n  4;22,8,15,1;,\r\n  4;11,19,23,21;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t22;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial black {\r\n\t\t\t\t\t0.002000;0.002000;0.002000;1.000000;;\r\n\t\t\t\t\t157.360000;\r\n\t\t\t\t\t0.518400;0.518400;0.518400;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame l1grp {\r\n\t\tMesh mesh-l1grp {\r\n\t\t\t56;\r\n\t\t\t-0.039967;0.040175;0.491286;,\r\n\t\t\t-0.039967;0.250175;0.491286;,\r\n\t\t\t0.040033;0.250175;0.491284;,\r\n\t\t\t0.040033;0.040175;0.491284;,\r\n\t\t\t0.040030;0.250175;0.391284;,\r\n\t\t\t0.040030;0.040175;0.391284;,\r\n\t\t\t0.000017;0.310175;-0.108715;,\r\n\t\t\t0.110017;0.360175;-0.108718;,\r\n\t\t\t-0.109983;0.360175;-0.108712;,\r\n\t\t\t-0.189979;0.280175;0.061290;,\r\n\t\t\t0.000021;0.200175;0.061285;,\r\n\t\t\t0.000017;0.640175;-0.108715;,\r\n\t\t\t0.110017;0.590175;-0.108718;,\r\n\t\t\t0.190021;0.670175;0.061280;,\r\n\t\t\t0.000021;0.750175;0.061285;,\r\n\t\t\t-0.189979;0.670175;0.061290;,\r\n\t\t\t0.000029;0.750175;0.371285;,\r\n\t\t\t-0.189971;0.670175;0.371290;,\r\n\t\t\t0.190021;0.280175;0.061280;,\r\n\t\t\t0.000029;0.200175;0.371285;,\r\n\t\t\t0.190029;0.280175;0.371280;,\r\n\t\t\t0.000062;0.770175;1.591285;,\r\n\t\t\t0.140062;0.710175;1.601281;,\r\n\t\t\t-0.139938;0.710175;1.601288;,\r\n\t\t\t0.000063;0.350175;1.641285;,\r\n\t\t\t0.140063;0.410175;1.631282;,\r\n\t\t\t0.090043;0.380175;0.871283;,\r\n\t\t\t0.000043;0.330175;0.871285;,\r\n\t\t\t-0.089957;0.570175;0.871287;,\r\n\t\t\t0.000043;0.620175;0.871285;,\r\n\t\t\t0.090043;0.570175;0.871283;,\r\n\t\t\t0.000033;0.720175;0.501285;,\r\n\t\t\t0.170033;0.650175;0.501280;,\r\n\t\t\t-0.089957;0.380175;0.871287;,\r\n\t\t\t0.000033;0.220175;0.501285;,\r\n\t\t\t-0.169967;0.300175;0.501290;,\r\n\t\t\t-0.239967;0.470175;0.501291;,\r\n\t\t\t-0.189971;0.280175;0.371290;,\r\n\t\t\t-0.269971;0.470175;0.371292;,\r\n\t\t\t0.240033;0.470175;0.501279;,\r\n\t\t\t0.190029;0.670175;0.371280;,\r\n\t\t\t0.270029;0.470175;0.371278;,\r\n\t\t\t-0.109983;0.590175;-0.108712;,\r\n\t\t\t-0.159983;0.470175;-0.108711;,\r\n\t\t\t-0.169967;0.650175;0.501290;,\r\n\t\t\t0.170033;0.300175;0.501280;,\r\n\t\t\t0.140043;0.470175;0.871281;,\r\n\t\t\t-0.139957;0.470175;0.871289;,\r\n\t\t\t-0.139937;0.410175;1.631289;,\r\n\t\t\t0.200062;0.560175;1.621280;,\r\n\t\t\t-0.269979;0.470175;0.061292;,\r\n\t\t\t0.270021;0.470175;0.061278;,\r\n\t\t\t-0.039970;0.040175;0.391286;,\r\n\t\t\t-0.039970;0.250175;0.391286;,\r\n\t\t\t0.160017;0.470175;-0.108719;,\r\n\t\t\t-0.199938;0.560175;1.621290;;\r\n\r\n\t\t\t56;\r\n\t\t\t4; 3,2,1,0;,\r\n\t\t\t4; 5,4,2,3;,\r\n\t\t\t3; 8,7,6;,\r\n\t\t\t4; 10,9,8,6;,\r\n\t\t\t4; 14,13,12,11;,\r\n\t\t\t4; 17,16,14,15;,\r\n\t\t\t4; 20,19,10,18;,\r\n\t\t\t3; 23,22,21;,\r\n\t\t\t4; 27,26,25,24;,\r\n\t\t\t4; 29,28,23,21;,\r\n\t\t\t4; 32,31,29,30;,\r\n\t\t\t4; 35,34,27,33;,\r\n\t\t\t4; 38,37,35,36;,\r\n\t\t\t4; 41,40,32,39;,\r\n\t\t\t3; 43,42,8;,\r\n\t\t\t4; 17,38,36,44;,\r\n\t\t\t4; 20,41,39,45;,\r\n\t\t\t4; 39,32,30,46;,\r\n\t\t\t4; 36,35,33,47;,\r\n\t\t\t4; 33,27,24,48;,\r\n\t\t\t4; 30,29,21,22;,\r\n\t\t\t3; 22,25,49;,\r\n\t\t\t4; 38,17,15,50;,\r\n\t\t\t4; 41,20,18,51;,\r\n\t\t\t4; 18,10,6,7;,\r\n\t\t\t4; 15,14,11,42;,\r\n\t\t\t4; 42,12,7,8;,\r\n\t\t\t4; 52,5,3,0;,\r\n\t\t\t4; 52,53,4,5;,\r\n\t\t\t4; 0,1,53,52;,\r\n\t\t\t3; 7,12,54;,\r\n\t\t\t4; 9,50,43,8;,\r\n\t\t\t4; 13,51,54,12;,\r\n\t\t\t4; 16,40,13,14;,\r\n\t\t\t4; 19,37,9,10;,\r\n\t\t\t3; 48,23,55;,\r\n\t\t\t4; 26,46,49,25;,\r\n\t\t\t4; 28,47,55,23;,\r\n\t\t\t4; 31,44,28,29;,\r\n\t\t\t4; 34,45,26,27;,\r\n\t\t\t4; 37,19,34,35;,\r\n\t\t\t4; 40,16,31,32;,\r\n\t\t\t4; 25,22,23,48;,\r\n\t\t\t4; 16,17,44,31;,\r\n\t\t\t4; 19,20,45,34;,\r\n\t\t\t4; 45,39,46,26;,\r\n\t\t\t4; 44,36,47,28;,\r\n\t\t\t4; 47,33,48,55;,\r\n\t\t\t4; 46,30,22,49;,\r\n\t\t\t3; 25,48,24;,\r\n\t\t\t4; 37,38,50,9;,\r\n\t\t\t4; 40,41,51,13;,\r\n\t\t\t4; 51,18,7,54;,\r\n\t\t\t4; 50,15,42,43;,\r\n\t\t\t3; 12,42,11;,\r\n\t\t\t4; 4,53,1,2;;\r\n  MeshNormals {\r\n    53;\r\n  0.000;0.000;1.000;,\r\n  0.000;1.000;0.000;,\r\n  -1.000;0.000;0.000;,\r\n  -0.000;0.000;-1.000;,\r\n  1.000;0.000;-0.000;,\r\n  -0.013;0.111;0.994;,\r\n  0.001;-0.564;-0.826;,\r\n  0.388;-0.389;-0.836;,\r\n  -0.389;-0.388;-0.836;,\r\n  -0.682;-0.681;-0.268;,\r\n  0.001;-0.963;-0.269;,\r\n  -0.001;0.564;-0.826;,\r\n  0.394;0.385;-0.835;,\r\n  0.687;0.675;-0.270;,\r\n  -0.001;0.963;-0.269;,\r\n  -0.687;0.676;-0.268;,\r\n  -0.000;0.994;0.107;,\r\n  -0.709;0.697;0.108;,\r\n  0.681;-0.682;-0.268;,\r\n  -0.001;-0.996;0.090;,\r\n  0.703;-0.703;0.107;,\r\n  0.000;0.164;0.986;,\r\n  0.714;0.679;-0.170;,\r\n  0.001;0.977;-0.214;,\r\n  0.000;-1.000;0.014;,\r\n  0.708;-0.706;-0.005;,\r\n  -0.715;0.679;-0.168;,\r\n  -0.001;-0.986;0.165;,\r\n  -0.725;0.687;0.056;,\r\n  -0.996;-0.017;-0.092;,\r\n  0.723;0.688;0.054;,\r\n  0.001;0.969;0.246;,\r\n  0.691;0.679;0.246;,\r\n  -0.704;-0.696;0.142;,\r\n  -0.002;-0.972;0.235;,\r\n  -0.695;-0.681;0.230;,\r\n  -0.969;-0.009;0.246;,\r\n  -0.704;-0.705;0.089;,\r\n  -0.994;-0.009;0.107;,\r\n  0.970;-0.009;0.245;,\r\n  0.709;0.697;0.107;,\r\n  0.994;-0.008;0.107;,\r\n  -0.395;0.387;-0.833;,\r\n  -0.562;-0.007;-0.827;,\r\n  -0.692;0.678;0.248;,\r\n  0.694;-0.677;0.246;,\r\n  0.996;-0.018;-0.090;,\r\n  0.560;-0.005;-0.828;,\r\n  -0.708;-0.707;-0.008;,\r\n  -0.083;0.099;0.992;,\r\n  -0.963;-0.009;-0.268;,\r\n  0.963;-0.008;-0.270;,\r\n  0.083;0.099;0.992;;\r\n\r\n  56;\r\n  4;0,0,0,0;,\r\n  4;4,4,4,4;,\r\n  3;8,7,6;,\r\n  4;10,9,8,6;,\r\n  4;14,13,12,11;,\r\n  4;17,16,14,15;,\r\n  4;20,19,10,18;,\r\n  3;5,5,21;,\r\n  4;27,20,25,24;,\r\n  4;1,28,26,23;,\r\n  4;32,31,1,30;,\r\n  4;35,34,27,33;,\r\n  4;38,37,35,36;,\r\n  4;41,40,32,39;,\r\n  3;43,42,8;,\r\n  4;17,38,36,44;,\r\n  4;20,41,39,45;,\r\n  4;39,32,30,41;,\r\n  4;36,35,33,38;,\r\n  4;33,27,24,48;,\r\n  4;30,1,23,22;,\r\n  3;5,5,49;,\r\n  4;38,17,15,50;,\r\n  4;41,20,18,51;,\r\n  4;18,10,6,7;,\r\n  4;15,14,11,42;,\r\n  4;42,12,7,8;,\r\n  4;24,24,24,24;,\r\n  4;3,3,3,3;,\r\n  4;2,2,2,2;,\r\n  3;7,12,47;,\r\n  4;9,50,43,8;,\r\n  4;13,51,47,12;,\r\n  4;16,40,13,14;,\r\n  4;19,37,9,10;,\r\n  3;5,5,52;,\r\n  4;20,41,46,25;,\r\n  4;28,38,29,26;,\r\n  4;31,44,28,1;,\r\n  4;34,45,20,27;,\r\n  4;37,19,34,35;,\r\n  4;40,16,31,32;,\r\n  4;5,5,5,5;,\r\n  4;16,17,44,31;,\r\n  4;19,20,45,34;,\r\n  4;45,39,41,20;,\r\n  4;44,36,38,28;,\r\n  4;38,33,48,29;,\r\n  4;41,30,22,46;,\r\n  3;5,5,21;,\r\n  4;37,38,50,9;,\r\n  4;40,41,51,13;,\r\n  4;51,18,7,47;,\r\n  4;50,15,42,43;,\r\n  3;12,42,11;,\r\n  4;1,1,1,1;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t56;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial black {\r\n\t\t\t\t\t0.002000;0.002000;0.002000;1.000000;;\r\n\t\t\t\t\t157.360000;\r\n\t\t\t\t\t0.518400;0.518400;0.518400;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame skid {\r\n\t\tMesh mesh-skid {\r\n\t\t\t112;\r\n\t\t\t-0.850036;-1.169825;-2.098693;,\r\n\t\t\t-0.350035;-1.169825;-2.098706;,\r\n\t\t\t-0.350035;-1.089825;-2.098706;,\r\n\t\t\t-0.850036;-1.089825;-2.098693;,\r\n\t\t\t-0.849981;-1.169825;-0.018693;,\r\n\t\t\t-0.349981;-1.169825;-0.018706;,\r\n\t\t\t-0.349981;-1.089825;-0.018706;,\r\n\t\t\t-0.849981;-1.089825;-0.018693;,\r\n\t\t\t-0.929983;-1.089825;-0.118691;,\r\n\t\t\t-0.929981;-1.089825;-0.018691;,\r\n\t\t\t-0.849983;-1.089825;-0.118693;,\r\n\t\t\t-0.929983;-1.169825;-0.118691;,\r\n\t\t\t-0.849983;-1.169825;-0.118693;,\r\n\t\t\t-0.850038;-1.169825;-2.178693;,\r\n\t\t\t-0.850036;-1.419825;-2.098693;,\r\n\t\t\t-0.850038;-1.419825;-2.178693;,\r\n\t\t\t-0.849981;-1.419825;-0.018693;,\r\n\t\t\t-0.849983;-1.419825;-0.118693;,\r\n\t\t\t-0.849983;-1.499825;-0.118693;,\r\n\t\t\t-0.929983;-1.499825;-0.118691;,\r\n\t\t\t-0.930036;-1.499825;-2.098691;,\r\n\t\t\t-0.850036;-1.499825;-2.098693;,\r\n\t\t\t-0.930038;-1.499825;-2.178691;,\r\n\t\t\t-0.850038;-1.499825;-2.178693;,\r\n\t\t\t-0.929978;-1.419825;0.071309;,\r\n\t\t\t-0.849978;-1.419825;0.071307;,\r\n\t\t\t-0.929981;-1.419825;-0.018691;,\r\n\t\t\t-0.849981;-1.499825;-0.018693;,\r\n\t\t\t-0.850088;-1.129825;-4.088693;,\r\n\t\t\t-0.850088;-1.049825;-4.088693;,\r\n\t\t\t-0.850077;-1.309825;-3.688693;,\r\n\t\t\t-0.850077;-1.389825;-3.688693;,\r\n\t\t\t-0.930077;-1.389825;-3.688691;,\r\n\t\t\t-0.850068;-1.499825;-3.318693;,\r\n\t\t\t-0.930068;-1.499825;-3.318690;,\r\n\t\t\t-0.930038;-1.419825;-2.178691;,\r\n\t\t\t-0.850068;-1.419825;-3.318693;,\r\n\t\t\t-0.930068;-1.419825;-3.318690;,\r\n\t\t\t0.350017;-1.169825;-0.118724;,\r\n\t\t\t0.350017;-1.089825;-0.118724;,\r\n\t\t\t0.350019;-1.089825;-0.018724;,\r\n\t\t\t0.350019;-1.169825;-0.018724;,\r\n\t\t\t0.849962;-1.089825;-2.178737;,\r\n\t\t\t0.349962;-1.089825;-2.178724;,\r\n\t\t\t0.349962;-1.169825;-2.178724;,\r\n\t\t\t0.849962;-1.169825;-2.178737;,\r\n\t\t\t0.850017;-1.089825;-0.118737;,\r\n\t\t\t0.850017;-1.169825;-0.118737;,\r\n\t\t\t0.849964;-1.169825;-2.098737;,\r\n\t\t\t0.849964;-1.089825;-2.098737;,\r\n\t\t\t0.929964;-1.089825;-2.098739;,\r\n\t\t\t0.929964;-1.169825;-2.098739;,\r\n\t\t\t0.930019;-1.169825;-0.018739;,\r\n\t\t\t0.930019;-1.089825;-0.018739;,\r\n\t\t\t0.930017;-1.089825;-0.118739;,\r\n\t\t\t0.930017;-1.169825;-0.118739;,\r\n\t\t\t0.929962;-1.169825;-2.178739;,\r\n\t\t\t0.929962;-1.419825;-2.178739;,\r\n\t\t\t0.929964;-1.419825;-2.098739;,\r\n\t\t\t0.930017;-1.419825;-0.118739;,\r\n\t\t\t0.930019;-1.419825;-0.018739;,\r\n\t\t\t0.930017;-1.499825;-0.118739;,\r\n\t\t\t0.929964;-1.499825;-2.098739;,\r\n\t\t\t0.850022;-1.419825;0.071263;,\r\n\t\t\t0.850022;-1.499825;0.071263;,\r\n\t\t\t0.850019;-1.499825;-0.018737;,\r\n\t\t\t0.850019;-1.419825;-0.018737;,\r\n\t\t\t0.930019;-1.499825;-0.018739;,\r\n\t\t\t0.929912;-1.049825;-4.088739;,\r\n\t\t\t0.929912;-1.129825;-4.088739;,\r\n\t\t\t0.929923;-1.389825;-3.688740;,\r\n\t\t\t0.929923;-1.309825;-3.688740;,\r\n\t\t\t0.849923;-1.309825;-3.688737;,\r\n\t\t\t0.929932;-1.419825;-3.318739;,\r\n\t\t\t0.849932;-1.419825;-3.318737;,\r\n\t\t\t0.930022;-1.419825;0.071261;,\r\n\t\t\t0.930022;-1.499825;0.071261;,\r\n\t\t\t0.929962;-1.499825;-2.178739;,\r\n\t\t\t0.929932;-1.499825;-3.318739;,\r\n\t\t\t0.849962;-1.499825;-2.178737;,\r\n\t\t\t0.849932;-1.499825;-3.318737;,\r\n\t\t\t0.849923;-1.389825;-3.688737;,\r\n\t\t\t0.849912;-1.049825;-4.088737;,\r\n\t\t\t0.850017;-1.499825;-0.118737;,\r\n\t\t\t0.849964;-1.419825;-2.098737;,\r\n\t\t\t0.849964;-1.499825;-2.098737;,\r\n\t\t\t0.849962;-1.419825;-2.178737;,\r\n\t\t\t0.850017;-1.419825;-0.118737;,\r\n\t\t\t0.850019;-1.169825;-0.018737;,\r\n\t\t\t0.929962;-1.089825;-2.178739;,\r\n\t\t\t0.349964;-1.169825;-2.098724;,\r\n\t\t\t-0.930088;-1.129825;-4.088690;,\r\n\t\t\t-0.930088;-1.049825;-4.088690;,\r\n\t\t\t-0.930077;-1.309825;-3.688691;,\r\n\t\t\t-0.929978;-1.499825;0.071309;,\r\n\t\t\t-0.929981;-1.499825;-0.018691;,\r\n\t\t\t-0.930036;-1.419825;-2.098691;,\r\n\t\t\t-0.929983;-1.419825;-0.118691;,\r\n\t\t\t-0.930038;-1.169825;-2.178691;,\r\n\t\t\t-0.929981;-1.169825;-0.018691;,\r\n\t\t\t-0.930038;-1.089825;-2.178691;,\r\n\t\t\t-0.850038;-1.089825;-2.178693;,\r\n\t\t\t-0.349983;-1.089825;-0.118706;,\r\n\t\t\t-0.350038;-1.089825;-2.178706;,\r\n\t\t\t-0.350038;-1.169825;-2.178706;,\r\n\t\t\t-0.349983;-1.169825;-0.118706;,\r\n\t\t\t-0.930036;-1.089825;-2.098691;,\r\n\t\t\t-0.930036;-1.169825;-2.098691;,\r\n\t\t\t-0.849978;-1.499825;0.071307;,\r\n\t\t\t0.349964;-1.089825;-2.098724;,\r\n\t\t\t0.850019;-1.089825;-0.018737;,\r\n\t\t\t0.849912;-1.129825;-4.088737;;\r\n\r\n\t\t\t108;\r\n\t\t\t4; 3,2,1,0;,\r\n\t\t\t4; 7,6,5,4;,\r\n\t\t\t4; 10,7,9,8;,\r\n\t\t\t4; 12,10,8,11;,\r\n\t\t\t4; 15,14,0,13;,\r\n\t\t\t4; 17,16,4,12;,\r\n\t\t\t4; 21,20,19,18;,\r\n\t\t\t4; 23,22,20,21;,\r\n\t\t\t4; 26,16,25,24;,\r\n\t\t\t4; 17,18,27,16;,\r\n\t\t\t4; 31,30,29,28;,\r\n\t\t\t4; 34,33,31,32;,\r\n\t\t\t4; 37,36,15,35;,\r\n\t\t\t4; 41,40,39,38;,\r\n\t\t\t4; 45,44,43,42;,\r\n\t\t\t4; 47,38,39,46;,\r\n\t\t\t4; 51,50,49,48;,\r\n\t\t\t4; 55,54,53,52;,\r\n\t\t\t4; 58,57,56,51;,\r\n\t\t\t4; 60,59,55,52;,\r\n\t\t\t4; 62,58,59,61;,\r\n\t\t\t4; 66,65,64,63;,\r\n\t\t\t4; 61,59,60,67;,\r\n\t\t\t4; 71,70,69,68;,\r\n\t\t\t4; 74,73,71,72;,\r\n\t\t\t4; 76,75,63,64;,\r\n\t\t\t4; 78,73,57,77;,\r\n\t\t\t4; 80,78,77,79;,\r\n\t\t\t4; 80,74,72,81;,\r\n\t\t\t4; 72,71,68,82;,\r\n\t\t\t4; 83,61,67,65;,\r\n\t\t\t4; 65,67,76,64;,\r\n\t\t\t4; 86,79,85,84;,\r\n\t\t\t4; 84,85,83,87;,\r\n\t\t\t4; 66,60,52,88;,\r\n\t\t\t4; 84,58,51,48;,\r\n\t\t\t4; 56,89,50,51;,\r\n\t\t\t4; 42,49,50,89;,\r\n\t\t\t4; 88,41,38,47;,\r\n\t\t\t4; 48,90,44,45;,\r\n\t\t\t4; 23,15,36,33;,\r\n\t\t\t4; 92,91,28,29;,\r\n\t\t\t4; 37,34,32,93;,\r\n\t\t\t4; 32,31,28,91;,\r\n\t\t\t4; 95,26,24,94;,\r\n\t\t\t4; 22,35,96,20;,\r\n\t\t\t4; 96,14,17,97;,\r\n\t\t\t4; 97,17,12,11;,\r\n\t\t\t4; 35,15,13,98;,\r\n\t\t\t4; 99,9,7,4;,\r\n\t\t\t4; 13,101,100,98;,\r\n\t\t\t4; 10,102,6,7;,\r\n\t\t\t4; 101,103,2,3;,\r\n\t\t\t4; 1,2,103,104;,\r\n\t\t\t4; 0,1,104,13;,\r\n\t\t\t4; 4,5,105,12;,\r\n\t\t\t4; 101,3,106,100;,\r\n\t\t\t4; 98,100,106,107;,\r\n\t\t\t4; 14,96,107,0;,\r\n\t\t\t4; 16,26,99,4;,\r\n\t\t\t4; 14,21,18,17;,\r\n\t\t\t4; 15,23,21,14;,\r\n\t\t\t4; 27,95,94,108;,\r\n\t\t\t4; 18,19,95,27;,\r\n\t\t\t4; 30,93,92,29;,\r\n\t\t\t4; 33,36,30,31;,\r\n\t\t\t4; 33,34,22,23;,\r\n\t\t\t4; 90,109,43,44;,\r\n\t\t\t4; 42,43,109,49;,\r\n\t\t\t4; 46,39,40,110;,\r\n\t\t\t4; 45,42,89,56;,\r\n\t\t\t4; 52,53,110,88;,\r\n\t\t\t4; 57,86,45,56;,\r\n\t\t\t4; 59,87,47,55;,\r\n\t\t\t4; 58,84,87,59;,\r\n\t\t\t4; 77,57,58,62;,\r\n\t\t\t4; 67,60,75,76;,\r\n\t\t\t4; 70,81,111,69;,\r\n\t\t\t4; 73,78,70,71;,\r\n\t\t\t4; 68,69,111,82;,\r\n\t\t\t4; 79,86,74,80;,\r\n\t\t\t4; 73,74,86,57;,\r\n\t\t\t4; 78,80,81,70;,\r\n\t\t\t4; 81,72,82,111;,\r\n\t\t\t4; 87,83,65,66;,\r\n\t\t\t4; 60,66,63,75;,\r\n\t\t\t4; 79,77,62,85;,\r\n\t\t\t4; 85,62,61,83;,\r\n\t\t\t4; 87,66,88,47;,\r\n\t\t\t4; 86,84,48,45;,\r\n\t\t\t4; 47,46,54,55;,\r\n\t\t\t4; 46,110,53,54;,\r\n\t\t\t4; 110,40,41,88;,\r\n\t\t\t4; 49,109,90,48;,\r\n\t\t\t4; 34,37,35,22;,\r\n\t\t\t4; 94,24,25,108;,\r\n\t\t\t4; 36,37,93,30;,\r\n\t\t\t4; 93,32,91,92;,\r\n\t\t\t4; 19,97,26,95;,\r\n\t\t\t4; 16,27,108,25;,\r\n\t\t\t4; 20,96,97,19;,\r\n\t\t\t4; 26,97,11,99;,\r\n\t\t\t4; 96,35,98,107;,\r\n\t\t\t4; 11,8,9,99;,\r\n\t\t\t4; 107,106,3,0;,\r\n\t\t\t4; 12,105,102,10;,\r\n\t\t\t4; 13,104,103,101;,\r\n\t\t\t4; 5,6,102,105;;\r\n  MeshNormals {\r\n    14;\r\n  -0.000;0.000;-1.000;,\r\n  0.000;0.000;1.000;,\r\n  -1.000;0.000;0.000;,\r\n  1.000;0.000;-0.000;,\r\n  0.000;1.000;0.000;,\r\n  0.000;-1.000;0.000;,\r\n  0.000;0.838;0.545;,\r\n  -0.000;-0.477;-0.879;,\r\n  -0.000;-0.908;-0.419;,\r\n  0.000;0.908;0.419;,\r\n  0.000;0.990;0.144;,\r\n  -0.000;-0.838;-0.545;,\r\n  0.000;0.477;0.879;,\r\n  -0.000;-0.990;-0.144;;\r\n\r\n  108;\r\n  4;0,0,0,0;,\r\n  4;0,0,0,0;,\r\n  4;5,5,5,5;,\r\n  4;1,1,1,1;,\r\n  4;2,2,2,2;,\r\n  4;2,2,2,2;,\r\n  4;4,4,4,4;,\r\n  4;4,4,4,4;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;2,2,2,2;,\r\n  4;10,10,9,9;,\r\n  4;13,13,5,5;,\r\n  4;2,2,2,2;,\r\n  4;0,0,0,0;,\r\n  4;0,0,0,0;,\r\n  4;1,1,1,1;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;2,2,2,2;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;10,10,9,9;,\r\n  4;1,1,1,1;,\r\n  4;3,3,3,3;,\r\n  4;13,13,5,5;,\r\n  4;2,2,2,2;,\r\n  4;9,9,6,6;,\r\n  4;5,5,5,5;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;2,2,2,2;,\r\n  4;1,1,1,1;,\r\n  4;1,1,1,1;,\r\n  4;3,3,3,3;,\r\n  4;4,4,4,4;,\r\n  4;5,5,5,5;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;1,12,12,1;,\r\n  4;3,3,3,3;,\r\n  4;9,9,12,12;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;5,5,5,5;,\r\n  4;1,1,1,1;,\r\n  4;1,1,1,1;,\r\n  4;0,0,0,0;,\r\n  4;1,1,1,1;,\r\n  4;5,5,5,5;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;4,4,4,4;,\r\n  4;4,4,4,4;,\r\n  4;5,5,5,5;,\r\n  4;3,3,3,3;,\r\n  4;0,0,0,0;,\r\n  4;0,0,0,0;,\r\n  4;2,2,2,2;,\r\n  4;2,2,2,2;,\r\n  4;4,4,4,4;,\r\n  4;4,4,4,4;,\r\n  4;8,8,11,11;,\r\n  4;2,2,2,2;,\r\n  4;10,10,4,4;,\r\n  4;2,2,2,2;,\r\n  4;4,4,4,4;,\r\n  4;4,4,4,4;,\r\n  4;0,0,0,0;,\r\n  4;1,1,1,1;,\r\n  4;0,0,0,0;,\r\n  4;0,0,0,0;,\r\n  4;4,4,4,4;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;8,8,7,7;,\r\n  4;3,3,3,3;,\r\n  4;0,7,7,0;,\r\n  4;2,2,2,2;,\r\n  4;10,10,4,4;,\r\n  4;13,13,8,8;,\r\n  4;2,2,2,2;,\r\n  4;2,2,2,2;,\r\n  4;4,4,4,4;,\r\n  4;5,5,5,5;,\r\n  4;5,5,5,5;,\r\n  4;2,2,2,2;,\r\n  4;2,2,2,2;,\r\n  4;0,0,0,0;,\r\n  4;4,4,4,4;,\r\n  4;1,1,1,1;,\r\n  4;1,1,1,1;,\r\n  4;3,3,3,3;,\r\n  4;0,0,0,0;,\r\n  4;13,13,8,8;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;2,2,2,2;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;3,3,3,3;,\r\n  4;0,0,0,0;,\r\n  4;1,1,1,1;,\r\n  4;1,1,1,1;,\r\n  4;2,2,2,2;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t108;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial grey {\r\n                                        0.183700;0.183700;0.183700;1.000000;;\r\n\t\t\t\t\t65.890000;\r\n\t\t\t\t\t0.500000;0.500000;0.500000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tFrame cpit {\r\n\t\tMesh mesh-cpit {\r\n\t\t\t109;\r\n\t\t\t-0.070086;-0.639825;-4.008713;,\r\n\t\t\t-0.060086;-0.679825;-4.008713;,\r\n\t\t\t0.059914;-0.679825;-4.008717;,\r\n\t\t\t0.059914;-0.599825;-4.008717;,\r\n\t\t\t-0.060086;-0.599825;-4.008713;,\r\n\t\t\t0.519985;0.210175;-1.318729;,\r\n\t\t\t0.459982;-0.209825;-1.428727;,\r\n\t\t\t0.229982;-0.239825;-1.438721;,\r\n\t\t\t0.279985;0.260175;-1.308722;,\r\n\t\t\t-0.770025;-0.599825;-1.718695;,\r\n\t\t\t-0.810026;0.110175;-1.718694;,\r\n\t\t\t-0.620016;0.130175;-1.338699;,\r\n\t\t\t-0.370026;0.530175;-1.718705;,\r\n\t\t\t-0.280015;0.260175;-1.308708;,\r\n\t\t\t-0.520015;0.210175;-1.318701;,\r\n\t\t\t0.369974;0.530175;-1.718725;,\r\n\t\t\t0.619985;0.130175;-1.338731;,\r\n\t\t\t0.809974;0.110175;-1.718736;,\r\n\t\t\t0.769974;-0.599825;-1.718735;,\r\n\t\t\t0.609975;-0.959825;-1.718731;,\r\n\t\t\t0.299975;-1.059825;-1.718723;,\r\n\t\t\t-0.610026;-0.959825;-1.718699;,\r\n\t\t\t-0.300026;-1.059825;-1.718707;,\r\n\t\t\t-0.310031;-1.229825;-1.918707;,\r\n\t\t\t-0.620031;-1.119825;-1.918699;,\r\n\t\t\t-0.680026;0.380175;-1.718697;,\r\n\t\t\t-0.690031;0.390175;-1.918697;,\r\n\t\t\t-0.380031;0.560175;-1.918705;,\r\n\t\t\t0.829969;0.080175;-1.918737;,\r\n\t\t\t0.779969;-0.709825;-1.918735;,\r\n\t\t\t0.309969;-1.229825;-1.918723;,\r\n\t\t\t0.619969;-1.119825;-1.918731;,\r\n\t\t\t0.619957;-1.119825;-2.368731;,\r\n\t\t\t0.309957;-1.229825;-2.368723;,\r\n\t\t\t-0.830031;0.080175;-1.918693;,\r\n\t\t\t-0.780031;-0.709825;-1.918694;,\r\n\t\t\t-0.780043;-0.709825;-2.368695;,\r\n\t\t\t-0.830043;0.080175;-2.368693;,\r\n\t\t\t0.689969;0.390175;-1.918733;,\r\n\t\t\t0.379969;0.560175;-1.918725;,\r\n\t\t\t0.379957;0.560175;-2.368725;,\r\n\t\t\t0.689957;0.390175;-2.368733;,\r\n\t\t\t0.339917;-0.799825;-3.918724;,\r\n\t\t\t0.359917;-0.479825;-3.918725;,\r\n\t\t\t-0.050086;-0.569825;-4.008714;,\r\n\t\t\t-0.030086;-0.549825;-4.008714;,\r\n\t\t\t-0.160083;-0.289825;-3.918711;,\r\n\t\t\t-0.300083;-0.359825;-3.918707;,\r\n\t\t\t-0.360083;-0.479825;-3.918706;,\r\n\t\t\t-0.340083;-0.799825;-3.918706;,\r\n\t\t\t0.049914;-0.729825;-4.008716;,\r\n\t\t\t0.019914;-0.739825;-4.008715;,\r\n\t\t\t0.129917;-0.999825;-3.918718;,\r\n\t\t\t0.269917;-0.959825;-3.918722;,\r\n\t\t\t-0.130083;-0.999825;-3.918712;,\r\n\t\t\t-0.230078;-1.109825;-3.698709;,\r\n\t\t\t0.229922;-1.109825;-3.698721;,\r\n\t\t\t0.299917;-0.359825;-3.918723;,\r\n\t\t\t0.609922;-0.279825;-3.698731;,\r\n\t\t\t0.509922;-0.089825;-3.698728;,\r\n\t\t\t-0.510078;-0.089825;-3.698702;,\r\n\t\t\t-0.610078;-0.279825;-3.698699;,\r\n\t\t\t-0.460078;-1.039825;-3.698703;,\r\n\t\t\t-0.580078;-0.779825;-3.698700;,\r\n\t\t\t-0.710068;-0.769825;-3.338696;,\r\n\t\t\t-0.560068;-1.109825;-3.338700;,\r\n\t\t\t0.579922;-0.779825;-3.698730;,\r\n\t\t\t0.459922;-1.039825;-3.698727;,\r\n\t\t\t0.559932;-1.109825;-3.338730;,\r\n\t\t\t0.709932;-0.769825;-3.338734;,\r\n\t\t\t-0.340068;0.300175;-3.338706;,\r\n\t\t\t-0.280078;0.020175;-3.698708;,\r\n\t\t\t0.279922;0.020175;-3.698722;,\r\n\t\t\t0.339932;0.300175;-3.338724;,\r\n\t\t\t-0.620068;0.160175;-3.338699;,\r\n\t\t\t-0.380055;0.480175;-2.858705;,\r\n\t\t\t-0.690055;0.310175;-2.858697;,\r\n\t\t\t-0.280068;-1.199825;-3.338708;,\r\n\t\t\t-0.620055;-1.129825;-2.858699;,\r\n\t\t\t-0.310055;-1.229825;-2.858707;,\r\n\t\t\t0.749932;-0.099825;-3.338735;,\r\n\t\t\t0.779944;-0.739825;-2.858735;,\r\n\t\t\t0.829944;0.020175;-2.858737;,\r\n\t\t\t-0.780055;-0.739825;-2.858694;,\r\n\t\t\t-0.830055;0.020175;-2.858693;,\r\n\t\t\t-0.690043;0.390175;-2.368697;,\r\n\t\t\t0.829957;0.080175;-2.368737;,\r\n\t\t\t0.779957;-0.709825;-2.368736;,\r\n\t\t\t-0.620043;-1.119825;-2.368699;,\r\n\t\t\t0.379945;0.480175;-2.858725;,\r\n\t\t\t-0.380043;0.560175;-2.368705;,\r\n\t\t\t0.619945;-1.129825;-2.858731;,\r\n\t\t\t0.279932;-1.199825;-3.338722;,\r\n\t\t\t0.309945;-1.229825;-2.858723;,\r\n\t\t\t-0.750068;-0.099825;-3.338695;,\r\n\t\t\t0.619932;0.160175;-3.338731;,\r\n\t\t\t0.689945;0.310175;-2.858733;,\r\n\t\t\t0.159917;-0.289825;-3.918719;,\r\n\t\t\t-0.050086;-0.729825;-4.008714;,\r\n\t\t\t-0.270083;-0.959825;-3.918708;,\r\n\t\t\t0.029914;-0.549825;-4.008716;,\r\n\t\t\t0.679974;0.380175;-1.718733;,\r\n\t\t\t0.589983;-0.089825;-1.398730;,\r\n\t\t\t-0.590017;-0.089825;-1.398699;,\r\n\t\t\t-0.460018;-0.209825;-1.428703;,\r\n\t\t\t-0.230018;-0.239825;-1.438709;,\r\n\t\t\t0.049914;-0.569825;-4.008716;,\r\n\t\t\t-0.310043;-1.229825;-2.368707;,\r\n\t\t\t-0.020086;-0.739825;-4.008715;;\r\n\r\n\t\t\t114;\r\n\t\t\t5; 4,3,2,1,0;,\r\n\t\t\t4; 8,7,6,5;,\r\n\t\t\t3; 11,10,9;,\r\n\t\t\t3; 14,13,12;,\r\n\t\t\t3; 15,8,5;,\r\n\t\t\t3; 18,17,16;,\r\n\t\t\t4; 20,19,6,7;,\r\n\t\t\t4; 24,23,22,21;,\r\n\t\t\t4; 27,26,25,12;,\r\n\t\t\t4; 29,28,17,18;,\r\n\t\t\t4; 33,32,31,30;,\r\n\t\t\t4; 37,36,35,34;,\r\n\t\t\t4; 41,40,39,38;,\r\n\t\t\t4; 43,42,2,3;,\r\n\t\t\t4; 47,46,45,44;,\r\n\t\t\t4; 49,48,0,1;,\r\n\t\t\t4; 53,52,51,50;,\r\n\t\t\t4; 56,55,54,52;,\r\n\t\t\t4; 59,58,43,57;,\r\n\t\t\t4; 61,60,47,48;,\r\n\t\t\t4; 65,64,63,62;,\r\n\t\t\t4; 69,68,67,66;,\r\n\t\t\t4; 73,72,71,70;,\r\n\t\t\t4; 76,75,70,74;,\r\n\t\t\t4; 79,78,65,77;,\r\n\t\t\t4; 82,81,69,80;,\r\n\t\t\t4; 37,84,83,36;,\r\n\t\t\t4; 84,37,85,76;,\r\n\t\t\t4; 87,81,82,86;,\r\n\t\t\t4; 78,88,36,83;,\r\n\t\t\t4; 75,90,40,89;,\r\n\t\t\t4; 81,87,32,91;,\r\n\t\t\t4; 93,79,77,92;,\r\n\t\t\t4; 84,76,74,94;,\r\n\t\t\t4; 96,82,80,95;,\r\n\t\t\t4; 80,69,66,58;,\r\n\t\t\t4; 77,65,62,55;,\r\n\t\t\t4; 74,70,71,60;,\r\n\t\t\t4; 72,59,57,97;,\r\n\t\t\t4; 67,56,52,53;,\r\n\t\t\t4; 63,61,48,49;,\r\n\t\t\t4; 99,49,1,98;,\r\n\t\t\t4; 46,97,100,45;,\r\n\t\t\t4; 42,53,50,2;,\r\n\t\t\t4; 40,90,27,39;,\r\n\t\t\t4; 36,88,24,35;,\r\n\t\t\t4; 32,87,29,31;,\r\n\t\t\t4; 28,38,101,17;,\r\n\t\t\t4; 26,34,10,25;,\r\n\t\t\t4; 23,30,20,22;,\r\n\t\t\t4; 19,18,102,6;,\r\n\t\t\t3; 17,101,16;,\r\n\t\t\t3; 25,10,11;,\r\n\t\t\t3; 21,104,103;,\r\n\t\t\t4; 105,7,8,13;,\r\n\t\t\t4; 106,44,45,100;,\r\n\t\t\t4; 50,98,1,2;,\r\n\t\t\t4; 3,4,44,106;,\r\n\t\t\t4; 105,13,14,104;,\r\n\t\t\t3; 9,21,103;,\r\n\t\t\t3; 25,11,14;,\r\n\t\t\t4; 15,12,13,8;,\r\n\t\t\t3; 101,5,16;,\r\n\t\t\t4; 22,20,7,105;,\r\n\t\t\t4; 35,24,21,9;,\r\n\t\t\t4; 39,27,12,15;,\r\n\t\t\t4; 31,29,18,19;,\r\n\t\t\t4; 107,33,30,23;,\r\n\t\t\t4; 85,37,34,26;,\r\n\t\t\t4; 86,41,38,28;,\r\n\t\t\t4; 57,43,3,106;,\r\n\t\t\t4; 48,47,44,4;,\r\n\t\t\t4; 52,54,108,51;,\r\n\t\t\t4; 55,62,99,54;,\r\n\t\t\t4; 58,66,42,43;,\r\n\t\t\t4; 60,71,46,47;,\r\n\t\t\t4; 64,94,61,63;,\r\n\t\t\t4; 68,92,56,67;,\r\n\t\t\t4; 73,95,59,72;,\r\n\t\t\t4; 75,89,73,70;,\r\n\t\t\t4; 78,83,64,65;,\r\n\t\t\t4; 81,91,68,69;,\r\n\t\t\t4; 86,82,96,41;,\r\n\t\t\t4; 76,85,90,75;,\r\n\t\t\t4; 91,32,33,93;,\r\n\t\t\t4; 79,107,88,78;,\r\n\t\t\t4; 89,40,41,96;,\r\n\t\t\t4; 93,33,107,79;,\r\n\t\t\t4; 91,93,92,68;,\r\n\t\t\t4; 83,84,94,64;,\r\n\t\t\t4; 89,96,95,73;,\r\n\t\t\t4; 95,80,58,59;,\r\n\t\t\t4; 92,77,55,56;,\r\n\t\t\t4; 94,74,60,61;,\r\n\t\t\t4; 71,72,97,46;,\r\n\t\t\t4; 66,67,53,42;,\r\n\t\t\t4; 62,63,49,99;,\r\n\t\t\t4; 54,99,98,108;,\r\n\t\t\t3; 48,4,0;,\r\n\t\t\t4; 97,57,106,100;,\r\n\t\t\t4; 87,86,28,29;,\r\n\t\t\t4; 90,85,26,27;,\r\n\t\t\t4; 88,107,23,24;,\r\n\t\t\t4; 30,31,19,20;,\r\n\t\t\t4; 38,39,15,101;,\r\n\t\t\t4; 34,35,9,10;,\r\n\t\t\t4; 21,22,105,104;,\r\n\t\t\t3; 18,16,102;,\r\n\t\t\t3; 101,15,5;,\r\n\t\t\t3; 12,25,14;,\r\n\t\t\t3; 9,103,11;,\r\n\t\t\t4; 16,5,6,102;,\r\n\t\t\t4; 104,14,11,103;,\r\n\t\t\t4; 98,50,51,108;;\r\n  MeshNormals {\r\n    106;\r\n  -0.169;0.007;-0.986;,\r\n  -0.142;-0.030;-0.989;,\r\n  0.154;-0.032;-0.988;,\r\n  0.152;0.024;-0.988;,\r\n  -0.131;0.048;-0.990;,\r\n  -0.009;-0.251;0.968;,\r\n  0.238;-0.291;0.927;,\r\n  0.026;-0.294;0.956;,\r\n  0.087;0.823;0.561;,\r\n  -0.867;-0.207;0.453;,\r\n  -0.952;0.186;0.243;,\r\n  -0.552;0.106;0.827;,\r\n  -0.215;0.921;0.325;,\r\n  -0.087;0.823;0.561;,\r\n  -0.413;0.737;0.535;,\r\n  0.212;0.914;0.346;,\r\n  0.552;0.106;0.827;,\r\n  0.948;0.185;0.259;,\r\n  0.871;-0.209;0.445;,\r\n  0.561;-0.492;0.666;,\r\n  0.102;-0.584;0.805;,\r\n  -0.526;-0.473;0.707;,\r\n  -0.099;-0.573;0.814;,\r\n  -0.157;-0.930;0.333;,\r\n  -0.643;-0.714;0.276;,\r\n  -0.689;0.678;0.255;,\r\n  -0.734;0.679;0.025;,\r\n  -0.249;0.967;0.055;,\r\n  0.985;0.167;0.046;,\r\n  0.967;-0.237;0.098;,\r\n  0.158;-0.932;0.326;,\r\n  0.647;-0.719;0.252;,\r\n  0.697;-0.717;0.011;,\r\n  0.170;-0.985;0.005;,\r\n  -0.985;0.167;0.031;,\r\n  -0.964;-0.235;0.121;,\r\n  -0.977;-0.214;0.004;,\r\n  -0.982;0.188;-0.012;,\r\n  0.733;0.678;0.058;,\r\n  0.248;0.966;0.077;,\r\n  0.245;0.967;-0.078;,\r\n  0.721;0.691;-0.052;,\r\n  0.511;-0.143;-0.848;,\r\n  0.478;0.074;-0.875;,\r\n  -0.111;0.109;-0.988;,\r\n  -0.040;0.187;-0.981;,\r\n  -0.098;0.440;-0.893;,\r\n  -0.312;0.307;-0.899;,\r\n  -0.480;0.076;-0.874;,\r\n  -0.509;-0.141;-0.849;,\r\n  0.121;-0.136;-0.983;,\r\n  0.020;-0.174;-0.984;,\r\n  0.082;-0.652;-0.754;,\r\n  0.360;-0.488;-0.795;,\r\n  -0.083;-0.653;-0.753;,\r\n  -0.147;-0.916;-0.372;,\r\n  0.147;-0.915;-0.376;,\r\n  0.309;0.304;-0.901;,\r\n  0.781;0.144;-0.607;,\r\n  0.518;0.494;-0.698;,\r\n  -0.517;0.493;-0.700;,\r\n  -0.781;0.144;-0.608;,\r\n  -0.593;-0.653;-0.471;,\r\n  -0.827;-0.201;-0.526;,\r\n  -0.948;-0.224;-0.227;,\r\n  -0.660;-0.724;-0.202;,\r\n  0.825;-0.201;-0.528;,\r\n  0.592;-0.650;-0.476;,\r\n  0.658;-0.722;-0.213;,\r\n  0.946;-0.223;-0.233;,\r\n  -0.210;0.848;-0.487;,\r\n  -0.160;0.670;-0.725;,\r\n  0.161;0.670;-0.724;,\r\n  0.211;0.851;-0.480;,\r\n  -0.643;0.625;-0.443;,\r\n  -0.243;0.936;-0.255;,\r\n  -0.717;0.666;-0.206;,\r\n  -0.155;-0.975;-0.162;,\r\n  -0.692;-0.721;-0.049;,\r\n  -0.165;-0.986;-0.036;,\r\n  0.929;0.189;-0.319;,\r\n  0.974;-0.219;-0.062;,\r\n  0.974;0.195;-0.115;,\r\n  -0.974;-0.219;-0.062;,\r\n  -0.975;0.189;-0.117;,\r\n  -0.725;0.687;-0.052;,\r\n  0.981;0.195;-0.014;,\r\n  0.977;-0.214;0.006;,\r\n  -0.697;-0.717;0.002;,\r\n  0.243;0.937;-0.249;,\r\n  -0.245;0.967;-0.078;,\r\n  0.692;-0.721;-0.046;,\r\n  0.155;-0.974;-0.165;,\r\n  0.109;0.106;-0.988;,\r\n  -0.927;0.189;-0.325;,\r\n  0.646;0.629;-0.432;,\r\n  0.713;0.673;-0.199;,\r\n  0.097;0.437;-0.894;,\r\n  -0.118;-0.135;-0.984;,\r\n  -0.357;-0.489;-0.796;,\r\n  0.039;0.185;-0.982;,\r\n  0.683;0.671;0.289;,\r\n  0.360;-0.283;0.889;,\r\n  -0.291;-0.293;0.911;,\r\n  -0.056;-0.299;0.953;,\r\n  0.413;0.737;0.535;;\r\n\r\n  114;\r\n  5;4,3,2,1,0;,\r\n  4;5,7,6,5;,\r\n  3;11,10,9;,\r\n  3;14,13,12;,\r\n  3;15,8,105;,\r\n  3;18,17,16;,\r\n  4;20,19,6,7;,\r\n  4;24,23,22,21;,\r\n  4;27,26,25,12;,\r\n  4;29,28,17,18;,\r\n  4;33,32,31,30;,\r\n  4;37,36,35,34;,\r\n  4;41,40,39,38;,\r\n  4;43,42,2,3;,\r\n  4;47,46,45,44;,\r\n  4;49,48,0,1;,\r\n  4;53,52,51,50;,\r\n  4;56,55,54,52;,\r\n  4;59,58,43,57;,\r\n  4;61,60,47,48;,\r\n  4;65,64,63,62;,\r\n  4;69,68,67,66;,\r\n  4;73,72,71,70;,\r\n  4;76,75,70,74;,\r\n  4;79,78,65,77;,\r\n  4;82,81,69,80;,\r\n  4;37,84,83,36;,\r\n  4;84,37,85,76;,\r\n  4;87,81,82,86;,\r\n  4;78,88,36,83;,\r\n  4;75,90,40,89;,\r\n  4;81,87,32,91;,\r\n  4;33,79,77,92;,\r\n  4;84,76,74,94;,\r\n  4;96,82,80,95;,\r\n  4;80,69,66,58;,\r\n  4;77,65,62,55;,\r\n  4;74,70,71,60;,\r\n  4;72,59,57,97;,\r\n  4;67,56,52,53;,\r\n  4;63,61,48,49;,\r\n  4;99,49,1,98;,\r\n  4;46,97,100,45;,\r\n  4;42,53,50,2;,\r\n  4;40,90,27,39;,\r\n  4;36,88,24,35;,\r\n  4;32,87,29,31;,\r\n  4;28,38,101,17;,\r\n  4;26,34,10,25;,\r\n  4;23,30,20,22;,\r\n  4;19,18,102,6;,\r\n  3;17,101,16;,\r\n  3;25,10,11;,\r\n  3;21,104,103;,\r\n  4;5,7,5,5;,\r\n  4;93,44,45,100;,\r\n  4;50,98,1,2;,\r\n  4;3,4,44,93;,\r\n  4;5,5,5,104;,\r\n  3;9,21,103;,\r\n  3;25,11,14;,\r\n  4;15,12,13,8;,\r\n  3;101,105,16;,\r\n  4;22,20,7,5;,\r\n  4;35,24,21,9;,\r\n  4;39,27,12,15;,\r\n  4;31,29,18,19;,\r\n  4;79,33,30,23;,\r\n  4;85,37,34,26;,\r\n  4;86,41,38,28;,\r\n  4;57,43,3,93;,\r\n  4;48,47,44,4;,\r\n  4;52,54,51,51;,\r\n  4;55,62,99,54;,\r\n  4;58,66,42,43;,\r\n  4;60,71,46,47;,\r\n  4;64,94,61,63;,\r\n  4;68,92,56,67;,\r\n  4;73,95,59,72;,\r\n  4;75,89,73,70;,\r\n  4;78,83,64,65;,\r\n  4;81,91,68,69;,\r\n  4;86,82,96,41;,\r\n  4;76,85,90,75;,\r\n  4;91,32,33,33;,\r\n  4;79,79,88,78;,\r\n  4;89,40,41,96;,\r\n  4;33,33,79,79;,\r\n  4;91,33,92,68;,\r\n  4;83,84,94,64;,\r\n  4;89,96,95,73;,\r\n  4;95,80,58,59;,\r\n  4;92,77,55,56;,\r\n  4;94,74,60,61;,\r\n  4;71,72,97,46;,\r\n  4;66,67,53,42;,\r\n  4;62,63,49,99;,\r\n  4;54,99,98,51;,\r\n  3;48,4,0;,\r\n  4;97,57,93,100;,\r\n  4;87,86,28,29;,\r\n  4;90,85,26,27;,\r\n  4;88,79,23,24;,\r\n  4;30,31,19,20;,\r\n  4;38,39,15,101;,\r\n  4;34,35,9,10;,\r\n  4;21,22,5,104;,\r\n  3;18,16,102;,\r\n  3;101,15,105;,\r\n  3;12,25,14;,\r\n  3;9,103,11;,\r\n  4;16,5,6,102;,\r\n  4;104,5,11,103;,\r\n  4;98,50,51,51;;\r\n\r\n}\r\n\r\n\t\t\tMeshMaterialList {\r\n\t\t\t\t1;\r\n\t\t\t114;\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0,\r\n\t\t\t\t0;;\r\n\t\t\t\tMaterial red {\r\n\t\t\t\t\t0.771400;0.000000;0.000000;1.000000;;\r\n\t\t\t\t\t136.430000;\r\n\t\t\t\t\t0.885700;0.000000;0.000000;;\r\n\t\t\t\t\t0.000000;0.000000;0.000000;;\r\n\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n"
  },
  {
    "path": "common/Addons/DXTest/DX9StencilMirror/seafloor.x",
    "content": "xof 0302txt 0064\r\nHeader {\r\n 1;\r\n 0;\r\n 1;\r\n}\r\n\r\n\r\nFrame x3ds_SeaFloor\r\n{\r\n FrameTransformMatrix\r\n {\r\n   1.000000,  0.000000, 0.000000, 0.000000,\r\n   0.000000,  1.000000, 0.000000, 0.000000,\r\n   0.000000,  0.000000, 1.000000, 0.000000,\r\n   0.000000,-10.000000, 0.000000, 1.000000;;\r\n }\r\n Mesh SeaFloor\r\n {\r\n   1490;\r\n   -14.285719;-0.135096;-100.000000;,\r\n   14.285709;-1.018934;-100.000000;,\r\n   -71.428574;-0.307925;-71.428574;,\r\n   -42.857147;-0.273623;-71.428574;,\r\n   -14.285719;-0.105719;-71.428574;,\r\n   14.285709;-0.833857;-71.428574;,\r\n   42.857140;-0.314925;-71.428574;,\r\n   71.428566;-0.882375;-71.428574;,\r\n   -71.428574;0.237553;-42.857147;,\r\n   -42.857147;0.431774;-42.857147;,\r\n   -14.285719;0.101133;-42.857147;,\r\n   14.285709;-0.082143;-42.857147;,\r\n   42.857140;0.526248;-42.857147;,\r\n   71.428566;0.188181;-42.857147;,\r\n   -100.000000;0.713668;-14.285719;,\r\n   -71.428574;0.809312;-14.285719;,\r\n   -42.857147;0.912310;-14.285719;,\r\n   -14.285719;0.613536;-14.285719;,\r\n   14.285709;0.520900;-14.285719;,\r\n   42.857140;0.942775;-14.285719;,\r\n   71.428566;0.305558;-14.285719;,\r\n   99.999992;0.135099;-14.285719;,\r\n   -100.000000;0.004447;14.285709;,\r\n   -71.428574;0.556757;14.285709;,\r\n   -42.857147;0.392118;14.285709;,\r\n   -14.285719;0.736304;14.285709;,\r\n   14.285709;-0.197491;14.285709;,\r\n   42.857140;-0.282111;14.285709;,\r\n   71.428566;-0.590892;14.285709;,\r\n   99.999992;-0.408245;14.285709;,\r\n   -71.428574;-0.323118;42.857140;,\r\n   -42.857147;-0.008600;42.857140;,\r\n   -14.285719;0.211306;42.857140;,\r\n   14.285709;0.301397;42.857140;,\r\n   42.857140;-0.261847;42.857140;,\r\n   71.428566;-0.276548;42.857140;,\r\n   -71.428574;-0.643011;71.428566;,\r\n   -42.857147;-0.224026;71.428566;,\r\n   -14.285719;-0.347621;71.428566;,\r\n   14.285709;-0.445051;71.428566;,\r\n   42.857140;-0.962680;71.428566;,\r\n   71.428566;-0.550829;71.428566;,\r\n   -14.285719;0.097598;99.999992;,\r\n   14.285709;-0.334380;99.999992;,\r\n   -76.190468;-0.350025;-71.428574;,\r\n   -42.857143;-0.441021;-90.476181;,\r\n   -42.857147;-0.907937;-85.714287;,\r\n   -42.857147;-1.142959;-80.952377;,\r\n   -42.857147;-1.552437;-76.190475;,\r\n   -47.619049;-0.468403;-71.428574;,\r\n   -52.380955;-0.233633;-71.428558;,\r\n   -57.142860;0.234804;-71.428574;,\r\n   -61.904766;0.256296;-71.428574;,\r\n   -66.666672;-0.268906;-71.428574;,\r\n   -23.809528;0.089565;-100.000000;,\r\n   -19.047623;0.099161;-100.000000;,\r\n   -14.285719;0.203792;-95.238091;,\r\n   -14.285717;0.338728;-90.476181;,\r\n   -14.285719;0.057991;-85.714287;,\r\n   -14.285719;-0.359968;-80.952377;,\r\n   -14.285719;0.016018;-76.190475;,\r\n   -19.047621;-0.192406;-71.428574;,\r\n   -23.809525;0.134232;-71.428558;,\r\n   -28.571434;-0.406027;-71.428574;,\r\n   -33.333336;-0.182656;-71.428574;,\r\n   -38.095242;-0.113404;-71.428574;,\r\n   -9.523813;0.412146;-99.999992;,\r\n   -4.761909;0.014920;-99.999985;,\r\n   -0.000005;-0.100070;-100.000000;,\r\n   4.761901;0.085441;-100.000000;,\r\n   9.523804;-0.537958;-100.000000;,\r\n   14.285707;-1.093982;-95.238091;,\r\n   14.285707;-0.775956;-90.476181;,\r\n   14.285709;-0.471833;-85.714287;,\r\n   14.285707;0.375411;-80.952377;,\r\n   14.285709;-0.608159;-76.190475;,\r\n   9.523804;-0.531067;-71.428574;,\r\n   4.761899;-0.149243;-71.428558;,\r\n   -0.000005;0.311526;-71.428574;,\r\n   -4.761910;0.094294;-71.428574;,\r\n   -9.523813;0.247405;-71.428574;,\r\n   19.047613;-0.288111;-99.999992;,\r\n   23.809519;-0.432924;-99.999985;,\r\n   42.857136;-0.456084;-90.476181;,\r\n   42.857140;0.010033;-85.714287;,\r\n   42.857140;-0.404199;-80.952377;,\r\n   42.857140;-0.552525;-76.190475;,\r\n   38.095234;0.155982;-71.428574;,\r\n   33.333328;0.912775;-71.428558;,\r\n   28.571423;0.696381;-71.428574;,\r\n   23.809519;0.386063;-71.428574;,\r\n   19.047615;0.369331;-71.428574;,\r\n   71.428566;-0.588181;-76.190475;,\r\n   66.666656;-1.049700;-71.428574;,\r\n   61.904755;-0.913305;-71.428558;,\r\n   57.142853;0.193122;-71.428574;,\r\n   52.380947;-0.192729;-71.428574;,\r\n   47.619045;0.338611;-71.428574;,\r\n   -71.428574;-0.241318;-66.666664;,\r\n   -71.428558;-0.603029;-61.904758;,\r\n   -71.428574;-0.217375;-57.142864;,\r\n   -71.428574;0.028318;-52.380951;,\r\n   -71.428574;0.587854;-47.619053;,\r\n   -76.190468;0.561106;-42.857147;,\r\n   -80.952370;0.501583;-42.857143;,\r\n   -85.714279;0.946841;-42.857147;,\r\n   -90.476189;-0.158061;-42.857147;,\r\n   -42.857147;0.228752;-66.666664;,\r\n   -42.857143;-0.562465;-61.904758;,\r\n   -42.857147;-0.859382;-57.142864;,\r\n   -42.857147;-0.007008;-52.380951;,\r\n   -42.857147;0.154437;-47.619053;,\r\n   -47.619049;0.141752;-42.857147;,\r\n   -52.380955;0.157896;-42.857143;,\r\n   -57.142860;0.078797;-42.857147;,\r\n   -61.904766;0.214786;-42.857147;,\r\n   -66.666672;0.865034;-42.857147;,\r\n   -14.285719;0.811342;-66.666664;,\r\n   -14.285717;-0.196288;-61.904758;,\r\n   -14.285719;0.023182;-57.142864;,\r\n   -14.285719;0.091712;-52.380951;,\r\n   -14.285719;0.171870;-47.619053;,\r\n   -19.047621;0.282091;-42.857147;,\r\n   -23.809525;0.509501;-42.857143;,\r\n   -28.571434;-0.060183;-42.857147;,\r\n   -33.333336;0.406079;-42.857147;,\r\n   -38.095242;-0.392864;-42.857147;,\r\n   14.285707;0.130527;-66.666664;,\r\n   14.285707;-0.698166;-61.904758;,\r\n   14.285709;-0.182321;-57.142864;,\r\n   14.285707;-0.197670;-52.380951;,\r\n   14.285709;-0.200434;-47.619053;,\r\n   9.523804;0.031800;-42.857147;,\r\n   4.761899;0.280455;-42.857143;,\r\n   -0.000005;0.140762;-42.857147;,\r\n   -4.761910;0.591689;-42.857147;,\r\n   -9.523813;-0.218071;-42.857147;,\r\n   42.857140;-0.226362;-66.666664;,\r\n   42.857136;0.738809;-61.904758;,\r\n   42.857140;0.179423;-57.142864;,\r\n   42.857140;0.378334;-52.380951;,\r\n   42.857140;0.820125;-47.619053;,\r\n   38.095234;0.853592;-42.857147;,\r\n   33.333328;-0.018476;-42.857143;,\r\n   28.571423;1.015341;-42.857147;,\r\n   23.809519;0.538136;-42.857147;,\r\n   19.047615;-0.198490;-42.857147;,\r\n   71.428558;-0.679641;-66.666664;,\r\n   71.428558;-0.461165;-61.904758;,\r\n   71.428566;0.446923;-57.142864;,\r\n   71.428566;-0.014271;-52.380951;,\r\n   71.428566;0.207117;-47.619053;,\r\n   66.666656;0.327562;-42.857147;,\r\n   61.904755;0.103409;-42.857143;,\r\n   57.142853;-0.221917;-42.857147;,\r\n   52.380947;0.665427;-42.857147;,\r\n   47.619045;1.094022;-42.857147;,\r\n   95.238075;0.454392;-42.857147;,\r\n   90.476173;0.364723;-42.857143;,\r\n   85.714279;0.485237;-42.857147;,\r\n   80.952377;0.118603;-42.857147;,\r\n   76.190475;-0.336103;-42.857147;,\r\n   -71.428574;0.467962;-38.095242;,\r\n   -71.428558;0.764602;-33.333336;,\r\n   -71.428574;0.977364;-28.571432;,\r\n   -71.428574;1.280020;-23.809528;,\r\n   -71.428574;1.180180;-19.047623;,\r\n   -76.190468;0.880916;-14.285718;,\r\n   -80.952370;0.382879;-14.285717;,\r\n   -85.714279;0.352142;-14.285719;,\r\n   -90.476189;0.207240;-14.285719;,\r\n   -95.238098;-0.018347;-14.285719;,\r\n   -99.999992;0.251241;-19.047621;,\r\n   -99.999985;0.167263;-23.809525;,\r\n   -100.000000;0.050628;-28.571434;,\r\n   -42.857147;-0.612424;-38.095242;,\r\n   -42.857143;-0.013090;-33.333336;,\r\n   -42.857147;0.794656;-28.571432;,\r\n   -42.857147;0.799792;-23.809528;,\r\n   -42.857147;1.508822;-19.047623;,\r\n   -47.619049;0.850131;-14.285718;,\r\n   -52.380955;1.256059;-14.285717;,\r\n   -57.142860;1.383449;-14.285719;,\r\n   -61.904766;0.533856;-14.285719;,\r\n   -66.666672;1.164416;-14.285719;,\r\n   -14.285719;0.036708;-38.095242;,\r\n   -14.285717;0.592788;-33.333336;,\r\n   -14.285719;-0.055841;-28.571432;,\r\n   -14.285719;0.533173;-23.809528;,\r\n   -14.285719;0.474651;-19.047623;,\r\n   -19.047621;0.135255;-14.285718;,\r\n   -23.809525;0.747218;-14.285717;,\r\n   -28.571434;0.255237;-14.285719;,\r\n   -33.333336;0.906706;-14.285719;,\r\n   -38.095242;0.899367;-14.285719;,\r\n   14.285707;-0.142404;-38.095242;,\r\n   14.285707;0.716628;-33.333336;,\r\n   14.285709;0.651095;-28.571432;,\r\n   14.285707;1.172098;-23.809528;,\r\n   14.285709;0.759930;-19.047623;,\r\n   9.523804;0.735744;-14.285718;,\r\n   4.761899;0.725145;-14.285717;,\r\n   -0.000005;0.411798;-14.285719;,\r\n   -4.761910;0.761873;-14.285719;,\r\n   -9.523813;0.430274;-14.285719;,\r\n   42.857140;0.426968;-38.095242;,\r\n   42.857136;0.449123;-33.333336;,\r\n   42.857140;1.083668;-28.571432;,\r\n   42.857140;1.438282;-23.809528;,\r\n   42.857140;1.176020;-19.047623;,\r\n   38.095234;-0.011468;-14.285718;,\r\n   33.333328;0.612236;-14.285717;,\r\n   28.571423;1.162916;-14.285719;,\r\n   23.809519;0.809581;-14.285719;,\r\n   19.047615;0.797696;-14.285719;,\r\n   71.428558;0.957744;-38.095242;,\r\n   71.428558;0.863921;-33.333336;,\r\n   71.428566;0.919251;-28.571432;,\r\n   71.428566;0.468944;-23.809528;,\r\n   71.428566;-0.199780;-19.047623;,\r\n   66.666656;0.422344;-14.285718;,\r\n   61.904755;0.898708;-14.285717;,\r\n   57.142853;0.673347;-14.285719;,\r\n   52.380947;0.642073;-14.285719;,\r\n   47.619045;1.169447;-14.285719;,\r\n   99.999985;0.229194;-23.809528;,\r\n   99.999992;0.329644;-19.047623;,\r\n   95.238075;0.326864;-14.285718;,\r\n   90.476173;-0.572017;-14.285717;,\r\n   85.714279;-0.058216;-14.285719;,\r\n   80.952377;0.529773;-14.285719;,\r\n   76.190475;0.501918;-14.285719;,\r\n   -71.428574;0.704634;-9.523813;,\r\n   -71.428558;0.782750;-4.761908;,\r\n   -71.428574;0.557799;-0.000005;,\r\n   -71.428574;0.375774;4.761900;,\r\n   -71.428574;0.528790;9.523805;,\r\n   -76.190468;0.623954;14.285707;,\r\n   -80.952370;0.408449;14.285707;,\r\n   -85.714279;0.557152;14.285709;,\r\n   -90.476189;-0.328164;14.285708;,\r\n   -95.238098;0.071238;14.285710;,\r\n   -99.999992;0.206027;9.523804;,\r\n   -99.999985;-0.113214;4.761899;,\r\n   -100.000000;0.182745;-0.000005;,\r\n   -100.000000;0.192273;-4.761910;,\r\n   -100.000000;0.021115;-9.523813;,\r\n   -42.857147;0.755936;-9.523813;,\r\n   -42.857143;0.162534;-4.761908;,\r\n   -42.857147;0.257527;-0.000005;,\r\n   -42.857147;0.903496;4.761900;,\r\n   -42.857147;0.489498;9.523805;,\r\n   -47.619049;0.151162;14.285707;,\r\n   -52.380955;-0.193396;14.285707;,\r\n   -57.142860;1.133530;14.285709;,\r\n   -61.904766;0.626719;14.285708;,\r\n   -66.666672;0.678700;14.285710;,\r\n   -14.285719;0.429847;-9.523813;,\r\n   -14.285717;0.631708;-4.761908;,\r\n   -14.285719;1.100993;-0.000005;,\r\n   -14.285719;0.530112;4.761900;,\r\n   -14.285719;0.092696;9.523805;,\r\n   -19.047621;0.117114;14.285707;,\r\n   -23.809525;-0.007938;14.285707;,\r\n   -28.571434;-0.031347;14.285709;,\r\n   -33.333336;-0.141815;14.285708;,\r\n   -38.095242;0.261257;14.285710;,\r\n   14.285707;0.208703;-9.523813;,\r\n   14.285707;0.211788;-4.761908;,\r\n   14.285709;0.475223;-0.000005;,\r\n   14.285707;0.964629;4.761900;,\r\n   14.285709;1.008226;9.523805;,\r\n   9.523804;0.989429;14.285707;,\r\n   4.761899;0.945728;14.285707;,\r\n   -0.000005;0.221178;14.285709;,\r\n   -4.761910;0.686866;14.285708;,\r\n   -9.523813;0.626730;14.285710;,\r\n   42.857140;1.010462;-9.523813;,\r\n   42.857136;0.352587;-4.761908;,\r\n   42.857140;-0.224639;-0.000005;,\r\n   42.857140;-0.260482;4.761900;,\r\n   42.857140;0.138258;9.523805;,\r\n   38.095234;0.165571;14.285707;,\r\n   33.333328;-0.010969;14.285707;,\r\n   28.571423;-0.125291;14.285709;,\r\n   23.809519;0.187099;14.285708;,\r\n   19.047615;0.869021;14.285710;,\r\n   71.428558;0.508842;-9.523813;,\r\n   71.428558;0.840931;-4.761908;,\r\n   71.428566;0.284687;-0.000005;,\r\n   71.428566;-0.243677;4.761900;,\r\n   71.428566;-0.171505;9.523805;,\r\n   66.666656;-0.213838;14.285707;,\r\n   61.904755;0.078522;14.285707;,\r\n   57.142853;0.070022;14.285709;,\r\n   52.380947;0.182034;14.285708;,\r\n   47.619045;0.667903;14.285710;,\r\n   99.999992;0.094004;-9.523813;,\r\n   99.999985;0.379086;-4.761909;,\r\n   99.999992;0.098439;-0.000005;,\r\n   99.999985;0.297234;4.761901;,\r\n   99.999992;-0.136030;9.523805;,\r\n   95.238075;-0.306846;14.285707;,\r\n   90.476173;-0.311506;14.285707;,\r\n   85.714279;-0.168183;14.285709;,\r\n   80.952377;-0.256323;14.285708;,\r\n   76.190475;0.321061;14.285710;,\r\n   -71.428574;0.327637;19.047613;,\r\n   -71.428558;0.617808;23.809519;,\r\n   -71.428574;0.457445;28.571423;,\r\n   -71.428574;0.144485;33.333328;,\r\n   -71.428574;-0.015872;38.095234;,\r\n   -76.190468;-0.202490;42.857140;,\r\n   -80.952370;0.073814;42.857136;,\r\n   -85.714279;0.682053;42.857140;,\r\n   -90.476189;0.292514;42.857140;,\r\n   -95.238098;-0.619205;42.857140;,\r\n   -100.000000;0.331048;28.571423;,\r\n   -100.000000;-0.086507;23.809519;,\r\n   -100.000000;-0.222385;19.047615;,\r\n   -42.857147;0.343030;19.047613;,\r\n   -42.857143;0.665933;23.809519;,\r\n   -42.857147;0.723581;28.571423;,\r\n   -42.857147;0.173923;33.333328;,\r\n   -42.857147;-0.111467;38.095234;,\r\n   -47.619049;-0.099223;42.857140;,\r\n   -52.380955;0.268527;42.857136;,\r\n   -57.142860;0.327154;42.857140;,\r\n   -61.904766;0.255922;42.857140;,\r\n   -66.666672;0.127546;42.857140;,\r\n   -14.285719;0.941067;19.047613;,\r\n   -14.285717;0.404930;23.809519;,\r\n   -14.285719;0.591995;28.571423;,\r\n   -14.285719;0.895216;33.333328;,\r\n   -14.285719;0.559608;38.095234;,\r\n   -19.047621;0.156090;42.857140;,\r\n   -23.809525;0.375621;42.857136;,\r\n   -28.571434;0.320363;42.857140;,\r\n   -33.333336;-0.061159;42.857140;,\r\n   -38.095242;-0.087877;42.857140;,\r\n   14.285707;0.367362;19.047613;,\r\n   14.285707;0.127668;23.809519;,\r\n   14.285709;0.470778;28.571423;,\r\n   14.285707;0.580796;33.333328;,\r\n   14.285709;0.198341;38.095234;,\r\n   9.523804;-0.512508;42.857140;,\r\n   4.761899;0.445894;42.857136;,\r\n   -0.000005;1.368379;42.857140;,\r\n   -4.761910;1.112172;42.857140;,\r\n   -9.523813;0.619264;42.857140;,\r\n   42.857140;-0.214846;19.047613;,\r\n   42.857136;-0.014231;23.809519;,\r\n   42.857140;0.684959;28.571423;,\r\n   42.857140;-0.573070;33.333328;,\r\n   42.857140;-0.226664;38.095234;,\r\n   38.095234;0.478938;42.857140;,\r\n   33.333328;0.659463;42.857136;,\r\n   28.571423;0.218665;42.857140;,\r\n   23.809519;0.908736;42.857140;,\r\n   19.047615;0.434395;42.857140;,\r\n   71.428558;0.109958;19.047613;,\r\n   71.428558;-0.379407;23.809519;,\r\n   71.428566;-0.991344;28.571423;,\r\n   71.428566;-0.379050;33.333328;,\r\n   71.428566;-0.167809;38.095234;,\r\n   66.666656;-0.321815;42.857140;,\r\n   61.904755;-0.448380;42.857136;,\r\n   57.142853;-0.777358;42.857140;,\r\n   52.380947;-0.764991;42.857140;,\r\n   47.619045;-0.099739;42.857140;,\r\n   99.999992;-0.144340;19.047613;,\r\n   99.999985;-0.541099;23.809519;,\r\n   90.476173;-0.659219;42.857136;,\r\n   85.714279;-0.455414;42.857140;,\r\n   80.952377;-0.204183;42.857140;,\r\n   76.190475;0.194762;42.857140;,\r\n   -71.428574;0.281622;47.619041;,\r\n   -71.428558;-0.044956;52.380943;,\r\n   -71.428574;-0.720373;57.142849;,\r\n   -71.428574;-0.063963;61.904755;,\r\n   -71.428574;0.233860;66.666656;,\r\n   -76.190468;-0.093972;71.428558;,\r\n   -42.857147;-0.316298;47.619041;,\r\n   -42.857143;-0.253962;52.380943;,\r\n   -42.857147;-0.545225;57.142849;,\r\n   -42.857147;-0.607017;61.904755;,\r\n   -42.857147;-1.006271;66.666656;,\r\n   -47.619049;-0.292324;71.428558;,\r\n   -52.380955;-0.839913;71.428558;,\r\n   -57.142860;-0.282055;71.428566;,\r\n   -61.904766;-0.288374;71.428566;,\r\n   -66.666672;-0.813121;71.428566;,\r\n   -14.285719;1.076631;47.619041;,\r\n   -14.285717;0.051704;52.380943;,\r\n   -14.285719;0.258576;57.142849;,\r\n   -14.285719;-0.205593;61.904755;,\r\n   -14.285719;0.006442;66.666656;,\r\n   -19.047621;0.447580;71.428558;,\r\n   -23.809525;-0.650777;71.428558;,\r\n   -28.571434;-0.030014;71.428566;,\r\n   -33.333336;-0.474398;71.428566;,\r\n   -38.095242;-0.982600;71.428566;,\r\n   14.285707;-0.220121;47.619041;,\r\n   14.285707;-1.204683;52.380943;,\r\n   14.285709;-0.473230;57.142849;,\r\n   14.285707;-0.330069;61.904755;,\r\n   14.285709;-0.960922;66.666656;,\r\n   9.523804;-1.140873;71.428558;,\r\n   4.761899;-0.792691;71.428558;,\r\n   -0.000005;-0.404453;71.428566;,\r\n   -4.761910;0.013935;71.428566;,\r\n   -9.523813;0.088346;71.428566;,\r\n   42.857140;-0.202450;47.619041;,\r\n   42.857136;0.309247;52.380943;,\r\n   42.857140;0.242164;57.142849;,\r\n   42.857140;0.608813;61.904755;,\r\n   42.857140;0.156971;66.666656;,\r\n   38.095234;-0.075689;71.428558;,\r\n   33.333328;-0.110703;71.428558;,\r\n   28.571423;0.163211;71.428566;,\r\n   23.809519;-0.448917;71.428566;,\r\n   19.047615;-0.805722;71.428566;,\r\n   71.428558;-0.825014;47.619041;,\r\n   71.428558;-0.469043;52.380943;,\r\n   71.428566;0.034489;57.142849;,\r\n   71.428566;-0.200289;61.904755;,\r\n   71.428566;0.045184;66.666656;,\r\n   66.666656;-0.407994;71.428558;,\r\n   61.904755;-0.229676;71.428558;,\r\n   57.142853;0.593403;71.428566;,\r\n   52.380947;-0.092017;71.428566;,\r\n   47.619045;-0.035994;71.428566;,\r\n   -42.857147;-0.427180;76.190468;,\r\n   -42.857143;0.314200;80.952370;,\r\n   -42.857147;-0.057606;85.714279;,\r\n   -42.857147;0.372523;90.476181;,\r\n   -14.285719;0.019902;76.190468;,\r\n   -14.285717;-0.469934;80.952370;,\r\n   -14.285719;-0.360965;85.714279;,\r\n   -14.285719;-0.127913;90.476181;,\r\n   -14.285719;-0.098582;95.238083;,\r\n   -19.047621;-0.021066;99.999992;,\r\n   -23.809525;0.079518;99.999985;,\r\n   -28.571434;0.911401;99.999992;,\r\n   14.285707;-0.502925;76.190468;,\r\n   14.285707;-0.298658;80.952370;,\r\n   14.285709;-0.081354;85.714279;,\r\n   14.285707;-0.389222;90.476181;,\r\n   14.285709;0.108639;95.238083;,\r\n   9.523804;-0.039113;99.999992;,\r\n   4.761899;-0.055326;99.999985;,\r\n   -0.000005;0.095156;99.999992;,\r\n   -4.761910;0.063914;99.999985;,\r\n   -9.523813;-0.125103;99.999992;,\r\n   42.857140;-1.034266;76.190468;,\r\n   42.857136;-1.173705;80.952370;,\r\n   42.857140;-0.110575;85.714279;,\r\n   42.857140;0.089482;90.476181;,\r\n   23.809519;-0.215739;99.999985;,\r\n   19.047615;0.263260;99.999992;,\r\n   -47.619053;-0.896381;-90.476189;,\r\n   -57.142868;-0.328173;-85.714279;,\r\n   -52.380959;-0.656298;-85.714287;,\r\n   -47.619053;-0.432877;-85.714287;,\r\n   -61.904762;-0.513313;-80.952385;,\r\n   -57.142857;-0.960566;-80.952377;,\r\n   -52.380955;-0.566089;-80.952385;,\r\n   -47.619049;-1.267757;-80.952377;,\r\n   -66.666672;-0.336182;-76.190483;,\r\n   -61.904762;-0.397067;-76.190475;,\r\n   -57.142857;-0.479988;-76.190475;,\r\n   -52.380959;-0.531276;-76.190483;,\r\n   -47.619049;-0.742459;-76.190475;,\r\n   -38.095245;0.045469;-95.238098;,\r\n   -33.333336;0.102977;-95.238091;,\r\n   -28.571430;0.130415;-95.238091;,\r\n   -23.809528;-0.216483;-95.238106;,\r\n   -19.047625;-0.169905;-95.238091;,\r\n   -38.095245;-0.444137;-90.476181;,\r\n   -33.333332;-0.695001;-90.476196;,\r\n   -28.571432;0.611303;-90.476204;,\r\n   -23.809528;-0.606146;-90.476189;,\r\n   -19.047625;0.362023;-90.476189;,\r\n   -38.095245;-1.056779;-85.714272;,\r\n   -33.333340;-0.718648;-85.714279;,\r\n   -28.571434;0.199615;-85.714279;,\r\n   -23.809530;-0.253343;-85.714287;,\r\n   -19.047623;-0.399376;-85.714287;,\r\n   -38.095245;-0.913340;-80.952385;,\r\n   -33.333336;-0.903951;-80.952385;,\r\n   -28.571436;-0.603099;-80.952377;,\r\n   -23.809532;-0.025633;-80.952385;,\r\n   -19.047625;0.198069;-80.952377;,\r\n   -38.095242;-0.220551;-76.190483;,\r\n   -33.333340;-0.775552;-76.190475;,\r\n   -28.571432;-0.088182;-76.190475;,\r\n   -23.809528;-0.321007;-76.190483;,\r\n   -19.047623;0.017947;-76.190475;,\r\n   -9.523815;-0.077893;-95.238098;,\r\n   -4.761909;0.308261;-95.238091;,\r\n   -0.000005;-0.490944;-95.238091;,\r\n   4.761901;-0.627974;-95.238106;,\r\n   9.523804;-0.424610;-95.238091;,\r\n   -9.523813;-0.044581;-90.476181;,\r\n   -4.761909;0.159439;-90.476196;,\r\n   -0.000005;-0.443794;-90.476204;,\r\n   4.761900;-0.127339;-90.476189;,\r\n   9.523804;-0.250573;-90.476189;,\r\n   -9.523813;-0.061567;-85.714272;,\r\n   -4.761909;0.264794;-85.714279;,\r\n   -0.000004;0.601675;-85.714279;,\r\n   4.761900;-0.576284;-85.714287;,\r\n   9.523804;-0.400029;-85.714287;,\r\n   -9.523813;0.294668;-80.952385;,\r\n   -4.761909;-0.135345;-80.952385;,\r\n   -0.000005;0.062585;-80.952377;,\r\n   4.761900;-0.023677;-80.952385;,\r\n   9.523804;-0.732768;-80.952377;,\r\n   -9.523815;0.351763;-76.190483;,\r\n   -4.761909;0.180779;-76.190475;,\r\n   -0.000005;0.126858;-76.190475;,\r\n   4.761901;0.035790;-76.190483;,\r\n   9.523804;-0.244378;-76.190475;,\r\n   19.047617;-0.575421;-95.238098;,\r\n   23.809519;0.061376;-95.238091;,\r\n   28.571426;-0.336216;-95.238091;,\r\n   33.333332;0.180103;-95.238106;,\r\n   38.095234;-0.950449;-95.238091;,\r\n   19.047615;-0.320800;-90.476181;,\r\n   23.809519;-0.205761;-90.476196;,\r\n   28.571424;-0.332053;-90.476204;,\r\n   33.333328;0.028708;-90.476189;,\r\n   38.095230;-0.358080;-90.476189;,\r\n   19.047617;-0.081426;-85.714272;,\r\n   23.809517;-0.106021;-85.714279;,\r\n   28.571426;-0.354572;-85.714279;,\r\n   33.333332;-0.169037;-85.714287;,\r\n   38.095234;-0.146862;-85.714287;,\r\n   19.047615;0.048051;-80.952385;,\r\n   23.809521;-0.574941;-80.952385;,\r\n   28.571423;0.019022;-80.952377;,\r\n   33.333328;-0.485126;-80.952385;,\r\n   38.095234;0.118830;-80.952377;,\r\n   19.047617;-0.137680;-76.190483;,\r\n   23.809519;-0.555381;-76.190475;,\r\n   28.571423;0.379704;-76.190475;,\r\n   33.333328;0.264785;-76.190483;,\r\n   38.095230;-0.129358;-76.190475;,\r\n   47.619045;0.240993;-90.476181;,\r\n   47.619045;0.370391;-85.714272;,\r\n   52.380959;-0.804926;-85.714279;,\r\n   57.142849;-0.681500;-85.714279;,\r\n   47.619049;-0.513063;-80.952385;,\r\n   52.380947;0.252851;-80.952385;,\r\n   57.142857;0.166456;-80.952377;,\r\n   61.904758;-0.092455;-80.952385;,\r\n   47.619041;0.081938;-76.190483;,\r\n   52.380955;-0.371723;-76.190475;,\r\n   57.142857;0.392582;-76.190475;,\r\n   61.904751;-0.302392;-76.190483;,\r\n   66.666656;-0.426238;-76.190475;,\r\n   -76.190475;-0.348970;-66.666672;,\r\n   -80.952385;-0.405730;-61.904762;,\r\n   -76.190475;-0.803196;-61.904766;,\r\n   -85.714279;-0.199913;-57.142860;,\r\n   -80.952385;-0.717034;-57.142860;,\r\n   -76.190475;-0.750128;-57.142857;,\r\n   -85.714287;-0.086299;-52.380962;,\r\n   -80.952385;-0.218255;-52.380955;,\r\n   -76.190475;-0.017879;-52.380959;,\r\n   -90.476189;0.289871;-47.619053;,\r\n   -85.714287;0.408372;-47.619049;,\r\n   -80.952377;0.272326;-47.619057;,\r\n   -76.190475;0.132861;-47.619049;,\r\n   -66.666672;0.266427;-66.666664;,\r\n   -61.904770;-0.072512;-66.666664;,\r\n   -57.142864;-0.150835;-66.666664;,\r\n   -52.380962;-0.021293;-66.666672;,\r\n   -47.619057;-0.474822;-66.666672;,\r\n   -66.666672;0.487985;-61.904766;,\r\n   -61.904758;-0.309201;-61.904766;,\r\n   -57.142860;0.319654;-61.904766;,\r\n   -52.380955;1.311962;-61.904762;,\r\n   -47.619053;-0.171303;-61.904766;,\r\n   -66.666672;-0.229193;-57.142864;,\r\n   -61.904766;0.417655;-57.142853;,\r\n   -57.142868;0.166550;-57.142860;,\r\n   -52.380959;0.317161;-57.142860;,\r\n   -47.619053;0.296120;-57.142857;,\r\n   -66.666672;0.130392;-52.380959;,\r\n   -61.904762;-0.005004;-52.380955;,\r\n   -57.142857;-0.630300;-52.380962;,\r\n   -52.380955;0.486425;-52.380955;,\r\n   -47.619049;-0.289771;-52.380959;,\r\n   -66.666672;0.395921;-47.619045;,\r\n   -61.904762;0.500003;-47.619053;,\r\n   -57.142857;0.402763;-47.619049;,\r\n   -52.380959;0.551308;-47.619057;,\r\n   -47.619049;-0.121532;-47.619049;,\r\n   -38.095245;-0.010068;-66.666664;,\r\n   -33.333336;-0.289168;-66.666664;,\r\n   -28.571430;-0.496295;-66.666664;,\r\n   -23.809528;-0.467309;-66.666672;,\r\n   -19.047625;0.277623;-66.666672;,\r\n   -38.095245;-0.132215;-61.904766;,\r\n   -33.333332;-1.095695;-61.904766;,\r\n   -28.571432;-0.030175;-61.904766;,\r\n   -23.809528;-0.633231;-61.904762;,\r\n   -19.047625;0.155150;-61.904766;,\r\n   -38.095245;-0.245004;-57.142864;,\r\n   -33.333340;-0.246470;-57.142853;,\r\n   -28.571434;-0.801827;-57.142860;,\r\n   -23.809530;-0.406785;-57.142860;,\r\n   -19.047623;-0.079546;-57.142857;,\r\n   -38.095245;-0.125901;-52.380959;,\r\n   -33.333336;-0.249462;-52.380955;,\r\n   -28.571436;-0.489908;-52.380962;,\r\n   -23.809532;-0.264658;-52.380955;,\r\n   -19.047625;-0.025563;-52.380959;,\r\n   -38.095242;0.434170;-47.619045;,\r\n   -33.333340;0.213746;-47.619053;,\r\n   -28.571432;0.227585;-47.619049;,\r\n   -23.809528;0.409066;-47.619057;,\r\n   -19.047623;0.586967;-47.619049;,\r\n   -9.523815;0.243269;-66.666664;,\r\n   -4.761909;0.305613;-66.666664;,\r\n   -0.000005;0.749702;-66.666664;,\r\n   4.761901;-0.041101;-66.666672;,\r\n   9.523804;-0.224528;-66.666672;,\r\n   -9.523813;-0.138317;-61.904766;,\r\n   -4.761909;0.969622;-61.904766;,\r\n   -0.000005;0.390296;-61.904766;,\r\n   4.761900;0.515348;-61.904762;,\r\n   9.523804;0.101632;-61.904766;,\r\n   -9.523813;0.508570;-57.142864;,\r\n   -4.761909;0.220557;-57.142853;,\r\n   -0.000004;0.053783;-57.142860;,\r\n   4.761900;0.033699;-57.142860;,\r\n   9.523804;0.194044;-57.142857;,\r\n   -9.523813;-0.169694;-52.380959;,\r\n   -4.761909;0.481576;-52.380955;,\r\n   -0.000005;0.347434;-52.380962;,\r\n   4.761900;0.266849;-52.380955;,\r\n   9.523804;-0.116532;-52.380959;,\r\n   -9.523815;-0.231660;-47.619045;,\r\n   -4.761909;-0.377175;-47.619053;,\r\n   -0.000005;0.112933;-47.619049;,\r\n   4.761901;0.317320;-47.619057;,\r\n   9.523804;-0.017629;-47.619049;,\r\n   19.047617;0.135771;-66.666664;,\r\n   23.809519;0.019960;-66.666664;,\r\n   28.571426;-0.267989;-66.666664;,\r\n   33.333332;0.653463;-66.666672;,\r\n   38.095234;1.169628;-66.666672;,\r\n   19.047615;-0.067673;-61.904766;,\r\n   23.809519;0.597693;-61.904766;,\r\n   28.571424;0.044806;-61.904766;,\r\n   33.333328;-0.036723;-61.904762;,\r\n   38.095230;0.271063;-61.904766;,\r\n   19.047617;-0.361246;-57.142864;,\r\n   23.809517;-0.058579;-57.142853;,\r\n   28.571426;0.609813;-57.142860;,\r\n   33.333332;0.330539;-57.142860;,\r\n   38.095234;-0.057024;-57.142857;,\r\n   19.047615;-0.436143;-52.380959;,\r\n   23.809521;0.470412;-52.380955;,\r\n   28.571423;0.448475;-52.380962;,\r\n   33.333328;0.713128;-52.380955;,\r\n   38.095234;0.489472;-52.380959;,\r\n   19.047617;-0.600673;-47.619045;,\r\n   23.809519;-0.377628;-47.619053;,\r\n   28.571423;0.918299;-47.619049;,\r\n   33.333328;1.202303;-47.619057;,\r\n   38.095230;0.447862;-47.619049;,\r\n   47.619041;0.033839;-66.666664;,\r\n   52.380955;-0.946366;-66.666664;,\r\n   57.142857;-0.235814;-66.666664;,\r\n   61.904755;-0.488056;-66.666672;,\r\n   66.666656;0.116058;-66.666672;,\r\n   47.619045;-0.261705;-61.904766;,\r\n   52.380947;-0.553567;-61.904766;,\r\n   57.142849;-0.841473;-61.904766;,\r\n   61.904758;-0.209702;-61.904762;,\r\n   66.666656;-0.157042;-61.904766;,\r\n   47.619045;0.525451;-57.142864;,\r\n   52.380959;-0.712736;-57.142853;,\r\n   57.142849;-0.364831;-57.142860;,\r\n   61.904758;-0.605710;-57.142860;,\r\n   66.666664;-0.069805;-57.142857;,\r\n   47.619049;0.038909;-52.380959;,\r\n   52.380947;-0.769230;-52.380955;,\r\n   57.142857;-0.503422;-52.380962;,\r\n   61.904758;0.345566;-52.380955;,\r\n   66.666656;-0.560847;-52.380959;,\r\n   47.619041;0.506564;-47.619045;,\r\n   52.380955;-0.508165;-47.619053;,\r\n   57.142857;0.135078;-47.619049;,\r\n   61.904751;-1.073132;-47.619057;,\r\n   66.666656;-0.165831;-47.619049;,\r\n   76.190483;-0.072807;-66.666664;,\r\n   76.190475;-0.486434;-61.904766;,\r\n   80.952377;0.095965;-61.904766;,\r\n   76.190468;0.392118;-57.142864;,\r\n   80.952362;-0.160010;-57.142857;,\r\n   85.714279;0.029156;-57.142864;,\r\n   76.190475;0.389107;-52.380959;,\r\n   80.952385;-0.270554;-52.380955;,\r\n   85.714279;0.304861;-52.380959;,\r\n   90.476181;0.029144;-52.380955;,\r\n   76.190475;-0.280273;-47.619045;,\r\n   80.952377;0.047318;-47.619053;,\r\n   85.714279;0.077279;-47.619049;,\r\n   90.476181;0.522156;-47.619057;,\r\n   -95.238091;0.146004;-38.095249;,\r\n   -90.476189;-0.135323;-38.095245;,\r\n   -85.714302;-0.094774;-38.095245;,\r\n   -80.952385;-0.012592;-38.095238;,\r\n   -76.190475;0.214362;-38.095242;,\r\n   -95.238091;-0.663445;-33.333336;,\r\n   -90.476196;-0.571629;-33.333336;,\r\n   -85.714287;0.142352;-33.333340;,\r\n   -80.952385;-0.006924;-33.333336;,\r\n   -76.190475;0.942335;-33.333336;,\r\n   -95.238091;0.105121;-28.571430;,\r\n   -90.476196;0.379096;-28.571432;,\r\n   -85.714279;0.025746;-28.571434;,\r\n   -80.952385;0.014520;-28.571434;,\r\n   -76.190475;0.436127;-28.571432;,\r\n   -95.238098;0.037560;-23.809530;,\r\n   -90.476196;0.267005;-23.809528;,\r\n   -85.714287;0.863584;-23.809528;,\r\n   -80.952385;-0.166361;-23.809530;,\r\n   -76.190475;0.196967;-23.809528;,\r\n   -95.238098;-0.104465;-19.047628;,\r\n   -90.476189;0.122242;-19.047621;,\r\n   -85.714287;0.447682;-19.047623;,\r\n   -80.952377;0.063871;-19.047625;,\r\n   -76.190475;0.343448;-19.047625;,\r\n   -66.666672;0.590940;-38.095249;,\r\n   -61.904770;0.608232;-38.095245;,\r\n   -57.142864;0.552512;-38.095245;,\r\n   -52.380962;0.320589;-38.095238;,\r\n   -47.619057;0.278432;-38.095242;,\r\n   -66.666672;1.271968;-33.333336;,\r\n   -61.904758;0.403147;-33.333336;,\r\n   -57.142860;0.108861;-33.333340;,\r\n   -52.380955;-0.191607;-33.333336;,\r\n   -47.619053;0.253385;-33.333336;,\r\n   -66.666672;1.065984;-28.571430;,\r\n   -61.904766;0.646968;-28.571432;,\r\n   -57.142868;0.768861;-28.571434;,\r\n   -52.380959;0.366157;-28.571434;,\r\n   -47.619053;0.675626;-28.571432;,\r\n   -66.666672;1.103412;-23.809530;,\r\n   -61.904762;1.158456;-23.809528;,\r\n   -57.142857;0.210519;-23.809528;,\r\n   -52.380955;0.972075;-23.809530;,\r\n   -47.619049;0.647467;-23.809528;,\r\n   -66.666672;1.283420;-19.047628;,\r\n   -61.904762;1.341369;-19.047621;,\r\n   -57.142857;1.247629;-19.047623;,\r\n   -52.380959;0.956362;-19.047625;,\r\n   -47.619049;1.172287;-19.047625;,\r\n   -38.095245;-0.214886;-38.095249;,\r\n   -33.333336;0.484496;-38.095245;,\r\n   -28.571430;-0.136695;-38.095245;,\r\n   -23.809528;0.848725;-38.095238;,\r\n   -19.047625;0.345354;-38.095242;,\r\n   -38.095245;-0.436160;-33.333336;,\r\n   -33.333332;0.551390;-33.333336;,\r\n   -28.571432;0.495749;-33.333340;,\r\n   -23.809528;0.666285;-33.333336;,\r\n   -19.047625;0.129059;-33.333336;,\r\n   -38.095245;0.679556;-28.571430;,\r\n   -33.333340;0.879020;-28.571432;,\r\n   -28.571434;0.751337;-28.571434;,\r\n   -23.809530;0.503239;-28.571434;,\r\n   -19.047623;0.511175;-28.571432;,\r\n   -38.095245;0.953050;-23.809530;,\r\n   -33.333336;0.333945;-23.809528;,\r\n   -28.571436;0.857836;-23.809528;,\r\n   -23.809532;-0.429330;-23.809530;,\r\n   -19.047625;-0.056639;-23.809528;,\r\n   -38.095242;1.071013;-19.047628;,\r\n   -33.333340;0.435640;-19.047621;,\r\n   -28.571432;0.770570;-19.047623;,\r\n   -23.809528;0.340346;-19.047625;,\r\n   -19.047623;0.447750;-19.047625;,\r\n   -9.523815;-0.086783;-38.095249;,\r\n   -4.761909;0.113547;-38.095245;,\r\n   -0.000005;-0.197065;-38.095245;,\r\n   4.761901;-0.054983;-38.095238;,\r\n   9.523804;0.692805;-38.095242;,\r\n   -9.523813;0.274385;-33.333336;,\r\n   -4.761909;-0.232459;-33.333336;,\r\n   -0.000005;-0.380196;-33.333340;,\r\n   4.761900;0.399482;-33.333336;,\r\n   9.523804;0.062564;-33.333336;,\r\n   -9.523813;0.297241;-28.571430;,\r\n   -4.761909;0.415487;-28.571432;,\r\n   -0.000004;0.800085;-28.571434;,\r\n   4.761900;0.788055;-28.571434;,\r\n   9.523804;0.737738;-28.571432;,\r\n   -9.523813;0.525031;-23.809530;,\r\n   -4.761909;0.399502;-23.809528;,\r\n   -0.000005;0.520640;-23.809528;,\r\n   4.761900;0.163826;-23.809530;,\r\n   9.523804;1.190181;-23.809528;,\r\n   -9.523815;0.465551;-19.047628;,\r\n   -4.761909;0.210487;-19.047621;,\r\n   -0.000005;0.555673;-19.047623;,\r\n   4.761901;0.842914;-19.047625;,\r\n   9.523804;0.660211;-19.047625;,\r\n   19.047617;0.451290;-38.095249;,\r\n   23.809519;0.286698;-38.095245;,\r\n   28.571426;0.805214;-38.095245;,\r\n   33.333332;0.989717;-38.095238;,\r\n   38.095234;0.593022;-38.095242;,\r\n   19.047615;1.319814;-33.333336;,\r\n   23.809519;1.135292;-33.333336;,\r\n   28.571424;1.117218;-33.333340;,\r\n   33.333328;1.023826;-33.333336;,\r\n   38.095230;0.911118;-33.333336;,\r\n   19.047617;0.540009;-28.571430;,\r\n   23.809517;0.881057;-28.571432;,\r\n   28.571426;0.618853;-28.571434;,\r\n   33.333332;0.981026;-28.571434;,\r\n   38.095234;0.603346;-28.571432;,\r\n   19.047615;0.622427;-23.809530;,\r\n   23.809521;0.594324;-23.809528;,\r\n   28.571423;0.218313;-23.809528;,\r\n   33.333328;1.047722;-23.809530;,\r\n   38.095234;1.451933;-23.809528;,\r\n   19.047617;0.620442;-19.047628;,\r\n   23.809519;0.343850;-19.047621;,\r\n   28.571423;0.528112;-19.047623;,\r\n   33.333328;0.528256;-19.047625;,\r\n   38.095230;0.711731;-19.047625;,\r\n   47.619041;1.491915;-38.095249;,\r\n   52.380955;0.149788;-38.095245;,\r\n   57.142857;-0.120143;-38.095245;,\r\n   61.904755;-0.000747;-38.095238;,\r\n   66.666656;1.339226;-38.095242;,\r\n   47.619045;0.151090;-33.333336;,\r\n   52.380947;0.313079;-33.333336;,\r\n   57.142849;0.156893;-33.333340;,\r\n   61.904758;0.354590;-33.333336;,\r\n   66.666656;0.247437;-33.333336;,\r\n   47.619045;1.023633;-28.571430;,\r\n   52.380959;-0.145311;-28.571432;,\r\n   57.142849;0.631876;-28.571434;,\r\n   61.904758;0.844891;-28.571434;,\r\n   66.666664;1.026587;-28.571432;,\r\n   47.619049;0.998444;-23.809530;,\r\n   52.380947;0.614895;-23.809528;,\r\n   57.142857;-0.185409;-23.809528;,\r\n   61.904758;0.752258;-23.809530;,\r\n   66.666656;0.566804;-23.809528;,\r\n   47.619041;1.884505;-19.047628;,\r\n   52.380955;0.703374;-19.047621;,\r\n   57.142857;0.932738;-19.047623;,\r\n   61.904751;-0.012433;-19.047625;,\r\n   66.666656;0.598260;-19.047625;,\r\n   76.190483;0.585609;-38.095249;,\r\n   80.952385;0.112419;-38.095245;,\r\n   85.714272;0.569965;-38.095245;,\r\n   90.476196;0.070365;-38.095238;,\r\n   95.238098;0.810845;-38.095242;,\r\n   76.190475;0.958473;-33.333336;,\r\n   80.952377;0.519011;-33.333336;,\r\n   85.714279;1.036680;-33.333340;,\r\n   90.476189;0.312387;-33.333336;,\r\n   95.238091;0.684369;-33.333336;,\r\n   76.190468;0.903687;-28.571430;,\r\n   80.952362;0.370712;-28.571432;,\r\n   85.714279;0.401624;-28.571434;,\r\n   90.476189;0.465031;-28.571434;,\r\n   95.238083;0.871782;-28.571432;,\r\n   76.190475;0.067014;-23.809530;,\r\n   80.952385;-0.059502;-23.809528;,\r\n   85.714279;-0.401895;-23.809528;,\r\n   90.476181;0.112269;-23.809530;,\r\n   95.238083;0.295354;-23.809528;,\r\n   76.190475;0.241683;-19.047628;,\r\n   80.952377;0.139077;-19.047621;,\r\n   85.714279;0.032044;-19.047623;,\r\n   90.476181;0.370127;-19.047625;,\r\n   95.238083;0.035993;-19.047625;,\r\n   -95.238091;-0.635028;-9.523814;,\r\n   -90.476189;0.081866;-9.523813;,\r\n   -85.714302;0.542680;-9.523813;,\r\n   -80.952385;0.072004;-9.523814;,\r\n   -76.190475;0.769015;-9.523814;,\r\n   -95.238091;0.370450;-4.761909;,\r\n   -90.476196;0.126042;-4.761909;,\r\n   -85.714287;-0.035015;-4.761909;,\r\n   -80.952385;0.433681;-4.761909;,\r\n   -76.190475;0.785710;-4.761909;,\r\n   -95.238091;0.243324;-0.000005;,\r\n   -90.476196;0.458492;-0.000005;,\r\n   -85.714279;0.686098;-0.000005;,\r\n   -80.952385;0.255165;-0.000005;,\r\n   -76.190475;0.671934;-0.000005;,\r\n   -95.238098;0.680216;4.761900;,\r\n   -90.476196;0.493188;4.761901;,\r\n   -85.714287;0.510967;4.761900;,\r\n   -80.952385;-0.085318;4.761900;,\r\n   -76.190475;0.153707;4.761900;,\r\n   -95.238098;-0.113884;9.523805;,\r\n   -90.476189;-0.062231;9.523803;,\r\n   -85.714287;0.013318;9.523803;,\r\n   -80.952377;0.501502;9.523804;,\r\n   -76.190475;0.116553;9.523804;,\r\n   -66.666672;0.648186;-9.523814;,\r\n   -61.904770;1.037785;-9.523813;,\r\n   -57.142864;1.118643;-9.523813;,\r\n   -52.380962;0.152270;-9.523814;,\r\n   -47.619057;0.382152;-9.523814;,\r\n   -66.666672;-0.263512;-4.761909;,\r\n   -61.904758;1.228136;-4.761909;,\r\n   -57.142860;1.333070;-4.761909;,\r\n   -52.380955;0.844646;-4.761909;,\r\n   -47.619053;0.275482;-4.761909;,\r\n   -66.666672;-0.122993;-0.000005;,\r\n   -61.904766;-0.001749;-0.000005;,\r\n   -57.142868;0.388759;-0.000005;,\r\n   -52.380959;0.776936;-0.000005;,\r\n   -47.619053;0.057072;-0.000005;,\r\n   -66.666672;-0.154972;4.761900;,\r\n   -61.904762;-0.245416;4.761901;,\r\n   -57.142857;0.150180;4.761900;,\r\n   -52.380955;0.469004;4.761900;,\r\n   -47.619049;0.523502;4.761900;,\r\n   -66.666672;0.668283;9.523805;,\r\n   -61.904762;0.014012;9.523803;,\r\n   -57.142857;1.073029;9.523803;,\r\n   -52.380959;0.621311;9.523804;,\r\n   -47.619049;0.676246;9.523804;,\r\n   -38.095245;0.257905;-9.523814;,\r\n   -33.333336;0.409918;-9.523813;,\r\n   -28.571430;0.237781;-9.523813;,\r\n   -23.809528;1.043879;-9.523814;,\r\n   -19.047625;0.787480;-9.523814;,\r\n   -38.095245;0.408669;-4.761909;,\r\n   -33.333332;-0.055927;-4.761909;,\r\n   -28.571432;0.258839;-4.761909;,\r\n   -23.809528;0.549747;-4.761909;,\r\n   -19.047625;0.945331;-4.761909;,\r\n   -38.095245;0.346291;-0.000005;,\r\n   -33.333340;0.166681;-0.000005;,\r\n   -28.571434;0.184476;-0.000005;,\r\n   -23.809530;0.419668;-0.000005;,\r\n   -19.047623;0.156914;-0.000005;,\r\n   -38.095245;0.484803;4.761900;,\r\n   -33.333336;0.414197;4.761901;,\r\n   -28.571436;0.395152;4.761900;,\r\n   -23.809532;0.548786;4.761900;,\r\n   -19.047625;-0.148510;4.761900;,\r\n   -38.095242;0.264819;9.523805;,\r\n   -33.333340;0.227147;9.523803;,\r\n   -28.571432;0.518521;9.523803;,\r\n   -23.809528;-0.044758;9.523804;,\r\n   -19.047623;0.149496;9.523804;,\r\n   -9.523815;0.995608;-9.523814;,\r\n   -4.761909;1.512732;-9.523813;,\r\n   -0.000005;0.859293;-9.523813;,\r\n   4.761901;0.560019;-9.523814;,\r\n   9.523804;0.686237;-9.523814;,\r\n   -9.523813;1.376515;-4.761909;,\r\n   -4.761909;0.789060;-4.761909;,\r\n   -0.000005;0.791284;-4.761909;,\r\n   4.761900;0.844546;-4.761909;,\r\n   9.523804;0.953963;-4.761909;,\r\n   -9.523813;0.748610;-0.000005;,\r\n   -4.761909;-0.118583;-0.000005;,\r\n   -0.000004;0.563196;-0.000005;,\r\n   4.761900;0.647850;-0.000005;,\r\n   9.523804;0.984808;-0.000005;,\r\n   -9.523813;0.464913;4.761900;,\r\n   -4.761909;0.729785;4.761901;,\r\n   -0.000005;0.889329;4.761900;,\r\n   4.761900;0.917057;4.761900;,\r\n   9.523804;1.329822;4.761900;,\r\n   -9.523815;-0.044570;9.523805;,\r\n   -4.761909;0.210753;9.523803;,\r\n   -0.000005;0.873260;9.523803;,\r\n   4.761901;0.876039;9.523804;,\r\n   9.523804;1.378626;9.523804;,\r\n   19.047617;0.670248;-9.523814;,\r\n   23.809519;0.631106;-9.523813;,\r\n   28.571426;0.236182;-9.523813;,\r\n   33.333332;0.132501;-9.523814;,\r\n   38.095234;0.736855;-9.523814;,\r\n   19.047615;0.106248;-4.761909;,\r\n   23.809519;-0.385313;-4.761909;,\r\n   28.571424;0.358606;-4.761909;,\r\n   33.333328;0.369490;-4.761909;,\r\n   38.095230;-0.458202;-4.761909;,\r\n   19.047617;0.438385;-0.000005;,\r\n   23.809517;0.103508;-0.000005;,\r\n   28.571426;0.654476;-0.000005;,\r\n   33.333332;0.197987;-0.000005;,\r\n   38.095234;-0.468729;-0.000005;,\r\n   19.047615;0.402630;4.761900;,\r\n   23.809521;0.413054;4.761901;,\r\n   28.571423;0.697183;4.761900;,\r\n   33.333328;-0.211688;4.761900;,\r\n   38.095234;-0.481783;4.761900;,\r\n   19.047617;1.188652;9.523805;,\r\n   23.809519;0.765385;9.523803;,\r\n   28.571423;0.633057;9.523803;,\r\n   33.333328;-0.037992;9.523804;,\r\n   38.095230;-0.279323;9.523804;,\r\n   47.619041;1.065258;-9.523814;,\r\n   52.380955;0.678198;-9.523813;,\r\n   57.142857;0.212120;-9.523813;,\r\n   61.904755;1.334492;-9.523814;,\r\n   66.666656;0.436235;-9.523814;,\r\n   47.619045;0.288181;-4.761909;,\r\n   52.380947;1.176908;-4.761909;,\r\n   57.142849;0.975162;-4.761909;,\r\n   61.904758;0.550585;-4.761909;,\r\n   66.666656;0.058083;-4.761909;,\r\n   47.619045;-0.404481;-0.000005;,\r\n   52.380959;0.548954;-0.000005;,\r\n   57.142849;0.225667;-0.000005;,\r\n   61.904758;0.339342;-0.000005;,\r\n   66.666664;0.584654;-0.000005;,\r\n   47.619049;0.216021;4.761900;,\r\n   52.380947;0.048065;4.761901;,\r\n   57.142857;0.231755;4.761900;,\r\n   61.904758;-0.012498;4.761900;,\r\n   66.666656;0.332744;4.761900;,\r\n   47.619041;-0.071246;9.523805;,\r\n   52.380955;-0.208520;9.523803;,\r\n   57.142857;0.279395;9.523803;,\r\n   61.904751;0.154010;9.523804;,\r\n   66.666656;-0.188532;9.523804;,\r\n   76.190483;-0.088690;-9.523814;,\r\n   80.952385;0.390631;-9.523813;,\r\n   85.714272;-0.161228;-9.523813;,\r\n   90.476196;-0.238980;-9.523814;,\r\n   95.238098;0.173079;-9.523814;,\r\n   76.190475;-0.134629;-4.761909;,\r\n   80.952377;-0.278623;-4.761909;,\r\n   85.714279;0.152124;-4.761909;,\r\n   90.476189;-0.788111;-4.761909;,\r\n   95.238091;0.056065;-4.761909;,\r\n   76.190468;0.151857;-0.000005;,\r\n   80.952362;0.013362;-0.000005;,\r\n   85.714279;0.238772;-0.000004;,\r\n   90.476189;-0.584571;-0.000005;,\r\n   95.238083;-0.271175;-0.000005;,\r\n   76.190475;0.288078;4.761900;,\r\n   80.952385;-0.006765;4.761901;,\r\n   85.714279;-0.320527;4.761900;,\r\n   90.476181;-0.171760;4.761901;,\r\n   95.238083;-0.106328;4.761900;,\r\n   76.190475;-0.488811;9.523805;,\r\n   80.952377;0.259892;9.523803;,\r\n   85.714279;-0.964793;9.523803;,\r\n   90.476181;-0.619212;9.523804;,\r\n   95.238083;0.091132;9.523804;,\r\n   -95.238091;-0.201637;19.047617;,\r\n   -90.476189;-0.149839;19.047615;,\r\n   -85.714302;0.006371;19.047617;,\r\n   -80.952385;-0.033042;19.047615;,\r\n   -76.190475;-0.317115;19.047615;,\r\n   -95.238091;0.209303;23.809517;,\r\n   -90.476196;0.460540;23.809519;,\r\n   -85.714287;0.020164;23.809519;,\r\n   -80.952385;-0.128085;23.809521;,\r\n   -76.190475;0.149817;23.809519;,\r\n   -95.238091;0.420094;28.571424;,\r\n   -90.476196;0.492581;28.571423;,\r\n   -85.714279;0.095347;28.571424;,\r\n   -80.952385;0.419620;28.571423;,\r\n   -76.190475;0.362057;28.571423;,\r\n   -95.238098;-0.150883;33.333332;,\r\n   -90.476196;-0.282124;33.333332;,\r\n   -85.714287;-0.187727;33.333332;,\r\n   -80.952385;0.259263;33.333332;,\r\n   -76.190475;0.594422;33.333328;,\r\n   -95.238098;-0.571404;38.095238;,\r\n   -90.476189;-0.486190;38.095230;,\r\n   -85.714287;0.357521;38.095226;,\r\n   -80.952377;0.504628;38.095230;,\r\n   -76.190475;0.373769;38.095230;,\r\n   -66.666672;0.502245;19.047617;,\r\n   -61.904770;0.511736;19.047615;,\r\n   -57.142864;0.360597;19.047617;,\r\n   -52.380962;0.735265;19.047615;,\r\n   -47.619057;0.127262;19.047615;,\r\n   -66.666672;0.514087;23.809517;,\r\n   -61.904758;0.519105;23.809519;,\r\n   -57.142860;0.519451;23.809519;,\r\n   -52.380955;0.782563;23.809521;,\r\n   -47.619053;0.444003;23.809519;,\r\n   -66.666672;-0.234723;28.571424;,\r\n   -61.904766;0.326034;28.571423;,\r\n   -57.142868;0.051950;28.571424;,\r\n   -52.380959;-0.173723;28.571423;,\r\n   -47.619053;-0.238126;28.571423;,\r\n   -66.666672;0.537940;33.333332;,\r\n   -61.904762;-0.058904;33.333332;,\r\n   -57.142857;0.204335;33.333332;,\r\n   -52.380955;-0.088778;33.333332;,\r\n   -47.619049;0.203796;33.333328;,\r\n   -66.666672;0.652848;38.095238;,\r\n   -61.904762;0.415248;38.095230;,\r\n   -57.142857;0.087422;38.095226;,\r\n   -52.380959;-0.090355;38.095230;,\r\n   -47.619049;-0.059427;38.095230;,\r\n   -38.095245;0.161836;19.047617;,\r\n   -33.333336;-0.440482;19.047615;,\r\n   -28.571430;-0.285349;19.047617;,\r\n   -23.809528;0.407627;19.047615;,\r\n   -19.047625;0.433981;19.047615;,\r\n   -38.095245;0.020594;23.809517;,\r\n   -33.333332;-0.073424;23.809519;,\r\n   -28.571432;0.625639;23.809519;,\r\n   -23.809528;0.315404;23.809521;,\r\n   -19.047625;0.293077;23.809519;,\r\n   -38.095245;0.766912;28.571424;,\r\n   -33.333340;0.504977;28.571423;,\r\n   -28.571434;0.369143;28.571424;,\r\n   -23.809530;0.445399;28.571423;,\r\n   -19.047623;0.100101;28.571423;,\r\n   -38.095245;0.201413;33.333332;,\r\n   -33.333336;1.294783;33.333332;,\r\n   -28.571436;0.968459;33.333332;,\r\n   -23.809532;0.558453;33.333332;,\r\n   -19.047625;0.277103;33.333328;,\r\n   -38.095242;0.575762;38.095238;,\r\n   -33.333340;0.453316;38.095230;,\r\n   -28.571432;1.285199;38.095226;,\r\n   -23.809528;0.488240;38.095230;,\r\n   -19.047623;0.187016;38.095230;,\r\n   -9.523815;0.996402;19.047617;,\r\n   -4.761909;0.775935;19.047615;,\r\n   -0.000005;0.880439;19.047617;,\r\n   4.761901;0.612420;19.047615;,\r\n   9.523804;0.571617;19.047615;,\r\n   -9.523813;1.616749;23.809517;,\r\n   -4.761909;0.377220;23.809519;,\r\n   -0.000005;0.720718;23.809519;,\r\n   4.761900;0.472201;23.809521;,\r\n   9.523804;0.317466;23.809519;,\r\n   -9.523813;0.431987;28.571424;,\r\n   -4.761909;0.345291;28.571423;,\r\n   -0.000004;-0.074424;28.571424;,\r\n   4.761900;-0.542948;28.571423;,\r\n   9.523804;0.259391;28.571423;,\r\n   -9.523813;0.669768;33.333332;,\r\n   -4.761909;0.340621;33.333332;,\r\n   -0.000005;-0.096041;33.333332;,\r\n   4.761900;-0.622098;33.333332;,\r\n   9.523804;0.051470;33.333328;,\r\n   -9.523815;0.390742;38.095238;,\r\n   -4.761909;0.199370;38.095230;,\r\n   -0.000005;0.857651;38.095226;,\r\n   4.761901;0.552805;38.095230;,\r\n   9.523804;-0.119714;38.095230;,\r\n   19.047617;0.459538;19.047617;,\r\n   23.809519;0.618532;19.047615;,\r\n   28.571426;0.356688;19.047617;,\r\n   33.333332;0.198981;19.047615;,\r\n   38.095234;0.222746;19.047615;,\r\n   19.047615;0.095561;23.809517;,\r\n   23.809519;0.536586;23.809519;,\r\n   28.571424;0.152821;23.809519;,\r\n   33.333328;-0.680507;23.809521;,\r\n   38.095230;0.177823;23.809519;,\r\n   19.047617;0.005467;28.571424;,\r\n   23.809517;-0.100124;28.571423;,\r\n   28.571426;-0.181885;28.571424;,\r\n   33.333332;-0.433794;28.571423;,\r\n   38.095234;-0.490281;28.571423;,\r\n   19.047615;0.185628;33.333332;,\r\n   23.809521;-0.394754;33.333332;,\r\n   28.571423;-0.515903;33.333332;,\r\n   33.333328;-0.266749;33.333332;,\r\n   38.095234;-0.440623;33.333328;,\r\n   19.047617;-0.215529;38.095238;,\r\n   23.809519;-0.145184;38.095230;,\r\n   28.571423;-0.328802;38.095226;,\r\n   33.333328;-0.118301;38.095230;,\r\n   38.095230;-0.068659;38.095230;,\r\n   47.619041;0.250273;19.047617;,\r\n   52.380955;-0.139636;19.047615;,\r\n   57.142857;0.045368;19.047617;,\r\n   61.904755;0.484037;19.047615;,\r\n   66.666656;-0.962253;19.047615;,\r\n   47.619045;-0.242349;23.809517;,\r\n   52.380947;0.047723;23.809519;,\r\n   57.142849;-0.259574;23.809519;,\r\n   61.904758;0.171286;23.809521;,\r\n   66.666656;0.119474;23.809519;,\r\n   47.619045;0.854265;28.571424;,\r\n   52.380959;0.709659;28.571423;,\r\n   57.142849;0.114179;28.571424;,\r\n   61.904758;-0.737622;28.571423;,\r\n   66.666664;-0.540622;28.571423;,\r\n   47.619049;0.196880;33.333332;,\r\n   52.380947;0.418325;33.333332;,\r\n   57.142857;-0.165413;33.333332;,\r\n   61.904758;-0.018578;33.333332;,\r\n   66.666656;-0.542027;33.333328;,\r\n   47.619041;0.040305;38.095238;,\r\n   52.380955;-0.305511;38.095230;,\r\n   57.142857;-0.801721;38.095226;,\r\n   61.904751;-0.693914;38.095230;,\r\n   66.666656;-0.260167;38.095230;,\r\n   76.190483;-0.350931;19.047617;,\r\n   80.952385;-0.270984;19.047615;,\r\n   85.714272;-0.653663;19.047617;,\r\n   90.476196;-0.588821;19.047615;,\r\n   95.238098;-0.166806;19.047615;,\r\n   76.190475;-0.982747;23.809517;,\r\n   80.952377;-0.280588;23.809519;,\r\n   85.714279;-0.809163;23.809519;,\r\n   90.476189;-0.707869;23.809521;,\r\n   95.238091;-0.191508;23.809521;,\r\n   76.190468;-1.361749;28.571424;,\r\n   80.952362;-1.537214;28.571423;,\r\n   85.714279;-0.557252;28.571424;,\r\n   90.476189;-0.858880;28.571423;,\r\n   95.238083;-0.540427;28.571423;,\r\n   76.190475;-0.991974;33.333332;,\r\n   80.952385;-0.341072;33.333332;,\r\n   85.714279;-0.480612;33.333332;,\r\n   90.476181;-0.357981;33.333332;,\r\n   95.238083;-0.068596;33.333332;,\r\n   76.190475;-0.649106;38.095238;,\r\n   80.952377;-0.559025;38.095230;,\r\n   85.714279;-0.386252;38.095226;,\r\n   90.476181;0.099080;38.095230;,\r\n   -90.476189;-0.876558;47.619049;,\r\n   -85.714302;-0.346224;47.619041;,\r\n   -80.952385;-0.279265;47.619049;,\r\n   -76.190475;-0.593621;47.619045;,\r\n   -90.476196;-0.496902;52.380939;,\r\n   -85.714287;-0.441395;52.380951;,\r\n   -80.952385;-0.030910;52.380947;,\r\n   -76.190475;0.249934;52.380951;,\r\n   -85.714279;-0.433317;57.142853;,\r\n   -80.952385;-0.000843;57.142857;,\r\n   -76.190475;-0.835901;57.142849;,\r\n   -85.714287;0.363133;61.904758;,\r\n   -80.952385;-0.122559;61.904758;,\r\n   -76.190475;-0.282176;61.904758;,\r\n   -80.952377;0.289427;66.666664;,\r\n   -76.190475;0.455423;66.666664;,\r\n   -66.666672;0.605411;47.619045;,\r\n   -61.904770;-0.101593;47.619049;,\r\n   -57.142864;0.010784;47.619041;,\r\n   -52.380962;-0.305407;47.619049;,\r\n   -47.619057;-0.352808;47.619045;,\r\n   -66.666672;-0.066875;52.380955;,\r\n   -61.904758;-0.453473;52.380939;,\r\n   -57.142860;0.087123;52.380951;,\r\n   -52.380955;-0.189693;52.380947;,\r\n   -47.619053;0.324851;52.380951;,\r\n   -66.666672;-0.553944;57.142853;,\r\n   -61.904766;-0.676060;57.142849;,\r\n   -57.142868;-0.862220;57.142853;,\r\n   -52.380959;-0.121714;57.142857;,\r\n   -47.619053;-0.157393;57.142849;,\r\n   -66.666672;-0.748001;61.904766;,\r\n   -61.904762;-0.196270;61.904755;,\r\n   -57.142857;-0.844559;61.904758;,\r\n   -52.380955;-0.766034;61.904758;,\r\n   -47.619049;-0.394087;61.904758;,\r\n   -66.666672;-0.406123;66.666649;,\r\n   -61.904762;-0.455862;66.666656;,\r\n   -57.142857;-0.281796;66.666664;,\r\n   -52.380959;-0.495838;66.666664;,\r\n   -47.619049;-1.226247;66.666664;,\r\n   -38.095245;0.092546;47.619045;,\r\n   -33.333336;0.097091;47.619049;,\r\n   -28.571430;0.451482;47.619041;,\r\n   -23.809528;0.626763;47.619049;,\r\n   -19.047625;-0.020122;47.619045;,\r\n   -38.095245;-0.419869;52.380955;,\r\n   -33.333332;-0.212224;52.380939;,\r\n   -28.571432;-0.223933;52.380951;,\r\n   -23.809528;0.030272;52.380947;,\r\n   -19.047625;0.380474;52.380951;,\r\n   -38.095245;-0.268773;57.142853;,\r\n   -33.333340;0.039447;57.142849;,\r\n   -28.571434;-0.597401;57.142853;,\r\n   -23.809530;-0.248587;57.142857;,\r\n   -19.047623;0.346370;57.142849;,\r\n   -38.095245;-0.955208;61.904766;,\r\n   -33.333336;-0.925934;61.904755;,\r\n   -28.571436;-0.662956;61.904758;,\r\n   -23.809532;-0.401054;61.904758;,\r\n   -19.047625;0.134505;61.904758;,\r\n   -38.095242;-0.814418;66.666649;,\r\n   -33.333340;-1.112140;66.666656;,\r\n   -28.571432;-0.516252;66.666664;,\r\n   -23.809528;-0.760757;66.666664;,\r\n   -19.047623;-0.348394;66.666664;,\r\n   -9.523815;-0.110413;47.619045;,\r\n   -4.761909;0.305821;47.619049;,\r\n   -0.000005;0.281593;47.619041;,\r\n   4.761901;0.292163;47.619049;,\r\n   9.523804;-0.293571;47.619045;,\r\n   -9.523813;0.220246;52.380955;,\r\n   -4.761909;-0.295488;52.380939;,\r\n   -0.000005;-0.155451;52.380951;,\r\n   4.761900;0.391777;52.380947;,\r\n   9.523804;-0.325865;52.380951;,\r\n   -9.523813;0.437661;57.142853;,\r\n   -4.761909;-0.513525;57.142849;,\r\n   -0.000004;-0.649736;57.142853;,\r\n   4.761900;-0.020130;57.142857;,\r\n   9.523804;-0.557592;57.142849;,\r\n   -9.523813;-0.414858;61.904766;,\r\n   -4.761909;-0.065868;61.904755;,\r\n   -0.000005;-0.010068;61.904758;,\r\n   4.761900;-0.069373;61.904758;,\r\n   9.523804;-0.799663;61.904758;,\r\n   -9.523815;-0.369522;66.666649;,\r\n   -4.761909;-0.696942;66.666656;,\r\n   -0.000005;0.025907;66.666664;,\r\n   4.761901;-1.007324;66.666664;,\r\n   9.523804;-0.574893;66.666664;,\r\n   19.047617;0.325343;47.619045;,\r\n   23.809519;0.473680;47.619049;,\r\n   28.571426;0.275061;47.619041;,\r\n   33.333332;-0.256181;47.619049;,\r\n   38.095234;0.483084;47.619045;,\r\n   19.047615;-0.350834;52.380955;,\r\n   23.809519;-0.013383;52.380939;,\r\n   28.571424;-0.273459;52.380951;,\r\n   33.333328;0.254800;52.380947;,\r\n   38.095230;0.599137;52.380951;,\r\n   19.047617;-0.194767;57.142853;,\r\n   23.809517;-0.314225;57.142849;,\r\n   28.571426;-0.353765;57.142853;,\r\n   33.333332;0.507339;57.142857;,\r\n   38.095234;0.010199;57.142849;,\r\n   19.047615;-0.016212;61.904766;,\r\n   23.809521;0.033933;61.904755;,\r\n   28.571423;-0.351155;61.904758;,\r\n   33.333328;-0.111704;61.904758;,\r\n   38.095234;-0.173389;61.904758;,\r\n   19.047617;0.042704;66.666649;,\r\n   23.809519;-0.981737;66.666656;,\r\n   28.571423;-0.207663;66.666664;,\r\n   33.333328;-0.098233;66.666664;,\r\n   38.095230;0.349205;66.666664;,\r\n   47.619041;-0.111488;47.619045;,\r\n   52.380955;-0.173820;47.619049;,\r\n   57.142857;-0.055898;47.619041;,\r\n   61.904755;-0.458990;47.619049;,\r\n   66.666656;0.068232;47.619045;,\r\n   47.619045;-0.448598;52.380955;,\r\n   52.380947;-0.643468;52.380939;,\r\n   57.142849;-0.963284;52.380951;,\r\n   61.904758;-0.282064;52.380947;,\r\n   66.666656;-0.610852;52.380951;,\r\n   47.619045;0.255676;57.142853;,\r\n   52.380959;0.043661;57.142849;,\r\n   57.142849;-0.450146;57.142853;,\r\n   61.904758;-0.734543;57.142857;,\r\n   66.666664;-0.595717;57.142849;,\r\n   47.619049;0.295272;61.904766;,\r\n   52.380947;0.224996;61.904755;,\r\n   57.142857;0.410076;61.904758;,\r\n   61.904758;-0.102180;61.904758;,\r\n   66.666656;-0.641119;61.904758;,\r\n   47.619041;-0.063889;66.666649;,\r\n   52.380955;-0.052278;66.666656;,\r\n   57.142857;-0.260962;66.666664;,\r\n   61.904751;0.211714;66.666664;,\r\n   66.666656;-0.891935;66.666664;,\r\n   76.190483;0.384868;47.619045;,\r\n   80.952385;-0.498316;47.619049;,\r\n   85.714272;-0.452842;47.619045;,\r\n   90.476196;-0.679208;47.619049;,\r\n   76.190475;0.383476;52.380955;,\r\n   80.952377;0.228437;52.380943;,\r\n   85.714279;-0.298431;52.380951;,\r\n   76.190468;0.030241;57.142853;,\r\n   80.952362;-0.057542;57.142849;,\r\n   76.190475;-0.149108;61.904766;,\r\n   80.952385;0.231597;61.904755;,\r\n   76.190475;0.684127;66.666649;,\r\n   -66.666672;-0.805704;76.190475;,\r\n   -61.904770;-0.639796;76.190468;,\r\n   -57.142864;-0.707538;76.190475;,\r\n   -52.380962;-1.071568;76.190475;,\r\n   -47.619057;-0.374410;76.190468;,\r\n   -66.666672;-0.417351;80.952377;,\r\n   -61.904758;-0.230551;80.952385;,\r\n   -57.142860;-0.240226;80.952370;,\r\n   -52.380955;0.515422;80.952385;,\r\n   -47.619053;-0.344058;80.952370;,\r\n   -52.380959;-0.267540;85.714279;,\r\n   -47.619053;-0.400396;85.714272;,\r\n   -52.380955;0.632710;90.476189;,\r\n   -47.619049;0.289989;90.476181;,\r\n   -38.095245;-0.131742;76.190475;,\r\n   -33.333336;-0.165298;76.190468;,\r\n   -28.571430;0.479944;76.190475;,\r\n   -23.809528;-0.376538;76.190475;,\r\n   -19.047625;-0.480150;76.190468;,\r\n   -38.095245;-0.001046;80.952377;,\r\n   -33.333332;-0.343873;80.952385;,\r\n   -28.571432;0.302766;80.952370;,\r\n   -23.809528;0.061208;80.952385;,\r\n   -19.047625;-0.168522;80.952370;,\r\n   -38.095245;0.534184;85.714272;,\r\n   -33.333340;0.319921;85.714272;,\r\n   -28.571434;0.235242;85.714279;,\r\n   -23.809530;0.387477;85.714279;,\r\n   -19.047623;0.091821;85.714272;,\r\n   -38.095245;-0.278674;90.476181;,\r\n   -33.333336;-0.722953;90.476196;,\r\n   -28.571436;-0.670441;90.476181;,\r\n   -23.809532;-0.490729;90.476189;,\r\n   -19.047625;-0.106003;90.476181;,\r\n   -33.333340;-0.228621;95.238091;,\r\n   -28.571432;0.184142;95.238091;,\r\n   -23.809528;-0.230569;95.238091;,\r\n   -19.047623;-0.329850;95.238083;,\r\n   -9.523815;-0.422359;76.190475;,\r\n   -4.761909;-0.279259;76.190468;,\r\n   -0.000005;-0.393888;76.190475;,\r\n   4.761901;-0.153724;76.190475;,\r\n   9.523804;-0.603998;76.190468;,\r\n   -9.523813;-0.517870;80.952377;,\r\n   -4.761909;-0.318783;80.952385;,\r\n   -0.000005;-0.221239;80.952370;,\r\n   4.761900;-0.203658;80.952385;,\r\n   9.523804;-0.281561;80.952370;,\r\n   -9.523813;-0.602386;85.714272;,\r\n   -4.761909;-0.275787;85.714272;,\r\n   -0.000004;-0.346190;85.714279;,\r\n   4.761900;-0.680653;85.714279;,\r\n   9.523804;-0.553402;85.714272;,\r\n   -9.523813;-0.672190;90.476181;,\r\n   -4.761909;-0.708849;90.476196;,\r\n   -0.000005;-0.185962;90.476181;,\r\n   4.761900;-0.110973;90.476189;,\r\n   9.523804;-0.155267;90.476181;,\r\n   -9.523815;0.470404;95.238083;,\r\n   -4.761909;0.108812;95.238091;,\r\n   -0.000005;-0.220810;95.238091;,\r\n   4.761901;-0.266211;95.238091;,\r\n   9.523804;0.384882;95.238083;,\r\n   19.047617;-0.379222;76.190475;,\r\n   23.809519;-0.648977;76.190468;,\r\n   28.571426;-0.178253;76.190475;,\r\n   33.333332;-0.078896;76.190475;,\r\n   38.095234;-0.675569;76.190468;,\r\n   19.047615;-0.109131;80.952377;,\r\n   23.809519;0.306690;80.952385;,\r\n   28.571424;-0.406478;80.952370;,\r\n   33.333328;-0.045989;80.952385;,\r\n   38.095230;-0.416376;80.952370;,\r\n   19.047617;-0.794436;85.714272;,\r\n   23.809517;-0.613818;85.714272;,\r\n   28.571426;-0.121993;85.714279;,\r\n   33.333332;0.033380;85.714279;,\r\n   38.095234;-0.071678;85.714272;,\r\n   19.047615;-0.322759;90.476181;,\r\n   23.809521;0.144414;90.476196;,\r\n   28.571423;0.629921;90.476181;,\r\n   33.333328;-0.051256;90.476189;,\r\n   38.095234;0.560947;90.476181;,\r\n   19.047617;0.169525;95.238083;,\r\n   23.809519;-0.366049;95.238091;,\r\n   28.571423;-0.622185;95.238091;,\r\n   33.333328;-0.079609;95.238091;,\r\n   47.619041;-0.304020;76.190475;,\r\n   52.380955;-0.227923;76.190468;,\r\n   57.142857;-0.457192;76.190475;,\r\n   61.904755;-0.708188;76.190475;,\r\n   66.666656;-0.840111;76.190468;,\r\n   47.619045;-1.493818;80.952377;,\r\n   52.380947;-0.057613;80.952385;,\r\n   57.142849;-0.457289;80.952370;,\r\n   61.904758;-0.765565;80.952385;,\r\n   47.619045;-0.240735;85.714272;,\r\n   52.380959;-0.726876;85.714272;,\r\n   57.142849;-0.889818;85.714279;,\r\n   47.619049;-0.358727;90.476181;;\r\n\r\n    2830;\r\n 3;461,466,462;,\r\n 3;466,461,465;,\r\n 3;462,467,463;,\r\n 3;467,462,466;,\r\n 3;464,470,465;,\r\n 3;470,464,469;,\r\n 3;465,471,466;,\r\n 3;471,465,470;,\r\n 3;466,472,467;,\r\n 3;472,466,471;,\r\n 3;3,472,49;,\r\n 3;472,3,48;,\r\n 3;49,471,50;,\r\n 3;471,49,472;,\r\n 3;46,460,463;,\r\n 3;460,46,45;,\r\n 3;50,470,51;,\r\n 3;470,50,471;,\r\n 3;47,463,467;,\r\n 3;463,47,46;,\r\n 3;51,469,52;,\r\n 3;469,51,470;,\r\n 3;48,467,472;,\r\n 3;467,48,47;,\r\n 3;52,468,53;,\r\n 3;468,52,469;,\r\n 3;473,479,474;,\r\n 3;479,473,478;,\r\n 3;474,480,475;,\r\n 3;480,474,479;,\r\n 3;475,481,476;,\r\n 3;481,475,480;,\r\n 3;476,482,477;,\r\n 3;482,476,481;,\r\n 3;478,484,479;,\r\n 3;484,478,483;,\r\n 3;479,485,480;,\r\n 3;485,479,484;,\r\n 3;480,486,481;,\r\n 3;486,480,485;,\r\n 3;481,487,482;,\r\n 3;487,481,486;,\r\n 3;483,489,484;,\r\n 3;489,483,488;,\r\n 3;484,490,485;,\r\n 3;490,484,489;,\r\n 3;485,491,486;,\r\n 3;491,485,490;,\r\n 3;486,492,487;,\r\n 3;492,486,491;,\r\n 3;488,494,489;,\r\n 3;494,488,493;,\r\n 3;489,495,490;,\r\n 3;495,489,494;,\r\n 3;490,496,491;,\r\n 3;496,490,495;,\r\n 3;491,497,492;,\r\n 3;497,491,496;,\r\n 3;56,55,477;,\r\n 3;55,56,0;,\r\n 3;4,497,61;,\r\n 3;497,4,60;,\r\n 3;48,65,493;,\r\n 3;65,48,3;,\r\n 3;57,477,482;,\r\n 3;477,57,56;,\r\n 3;61,496,62;,\r\n 3;496,61,497;,\r\n 3;47,493,488;,\r\n 3;493,47,48;,\r\n 3;58,482,487;,\r\n 3;482,58,57;,\r\n 3;62,495,63;,\r\n 3;495,62,496;,\r\n 3;46,488,483;,\r\n 3;488,46,47;,\r\n 3;59,487,492;,\r\n 3;487,59,58;,\r\n 3;63,494,64;,\r\n 3;494,63,495;,\r\n 3;45,483,478;,\r\n 3;483,45,46;,\r\n 3;54,477,55;,\r\n 3;477,54,476;,\r\n 3;60,492,497;,\r\n 3;492,60,59;,\r\n 3;64,493,65;,\r\n 3;493,64,494;,\r\n 3;498,504,499;,\r\n 3;504,498,503;,\r\n 3;499,505,500;,\r\n 3;505,499,504;,\r\n 3;500,506,501;,\r\n 3;506,500,505;,\r\n 3;501,507,502;,\r\n 3;507,501,506;,\r\n 3;503,509,504;,\r\n 3;509,503,508;,\r\n 3;504,510,505;,\r\n 3;510,504,509;,\r\n 3;505,511,506;,\r\n 3;511,505,510;,\r\n 3;506,512,507;,\r\n 3;512,506,511;,\r\n 3;508,514,509;,\r\n 3;514,508,513;,\r\n 3;509,515,510;,\r\n 3;515,509,514;,\r\n 3;510,516,511;,\r\n 3;516,510,515;,\r\n 3;511,517,512;,\r\n 3;517,511,516;,\r\n 3;513,519,514;,\r\n 3;519,513,518;,\r\n 3;514,520,515;,\r\n 3;520,514,519;,\r\n 3;515,521,516;,\r\n 3;521,515,520;,\r\n 3;516,522,517;,\r\n 3;522,516,521;,\r\n 3;0,498,66;,\r\n 3;498,0,56;,\r\n 3;71,70,502;,\r\n 3;70,71,1;,\r\n 3;5,522,76;,\r\n 3;522,5,75;,\r\n 3;60,80,518;,\r\n 3;80,60,4;,\r\n 3;66,499,67;,\r\n 3;499,66,498;,\r\n 3;72,502,507;,\r\n 3;502,72,71;,\r\n 3;76,521,77;,\r\n 3;521,76,522;,\r\n 3;59,518,513;,\r\n 3;518,59,60;,\r\n 3;67,500,68;,\r\n 3;500,67,499;,\r\n 3;73,507,512;,\r\n 3;507,73,72;,\r\n 3;77,520,78;,\r\n 3;520,77,521;,\r\n 3;58,513,508;,\r\n 3;513,58,59;,\r\n 3;68,501,69;,\r\n 3;501,68,500;,\r\n 3;74,512,517;,\r\n 3;512,74,73;,\r\n 3;78,519,79;,\r\n 3;519,78,520;,\r\n 3;57,508,503;,\r\n 3;508,57,58;,\r\n 3;69,502,70;,\r\n 3;502,69,501;,\r\n 3;75,517,522;,\r\n 3;517,75,74;,\r\n 3;79,518,80;,\r\n 3;518,79,519;,\r\n 3;56,503,498;,\r\n 3;503,56,57;,\r\n 3;523,529,524;,\r\n 3;529,523,528;,\r\n 3;524,530,525;,\r\n 3;530,524,529;,\r\n 3;525,531,526;,\r\n 3;531,525,530;,\r\n 3;526,532,527;,\r\n 3;532,526,531;,\r\n 3;528,534,529;,\r\n 3;534,528,533;,\r\n 3;529,535,530;,\r\n 3;535,529,534;,\r\n 3;530,536,531;,\r\n 3;536,530,535;,\r\n 3;531,537,532;,\r\n 3;537,531,536;,\r\n 3;533,539,534;,\r\n 3;539,533,538;,\r\n 3;534,540,535;,\r\n 3;540,534,539;,\r\n 3;535,541,536;,\r\n 3;541,535,540;,\r\n 3;536,542,537;,\r\n 3;542,536,541;,\r\n 3;538,544,539;,\r\n 3;544,538,543;,\r\n 3;539,545,540;,\r\n 3;545,539,544;,\r\n 3;540,546,541;,\r\n 3;546,540,545;,\r\n 3;541,547,542;,\r\n 3;547,541,546;,\r\n 3;1,523,81;,\r\n 3;523,1,71;,\r\n 3;6,547,87;,\r\n 3;547,6,86;,\r\n 3;75,91,543;,\r\n 3;91,75,5;,\r\n 3;81,524,82;,\r\n 3;524,81,523;,\r\n 3;83,527,532;,\r\n 3;87,546,88;,\r\n 3;546,87,547;,\r\n 3;74,543,538;,\r\n 3;543,74,75;,\r\n 3;525,82,524;,\r\n 3;84,532,537;,\r\n 3;532,84,83;,\r\n 3;88,545,89;,\r\n 3;545,88,546;,\r\n 3;73,538,533;,\r\n 3;538,73,74;,\r\n 3;85,537,542;,\r\n 3;537,85,84;,\r\n 3;89,544,90;,\r\n 3;544,89,545;,\r\n 3;72,533,528;,\r\n 3;533,72,73;,\r\n 3;86,542,547;,\r\n 3;542,86,85;,\r\n 3;90,543,91;,\r\n 3;543,90,544;,\r\n 3;71,528,523;,\r\n 3;528,71,72;,\r\n 3;550,548,549;,\r\n 3;549,553,550;,\r\n 3;553,549,552;,\r\n 3;550,554,551;,\r\n 3;554,550,553;,\r\n 3;555,551,554;,\r\n 3;552,557,553;,\r\n 3;557,552,556;,\r\n 3;553,558,554;,\r\n 3;558,553,557;,\r\n 3;554,559,555;,\r\n 3;559,554,558;,\r\n 3;560,555,559;,\r\n 3;7,560,93;,\r\n 3;560,7,92;,\r\n 3;86,97,556;,\r\n 3;97,86,6;,\r\n 3;93,559,94;,\r\n 3;559,93,560;,\r\n 3;85,556,552;,\r\n 3;556,85,86;,\r\n 3;94,558,95;,\r\n 3;558,94,559;,\r\n 3;84,552,549;,\r\n 3;552,84,85;,\r\n 3;95,557,96;,\r\n 3;557,95,558;,\r\n 3;83,549,548;,\r\n 3;549,83,84;,\r\n 3;96,556,97;,\r\n 3;556,96,557;,\r\n 3;562,566,563;,\r\n 3;566,562,565;,\r\n 3;564,568,565;,\r\n 3;568,564,567;,\r\n 3;565,569,566;,\r\n 3;569,565,568;,\r\n 3;567,572,568;,\r\n 3;572,567,571;,\r\n 3;568,573,569;,\r\n 3;573,568,572;,\r\n 3;98,44,561;,\r\n 3;44,98,2;,\r\n 3;8,573,103;,\r\n 3;573,8,102;,\r\n 3;99,561,563;,\r\n 3;561,99,98;,\r\n 3;103,572,104;,\r\n 3;572,103,573;,\r\n 3;100,563,566;,\r\n 3;563,100,99;,\r\n 3;104,571,105;,\r\n 3;571,104,572;,\r\n 3;101,566,569;,\r\n 3;566,101,100;,\r\n 3;105,570,106;,\r\n 3;570,105,571;,\r\n 3;102,569,573;,\r\n 3;569,102,101;,\r\n 3;574,580,575;,\r\n 3;580,574,579;,\r\n 3;575,581,576;,\r\n 3;581,575,580;,\r\n 3;576,582,577;,\r\n 3;582,576,581;,\r\n 3;577,583,578;,\r\n 3;583,577,582;,\r\n 3;579,585,580;,\r\n 3;585,579,584;,\r\n 3;580,586,581;,\r\n 3;586,580,585;,\r\n 3;581,587,582;,\r\n 3;587,581,586;,\r\n 3;582,588,583;,\r\n 3;588,582,587;,\r\n 3;584,590,585;,\r\n 3;590,584,589;,\r\n 3;585,591,586;,\r\n 3;591,585,590;,\r\n 3;586,592,587;,\r\n 3;592,586,591;,\r\n 3;587,593,588;,\r\n 3;593,587,592;,\r\n 3;589,595,590;,\r\n 3;595,589,594;,\r\n 3;590,596,591;,\r\n 3;596,590,595;,\r\n 3;591,597,592;,\r\n 3;597,591,596;,\r\n 3;592,598,593;,\r\n 3;598,592,597;,\r\n 3;2,574,53;,\r\n 3;574,2,98;,\r\n 3;107,49,578;,\r\n 3;49,107,3;,\r\n 3;9,598,112;,\r\n 3;598,9,111;,\r\n 3;102,116,594;,\r\n 3;116,102,8;,\r\n 3;53,575,52;,\r\n 3;575,53,574;,\r\n 3;108,578,583;,\r\n 3;578,108,107;,\r\n 3;112,597,113;,\r\n 3;597,112,598;,\r\n 3;101,594,589;,\r\n 3;594,101,102;,\r\n 3;52,576,51;,\r\n 3;576,52,575;,\r\n 3;109,583,588;,\r\n 3;583,109,108;,\r\n 3;113,596,114;,\r\n 3;596,113,597;,\r\n 3;100,589,584;,\r\n 3;589,100,101;,\r\n 3;51,577,50;,\r\n 3;577,51,576;,\r\n 3;110,588,593;,\r\n 3;588,110,109;,\r\n 3;114,595,115;,\r\n 3;595,114,596;,\r\n 3;99,584,579;,\r\n 3;584,99,100;,\r\n 3;50,578,49;,\r\n 3;578,50,577;,\r\n 3;111,593,598;,\r\n 3;593,111,110;,\r\n 3;115,594,116;,\r\n 3;594,115,595;,\r\n 3;98,579,574;,\r\n 3;579,98,99;,\r\n 3;599,605,600;,\r\n 3;605,599,604;,\r\n 3;600,606,601;,\r\n 3;606,600,605;,\r\n 3;601,607,602;,\r\n 3;607,601,606;,\r\n 3;602,608,603;,\r\n 3;608,602,607;,\r\n 3;604,610,605;,\r\n 3;610,604,609;,\r\n 3;605,611,606;,\r\n 3;611,605,610;,\r\n 3;606,612,607;,\r\n 3;612,606,611;,\r\n 3;607,613,608;,\r\n 3;613,607,612;,\r\n 3;609,615,610;,\r\n 3;615,609,614;,\r\n 3;610,616,611;,\r\n 3;616,610,615;,\r\n 3;611,617,612;,\r\n 3;617,611,616;,\r\n 3;612,618,613;,\r\n 3;618,612,617;,\r\n 3;614,620,615;,\r\n 3;620,614,619;,\r\n 3;615,621,616;,\r\n 3;621,615,620;,\r\n 3;616,622,617;,\r\n 3;622,616,621;,\r\n 3;617,623,618;,\r\n 3;623,617,622;,\r\n 3;3,599,65;,\r\n 3;599,3,107;,\r\n 3;117,61,603;,\r\n 3;61,117,4;,\r\n 3;10,623,122;,\r\n 3;623,10,121;,\r\n 3;111,126,619;,\r\n 3;126,111,9;,\r\n 3;65,600,64;,\r\n 3;600,65,599;,\r\n 3;118,603,608;,\r\n 3;603,118,117;,\r\n 3;122,622,123;,\r\n 3;622,122,623;,\r\n 3;110,619,614;,\r\n 3;619,110,111;,\r\n 3;64,601,63;,\r\n 3;601,64,600;,\r\n 3;119,608,613;,\r\n 3;608,119,118;,\r\n 3;123,621,124;,\r\n 3;621,123,622;,\r\n 3;109,614,609;,\r\n 3;614,109,110;,\r\n 3;63,602,62;,\r\n 3;602,63,601;,\r\n 3;120,613,618;,\r\n 3;613,120,119;,\r\n 3;124,620,125;,\r\n 3;620,124,621;,\r\n 3;108,609,604;,\r\n 3;609,108,109;,\r\n 3;62,603,61;,\r\n 3;603,62,602;,\r\n 3;121,618,623;,\r\n 3;618,121,120;,\r\n 3;125,619,126;,\r\n 3;619,125,620;,\r\n 3;107,604,599;,\r\n 3;604,107,108;,\r\n 3;624,630,625;,\r\n 3;630,624,629;,\r\n 3;625,631,626;,\r\n 3;631,625,630;,\r\n 3;626,632,627;,\r\n 3;632,626,631;,\r\n 3;627,633,628;,\r\n 3;633,627,632;,\r\n 3;629,635,630;,\r\n 3;635,629,634;,\r\n 3;630,636,631;,\r\n 3;636,630,635;,\r\n 3;631,637,632;,\r\n 3;637,631,636;,\r\n 3;632,638,633;,\r\n 3;638,632,637;,\r\n 3;634,640,635;,\r\n 3;640,634,639;,\r\n 3;635,641,636;,\r\n 3;641,635,640;,\r\n 3;636,642,637;,\r\n 3;642,636,641;,\r\n 3;637,643,638;,\r\n 3;643,637,642;,\r\n 3;639,645,640;,\r\n 3;645,639,644;,\r\n 3;640,646,641;,\r\n 3;646,640,645;,\r\n 3;641,647,642;,\r\n 3;647,641,646;,\r\n 3;642,648,643;,\r\n 3;648,642,647;,\r\n 3;4,624,80;,\r\n 3;624,4,117;,\r\n 3;127,76,628;,\r\n 3;76,127,5;,\r\n 3;11,648,132;,\r\n 3;648,11,131;,\r\n 3;121,136,644;,\r\n 3;136,121,10;,\r\n 3;80,625,79;,\r\n 3;625,80,624;,\r\n 3;128,628,633;,\r\n 3;628,128,127;,\r\n 3;132,647,133;,\r\n 3;647,132,648;,\r\n 3;120,644,639;,\r\n 3;644,120,121;,\r\n 3;79,626,78;,\r\n 3;626,79,625;,\r\n 3;129,633,638;,\r\n 3;633,129,128;,\r\n 3;133,646,134;,\r\n 3;646,133,647;,\r\n 3;119,639,634;,\r\n 3;639,119,120;,\r\n 3;78,627,77;,\r\n 3;627,78,626;,\r\n 3;130,638,643;,\r\n 3;638,130,129;,\r\n 3;134,645,135;,\r\n 3;645,134,646;,\r\n 3;118,634,629;,\r\n 3;634,118,119;,\r\n 3;77,628,76;,\r\n 3;628,77,627;,\r\n 3;131,643,648;,\r\n 3;643,131,130;,\r\n 3;135,644,136;,\r\n 3;644,135,645;,\r\n 3;117,629,624;,\r\n 3;629,117,118;,\r\n 3;649,655,650;,\r\n 3;655,649,654;,\r\n 3;650,656,651;,\r\n 3;656,650,655;,\r\n 3;651,657,652;,\r\n 3;657,651,656;,\r\n 3;652,658,653;,\r\n 3;658,652,657;,\r\n 3;654,660,655;,\r\n 3;660,654,659;,\r\n 3;655,661,656;,\r\n 3;661,655,660;,\r\n 3;656,662,657;,\r\n 3;662,656,661;,\r\n 3;657,663,658;,\r\n 3;663,657,662;,\r\n 3;659,665,660;,\r\n 3;665,659,664;,\r\n 3;660,666,661;,\r\n 3;666,660,665;,\r\n 3;661,667,662;,\r\n 3;667,661,666;,\r\n 3;662,668,663;,\r\n 3;668,662,667;,\r\n 3;664,670,665;,\r\n 3;670,664,669;,\r\n 3;665,671,666;,\r\n 3;671,665,670;,\r\n 3;666,672,667;,\r\n 3;672,666,671;,\r\n 3;667,673,668;,\r\n 3;673,667,672;,\r\n 3;5,649,91;,\r\n 3;649,5,127;,\r\n 3;137,87,653;,\r\n 3;87,137,6;,\r\n 3;12,673,142;,\r\n 3;673,12,141;,\r\n 3;131,146,669;,\r\n 3;146,131,11;,\r\n 3;91,650,90;,\r\n 3;650,91,649;,\r\n 3;138,653,658;,\r\n 3;653,138,137;,\r\n 3;142,672,143;,\r\n 3;672,142,673;,\r\n 3;130,669,664;,\r\n 3;669,130,131;,\r\n 3;90,651,89;,\r\n 3;651,90,650;,\r\n 3;139,658,663;,\r\n 3;658,139,138;,\r\n 3;143,671,144;,\r\n 3;671,143,672;,\r\n 3;129,664,659;,\r\n 3;664,129,130;,\r\n 3;89,652,88;,\r\n 3;652,89,651;,\r\n 3;140,663,668;,\r\n 3;663,140,139;,\r\n 3;144,670,145;,\r\n 3;670,144,671;,\r\n 3;128,659,654;,\r\n 3;659,128,129;,\r\n 3;88,653,87;,\r\n 3;653,88,652;,\r\n 3;141,668,673;,\r\n 3;668,141,140;,\r\n 3;145,669,146;,\r\n 3;669,145,670;,\r\n 3;127,654,649;,\r\n 3;654,127,128;,\r\n 3;674,680,675;,\r\n 3;680,674,679;,\r\n 3;675,681,676;,\r\n 3;681,675,680;,\r\n 3;676,682,677;,\r\n 3;682,676,681;,\r\n 3;677,683,678;,\r\n 3;683,677,682;,\r\n 3;679,685,680;,\r\n 3;685,679,684;,\r\n 3;680,686,681;,\r\n 3;686,680,685;,\r\n 3;681,687,682;,\r\n 3;687,681,686;,\r\n 3;682,688,683;,\r\n 3;688,682,687;,\r\n 3;684,690,685;,\r\n 3;690,684,689;,\r\n 3;685,691,686;,\r\n 3;691,685,690;,\r\n 3;686,692,687;,\r\n 3;692,686,691;,\r\n 3;687,693,688;,\r\n 3;693,687,692;,\r\n 3;689,695,690;,\r\n 3;695,689,694;,\r\n 3;690,696,691;,\r\n 3;696,690,695;,\r\n 3;691,697,692;,\r\n 3;697,691,696;,\r\n 3;692,698,693;,\r\n 3;698,692,697;,\r\n 3;6,674,97;,\r\n 3;674,6,137;,\r\n 3;147,93,678;,\r\n 3;93,147,7;,\r\n 3;13,698,152;,\r\n 3;698,13,151;,\r\n 3;141,156,694;,\r\n 3;156,141,12;,\r\n 3;97,675,96;,\r\n 3;675,97,674;,\r\n 3;148,678,683;,\r\n 3;678,148,147;,\r\n 3;152,697,153;,\r\n 3;697,152,698;,\r\n 3;140,694,689;,\r\n 3;694,140,141;,\r\n 3;96,676,95;,\r\n 3;676,96,675;,\r\n 3;149,683,688;,\r\n 3;683,149,148;,\r\n 3;153,696,154;,\r\n 3;696,153,697;,\r\n 3;139,689,684;,\r\n 3;689,139,140;,\r\n 3;95,677,94;,\r\n 3;677,95,676;,\r\n 3;150,688,693;,\r\n 3;688,150,149;,\r\n 3;154,695,155;,\r\n 3;695,154,696;,\r\n 3;138,684,679;,\r\n 3;684,138,139;,\r\n 3;94,678,93;,\r\n 3;678,94,677;,\r\n 3;151,693,698;,\r\n 3;693,151,150;,\r\n 3;155,694,156;,\r\n 3;694,155,695;,\r\n 3;137,679,674;,\r\n 3;679,137,138;,\r\n 3;701,699,700;,\r\n 3;700,703,701;,\r\n 3;703,700,702;,\r\n 3;704,701,703;,\r\n 3;702,706,703;,\r\n 3;706,702,705;,\r\n 3;703,707,704;,\r\n 3;707,703,706;,\r\n 3;708,704,707;,\r\n 3;705,710,706;,\r\n 3;710,705,709;,\r\n 3;706,711,707;,\r\n 3;711,706,710;,\r\n 3;707,712,708;,\r\n 3;712,707,711;,\r\n 3;699,7,147;,\r\n 3;151,161,709;,\r\n 3;161,151,13;,\r\n 3;157,712,158;,\r\n 3;150,709,705;,\r\n 3;709,150,151;,\r\n 3;158,711,159;,\r\n 3;711,158,712;,\r\n 3;149,705,702;,\r\n 3;705,149,150;,\r\n 3;159,710,160;,\r\n 3;710,159,711;,\r\n 3;148,702,700;,\r\n 3;702,148,149;,\r\n 3;160,709,161;,\r\n 3;709,160,710;,\r\n 3;147,700,699;,\r\n 3;700,147,148;,\r\n 3;713,719,714;,\r\n 3;719,713,718;,\r\n 3;714,720,715;,\r\n 3;720,714,719;,\r\n 3;715,721,716;,\r\n 3;721,715,720;,\r\n 3;716,722,717;,\r\n 3;722,716,721;,\r\n 3;718,724,719;,\r\n 3;724,718,723;,\r\n 3;719,725,720;,\r\n 3;725,719,724;,\r\n 3;720,726,721;,\r\n 3;726,720,725;,\r\n 3;721,727,722;,\r\n 3;727,721,726;,\r\n 3;723,729,724;,\r\n 3;729,723,728;,\r\n 3;724,730,725;,\r\n 3;730,724,729;,\r\n 3;725,731,726;,\r\n 3;731,725,730;,\r\n 3;726,732,727;,\r\n 3;732,726,731;,\r\n 3;728,734,729;,\r\n 3;734,728,733;,\r\n 3;729,735,730;,\r\n 3;735,729,734;,\r\n 3;730,736,731;,\r\n 3;736,730,735;,\r\n 3;731,737,732;,\r\n 3;737,731,736;,\r\n 3;162,103,717;,\r\n 3;103,162,8;,\r\n 3;15,737,167;,\r\n 3;737,15,166;,\r\n 3;172,171,733;,\r\n 3;171,172,14;,\r\n 3;163,717,722;,\r\n 3;717,163,162;,\r\n 3;167,736,168;,\r\n 3;736,167,737;,\r\n 3;173,733,728;,\r\n 3;733,173,172;,\r\n 3;106,715,105;,\r\n 3;715,106,714;,\r\n 3;164,722,727;,\r\n 3;722,164,163;,\r\n 3;168,735,169;,\r\n 3;735,168,736;,\r\n 3;174,728,723;,\r\n 3;728,174,173;,\r\n 3;105,716,104;,\r\n 3;716,105,715;,\r\n 3;165,727,732;,\r\n 3;727,165,164;,\r\n 3;169,734,170;,\r\n 3;734,169,735;,\r\n 3;104,717,103;,\r\n 3;717,104,716;,\r\n 3;166,732,737;,\r\n 3;732,166,165;,\r\n 3;170,733,171;,\r\n 3;733,170,734;,\r\n 3;738,744,739;,\r\n 3;744,738,743;,\r\n 3;739,745,740;,\r\n 3;745,739,744;,\r\n 3;740,746,741;,\r\n 3;746,740,745;,\r\n 3;741,747,742;,\r\n 3;747,741,746;,\r\n 3;743,749,744;,\r\n 3;749,743,748;,\r\n 3;744,750,745;,\r\n 3;750,744,749;,\r\n 3;745,751,746;,\r\n 3;751,745,750;,\r\n 3;746,752,747;,\r\n 3;752,746,751;,\r\n 3;748,754,749;,\r\n 3;754,748,753;,\r\n 3;749,755,750;,\r\n 3;755,749,754;,\r\n 3;750,756,751;,\r\n 3;756,750,755;,\r\n 3;751,757,752;,\r\n 3;757,751,756;,\r\n 3;753,759,754;,\r\n 3;759,753,758;,\r\n 3;754,760,755;,\r\n 3;760,754,759;,\r\n 3;755,761,756;,\r\n 3;761,755,760;,\r\n 3;756,762,757;,\r\n 3;762,756,761;,\r\n 3;8,738,116;,\r\n 3;738,8,162;,\r\n 3;175,112,742;,\r\n 3;112,175,9;,\r\n 3;16,762,180;,\r\n 3;762,16,179;,\r\n 3;166,184,758;,\r\n 3;184,166,15;,\r\n 3;116,739,115;,\r\n 3;739,116,738;,\r\n 3;176,742,747;,\r\n 3;742,176,175;,\r\n 3;180,761,181;,\r\n 3;761,180,762;,\r\n 3;165,758,753;,\r\n 3;758,165,166;,\r\n 3;115,740,114;,\r\n 3;740,115,739;,\r\n 3;177,747,752;,\r\n 3;747,177,176;,\r\n 3;181,760,182;,\r\n 3;760,181,761;,\r\n 3;164,753,748;,\r\n 3;753,164,165;,\r\n 3;114,741,113;,\r\n 3;741,114,740;,\r\n 3;178,752,757;,\r\n 3;752,178,177;,\r\n 3;182,759,183;,\r\n 3;759,182,760;,\r\n 3;163,748,743;,\r\n 3;748,163,164;,\r\n 3;113,742,112;,\r\n 3;742,113,741;,\r\n 3;179,757,762;,\r\n 3;757,179,178;,\r\n 3;183,758,184;,\r\n 3;758,183,759;,\r\n 3;162,743,738;,\r\n 3;743,162,163;,\r\n 3;763,769,764;,\r\n 3;769,763,768;,\r\n 3;764,770,765;,\r\n 3;770,764,769;,\r\n 3;765,771,766;,\r\n 3;771,765,770;,\r\n 3;766,772,767;,\r\n 3;772,766,771;,\r\n 3;768,774,769;,\r\n 3;774,768,773;,\r\n 3;769,775,770;,\r\n 3;775,769,774;,\r\n 3;770,776,771;,\r\n 3;776,770,775;,\r\n 3;771,777,772;,\r\n 3;777,771,776;,\r\n 3;773,779,774;,\r\n 3;779,773,778;,\r\n 3;774,780,775;,\r\n 3;780,774,779;,\r\n 3;775,781,776;,\r\n 3;781,775,780;,\r\n 3;776,782,777;,\r\n 3;782,776,781;,\r\n 3;778,784,779;,\r\n 3;784,778,783;,\r\n 3;779,785,780;,\r\n 3;785,779,784;,\r\n 3;780,786,781;,\r\n 3;786,780,785;,\r\n 3;781,787,782;,\r\n 3;787,781,786;,\r\n 3;9,763,126;,\r\n 3;763,9,175;,\r\n 3;185,122,767;,\r\n 3;122,185,10;,\r\n 3;17,787,190;,\r\n 3;787,17,189;,\r\n 3;179,194,783;,\r\n 3;194,179,16;,\r\n 3;126,764,125;,\r\n 3;764,126,763;,\r\n 3;186,767,772;,\r\n 3;767,186,185;,\r\n 3;190,786,191;,\r\n 3;786,190,787;,\r\n 3;178,783,778;,\r\n 3;783,178,179;,\r\n 3;125,765,124;,\r\n 3;765,125,764;,\r\n 3;187,772,777;,\r\n 3;772,187,186;,\r\n 3;191,785,192;,\r\n 3;785,191,786;,\r\n 3;177,778,773;,\r\n 3;778,177,178;,\r\n 3;124,766,123;,\r\n 3;766,124,765;,\r\n 3;188,777,782;,\r\n 3;777,188,187;,\r\n 3;192,784,193;,\r\n 3;784,192,785;,\r\n 3;176,773,768;,\r\n 3;773,176,177;,\r\n 3;123,767,122;,\r\n 3;767,123,766;,\r\n 3;189,782,787;,\r\n 3;782,189,188;,\r\n 3;193,783,194;,\r\n 3;783,193,784;,\r\n 3;175,768,763;,\r\n 3;768,175,176;,\r\n 3;788,794,789;,\r\n 3;794,788,793;,\r\n 3;789,795,790;,\r\n 3;795,789,794;,\r\n 3;790,796,791;,\r\n 3;796,790,795;,\r\n 3;791,797,792;,\r\n 3;797,791,796;,\r\n 3;793,799,794;,\r\n 3;799,793,798;,\r\n 3;794,800,795;,\r\n 3;800,794,799;,\r\n 3;795,801,796;,\r\n 3;801,795,800;,\r\n 3;796,802,797;,\r\n 3;802,796,801;,\r\n 3;798,804,799;,\r\n 3;804,798,803;,\r\n 3;799,805,800;,\r\n 3;805,799,804;,\r\n 3;800,806,801;,\r\n 3;806,800,805;,\r\n 3;801,807,802;,\r\n 3;807,801,806;,\r\n 3;803,809,804;,\r\n 3;809,803,808;,\r\n 3;804,810,805;,\r\n 3;810,804,809;,\r\n 3;805,811,806;,\r\n 3;811,805,810;,\r\n 3;806,812,807;,\r\n 3;812,806,811;,\r\n 3;10,788,136;,\r\n 3;788,10,185;,\r\n 3;195,132,792;,\r\n 3;132,195,11;,\r\n 3;18,812,200;,\r\n 3;812,18,199;,\r\n 3;189,204,808;,\r\n 3;204,189,17;,\r\n 3;136,789,135;,\r\n 3;789,136,788;,\r\n 3;196,792,797;,\r\n 3;792,196,195;,\r\n 3;200,811,201;,\r\n 3;811,200,812;,\r\n 3;188,808,803;,\r\n 3;808,188,189;,\r\n 3;135,790,134;,\r\n 3;790,135,789;,\r\n 3;197,797,802;,\r\n 3;797,197,196;,\r\n 3;201,810,202;,\r\n 3;810,201,811;,\r\n 3;187,803,798;,\r\n 3;803,187,188;,\r\n 3;134,791,133;,\r\n 3;791,134,790;,\r\n 3;198,802,807;,\r\n 3;802,198,197;,\r\n 3;202,809,203;,\r\n 3;809,202,810;,\r\n 3;186,798,793;,\r\n 3;798,186,187;,\r\n 3;133,792,132;,\r\n 3;792,133,791;,\r\n 3;199,807,812;,\r\n 3;807,199,198;,\r\n 3;203,808,204;,\r\n 3;808,203,809;,\r\n 3;185,793,788;,\r\n 3;793,185,186;,\r\n 3;813,819,814;,\r\n 3;819,813,818;,\r\n 3;814,820,815;,\r\n 3;820,814,819;,\r\n 3;815,821,816;,\r\n 3;821,815,820;,\r\n 3;816,822,817;,\r\n 3;822,816,821;,\r\n 3;818,824,819;,\r\n 3;824,818,823;,\r\n 3;819,825,820;,\r\n 3;825,819,824;,\r\n 3;820,826,821;,\r\n 3;826,820,825;,\r\n 3;821,827,822;,\r\n 3;827,821,826;,\r\n 3;823,829,824;,\r\n 3;829,823,828;,\r\n 3;824,830,825;,\r\n 3;830,824,829;,\r\n 3;825,831,826;,\r\n 3;831,825,830;,\r\n 3;826,832,827;,\r\n 3;832,826,831;,\r\n 3;828,834,829;,\r\n 3;834,828,833;,\r\n 3;829,835,830;,\r\n 3;835,829,834;,\r\n 3;830,836,831;,\r\n 3;836,830,835;,\r\n 3;831,837,832;,\r\n 3;837,831,836;,\r\n 3;11,813,146;,\r\n 3;813,11,195;,\r\n 3;205,142,817;,\r\n 3;142,205,12;,\r\n 3;19,837,210;,\r\n 3;837,19,209;,\r\n 3;199,214,833;,\r\n 3;214,199,18;,\r\n 3;146,814,145;,\r\n 3;814,146,813;,\r\n 3;206,817,822;,\r\n 3;817,206,205;,\r\n 3;210,836,211;,\r\n 3;836,210,837;,\r\n 3;198,833,828;,\r\n 3;833,198,199;,\r\n 3;145,815,144;,\r\n 3;815,145,814;,\r\n 3;207,822,827;,\r\n 3;822,207,206;,\r\n 3;211,835,212;,\r\n 3;835,211,836;,\r\n 3;197,828,823;,\r\n 3;828,197,198;,\r\n 3;144,816,143;,\r\n 3;816,144,815;,\r\n 3;208,827,832;,\r\n 3;827,208,207;,\r\n 3;212,834,213;,\r\n 3;834,212,835;,\r\n 3;196,823,818;,\r\n 3;823,196,197;,\r\n 3;143,817,142;,\r\n 3;817,143,816;,\r\n 3;209,832,837;,\r\n 3;832,209,208;,\r\n 3;213,833,214;,\r\n 3;833,213,834;,\r\n 3;195,818,813;,\r\n 3;818,195,196;,\r\n 3;838,844,839;,\r\n 3;844,838,843;,\r\n 3;839,845,840;,\r\n 3;845,839,844;,\r\n 3;840,846,841;,\r\n 3;846,840,845;,\r\n 3;841,847,842;,\r\n 3;847,841,846;,\r\n 3;843,849,844;,\r\n 3;849,843,848;,\r\n 3;844,850,845;,\r\n 3;850,844,849;,\r\n 3;845,851,846;,\r\n 3;851,845,850;,\r\n 3;846,852,847;,\r\n 3;852,846,851;,\r\n 3;848,854,849;,\r\n 3;854,848,853;,\r\n 3;849,855,850;,\r\n 3;855,849,854;,\r\n 3;850,856,851;,\r\n 3;856,850,855;,\r\n 3;851,857,852;,\r\n 3;857,851,856;,\r\n 3;853,859,854;,\r\n 3;859,853,858;,\r\n 3;854,860,855;,\r\n 3;860,854,859;,\r\n 3;855,861,856;,\r\n 3;861,855,860;,\r\n 3;856,862,857;,\r\n 3;862,856,861;,\r\n 3;12,838,156;,\r\n 3;838,12,205;,\r\n 3;215,152,842;,\r\n 3;152,215,13;,\r\n 3;20,862,220;,\r\n 3;862,20,219;,\r\n 3;209,224,858;,\r\n 3;224,209,19;,\r\n 3;156,839,155;,\r\n 3;839,156,838;,\r\n 3;216,842,847;,\r\n 3;842,216,215;,\r\n 3;220,861,221;,\r\n 3;861,220,862;,\r\n 3;208,858,853;,\r\n 3;858,208,209;,\r\n 3;155,840,154;,\r\n 3;840,155,839;,\r\n 3;217,847,852;,\r\n 3;847,217,216;,\r\n 3;221,860,222;,\r\n 3;860,221,861;,\r\n 3;207,853,848;,\r\n 3;853,207,208;,\r\n 3;154,841,153;,\r\n 3;841,154,840;,\r\n 3;218,852,857;,\r\n 3;852,218,217;,\r\n 3;222,859,223;,\r\n 3;859,222,860;,\r\n 3;206,848,843;,\r\n 3;848,206,207;,\r\n 3;153,842,152;,\r\n 3;842,153,841;,\r\n 3;219,857,862;,\r\n 3;857,219,218;,\r\n 3;223,858,224;,\r\n 3;858,223,859;,\r\n 3;205,843,838;,\r\n 3;843,205,206;,\r\n 3;863,869,864;,\r\n 3;869,863,868;,\r\n 3;864,870,865;,\r\n 3;870,864,869;,\r\n 3;865,871,866;,\r\n 3;871,865,870;,\r\n 3;866,872,867;,\r\n 3;872,866,871;,\r\n 3;868,874,869;,\r\n 3;874,868,873;,\r\n 3;869,875,870;,\r\n 3;875,869,874;,\r\n 3;870,876,871;,\r\n 3;876,870,875;,\r\n 3;871,877,872;,\r\n 3;877,871,876;,\r\n 3;873,879,874;,\r\n 3;879,873,878;,\r\n 3;874,880,875;,\r\n 3;880,874,879;,\r\n 3;875,881,876;,\r\n 3;881,875,880;,\r\n 3;876,882,877;,\r\n 3;882,876,881;,\r\n 3;878,884,879;,\r\n 3;884,878,883;,\r\n 3;879,885,880;,\r\n 3;885,879,884;,\r\n 3;880,886,881;,\r\n 3;886,880,885;,\r\n 3;881,887,882;,\r\n 3;887,881,886;,\r\n 3;13,863,161;,\r\n 3;863,13,215;,\r\n 3;21,887,227;,\r\n 3;887,21,226;,\r\n 3;219,231,883;,\r\n 3;231,219,20;,\r\n 3;161,864,160;,\r\n 3;864,161,863;,\r\n 3;227,886,228;,\r\n 3;886,227,887;,\r\n 3;218,883,878;,\r\n 3;883,218,219;,\r\n 3;160,865,159;,\r\n 3;865,160,864;,\r\n 3;228,885,229;,\r\n 3;885,228,886;,\r\n 3;217,878,873;,\r\n 3;878,217,218;,\r\n 3;159,866,158;,\r\n 3;866,159,865;,\r\n 3;225,877,882;,\r\n 3;229,884,230;,\r\n 3;884,229,885;,\r\n 3;216,873,868;,\r\n 3;873,216,217;,\r\n 3;158,867,157;,\r\n 3;867,158,866;,\r\n 3;226,882,887;,\r\n 3;882,226,225;,\r\n 3;230,883,231;,\r\n 3;883,230,884;,\r\n 3;215,868,863;,\r\n 3;868,215,216;,\r\n 3;888,894,889;,\r\n 3;894,888,893;,\r\n 3;889,895,890;,\r\n 3;895,889,894;,\r\n 3;890,896,891;,\r\n 3;896,890,895;,\r\n 3;891,897,892;,\r\n 3;897,891,896;,\r\n 3;893,899,894;,\r\n 3;899,893,898;,\r\n 3;894,900,895;,\r\n 3;900,894,899;,\r\n 3;895,901,896;,\r\n 3;901,895,900;,\r\n 3;896,902,897;,\r\n 3;902,896,901;,\r\n 3;898,904,899;,\r\n 3;904,898,903;,\r\n 3;899,905,900;,\r\n 3;905,899,904;,\r\n 3;900,906,901;,\r\n 3;906,900,905;,\r\n 3;901,907,902;,\r\n 3;907,901,906;,\r\n 3;903,909,904;,\r\n 3;909,903,908;,\r\n 3;904,910,905;,\r\n 3;910,904,909;,\r\n 3;905,911,906;,\r\n 3;911,905,910;,\r\n 3;906,912,907;,\r\n 3;912,906,911;,\r\n 3;14,888,171;,\r\n 3;888,14,246;,\r\n 3;232,167,892;,\r\n 3;167,232,15;,\r\n 3;23,912,237;,\r\n 3;912,23,236;,\r\n 3;242,241,908;,\r\n 3;241,242,22;,\r\n 3;171,889,170;,\r\n 3;889,171,888;,\r\n 3;233,892,897;,\r\n 3;892,233,232;,\r\n 3;237,911,238;,\r\n 3;911,237,912;,\r\n 3;243,908,903;,\r\n 3;908,243,242;,\r\n 3;170,890,169;,\r\n 3;890,170,889;,\r\n 3;234,897,902;,\r\n 3;897,234,233;,\r\n 3;238,910,239;,\r\n 3;910,238,911;,\r\n 3;244,903,898;,\r\n 3;903,244,243;,\r\n 3;169,891,168;,\r\n 3;891,169,890;,\r\n 3;235,902,907;,\r\n 3;902,235,234;,\r\n 3;239,909,240;,\r\n 3;909,239,910;,\r\n 3;245,898,893;,\r\n 3;898,245,244;,\r\n 3;168,892,167;,\r\n 3;892,168,891;,\r\n 3;236,907,912;,\r\n 3;907,236,235;,\r\n 3;240,908,241;,\r\n 3;908,240,909;,\r\n 3;246,893,888;,\r\n 3;893,246,245;,\r\n 3;913,919,914;,\r\n 3;919,913,918;,\r\n 3;914,920,915;,\r\n 3;920,914,919;,\r\n 3;915,921,916;,\r\n 3;921,915,920;,\r\n 3;916,922,917;,\r\n 3;922,916,921;,\r\n 3;918,924,919;,\r\n 3;924,918,923;,\r\n 3;919,925,920;,\r\n 3;925,919,924;,\r\n 3;920,926,921;,\r\n 3;926,920,925;,\r\n 3;921,927,922;,\r\n 3;927,921,926;,\r\n 3;923,929,924;,\r\n 3;929,923,928;,\r\n 3;924,930,925;,\r\n 3;930,924,929;,\r\n 3;925,931,926;,\r\n 3;931,925,930;,\r\n 3;926,932,927;,\r\n 3;932,926,931;,\r\n 3;928,934,929;,\r\n 3;934,928,933;,\r\n 3;929,935,930;,\r\n 3;935,929,934;,\r\n 3;930,936,931;,\r\n 3;936,930,935;,\r\n 3;931,937,932;,\r\n 3;937,931,936;,\r\n 3;15,913,184;,\r\n 3;913,15,232;,\r\n 3;247,180,917;,\r\n 3;180,247,16;,\r\n 3;24,937,252;,\r\n 3;937,24,251;,\r\n 3;236,256,933;,\r\n 3;256,236,23;,\r\n 3;184,914,183;,\r\n 3;914,184,913;,\r\n 3;248,917,922;,\r\n 3;917,248,247;,\r\n 3;252,936,253;,\r\n 3;936,252,937;,\r\n 3;235,933,928;,\r\n 3;933,235,236;,\r\n 3;183,915,182;,\r\n 3;915,183,914;,\r\n 3;249,922,927;,\r\n 3;922,249,248;,\r\n 3;253,935,254;,\r\n 3;935,253,936;,\r\n 3;234,928,923;,\r\n 3;928,234,235;,\r\n 3;182,916,181;,\r\n 3;916,182,915;,\r\n 3;250,927,932;,\r\n 3;927,250,249;,\r\n 3;254,934,255;,\r\n 3;934,254,935;,\r\n 3;233,923,918;,\r\n 3;923,233,234;,\r\n 3;181,917,180;,\r\n 3;917,181,916;,\r\n 3;251,932,937;,\r\n 3;932,251,250;,\r\n 3;255,933,256;,\r\n 3;933,255,934;,\r\n 3;232,918,913;,\r\n 3;918,232,233;,\r\n 3;938,944,939;,\r\n 3;944,938,943;,\r\n 3;939,945,940;,\r\n 3;945,939,944;,\r\n 3;940,946,941;,\r\n 3;946,940,945;,\r\n 3;941,947,942;,\r\n 3;947,941,946;,\r\n 3;943,949,944;,\r\n 3;949,943,948;,\r\n 3;944,950,945;,\r\n 3;950,944,949;,\r\n 3;945,951,946;,\r\n 3;951,945,950;,\r\n 3;946,952,947;,\r\n 3;952,946,951;,\r\n 3;948,954,949;,\r\n 3;954,948,953;,\r\n 3;949,955,950;,\r\n 3;955,949,954;,\r\n 3;950,956,951;,\r\n 3;956,950,955;,\r\n 3;951,957,952;,\r\n 3;957,951,956;,\r\n 3;953,959,954;,\r\n 3;959,953,958;,\r\n 3;954,960,955;,\r\n 3;960,954,959;,\r\n 3;955,961,956;,\r\n 3;961,955,960;,\r\n 3;956,962,957;,\r\n 3;962,956,961;,\r\n 3;16,938,194;,\r\n 3;938,16,247;,\r\n 3;257,190,942;,\r\n 3;190,257,17;,\r\n 3;25,962,262;,\r\n 3;962,25,261;,\r\n 3;251,266,958;,\r\n 3;266,251,24;,\r\n 3;194,939,193;,\r\n 3;939,194,938;,\r\n 3;258,942,947;,\r\n 3;942,258,257;,\r\n 3;262,961,263;,\r\n 3;961,262,962;,\r\n 3;250,958,953;,\r\n 3;958,250,251;,\r\n 3;193,940,192;,\r\n 3;940,193,939;,\r\n 3;259,947,952;,\r\n 3;947,259,258;,\r\n 3;263,960,264;,\r\n 3;960,263,961;,\r\n 3;249,953,948;,\r\n 3;953,249,250;,\r\n 3;192,941,191;,\r\n 3;941,192,940;,\r\n 3;260,952,957;,\r\n 3;952,260,259;,\r\n 3;264,959,265;,\r\n 3;959,264,960;,\r\n 3;248,948,943;,\r\n 3;948,248,249;,\r\n 3;191,942,190;,\r\n 3;942,191,941;,\r\n 3;261,957,962;,\r\n 3;957,261,260;,\r\n 3;265,958,266;,\r\n 3;958,265,959;,\r\n 3;247,943,938;,\r\n 3;943,247,248;,\r\n 3;963,969,964;,\r\n 3;969,963,968;,\r\n 3;964,970,965;,\r\n 3;970,964,969;,\r\n 3;965,971,966;,\r\n 3;971,965,970;,\r\n 3;966,972,967;,\r\n 3;972,966,971;,\r\n 3;968,974,969;,\r\n 3;974,968,973;,\r\n 3;969,975,970;,\r\n 3;975,969,974;,\r\n 3;970,976,971;,\r\n 3;976,970,975;,\r\n 3;971,977,972;,\r\n 3;977,971,976;,\r\n 3;973,979,974;,\r\n 3;979,973,978;,\r\n 3;974,980,975;,\r\n 3;980,974,979;,\r\n 3;975,981,976;,\r\n 3;981,975,980;,\r\n 3;976,982,977;,\r\n 3;982,976,981;,\r\n 3;978,984,979;,\r\n 3;984,978,983;,\r\n 3;979,985,980;,\r\n 3;985,979,984;,\r\n 3;980,986,981;,\r\n 3;986,980,985;,\r\n 3;981,987,982;,\r\n 3;987,981,986;,\r\n 3;17,963,204;,\r\n 3;963,17,257;,\r\n 3;267,200,967;,\r\n 3;200,267,18;,\r\n 3;26,987,272;,\r\n 3;987,26,271;,\r\n 3;261,276,983;,\r\n 3;276,261,25;,\r\n 3;204,964,203;,\r\n 3;964,204,963;,\r\n 3;268,967,972;,\r\n 3;967,268,267;,\r\n 3;272,986,273;,\r\n 3;986,272,987;,\r\n 3;260,983,978;,\r\n 3;983,260,261;,\r\n 3;203,965,202;,\r\n 3;965,203,964;,\r\n 3;269,972,977;,\r\n 3;972,269,268;,\r\n 3;273,985,274;,\r\n 3;985,273,986;,\r\n 3;259,978,973;,\r\n 3;978,259,260;,\r\n 3;202,966,201;,\r\n 3;966,202,965;,\r\n 3;270,977,982;,\r\n 3;977,270,269;,\r\n 3;274,984,275;,\r\n 3;984,274,985;,\r\n 3;258,973,968;,\r\n 3;973,258,259;,\r\n 3;201,967,200;,\r\n 3;967,201,966;,\r\n 3;271,982,987;,\r\n 3;982,271,270;,\r\n 3;275,983,276;,\r\n 3;983,275,984;,\r\n 3;257,968,963;,\r\n 3;968,257,258;,\r\n 3;988,994,989;,\r\n 3;994,988,993;,\r\n 3;989,995,990;,\r\n 3;995,989,994;,\r\n 3;990,996,991;,\r\n 3;996,990,995;,\r\n 3;991,997,992;,\r\n 3;997,991,996;,\r\n 3;993,999,994;,\r\n 3;999,993,998;,\r\n 3;994,1000,995;,\r\n 3;1000,994,999;,\r\n 3;995,1001,996;,\r\n 3;1001,995,1000;,\r\n 3;996,1002,997;,\r\n 3;1002,996,1001;,\r\n 3;998,1004,999;,\r\n 3;1004,998,1003;,\r\n 3;999,1005,1000;,\r\n 3;1005,999,1004;,\r\n 3;1000,1006,1001;,\r\n 3;1006,1000,1005;,\r\n 3;1001,1007,1002;,\r\n 3;1007,1001,1006;,\r\n 3;1003,1009,1004;,\r\n 3;1009,1003,1008;,\r\n 3;1004,1010,1005;,\r\n 3;1010,1004,1009;,\r\n 3;1005,1011,1006;,\r\n 3;1011,1005,1010;,\r\n 3;1006,1012,1007;,\r\n 3;1012,1006,1011;,\r\n 3;18,988,214;,\r\n 3;988,18,267;,\r\n 3;277,210,992;,\r\n 3;210,277,19;,\r\n 3;27,1012,282;,\r\n 3;1012,27,281;,\r\n 3;271,286,1008;,\r\n 3;286,271,26;,\r\n 3;214,989,213;,\r\n 3;989,214,988;,\r\n 3;278,992,997;,\r\n 3;992,278,277;,\r\n 3;282,1011,283;,\r\n 3;1011,282,1012;,\r\n 3;270,1008,1003;,\r\n 3;1008,270,271;,\r\n 3;213,990,212;,\r\n 3;990,213,989;,\r\n 3;279,997,1002;,\r\n 3;997,279,278;,\r\n 3;283,1010,284;,\r\n 3;1010,283,1011;,\r\n 3;269,1003,998;,\r\n 3;1003,269,270;,\r\n 3;212,991,211;,\r\n 3;991,212,990;,\r\n 3;280,1002,1007;,\r\n 3;1002,280,279;,\r\n 3;284,1009,285;,\r\n 3;1009,284,1010;,\r\n 3;268,998,993;,\r\n 3;998,268,269;,\r\n 3;211,992,210;,\r\n 3;992,211,991;,\r\n 3;281,1007,1012;,\r\n 3;1007,281,280;,\r\n 3;285,1008,286;,\r\n 3;1008,285,1009;,\r\n 3;267,993,988;,\r\n 3;993,267,268;,\r\n 3;1013,1019,1014;,\r\n 3;1019,1013,1018;,\r\n 3;1014,1020,1015;,\r\n 3;1020,1014,1019;,\r\n 3;1015,1021,1016;,\r\n 3;1021,1015,1020;,\r\n 3;1016,1022,1017;,\r\n 3;1022,1016,1021;,\r\n 3;1018,1024,1019;,\r\n 3;1024,1018,1023;,\r\n 3;1019,1025,1020;,\r\n 3;1025,1019,1024;,\r\n 3;1020,1026,1021;,\r\n 3;1026,1020,1025;,\r\n 3;1021,1027,1022;,\r\n 3;1027,1021,1026;,\r\n 3;1023,1029,1024;,\r\n 3;1029,1023,1028;,\r\n 3;1024,1030,1025;,\r\n 3;1030,1024,1029;,\r\n 3;1025,1031,1026;,\r\n 3;1031,1025,1030;,\r\n 3;1026,1032,1027;,\r\n 3;1032,1026,1031;,\r\n 3;1028,1034,1029;,\r\n 3;1034,1028,1033;,\r\n 3;1029,1035,1030;,\r\n 3;1035,1029,1034;,\r\n 3;1030,1036,1031;,\r\n 3;1036,1030,1035;,\r\n 3;1031,1037,1032;,\r\n 3;1037,1031,1036;,\r\n 3;19,1013,224;,\r\n 3;1013,19,277;,\r\n 3;287,220,1017;,\r\n 3;220,287,20;,\r\n 3;28,1037,292;,\r\n 3;1037,28,291;,\r\n 3;281,296,1033;,\r\n 3;296,281,27;,\r\n 3;224,1014,223;,\r\n 3;1014,224,1013;,\r\n 3;288,1017,1022;,\r\n 3;1017,288,287;,\r\n 3;292,1036,293;,\r\n 3;1036,292,1037;,\r\n 3;280,1033,1028;,\r\n 3;1033,280,281;,\r\n 3;223,1015,222;,\r\n 3;1015,223,1014;,\r\n 3;289,1022,1027;,\r\n 3;1022,289,288;,\r\n 3;293,1035,294;,\r\n 3;1035,293,1036;,\r\n 3;279,1028,1023;,\r\n 3;1028,279,280;,\r\n 3;222,1016,221;,\r\n 3;1016,222,1015;,\r\n 3;290,1027,1032;,\r\n 3;1027,290,289;,\r\n 3;294,1034,295;,\r\n 3;1034,294,1035;,\r\n 3;278,1023,1018;,\r\n 3;1023,278,279;,\r\n 3;221,1017,220;,\r\n 3;1017,221,1016;,\r\n 3;291,1032,1037;,\r\n 3;1032,291,290;,\r\n 3;295,1033,296;,\r\n 3;1033,295,1034;,\r\n 3;277,1018,1013;,\r\n 3;1018,277,278;,\r\n 3;1038,1044,1039;,\r\n 3;1044,1038,1043;,\r\n 3;1039,1045,1040;,\r\n 3;1045,1039,1044;,\r\n 3;1040,1046,1041;,\r\n 3;1046,1040,1045;,\r\n 3;1041,1047,1042;,\r\n 3;1047,1041,1046;,\r\n 3;1043,1049,1044;,\r\n 3;1049,1043,1048;,\r\n 3;1044,1050,1045;,\r\n 3;1050,1044,1049;,\r\n 3;1045,1051,1046;,\r\n 3;1051,1045,1050;,\r\n 3;1046,1052,1047;,\r\n 3;1052,1046,1051;,\r\n 3;1048,1054,1049;,\r\n 3;1054,1048,1053;,\r\n 3;1049,1055,1050;,\r\n 3;1055,1049,1054;,\r\n 3;1050,1056,1051;,\r\n 3;1056,1050,1055;,\r\n 3;1051,1057,1052;,\r\n 3;1057,1051,1056;,\r\n 3;1053,1059,1054;,\r\n 3;1059,1053,1058;,\r\n 3;1054,1060,1055;,\r\n 3;1060,1054,1059;,\r\n 3;1055,1061,1056;,\r\n 3;1061,1055,1060;,\r\n 3;1056,1062,1057;,\r\n 3;1062,1056,1061;,\r\n 3;20,1038,231;,\r\n 3;1038,20,287;,\r\n 3;297,227,1042;,\r\n 3;227,297,21;,\r\n 3;29,1062,302;,\r\n 3;1062,29,301;,\r\n 3;291,306,1058;,\r\n 3;306,291,28;,\r\n 3;231,1039,230;,\r\n 3;1039,231,1038;,\r\n 3;298,1042,1047;,\r\n 3;1042,298,297;,\r\n 3;302,1061,303;,\r\n 3;1061,302,1062;,\r\n 3;290,1058,1053;,\r\n 3;1058,290,291;,\r\n 3;230,1040,229;,\r\n 3;1040,230,1039;,\r\n 3;299,1047,1052;,\r\n 3;1047,299,298;,\r\n 3;303,1060,304;,\r\n 3;1060,303,1061;,\r\n 3;289,1053,1048;,\r\n 3;1053,289,290;,\r\n 3;229,1041,228;,\r\n 3;1041,229,1040;,\r\n 3;300,1052,1057;,\r\n 3;1052,300,299;,\r\n 3;304,1059,305;,\r\n 3;1059,304,1060;,\r\n 3;288,1048,1043;,\r\n 3;1048,288,289;,\r\n 3;228,1042,227;,\r\n 3;1042,228,1041;,\r\n 3;301,1057,1062;,\r\n 3;1057,301,300;,\r\n 3;305,1058,306;,\r\n 3;1058,305,1059;,\r\n 3;287,1043,1038;,\r\n 3;1043,287,288;,\r\n 3;1063,1069,1064;,\r\n 3;1069,1063,1068;,\r\n 3;1064,1070,1065;,\r\n 3;1070,1064,1069;,\r\n 3;1065,1071,1066;,\r\n 3;1071,1065,1070;,\r\n 3;1066,1072,1067;,\r\n 3;1072,1066,1071;,\r\n 3;1068,1074,1069;,\r\n 3;1074,1068,1073;,\r\n 3;1069,1075,1070;,\r\n 3;1075,1069,1074;,\r\n 3;1070,1076,1071;,\r\n 3;1076,1070,1075;,\r\n 3;1071,1077,1072;,\r\n 3;1077,1071,1076;,\r\n 3;1073,1079,1074;,\r\n 3;1079,1073,1078;,\r\n 3;1074,1080,1075;,\r\n 3;1080,1074,1079;,\r\n 3;1075,1081,1076;,\r\n 3;1081,1075,1080;,\r\n 3;1076,1082,1077;,\r\n 3;1082,1076,1081;,\r\n 3;1078,1084,1079;,\r\n 3;1084,1078,1083;,\r\n 3;1079,1085,1080;,\r\n 3;1085,1079,1084;,\r\n 3;1080,1086,1081;,\r\n 3;1086,1080,1085;,\r\n 3;1081,1087,1082;,\r\n 3;1087,1081,1086;,\r\n 3;22,1063,241;,\r\n 3;1063,22,319;,\r\n 3;307,237,1067;,\r\n 3;237,307,23;,\r\n 3;30,1087,312;,\r\n 3;1087,30,311;,\r\n 3;241,1064,240;,\r\n 3;1064,241,1063;,\r\n 3;308,1067,1072;,\r\n 3;1067,308,307;,\r\n 3;312,1086,313;,\r\n 3;1086,312,1087;,\r\n 3;240,1065,239;,\r\n 3;1065,240,1064;,\r\n 3;309,1072,1077;,\r\n 3;1072,309,308;,\r\n 3;313,1085,314;,\r\n 3;1085,313,1086;,\r\n 3;317,1078,1073;,\r\n 3;239,1066,238;,\r\n 3;1066,239,1065;,\r\n 3;310,1077,1082;,\r\n 3;1077,310,309;,\r\n 3;314,1084,315;,\r\n 3;1084,314,1085;,\r\n 3;318,1073,1068;,\r\n 3;1073,318,317;,\r\n 3;238,1067,237;,\r\n 3;1067,238,1066;,\r\n 3;311,1082,1087;,\r\n 3;1082,311,310;,\r\n 3;315,1083,316;,\r\n 3;1083,315,1084;,\r\n 3;319,1068,1063;,\r\n 3;1068,319,318;,\r\n 3;1088,1094,1089;,\r\n 3;1094,1088,1093;,\r\n 3;1089,1095,1090;,\r\n 3;1095,1089,1094;,\r\n 3;1090,1096,1091;,\r\n 3;1096,1090,1095;,\r\n 3;1091,1097,1092;,\r\n 3;1097,1091,1096;,\r\n 3;1093,1099,1094;,\r\n 3;1099,1093,1098;,\r\n 3;1094,1100,1095;,\r\n 3;1100,1094,1099;,\r\n 3;1095,1101,1096;,\r\n 3;1101,1095,1100;,\r\n 3;1096,1102,1097;,\r\n 3;1102,1096,1101;,\r\n 3;1098,1104,1099;,\r\n 3;1104,1098,1103;,\r\n 3;1099,1105,1100;,\r\n 3;1105,1099,1104;,\r\n 3;1100,1106,1101;,\r\n 3;1106,1100,1105;,\r\n 3;1101,1107,1102;,\r\n 3;1107,1101,1106;,\r\n 3;1103,1109,1104;,\r\n 3;1109,1103,1108;,\r\n 3;1104,1110,1105;,\r\n 3;1110,1104,1109;,\r\n 3;1105,1111,1106;,\r\n 3;1111,1105,1110;,\r\n 3;1106,1112,1107;,\r\n 3;1112,1106,1111;,\r\n 3;23,1088,256;,\r\n 3;1088,23,307;,\r\n 3;320,252,1092;,\r\n 3;252,320,24;,\r\n 3;31,1112,325;,\r\n 3;1112,31,324;,\r\n 3;311,329,1108;,\r\n 3;329,311,30;,\r\n 3;256,1089,255;,\r\n 3;1089,256,1088;,\r\n 3;321,1092,1097;,\r\n 3;1092,321,320;,\r\n 3;325,1111,326;,\r\n 3;1111,325,1112;,\r\n 3;310,1108,1103;,\r\n 3;1108,310,311;,\r\n 3;255,1090,254;,\r\n 3;1090,255,1089;,\r\n 3;322,1097,1102;,\r\n 3;1097,322,321;,\r\n 3;326,1110,327;,\r\n 3;1110,326,1111;,\r\n 3;309,1103,1098;,\r\n 3;1103,309,310;,\r\n 3;254,1091,253;,\r\n 3;1091,254,1090;,\r\n 3;323,1102,1107;,\r\n 3;1102,323,322;,\r\n 3;327,1109,328;,\r\n 3;1109,327,1110;,\r\n 3;308,1098,1093;,\r\n 3;1098,308,309;,\r\n 3;253,1092,252;,\r\n 3;1092,253,1091;,\r\n 3;324,1107,1112;,\r\n 3;1107,324,323;,\r\n 3;328,1108,329;,\r\n 3;1108,328,1109;,\r\n 3;307,1093,1088;,\r\n 3;1093,307,308;,\r\n 3;1113,1119,1114;,\r\n 3;1119,1113,1118;,\r\n 3;1114,1120,1115;,\r\n 3;1120,1114,1119;,\r\n 3;1115,1121,1116;,\r\n 3;1121,1115,1120;,\r\n 3;1116,1122,1117;,\r\n 3;1122,1116,1121;,\r\n 3;1118,1124,1119;,\r\n 3;1124,1118,1123;,\r\n 3;1119,1125,1120;,\r\n 3;1125,1119,1124;,\r\n 3;1120,1126,1121;,\r\n 3;1126,1120,1125;,\r\n 3;1121,1127,1122;,\r\n 3;1127,1121,1126;,\r\n 3;1123,1129,1124;,\r\n 3;1129,1123,1128;,\r\n 3;1124,1130,1125;,\r\n 3;1130,1124,1129;,\r\n 3;1125,1131,1126;,\r\n 3;1131,1125,1130;,\r\n 3;1126,1132,1127;,\r\n 3;1132,1126,1131;,\r\n 3;1128,1134,1129;,\r\n 3;1134,1128,1133;,\r\n 3;1129,1135,1130;,\r\n 3;1135,1129,1134;,\r\n 3;1130,1136,1131;,\r\n 3;1136,1130,1135;,\r\n 3;1131,1137,1132;,\r\n 3;1137,1131,1136;,\r\n 3;24,1113,266;,\r\n 3;1113,24,320;,\r\n 3;330,262,1117;,\r\n 3;262,330,25;,\r\n 3;32,1137,335;,\r\n 3;1137,32,334;,\r\n 3;324,339,1133;,\r\n 3;339,324,31;,\r\n 3;266,1114,265;,\r\n 3;1114,266,1113;,\r\n 3;331,1117,1122;,\r\n 3;1117,331,330;,\r\n 3;335,1136,336;,\r\n 3;1136,335,1137;,\r\n 3;323,1133,1128;,\r\n 3;1133,323,324;,\r\n 3;265,1115,264;,\r\n 3;1115,265,1114;,\r\n 3;332,1122,1127;,\r\n 3;1122,332,331;,\r\n 3;336,1135,337;,\r\n 3;1135,336,1136;,\r\n 3;322,1128,1123;,\r\n 3;1128,322,323;,\r\n 3;264,1116,263;,\r\n 3;1116,264,1115;,\r\n 3;333,1127,1132;,\r\n 3;1127,333,332;,\r\n 3;337,1134,338;,\r\n 3;1134,337,1135;,\r\n 3;321,1123,1118;,\r\n 3;1123,321,322;,\r\n 3;263,1117,262;,\r\n 3;1117,263,1116;,\r\n 3;334,1132,1137;,\r\n 3;1132,334,333;,\r\n 3;338,1133,339;,\r\n 3;1133,338,1134;,\r\n 3;320,1118,1113;,\r\n 3;1118,320,321;,\r\n 3;1138,1144,1139;,\r\n 3;1144,1138,1143;,\r\n 3;1139,1145,1140;,\r\n 3;1145,1139,1144;,\r\n 3;1140,1146,1141;,\r\n 3;1146,1140,1145;,\r\n 3;1141,1147,1142;,\r\n 3;1147,1141,1146;,\r\n 3;1143,1149,1144;,\r\n 3;1149,1143,1148;,\r\n 3;1144,1150,1145;,\r\n 3;1150,1144,1149;,\r\n 3;1145,1151,1146;,\r\n 3;1151,1145,1150;,\r\n 3;1146,1152,1147;,\r\n 3;1152,1146,1151;,\r\n 3;1148,1154,1149;,\r\n 3;1154,1148,1153;,\r\n 3;1149,1155,1150;,\r\n 3;1155,1149,1154;,\r\n 3;1150,1156,1151;,\r\n 3;1156,1150,1155;,\r\n 3;1151,1157,1152;,\r\n 3;1157,1151,1156;,\r\n 3;1153,1159,1154;,\r\n 3;1159,1153,1158;,\r\n 3;1154,1160,1155;,\r\n 3;1160,1154,1159;,\r\n 3;1155,1161,1156;,\r\n 3;1161,1155,1160;,\r\n 3;1156,1162,1157;,\r\n 3;1162,1156,1161;,\r\n 3;25,1138,276;,\r\n 3;1138,25,330;,\r\n 3;340,272,1142;,\r\n 3;272,340,26;,\r\n 3;33,1162,345;,\r\n 3;1162,33,344;,\r\n 3;334,349,1158;,\r\n 3;349,334,32;,\r\n 3;276,1139,275;,\r\n 3;1139,276,1138;,\r\n 3;341,1142,1147;,\r\n 3;1142,341,340;,\r\n 3;345,1161,346;,\r\n 3;1161,345,1162;,\r\n 3;333,1158,1153;,\r\n 3;1158,333,334;,\r\n 3;275,1140,274;,\r\n 3;1140,275,1139;,\r\n 3;342,1147,1152;,\r\n 3;1147,342,341;,\r\n 3;346,1160,347;,\r\n 3;1160,346,1161;,\r\n 3;332,1153,1148;,\r\n 3;1153,332,333;,\r\n 3;274,1141,273;,\r\n 3;1141,274,1140;,\r\n 3;343,1152,1157;,\r\n 3;1152,343,342;,\r\n 3;347,1159,348;,\r\n 3;1159,347,1160;,\r\n 3;331,1148,1143;,\r\n 3;1148,331,332;,\r\n 3;273,1142,272;,\r\n 3;1142,273,1141;,\r\n 3;344,1157,1162;,\r\n 3;1157,344,343;,\r\n 3;348,1158,349;,\r\n 3;1158,348,1159;,\r\n 3;330,1143,1138;,\r\n 3;1143,330,331;,\r\n 3;1163,1169,1164;,\r\n 3;1169,1163,1168;,\r\n 3;1164,1170,1165;,\r\n 3;1170,1164,1169;,\r\n 3;1165,1171,1166;,\r\n 3;1171,1165,1170;,\r\n 3;1166,1172,1167;,\r\n 3;1172,1166,1171;,\r\n 3;1168,1174,1169;,\r\n 3;1174,1168,1173;,\r\n 3;1169,1175,1170;,\r\n 3;1175,1169,1174;,\r\n 3;1170,1176,1171;,\r\n 3;1176,1170,1175;,\r\n 3;1171,1177,1172;,\r\n 3;1177,1171,1176;,\r\n 3;1173,1179,1174;,\r\n 3;1179,1173,1178;,\r\n 3;1174,1180,1175;,\r\n 3;1180,1174,1179;,\r\n 3;1175,1181,1176;,\r\n 3;1181,1175,1180;,\r\n 3;1176,1182,1177;,\r\n 3;1182,1176,1181;,\r\n 3;1178,1184,1179;,\r\n 3;1184,1178,1183;,\r\n 3;1179,1185,1180;,\r\n 3;1185,1179,1184;,\r\n 3;1180,1186,1181;,\r\n 3;1186,1180,1185;,\r\n 3;1181,1187,1182;,\r\n 3;1187,1181,1186;,\r\n 3;26,1163,286;,\r\n 3;1163,26,340;,\r\n 3;350,282,1167;,\r\n 3;282,350,27;,\r\n 3;34,1187,355;,\r\n 3;1187,34,354;,\r\n 3;344,359,1183;,\r\n 3;359,344,33;,\r\n 3;286,1164,285;,\r\n 3;1164,286,1163;,\r\n 3;351,1167,1172;,\r\n 3;1167,351,350;,\r\n 3;355,1186,356;,\r\n 3;1186,355,1187;,\r\n 3;343,1183,1178;,\r\n 3;1183,343,344;,\r\n 3;285,1165,284;,\r\n 3;1165,285,1164;,\r\n 3;352,1172,1177;,\r\n 3;1172,352,351;,\r\n 3;356,1185,357;,\r\n 3;1185,356,1186;,\r\n 3;342,1178,1173;,\r\n 3;1178,342,343;,\r\n 3;284,1166,283;,\r\n 3;1166,284,1165;,\r\n 3;353,1177,1182;,\r\n 3;1177,353,352;,\r\n 3;357,1184,358;,\r\n 3;1184,357,1185;,\r\n 3;341,1173,1168;,\r\n 3;1173,341,342;,\r\n 3;283,1167,282;,\r\n 3;1167,283,1166;,\r\n 3;354,1182,1187;,\r\n 3;1182,354,353;,\r\n 3;358,1183,359;,\r\n 3;1183,358,1184;,\r\n 3;340,1168,1163;,\r\n 3;1168,340,341;,\r\n 3;1188,1194,1189;,\r\n 3;1194,1188,1193;,\r\n 3;1189,1195,1190;,\r\n 3;1195,1189,1194;,\r\n 3;1190,1196,1191;,\r\n 3;1196,1190,1195;,\r\n 3;1191,1197,1192;,\r\n 3;1197,1191,1196;,\r\n 3;1193,1199,1194;,\r\n 3;1199,1193,1198;,\r\n 3;1194,1200,1195;,\r\n 3;1200,1194,1199;,\r\n 3;1195,1201,1196;,\r\n 3;1201,1195,1200;,\r\n 3;1196,1202,1197;,\r\n 3;1202,1196,1201;,\r\n 3;1198,1204,1199;,\r\n 3;1204,1198,1203;,\r\n 3;1199,1205,1200;,\r\n 3;1205,1199,1204;,\r\n 3;1200,1206,1201;,\r\n 3;1206,1200,1205;,\r\n 3;1201,1207,1202;,\r\n 3;1207,1201,1206;,\r\n 3;1203,1209,1204;,\r\n 3;1209,1203,1208;,\r\n 3;1204,1210,1205;,\r\n 3;1210,1204,1209;,\r\n 3;1205,1211,1206;,\r\n 3;1211,1205,1210;,\r\n 3;1206,1212,1207;,\r\n 3;1212,1206,1211;,\r\n 3;27,1188,296;,\r\n 3;1188,27,350;,\r\n 3;360,292,1192;,\r\n 3;292,360,28;,\r\n 3;35,1212,365;,\r\n 3;1212,35,364;,\r\n 3;354,369,1208;,\r\n 3;369,354,34;,\r\n 3;296,1189,295;,\r\n 3;1189,296,1188;,\r\n 3;361,1192,1197;,\r\n 3;1192,361,360;,\r\n 3;365,1211,366;,\r\n 3;1211,365,1212;,\r\n 3;353,1208,1203;,\r\n 3;1208,353,354;,\r\n 3;295,1190,294;,\r\n 3;1190,295,1189;,\r\n 3;362,1197,1202;,\r\n 3;1197,362,361;,\r\n 3;366,1210,367;,\r\n 3;1210,366,1211;,\r\n 3;352,1203,1198;,\r\n 3;1203,352,353;,\r\n 3;294,1191,293;,\r\n 3;1191,294,1190;,\r\n 3;363,1202,1207;,\r\n 3;1202,363,362;,\r\n 3;367,1209,368;,\r\n 3;1209,367,1210;,\r\n 3;351,1198,1193;,\r\n 3;1198,351,352;,\r\n 3;293,1192,292;,\r\n 3;1192,293,1191;,\r\n 3;364,1207,1212;,\r\n 3;1207,364,363;,\r\n 3;368,1208,369;,\r\n 3;1208,368,1209;,\r\n 3;350,1193,1188;,\r\n 3;1193,350,351;,\r\n 3;1213,1219,1214;,\r\n 3;1219,1213,1218;,\r\n 3;1214,1220,1215;,\r\n 3;1220,1214,1219;,\r\n 3;1215,1221,1216;,\r\n 3;1221,1215,1220;,\r\n 3;1216,1222,1217;,\r\n 3;1222,1216,1221;,\r\n 3;1218,1224,1219;,\r\n 3;1224,1218,1223;,\r\n 3;1219,1225,1220;,\r\n 3;1225,1219,1224;,\r\n 3;1220,1226,1221;,\r\n 3;1226,1220,1225;,\r\n 3;1221,1227,1222;,\r\n 3;1227,1221,1226;,\r\n 3;1223,1229,1224;,\r\n 3;1229,1223,1228;,\r\n 3;1224,1230,1225;,\r\n 3;1230,1224,1229;,\r\n 3;1225,1231,1226;,\r\n 3;1231,1225,1230;,\r\n 3;1226,1232,1227;,\r\n 3;1232,1226,1231;,\r\n 3;1228,1234,1229;,\r\n 3;1234,1228,1233;,\r\n 3;1229,1235,1230;,\r\n 3;1235,1229,1234;,\r\n 3;1230,1236,1231;,\r\n 3;1236,1230,1235;,\r\n 3;28,1213,306;,\r\n 3;1213,28,360;,\r\n 3;370,302,1217;,\r\n 3;302,370,29;,\r\n 3;364,375,1233;,\r\n 3;375,364,35;,\r\n 3;306,1214,305;,\r\n 3;1214,306,1213;,\r\n 3;371,1217,1222;,\r\n 3;1217,371,370;,\r\n 3;363,1233,1228;,\r\n 3;1233,363,364;,\r\n 3;305,1215,304;,\r\n 3;1215,305,1214;,\r\n 3;372,1235,373;,\r\n 3;1235,372,1236;,\r\n 3;362,1228,1223;,\r\n 3;1228,362,363;,\r\n 3;304,1216,303;,\r\n 3;1216,304,1215;,\r\n 3;373,1234,374;,\r\n 3;1234,373,1235;,\r\n 3;361,1223,1218;,\r\n 3;1223,361,362;,\r\n 3;303,1217,302;,\r\n 3;1217,303,1216;,\r\n 3;374,1233,375;,\r\n 3;1233,374,1234;,\r\n 3;360,1218,1213;,\r\n 3;1218,360,361;,\r\n 3;1237,1242,1238;,\r\n 3;1242,1237,1241;,\r\n 3;1238,1243,1239;,\r\n 3;1243,1238,1242;,\r\n 3;1239,1244,1240;,\r\n 3;1244,1239,1243;,\r\n 3;1241,1245,1242;,\r\n 3;1242,1246,1243;,\r\n 3;1246,1242,1245;,\r\n 3;1243,1247,1244;,\r\n 3;1247,1243,1246;,\r\n 3;1245,1249,1246;,\r\n 3;1249,1245,1248;,\r\n 3;1246,1250,1247;,\r\n 3;1250,1246,1249;,\r\n 3;1248,1251,1249;,\r\n 3;1249,1252,1250;,\r\n 3;1252,1249,1251;,\r\n 3;376,312,1240;,\r\n 3;312,376,30;,\r\n 3;36,1252,381;,\r\n 3;1252,36,380;,\r\n 3;316,1237,315;,\r\n 3;377,1240,1244;,\r\n 3;1240,377,376;,\r\n 3;1251,381,1252;,\r\n 3;315,1238,314;,\r\n 3;1238,315,1237;,\r\n 3;378,1244,1247;,\r\n 3;1244,378,377;,\r\n 3;314,1239,313;,\r\n 3;1239,314,1238;,\r\n 3;379,1247,1250;,\r\n 3;1247,379,378;,\r\n 3;313,1240,312;,\r\n 3;1240,313,1239;,\r\n 3;380,1250,1252;,\r\n 3;1250,380,379;,\r\n 3;1253,1259,1254;,\r\n 3;1259,1253,1258;,\r\n 3;1254,1260,1255;,\r\n 3;1260,1254,1259;,\r\n 3;1255,1261,1256;,\r\n 3;1261,1255,1260;,\r\n 3;1256,1262,1257;,\r\n 3;1262,1256,1261;,\r\n 3;1258,1264,1259;,\r\n 3;1264,1258,1263;,\r\n 3;1259,1265,1260;,\r\n 3;1265,1259,1264;,\r\n 3;1260,1266,1261;,\r\n 3;1266,1260,1265;,\r\n 3;1261,1267,1262;,\r\n 3;1267,1261,1266;,\r\n 3;1263,1269,1264;,\r\n 3;1269,1263,1268;,\r\n 3;1264,1270,1265;,\r\n 3;1270,1264,1269;,\r\n 3;1265,1271,1266;,\r\n 3;1271,1265,1270;,\r\n 3;1266,1272,1267;,\r\n 3;1272,1266,1271;,\r\n 3;1268,1274,1269;,\r\n 3;1274,1268,1273;,\r\n 3;1269,1275,1270;,\r\n 3;1275,1269,1274;,\r\n 3;1270,1276,1271;,\r\n 3;1276,1270,1275;,\r\n 3;1271,1277,1272;,\r\n 3;1277,1271,1276;,\r\n 3;30,1253,329;,\r\n 3;1253,30,376;,\r\n 3;382,325,1257;,\r\n 3;325,382,31;,\r\n 3;37,1277,387;,\r\n 3;1277,37,386;,\r\n 3;380,391,1273;,\r\n 3;391,380,36;,\r\n 3;329,1254,328;,\r\n 3;1254,329,1253;,\r\n 3;383,1257,1262;,\r\n 3;1257,383,382;,\r\n 3;387,1276,388;,\r\n 3;1276,387,1277;,\r\n 3;379,1273,1268;,\r\n 3;1273,379,380;,\r\n 3;328,1255,327;,\r\n 3;1255,328,1254;,\r\n 3;384,1262,1267;,\r\n 3;1262,384,383;,\r\n 3;388,1275,389;,\r\n 3;1275,388,1276;,\r\n 3;378,1268,1263;,\r\n 3;1268,378,379;,\r\n 3;327,1256,326;,\r\n 3;1256,327,1255;,\r\n 3;385,1267,1272;,\r\n 3;1267,385,384;,\r\n 3;389,1274,390;,\r\n 3;1274,389,1275;,\r\n 3;377,1263,1258;,\r\n 3;1263,377,378;,\r\n 3;326,1257,325;,\r\n 3;1257,326,1256;,\r\n 3;386,1272,1277;,\r\n 3;1272,386,385;,\r\n 3;390,1273,391;,\r\n 3;1273,390,1274;,\r\n 3;376,1258,1253;,\r\n 3;1258,376,377;,\r\n 3;1278,1284,1279;,\r\n 3;1284,1278,1283;,\r\n 3;1279,1285,1280;,\r\n 3;1285,1279,1284;,\r\n 3;1280,1286,1281;,\r\n 3;1286,1280,1285;,\r\n 3;1281,1287,1282;,\r\n 3;1287,1281,1286;,\r\n 3;1283,1289,1284;,\r\n 3;1289,1283,1288;,\r\n 3;1284,1290,1285;,\r\n 3;1290,1284,1289;,\r\n 3;1285,1291,1286;,\r\n 3;1291,1285,1290;,\r\n 3;1286,1292,1287;,\r\n 3;1292,1286,1291;,\r\n 3;1288,1294,1289;,\r\n 3;1294,1288,1293;,\r\n 3;1289,1295,1290;,\r\n 3;1295,1289,1294;,\r\n 3;1290,1296,1291;,\r\n 3;1296,1290,1295;,\r\n 3;1291,1297,1292;,\r\n 3;1297,1291,1296;,\r\n 3;1293,1299,1294;,\r\n 3;1299,1293,1298;,\r\n 3;1294,1300,1295;,\r\n 3;1300,1294,1299;,\r\n 3;1295,1301,1296;,\r\n 3;1301,1295,1300;,\r\n 3;1296,1302,1297;,\r\n 3;1302,1296,1301;,\r\n 3;31,1278,339;,\r\n 3;1278,31,382;,\r\n 3;392,335,1282;,\r\n 3;335,392,32;,\r\n 3;38,1302,397;,\r\n 3;1302,38,396;,\r\n 3;386,401,1298;,\r\n 3;401,386,37;,\r\n 3;339,1279,338;,\r\n 3;1279,339,1278;,\r\n 3;393,1282,1287;,\r\n 3;1282,393,392;,\r\n 3;397,1301,398;,\r\n 3;1301,397,1302;,\r\n 3;385,1298,1293;,\r\n 3;1298,385,386;,\r\n 3;338,1280,337;,\r\n 3;1280,338,1279;,\r\n 3;394,1287,1292;,\r\n 3;1287,394,393;,\r\n 3;398,1300,399;,\r\n 3;1300,398,1301;,\r\n 3;384,1293,1288;,\r\n 3;1293,384,385;,\r\n 3;337,1281,336;,\r\n 3;1281,337,1280;,\r\n 3;395,1292,1297;,\r\n 3;1292,395,394;,\r\n 3;399,1299,400;,\r\n 3;1299,399,1300;,\r\n 3;383,1288,1283;,\r\n 3;1288,383,384;,\r\n 3;336,1282,335;,\r\n 3;1282,336,1281;,\r\n 3;396,1297,1302;,\r\n 3;1297,396,395;,\r\n 3;400,1298,401;,\r\n 3;1298,400,1299;,\r\n 3;382,1283,1278;,\r\n 3;1283,382,383;,\r\n 3;1303,1309,1304;,\r\n 3;1309,1303,1308;,\r\n 3;1304,1310,1305;,\r\n 3;1310,1304,1309;,\r\n 3;1305,1311,1306;,\r\n 3;1311,1305,1310;,\r\n 3;1306,1312,1307;,\r\n 3;1312,1306,1311;,\r\n 3;1308,1314,1309;,\r\n 3;1314,1308,1313;,\r\n 3;1309,1315,1310;,\r\n 3;1315,1309,1314;,\r\n 3;1310,1316,1311;,\r\n 3;1316,1310,1315;,\r\n 3;1311,1317,1312;,\r\n 3;1317,1311,1316;,\r\n 3;1313,1319,1314;,\r\n 3;1319,1313,1318;,\r\n 3;1314,1320,1315;,\r\n 3;1320,1314,1319;,\r\n 3;1315,1321,1316;,\r\n 3;1321,1315,1320;,\r\n 3;1316,1322,1317;,\r\n 3;1322,1316,1321;,\r\n 3;1318,1324,1319;,\r\n 3;1324,1318,1323;,\r\n 3;1319,1325,1320;,\r\n 3;1325,1319,1324;,\r\n 3;1320,1326,1321;,\r\n 3;1326,1320,1325;,\r\n 3;1321,1327,1322;,\r\n 3;1327,1321,1326;,\r\n 3;32,1303,349;,\r\n 3;1303,32,392;,\r\n 3;402,345,1307;,\r\n 3;345,402,33;,\r\n 3;39,1327,407;,\r\n 3;1327,39,406;,\r\n 3;396,411,1323;,\r\n 3;411,396,38;,\r\n 3;349,1304,348;,\r\n 3;1304,349,1303;,\r\n 3;403,1307,1312;,\r\n 3;1307,403,402;,\r\n 3;407,1326,408;,\r\n 3;1326,407,1327;,\r\n 3;395,1323,1318;,\r\n 3;1323,395,396;,\r\n 3;348,1305,347;,\r\n 3;1305,348,1304;,\r\n 3;404,1312,1317;,\r\n 3;1312,404,403;,\r\n 3;408,1325,409;,\r\n 3;1325,408,1326;,\r\n 3;394,1318,1313;,\r\n 3;1318,394,395;,\r\n 3;347,1306,346;,\r\n 3;1306,347,1305;,\r\n 3;405,1317,1322;,\r\n 3;1317,405,404;,\r\n 3;409,1324,410;,\r\n 3;1324,409,1325;,\r\n 3;393,1313,1308;,\r\n 3;1313,393,394;,\r\n 3;346,1307,345;,\r\n 3;1307,346,1306;,\r\n 3;406,1322,1327;,\r\n 3;1322,406,405;,\r\n 3;410,1323,411;,\r\n 3;1323,410,1324;,\r\n 3;392,1308,1303;,\r\n 3;1308,392,393;,\r\n 3;1328,1334,1329;,\r\n 3;1334,1328,1333;,\r\n 3;1329,1335,1330;,\r\n 3;1335,1329,1334;,\r\n 3;1330,1336,1331;,\r\n 3;1336,1330,1335;,\r\n 3;1331,1337,1332;,\r\n 3;1337,1331,1336;,\r\n 3;1333,1339,1334;,\r\n 3;1339,1333,1338;,\r\n 3;1334,1340,1335;,\r\n 3;1340,1334,1339;,\r\n 3;1335,1341,1336;,\r\n 3;1341,1335,1340;,\r\n 3;1336,1342,1337;,\r\n 3;1342,1336,1341;,\r\n 3;1338,1344,1339;,\r\n 3;1344,1338,1343;,\r\n 3;1339,1345,1340;,\r\n 3;1345,1339,1344;,\r\n 3;1340,1346,1341;,\r\n 3;1346,1340,1345;,\r\n 3;1341,1347,1342;,\r\n 3;1347,1341,1346;,\r\n 3;1343,1349,1344;,\r\n 3;1349,1343,1348;,\r\n 3;1344,1350,1345;,\r\n 3;1350,1344,1349;,\r\n 3;1345,1351,1346;,\r\n 3;1351,1345,1350;,\r\n 3;1346,1352,1347;,\r\n 3;1352,1346,1351;,\r\n 3;33,1328,359;,\r\n 3;1328,33,402;,\r\n 3;412,355,1332;,\r\n 3;355,412,34;,\r\n 3;40,1352,417;,\r\n 3;1352,40,416;,\r\n 3;406,421,1348;,\r\n 3;421,406,39;,\r\n 3;359,1329,358;,\r\n 3;1329,359,1328;,\r\n 3;413,1332,1337;,\r\n 3;1332,413,412;,\r\n 3;417,1351,418;,\r\n 3;1351,417,1352;,\r\n 3;405,1348,1343;,\r\n 3;1348,405,406;,\r\n 3;358,1330,357;,\r\n 3;1330,358,1329;,\r\n 3;414,1337,1342;,\r\n 3;1337,414,413;,\r\n 3;418,1350,419;,\r\n 3;1350,418,1351;,\r\n 3;404,1343,1338;,\r\n 3;1343,404,405;,\r\n 3;357,1331,356;,\r\n 3;1331,357,1330;,\r\n 3;415,1342,1347;,\r\n 3;1342,415,414;,\r\n 3;419,1349,420;,\r\n 3;1349,419,1350;,\r\n 3;403,1338,1333;,\r\n 3;1338,403,404;,\r\n 3;356,1332,355;,\r\n 3;1332,356,1331;,\r\n 3;416,1347,1352;,\r\n 3;1347,416,415;,\r\n 3;420,1348,421;,\r\n 3;1348,420,1349;,\r\n 3;402,1333,1328;,\r\n 3;1333,402,403;,\r\n 3;1353,1359,1354;,\r\n 3;1359,1353,1358;,\r\n 3;1354,1360,1355;,\r\n 3;1360,1354,1359;,\r\n 3;1355,1361,1356;,\r\n 3;1361,1355,1360;,\r\n 3;1356,1362,1357;,\r\n 3;1362,1356,1361;,\r\n 3;1358,1364,1359;,\r\n 3;1364,1358,1363;,\r\n 3;1359,1365,1360;,\r\n 3;1365,1359,1364;,\r\n 3;1360,1366,1361;,\r\n 3;1366,1360,1365;,\r\n 3;1361,1367,1362;,\r\n 3;1367,1361,1366;,\r\n 3;1363,1369,1364;,\r\n 3;1369,1363,1368;,\r\n 3;1364,1370,1365;,\r\n 3;1370,1364,1369;,\r\n 3;1365,1371,1366;,\r\n 3;1371,1365,1370;,\r\n 3;1366,1372,1367;,\r\n 3;1372,1366,1371;,\r\n 3;1368,1374,1369;,\r\n 3;1374,1368,1373;,\r\n 3;1369,1375,1370;,\r\n 3;1375,1369,1374;,\r\n 3;1370,1376,1371;,\r\n 3;1376,1370,1375;,\r\n 3;1371,1377,1372;,\r\n 3;1377,1371,1376;,\r\n 3;34,1353,369;,\r\n 3;1353,34,412;,\r\n 3;422,365,1357;,\r\n 3;365,422,35;,\r\n 3;41,1377,427;,\r\n 3;1377,41,426;,\r\n 3;416,431,1373;,\r\n 3;431,416,40;,\r\n 3;369,1354,368;,\r\n 3;1354,369,1353;,\r\n 3;423,1357,1362;,\r\n 3;1357,423,422;,\r\n 3;427,1376,428;,\r\n 3;1376,427,1377;,\r\n 3;415,1373,1368;,\r\n 3;1373,415,416;,\r\n 3;368,1355,367;,\r\n 3;1355,368,1354;,\r\n 3;424,1362,1367;,\r\n 3;1362,424,423;,\r\n 3;428,1375,429;,\r\n 3;1375,428,1376;,\r\n 3;414,1368,1363;,\r\n 3;1368,414,415;,\r\n 3;367,1356,366;,\r\n 3;1356,367,1355;,\r\n 3;425,1367,1372;,\r\n 3;1367,425,424;,\r\n 3;429,1374,430;,\r\n 3;1374,429,1375;,\r\n 3;413,1363,1358;,\r\n 3;1363,413,414;,\r\n 3;366,1357,365;,\r\n 3;1357,366,1356;,\r\n 3;426,1372,1377;,\r\n 3;1372,426,425;,\r\n 3;430,1373,431;,\r\n 3;1373,430,1374;,\r\n 3;412,1358,1353;,\r\n 3;1358,412,413;,\r\n 3;1378,1383,1379;,\r\n 3;1383,1378,1382;,\r\n 3;1379,1384,1380;,\r\n 3;1384,1379,1383;,\r\n 3;1382,1386,1383;,\r\n 3;1386,1382,1385;,\r\n 3;1385,1388,1386;,\r\n 3;1388,1385,1387;,\r\n 3;35,1378,375;,\r\n 3;1378,35,422;,\r\n 3;375,1379,374;,\r\n 3;1379,375,1378;,\r\n 3;425,1389,1387;,\r\n 3;1389,425,426;,\r\n 3;374,1380,373;,\r\n 3;1380,374,1379;,\r\n 3;424,1387,1385;,\r\n 3;1387,424,425;,\r\n 3;373,1381,372;,\r\n 3;1381,373,1380;,\r\n 3;423,1385,1382;,\r\n 3;1385,423,424;,\r\n 3;422,1382,1378;,\r\n 3;1382,422,423;,\r\n 3;1390,1396,1391;,\r\n 3;1396,1390,1395;,\r\n 3;1391,1397,1392;,\r\n 3;1397,1391,1396;,\r\n 3;1392,1398,1393;,\r\n 3;1398,1392,1397;,\r\n 3;1393,1399,1394;,\r\n 3;1399,1393,1398;,\r\n 3;1397,1400,1398;,\r\n 3;1398,1401,1399;,\r\n 3;1401,1398,1400;,\r\n 3;1400,1403,1401;,\r\n 3;1403,1400,1402;,\r\n 3;36,1390,391;,\r\n 3;432,387,1394;,\r\n 3;387,432,37;,\r\n 3;391,1391,390;,\r\n 3;1391,391,1390;,\r\n 3;433,1394,1399;,\r\n 3;1394,433,432;,\r\n 3;390,1392,389;,\r\n 3;1392,390,1391;,\r\n 3;434,1399,1401;,\r\n 3;1399,434,433;,\r\n 3;389,1393,388;,\r\n 3;1393,389,1392;,\r\n 3;435,1401,1403;,\r\n 3;1401,435,434;,\r\n 3;388,1394,387;,\r\n 3;1394,388,1393;,\r\n 3;1404,1410,1405;,\r\n 3;1410,1404,1409;,\r\n 3;1405,1411,1406;,\r\n 3;1411,1405,1410;,\r\n 3;1406,1412,1407;,\r\n 3;1412,1406,1411;,\r\n 3;1407,1413,1408;,\r\n 3;1413,1407,1412;,\r\n 3;1409,1415,1410;,\r\n 3;1415,1409,1414;,\r\n 3;1410,1416,1411;,\r\n 3;1416,1410,1415;,\r\n 3;1411,1417,1412;,\r\n 3;1417,1411,1416;,\r\n 3;1412,1418,1413;,\r\n 3;1418,1412,1417;,\r\n 3;1414,1420,1415;,\r\n 3;1420,1414,1419;,\r\n 3;1415,1421,1416;,\r\n 3;1421,1415,1420;,\r\n 3;1416,1422,1417;,\r\n 3;1422,1416,1421;,\r\n 3;1417,1423,1418;,\r\n 3;1423,1417,1422;,\r\n 3;1419,1424,1420;,\r\n 3;1420,1425,1421;,\r\n 3;1425,1420,1424;,\r\n 3;1421,1426,1422;,\r\n 3;1426,1421,1425;,\r\n 3;1422,1427,1423;,\r\n 3;1427,1422,1426;,\r\n 3;37,1404,401;,\r\n 3;1404,37,432;,\r\n 3;436,397,1408;,\r\n 3;397,436,38;,\r\n 3;42,1427,441;,\r\n 3;1427,42,440;,\r\n 3;401,1405,400;,\r\n 3;1405,401,1404;,\r\n 3;437,1408,1413;,\r\n 3;1408,437,436;,\r\n 3;441,1426,442;,\r\n 3;1426,441,1427;,\r\n 3;400,1406,399;,\r\n 3;1406,400,1405;,\r\n 3;438,1413,1418;,\r\n 3;1413,438,437;,\r\n 3;442,1425,443;,\r\n 3;1425,442,1426;,\r\n 3;434,1419,1414;,\r\n 3;1419,434,435;,\r\n 3;399,1407,398;,\r\n 3;1407,399,1406;,\r\n 3;439,1418,1423;,\r\n 3;1418,439,438;,\r\n 3;1424,443,1425;,\r\n 3;433,1414,1409;,\r\n 3;1414,433,434;,\r\n 3;398,1408,397;,\r\n 3;1408,398,1407;,\r\n 3;440,1423,1427;,\r\n 3;1423,440,439;,\r\n 3;432,1409,1404;,\r\n 3;1409,432,433;,\r\n 3;1428,1434,1429;,\r\n 3;1434,1428,1433;,\r\n 3;1429,1435,1430;,\r\n 3;1435,1429,1434;,\r\n 3;1430,1436,1431;,\r\n 3;1436,1430,1435;,\r\n 3;1431,1437,1432;,\r\n 3;1437,1431,1436;,\r\n 3;1433,1439,1434;,\r\n 3;1439,1433,1438;,\r\n 3;1434,1440,1435;,\r\n 3;1440,1434,1439;,\r\n 3;1435,1441,1436;,\r\n 3;1441,1435,1440;,\r\n 3;1436,1442,1437;,\r\n 3;1442,1436,1441;,\r\n 3;1438,1444,1439;,\r\n 3;1444,1438,1443;,\r\n 3;1439,1445,1440;,\r\n 3;1445,1439,1444;,\r\n 3;1440,1446,1441;,\r\n 3;1446,1440,1445;,\r\n 3;1441,1447,1442;,\r\n 3;1447,1441,1446;,\r\n 3;1443,1449,1444;,\r\n 3;1449,1443,1448;,\r\n 3;1444,1450,1445;,\r\n 3;1450,1444,1449;,\r\n 3;1445,1451,1446;,\r\n 3;1451,1445,1450;,\r\n 3;1446,1452,1447;,\r\n 3;1452,1446,1451;,\r\n 3;38,1428,411;,\r\n 3;1428,38,436;,\r\n 3;444,407,1432;,\r\n 3;407,444,39;,\r\n 3;43,1452,449;,\r\n 3;1452,43,448;,\r\n 3;440,453,1448;,\r\n 3;453,440,42;,\r\n 3;411,1429,410;,\r\n 3;1429,411,1428;,\r\n 3;445,1432,1437;,\r\n 3;1432,445,444;,\r\n 3;449,1451,450;,\r\n 3;1451,449,1452;,\r\n 3;439,1448,1443;,\r\n 3;1448,439,440;,\r\n 3;410,1430,409;,\r\n 3;1430,410,1429;,\r\n 3;446,1437,1442;,\r\n 3;1437,446,445;,\r\n 3;450,1450,451;,\r\n 3;1450,450,1451;,\r\n 3;438,1443,1438;,\r\n 3;1443,438,439;,\r\n 3;409,1431,408;,\r\n 3;1431,409,1430;,\r\n 3;447,1442,1447;,\r\n 3;1442,447,446;,\r\n 3;451,1449,452;,\r\n 3;1449,451,1450;,\r\n 3;437,1438,1433;,\r\n 3;1438,437,438;,\r\n 3;408,1432,407;,\r\n 3;1432,408,1431;,\r\n 3;448,1447,1452;,\r\n 3;1447,448,447;,\r\n 3;452,1448,453;,\r\n 3;1448,452,1449;,\r\n 3;436,1433,1428;,\r\n 3;1433,436,437;,\r\n 3;1453,1459,1454;,\r\n 3;1459,1453,1458;,\r\n 3;1454,1460,1455;,\r\n 3;1460,1454,1459;,\r\n 3;1455,1461,1456;,\r\n 3;1461,1455,1460;,\r\n 3;1456,1462,1457;,\r\n 3;1462,1456,1461;,\r\n 3;1458,1464,1459;,\r\n 3;1464,1458,1463;,\r\n 3;1459,1465,1460;,\r\n 3;1465,1459,1464;,\r\n 3;1460,1466,1461;,\r\n 3;1466,1460,1465;,\r\n 3;1461,1467,1462;,\r\n 3;1467,1461,1466;,\r\n 3;1463,1469,1464;,\r\n 3;1469,1463,1468;,\r\n 3;1464,1470,1465;,\r\n 3;1470,1464,1469;,\r\n 3;1465,1471,1466;,\r\n 3;1471,1465,1470;,\r\n 3;1466,1472,1467;,\r\n 3;1472,1466,1471;,\r\n 3;1468,1474,1469;,\r\n 3;1474,1468,1473;,\r\n 3;1469,1475,1470;,\r\n 3;1475,1469,1474;,\r\n 3;1470,1476,1471;,\r\n 3;1476,1470,1475;,\r\n 3;39,1453,421;,\r\n 3;1453,39,444;,\r\n 3;454,417,1457;,\r\n 3;417,454,40;,\r\n 3;448,459,1473;,\r\n 3;459,448,43;,\r\n 3;421,1454,420;,\r\n 3;1454,421,1453;,\r\n 3;455,1457,1462;,\r\n 3;1457,455,454;,\r\n 3;447,1473,1468;,\r\n 3;1473,447,448;,\r\n 3;420,1455,419;,\r\n 3;1455,420,1454;,\r\n 3;456,1462,1467;,\r\n 3;1462,456,455;,\r\n 3;446,1468,1463;,\r\n 3;1468,446,447;,\r\n 3;419,1456,418;,\r\n 3;1456,419,1455;,\r\n 3;457,1467,1472;,\r\n 3;1467,457,456;,\r\n 3;445,1463,1458;,\r\n 3;1463,445,446;,\r\n 3;418,1457,417;,\r\n 3;1457,418,1456;,\r\n 3;458,1473,459;,\r\n 3;1473,458,1474;,\r\n 3;444,1458,1453;,\r\n 3;1458,444,445;,\r\n 3;1477,1483,1478;,\r\n 3;1483,1477,1482;,\r\n 3;1478,1484,1479;,\r\n 3;1484,1478,1483;,\r\n 3;1479,1485,1480;,\r\n 3;1485,1479,1484;,\r\n 3;1482,1487,1483;,\r\n 3;1487,1482,1486;,\r\n 3;1483,1488,1484;,\r\n 3;1488,1483,1487;,\r\n 3;40,1477,431;,\r\n 3;1477,40,454;,\r\n 3;431,1478,430;,\r\n 3;1478,431,1477;,\r\n 3;430,1479,429;,\r\n 3;1479,430,1478;,\r\n 3;456,1489,1486;,\r\n 3;1489,456,457;,\r\n 3;429,1480,428;,\r\n 3;1480,429,1479;,\r\n 3;455,1486,1482;,\r\n 3;1486,455,456;,\r\n 3;428,1481,427;,\r\n 3;1481,428,1480;,\r\n 3;454,1482,1477;,\r\n 3;1482,454,455;;\r\n\r\n    MeshMaterialList {\r\n        1;\r\n    1;\r\n    0;;\r\n       Material {\r\n     0.945098;0.913726;0.843137;1.000000;;\r\n     23.000000;\r\n     1.000000;1.000000;1.000000;;\r\n         0.000000;0.000000;0.000000;;\r\n         TextureFilename { \"seafloor.bmp\"; }\r\n   }\r\n   }\r\n    MeshTextureCoords {\r\n    1490;\r\n    0.428571;1.000000;,\r\n    0.571429;1.000000;,\r\n    0.142857;0.857143;,\r\n    0.285714;0.857143;,\r\n    0.428571;0.857143;,\r\n    0.571429;0.857143;,\r\n    0.714286;0.857143;,\r\n    0.857143;0.857143;,\r\n    0.142857;0.714286;,\r\n    0.285714;0.714286;,\r\n    0.428571;0.714286;,\r\n    0.571429;0.714286;,\r\n    0.714286;0.714286;,\r\n    0.857143;0.714286;,\r\n    0.000000;0.571429;,\r\n    0.142857;0.571429;,\r\n    0.285714;0.571429;,\r\n    0.428571;0.571429;,\r\n    0.571429;0.571429;,\r\n    0.714286;0.571429;,\r\n    0.857143;0.571429;,\r\n    1.000000;0.571429;,\r\n    0.000000;0.428571;,\r\n    0.142857;0.428571;,\r\n    0.285714;0.428571;,\r\n    0.428571;0.428571;,\r\n    0.571429;0.428571;,\r\n    0.714286;0.428571;,\r\n    0.857143;0.428571;,\r\n    1.000000;0.428571;,\r\n    0.142857;0.285714;,\r\n    0.285714;0.285714;,\r\n    0.428571;0.285714;,\r\n    0.571429;0.285714;,\r\n    0.714286;0.285714;,\r\n    0.857143;0.285714;,\r\n    0.142857;0.142857;,\r\n    0.285714;0.142857;,\r\n    0.428571;0.142857;,\r\n    0.571429;0.142857;,\r\n    0.714286;0.142857;,\r\n    0.857143;0.142857;,\r\n    0.428571;0.000000;,\r\n    0.571429;0.000000;,\r\n    0.119048;0.857143;,\r\n    0.285714;0.952381;,\r\n    0.285714;0.928571;,\r\n    0.285714;0.904762;,\r\n    0.285714;0.880952;,\r\n    0.261905;0.857143;,\r\n    0.238095;0.857143;,\r\n    0.214286;0.857143;,\r\n    0.190476;0.857143;,\r\n    0.166667;0.857143;,\r\n    0.380952;1.000000;,\r\n    0.404762;1.000000;,\r\n    0.428571;0.976190;,\r\n    0.428571;0.952381;,\r\n    0.428571;0.928571;,\r\n    0.428571;0.904762;,\r\n    0.428571;0.880952;,\r\n    0.404762;0.857143;,\r\n    0.380952;0.857143;,\r\n    0.357143;0.857143;,\r\n    0.333333;0.857143;,\r\n    0.309524;0.857143;,\r\n    0.452381;1.000000;,\r\n    0.476190;1.000000;,\r\n    0.500000;1.000000;,\r\n    0.523810;1.000000;,\r\n    0.547619;1.000000;,\r\n    0.571429;0.976190;,\r\n    0.571429;0.952381;,\r\n    0.571429;0.928571;,\r\n    0.571429;0.904762;,\r\n    0.571429;0.880952;,\r\n    0.547619;0.857143;,\r\n    0.523810;0.857143;,\r\n    0.500000;0.857143;,\r\n    0.476190;0.857143;,\r\n    0.452381;0.857143;,\r\n    0.595238;1.000000;,\r\n    0.619048;1.000000;,\r\n    0.714286;0.952381;,\r\n    0.714286;0.928571;,\r\n    0.714286;0.904762;,\r\n    0.714286;0.880952;,\r\n    0.690476;0.857143;,\r\n    0.666667;0.857143;,\r\n    0.642857;0.857143;,\r\n    0.619048;0.857143;,\r\n    0.595238;0.857143;,\r\n    0.857143;0.880952;,\r\n    0.833333;0.857143;,\r\n    0.809524;0.857143;,\r\n    0.785714;0.857143;,\r\n    0.761905;0.857143;,\r\n    0.738095;0.857143;,\r\n    0.142857;0.833333;,\r\n    0.142857;0.809524;,\r\n    0.142857;0.785714;,\r\n    0.142857;0.761905;,\r\n    0.142857;0.738095;,\r\n    0.119048;0.714286;,\r\n    0.095238;0.714286;,\r\n    0.071429;0.714286;,\r\n    0.047619;0.714286;,\r\n    0.285714;0.833333;,\r\n    0.285714;0.809524;,\r\n    0.285714;0.785714;,\r\n    0.285714;0.761905;,\r\n    0.285714;0.738095;,\r\n    0.261905;0.714286;,\r\n    0.238095;0.714286;,\r\n    0.214286;0.714286;,\r\n    0.190476;0.714286;,\r\n    0.166667;0.714286;,\r\n    0.428571;0.833333;,\r\n    0.428571;0.809524;,\r\n    0.428571;0.785714;,\r\n    0.428571;0.761905;,\r\n    0.428571;0.738095;,\r\n    0.404762;0.714286;,\r\n    0.380952;0.714286;,\r\n    0.357143;0.714286;,\r\n    0.333333;0.714286;,\r\n    0.309524;0.714286;,\r\n    0.571429;0.833333;,\r\n    0.571429;0.809524;,\r\n    0.571429;0.785714;,\r\n    0.571429;0.761905;,\r\n    0.571429;0.738095;,\r\n    0.547619;0.714286;,\r\n    0.523810;0.714286;,\r\n    0.500000;0.714286;,\r\n    0.476190;0.714286;,\r\n    0.452381;0.714286;,\r\n    0.714286;0.833333;,\r\n    0.714286;0.809524;,\r\n    0.714286;0.785714;,\r\n    0.714286;0.761905;,\r\n    0.714286;0.738095;,\r\n    0.690476;0.714286;,\r\n    0.666667;0.714286;,\r\n    0.642857;0.714286;,\r\n    0.619048;0.714286;,\r\n    0.595238;0.714286;,\r\n    0.857143;0.833333;,\r\n    0.857143;0.809524;,\r\n    0.857143;0.785714;,\r\n    0.857143;0.761905;,\r\n    0.857143;0.738095;,\r\n    0.833333;0.714286;,\r\n    0.809524;0.714286;,\r\n    0.785714;0.714286;,\r\n    0.761905;0.714286;,\r\n    0.738095;0.714286;,\r\n    0.976190;0.714286;,\r\n    0.952381;0.714286;,\r\n    0.928571;0.714286;,\r\n    0.904762;0.714286;,\r\n    0.880952;0.714286;,\r\n    0.142857;0.690476;,\r\n    0.142857;0.666667;,\r\n    0.142857;0.642857;,\r\n    0.142857;0.619048;,\r\n    0.142857;0.595238;,\r\n    0.119048;0.571429;,\r\n    0.095238;0.571429;,\r\n    0.071429;0.571429;,\r\n    0.047619;0.571429;,\r\n    0.023810;0.571429;,\r\n    0.000000;0.595238;,\r\n    0.000000;0.619048;,\r\n    0.000000;0.642857;,\r\n    0.285714;0.690476;,\r\n    0.285714;0.666667;,\r\n    0.285714;0.642857;,\r\n    0.285714;0.619048;,\r\n    0.285714;0.595238;,\r\n    0.261905;0.571429;,\r\n    0.238095;0.571429;,\r\n    0.214286;0.571429;,\r\n    0.190476;0.571429;,\r\n    0.166667;0.571429;,\r\n    0.428571;0.690476;,\r\n    0.428571;0.666667;,\r\n    0.428571;0.642857;,\r\n    0.428571;0.619048;,\r\n    0.428571;0.595238;,\r\n    0.404762;0.571429;,\r\n    0.380952;0.571429;,\r\n    0.357143;0.571429;,\r\n    0.333333;0.571429;,\r\n    0.309524;0.571429;,\r\n    0.571429;0.690476;,\r\n    0.571429;0.666667;,\r\n    0.571429;0.642857;,\r\n    0.571429;0.619048;,\r\n    0.571429;0.595238;,\r\n    0.547619;0.571429;,\r\n    0.523810;0.571429;,\r\n    0.500000;0.571429;,\r\n    0.476190;0.571429;,\r\n    0.452381;0.571429;,\r\n    0.714286;0.690476;,\r\n    0.714286;0.666667;,\r\n    0.714286;0.642857;,\r\n    0.714286;0.619048;,\r\n    0.714286;0.595238;,\r\n    0.690476;0.571429;,\r\n    0.666667;0.571429;,\r\n    0.642857;0.571429;,\r\n    0.619048;0.571429;,\r\n    0.595238;0.571429;,\r\n    0.857143;0.690476;,\r\n    0.857143;0.666667;,\r\n    0.857143;0.642857;,\r\n    0.857143;0.619048;,\r\n    0.857143;0.595238;,\r\n    0.833333;0.571429;,\r\n    0.809524;0.571429;,\r\n    0.785714;0.571429;,\r\n    0.761905;0.571429;,\r\n    0.738095;0.571429;,\r\n    1.000000;0.619048;,\r\n    1.000000;0.595238;,\r\n    0.976190;0.571429;,\r\n    0.952381;0.571429;,\r\n    0.928571;0.571429;,\r\n    0.904762;0.571429;,\r\n    0.880952;0.571429;,\r\n    0.142857;0.547619;,\r\n    0.142857;0.523810;,\r\n    0.142857;0.500000;,\r\n    0.142857;0.476190;,\r\n    0.142857;0.452381;,\r\n    0.119048;0.428571;,\r\n    0.095238;0.428571;,\r\n    0.071429;0.428571;,\r\n    0.047619;0.428571;,\r\n    0.023810;0.428571;,\r\n    0.000000;0.452381;,\r\n    0.000000;0.476190;,\r\n    0.000000;0.500000;,\r\n    0.000000;0.523810;,\r\n    0.000000;0.547619;,\r\n    0.285714;0.547619;,\r\n    0.285714;0.523810;,\r\n    0.285714;0.500000;,\r\n    0.285714;0.476190;,\r\n    0.285714;0.452381;,\r\n    0.261905;0.428571;,\r\n    0.238095;0.428571;,\r\n    0.214286;0.428571;,\r\n    0.190476;0.428571;,\r\n    0.166667;0.428571;,\r\n    0.428571;0.547619;,\r\n    0.428571;0.523810;,\r\n    0.428571;0.500000;,\r\n    0.428571;0.476190;,\r\n    0.428571;0.452381;,\r\n    0.404762;0.428571;,\r\n    0.380952;0.428571;,\r\n    0.357143;0.428571;,\r\n    0.333333;0.428571;,\r\n    0.309524;0.428571;,\r\n    0.571429;0.547619;,\r\n    0.571429;0.523810;,\r\n    0.571429;0.500000;,\r\n    0.571429;0.476190;,\r\n    0.571429;0.452381;,\r\n    0.547619;0.428571;,\r\n    0.523810;0.428571;,\r\n    0.500000;0.428571;,\r\n    0.476190;0.428571;,\r\n    0.452381;0.428571;,\r\n    0.714286;0.547619;,\r\n    0.714286;0.523810;,\r\n    0.714286;0.500000;,\r\n    0.714286;0.476190;,\r\n    0.714286;0.452381;,\r\n    0.690476;0.428571;,\r\n    0.666667;0.428571;,\r\n    0.642857;0.428571;,\r\n    0.619048;0.428571;,\r\n    0.595238;0.428571;,\r\n    0.857143;0.547619;,\r\n    0.857143;0.523810;,\r\n    0.857143;0.500000;,\r\n    0.857143;0.476190;,\r\n    0.857143;0.452381;,\r\n    0.833333;0.428571;,\r\n    0.809524;0.428571;,\r\n    0.785714;0.428571;,\r\n    0.761905;0.428571;,\r\n    0.738095;0.428571;,\r\n    1.000000;0.547619;,\r\n    1.000000;0.523810;,\r\n    1.000000;0.500000;,\r\n    1.000000;0.476190;,\r\n    1.000000;0.452381;,\r\n    0.976190;0.428571;,\r\n    0.952381;0.428571;,\r\n    0.928571;0.428571;,\r\n    0.904762;0.428571;,\r\n    0.880952;0.428571;,\r\n    0.142857;0.404762;,\r\n    0.142857;0.380952;,\r\n    0.142857;0.357143;,\r\n    0.142857;0.333333;,\r\n    0.142857;0.309524;,\r\n    0.119048;0.285714;,\r\n    0.095238;0.285714;,\r\n    0.071429;0.285714;,\r\n    0.047619;0.285714;,\r\n    0.023810;0.285714;,\r\n    0.000000;0.357143;,\r\n    0.000000;0.380952;,\r\n    0.000000;0.404762;,\r\n    0.285714;0.404762;,\r\n    0.285714;0.380952;,\r\n    0.285714;0.357143;,\r\n    0.285714;0.333333;,\r\n    0.285714;0.309524;,\r\n    0.261905;0.285714;,\r\n    0.238095;0.285714;,\r\n    0.214286;0.285714;,\r\n    0.190476;0.285714;,\r\n    0.166667;0.285714;,\r\n    0.428571;0.404762;,\r\n    0.428571;0.380952;,\r\n    0.428571;0.357143;,\r\n    0.428571;0.333333;,\r\n    0.428571;0.309524;,\r\n    0.404762;0.285714;,\r\n    0.380952;0.285714;,\r\n    0.357143;0.285714;,\r\n    0.333333;0.285714;,\r\n    0.309524;0.285714;,\r\n    0.571429;0.404762;,\r\n    0.571429;0.380952;,\r\n    0.571429;0.357143;,\r\n    0.571429;0.333333;,\r\n    0.571429;0.309524;,\r\n    0.547619;0.285714;,\r\n    0.523810;0.285714;,\r\n    0.500000;0.285714;,\r\n    0.476190;0.285714;,\r\n    0.452381;0.285714;,\r\n    0.714286;0.404762;,\r\n    0.714286;0.380952;,\r\n    0.714286;0.357143;,\r\n    0.714286;0.333333;,\r\n    0.714286;0.309524;,\r\n    0.690476;0.285714;,\r\n    0.666667;0.285714;,\r\n    0.642857;0.285714;,\r\n    0.619048;0.285714;,\r\n    0.595238;0.285714;,\r\n    0.857143;0.404762;,\r\n    0.857143;0.380952;,\r\n    0.857143;0.357143;,\r\n    0.857143;0.333333;,\r\n    0.857143;0.309524;,\r\n    0.833333;0.285714;,\r\n    0.809524;0.285714;,\r\n    0.785714;0.285714;,\r\n    0.761905;0.285714;,\r\n    0.738095;0.285714;,\r\n    1.000000;0.404762;,\r\n    1.000000;0.380952;,\r\n    0.952381;0.285714;,\r\n    0.928571;0.285714;,\r\n    0.904762;0.285714;,\r\n    0.880952;0.285714;,\r\n    0.142857;0.261905;,\r\n    0.142857;0.238095;,\r\n    0.142857;0.214286;,\r\n    0.142857;0.190476;,\r\n    0.142857;0.166667;,\r\n    0.119048;0.142857;,\r\n    0.285714;0.261905;,\r\n    0.285714;0.238095;,\r\n    0.285714;0.214286;,\r\n    0.285714;0.190476;,\r\n    0.285714;0.166667;,\r\n    0.261905;0.142857;,\r\n    0.238095;0.142857;,\r\n    0.214286;0.142857;,\r\n    0.190476;0.142857;,\r\n    0.166667;0.142857;,\r\n    0.428571;0.261905;,\r\n    0.428571;0.238095;,\r\n    0.428571;0.214286;,\r\n    0.428571;0.190476;,\r\n    0.428571;0.166667;,\r\n    0.404762;0.142857;,\r\n    0.380952;0.142857;,\r\n    0.357143;0.142857;,\r\n    0.333333;0.142857;,\r\n    0.309524;0.142857;,\r\n    0.571429;0.261905;,\r\n    0.571429;0.238095;,\r\n    0.571429;0.214286;,\r\n    0.571429;0.190476;,\r\n    0.571429;0.166667;,\r\n    0.547619;0.142857;,\r\n    0.523810;0.142857;,\r\n    0.500000;0.142857;,\r\n    0.476190;0.142857;,\r\n    0.452381;0.142857;,\r\n    0.714286;0.261905;,\r\n    0.714286;0.238095;,\r\n    0.714286;0.214286;,\r\n    0.714286;0.190476;,\r\n    0.714286;0.166667;,\r\n    0.690476;0.142857;,\r\n    0.666667;0.142857;,\r\n    0.642857;0.142857;,\r\n    0.619048;0.142857;,\r\n    0.595238;0.142857;,\r\n    0.857143;0.261905;,\r\n    0.857143;0.238095;,\r\n    0.857143;0.214286;,\r\n    0.857143;0.190476;,\r\n    0.857143;0.166667;,\r\n    0.833333;0.142857;,\r\n    0.809524;0.142857;,\r\n    0.785714;0.142857;,\r\n    0.761905;0.142857;,\r\n    0.738095;0.142857;,\r\n    0.285714;0.119048;,\r\n    0.285714;0.095238;,\r\n    0.285714;0.071429;,\r\n    0.285714;0.047619;,\r\n    0.428571;0.119048;,\r\n    0.428571;0.095238;,\r\n    0.428571;0.071429;,\r\n    0.428571;0.047619;,\r\n    0.428571;0.023810;,\r\n    0.404762;0.000000;,\r\n    0.380952;0.000000;,\r\n    0.357143;0.000000;,\r\n    0.571429;0.119048;,\r\n    0.571429;0.095238;,\r\n    0.571429;0.071429;,\r\n    0.571429;0.047619;,\r\n    0.571429;0.023810;,\r\n    0.547619;0.000000;,\r\n    0.523810;0.000000;,\r\n    0.500000;0.000000;,\r\n    0.476190;0.000000;,\r\n    0.452381;0.000000;,\r\n    0.714286;0.119048;,\r\n    0.714286;0.095238;,\r\n    0.714286;0.071429;,\r\n    0.714286;0.047619;,\r\n    0.619048;0.000000;,\r\n    0.595238;0.000000;,\r\n    0.261905;0.952381;,\r\n    0.214286;0.928571;,\r\n    0.238095;0.928571;,\r\n    0.261905;0.928571;,\r\n    0.190476;0.904762;,\r\n    0.214286;0.904762;,\r\n    0.238095;0.904762;,\r\n    0.261905;0.904762;,\r\n    0.166667;0.880952;,\r\n    0.190476;0.880952;,\r\n    0.214286;0.880952;,\r\n    0.238095;0.880952;,\r\n    0.261905;0.880952;,\r\n    0.309524;0.976190;,\r\n    0.333333;0.976190;,\r\n    0.357143;0.976190;,\r\n    0.380952;0.976190;,\r\n    0.404762;0.976190;,\r\n    0.309524;0.952381;,\r\n    0.333333;0.952381;,\r\n    0.357143;0.952381;,\r\n    0.380952;0.952381;,\r\n    0.404762;0.952381;,\r\n    0.309524;0.928571;,\r\n    0.333333;0.928571;,\r\n    0.357143;0.928571;,\r\n    0.380952;0.928571;,\r\n    0.404762;0.928571;,\r\n    0.309524;0.904762;,\r\n    0.333333;0.904762;,\r\n    0.357143;0.904762;,\r\n    0.380952;0.904762;,\r\n    0.404762;0.904762;,\r\n    0.309524;0.880952;,\r\n    0.333333;0.880952;,\r\n    0.357143;0.880952;,\r\n    0.380952;0.880952;,\r\n    0.404762;0.880952;,\r\n    0.452381;0.976190;,\r\n    0.476190;0.976190;,\r\n    0.500000;0.976190;,\r\n    0.523810;0.976190;,\r\n    0.547619;0.976190;,\r\n    0.452381;0.952381;,\r\n    0.476190;0.952381;,\r\n    0.500000;0.952381;,\r\n    0.523810;0.952381;,\r\n    0.547619;0.952381;,\r\n    0.452381;0.928571;,\r\n    0.476190;0.928571;,\r\n    0.500000;0.928571;,\r\n    0.523810;0.928571;,\r\n    0.547619;0.928571;,\r\n    0.452381;0.904762;,\r\n    0.476190;0.904762;,\r\n    0.500000;0.904762;,\r\n    0.523810;0.904762;,\r\n    0.547619;0.904762;,\r\n    0.452381;0.880952;,\r\n    0.476190;0.880952;,\r\n    0.500000;0.880952;,\r\n    0.523810;0.880952;,\r\n    0.547619;0.880952;,\r\n    0.595238;0.976190;,\r\n    0.619048;0.976190;,\r\n    0.642857;0.976190;,\r\n    0.666667;0.976190;,\r\n    0.690476;0.976190;,\r\n    0.595238;0.952381;,\r\n    0.619048;0.952381;,\r\n    0.642857;0.952381;,\r\n    0.666667;0.952381;,\r\n    0.690476;0.952381;,\r\n    0.595238;0.928571;,\r\n    0.619048;0.928571;,\r\n    0.642857;0.928571;,\r\n    0.666667;0.928571;,\r\n    0.690476;0.928571;,\r\n    0.595238;0.904762;,\r\n    0.619048;0.904762;,\r\n    0.642857;0.904762;,\r\n    0.666667;0.904762;,\r\n    0.690476;0.904762;,\r\n    0.595238;0.880952;,\r\n    0.619048;0.880952;,\r\n    0.642857;0.880952;,\r\n    0.666667;0.880952;,\r\n    0.690476;0.880952;,\r\n    0.738095;0.952381;,\r\n    0.738095;0.928571;,\r\n    0.761905;0.928571;,\r\n    0.785714;0.928571;,\r\n    0.738095;0.904762;,\r\n    0.761905;0.904762;,\r\n    0.785714;0.904762;,\r\n    0.809524;0.904762;,\r\n    0.738095;0.880952;,\r\n    0.761905;0.880952;,\r\n    0.785714;0.880952;,\r\n    0.809524;0.880952;,\r\n    0.833333;0.880952;,\r\n    0.119048;0.833333;,\r\n    0.095238;0.809524;,\r\n    0.119048;0.809524;,\r\n    0.071429;0.785714;,\r\n    0.095238;0.785714;,\r\n    0.119048;0.785714;,\r\n    0.071429;0.761905;,\r\n    0.095238;0.761905;,\r\n    0.119048;0.761905;,\r\n    0.047619;0.738095;,\r\n    0.071429;0.738095;,\r\n    0.095238;0.738095;,\r\n    0.119048;0.738095;,\r\n    0.166667;0.833333;,\r\n    0.190476;0.833333;,\r\n    0.214286;0.833333;,\r\n    0.238095;0.833333;,\r\n    0.261905;0.833333;,\r\n    0.166667;0.809524;,\r\n    0.190476;0.809524;,\r\n    0.214286;0.809524;,\r\n    0.238095;0.809524;,\r\n    0.261905;0.809524;,\r\n    0.166667;0.785714;,\r\n    0.190476;0.785714;,\r\n    0.214286;0.785714;,\r\n    0.238095;0.785714;,\r\n    0.261905;0.785714;,\r\n    0.166667;0.761905;,\r\n    0.190476;0.761905;,\r\n    0.214286;0.761905;,\r\n    0.238095;0.761905;,\r\n    0.261905;0.761905;,\r\n    0.166667;0.738095;,\r\n    0.190476;0.738095;,\r\n    0.214286;0.738095;,\r\n    0.238095;0.738095;,\r\n    0.261905;0.738095;,\r\n    0.309524;0.833333;,\r\n    0.333333;0.833333;,\r\n    0.357143;0.833333;,\r\n    0.380952;0.833333;,\r\n    0.404762;0.833333;,\r\n    0.309524;0.809524;,\r\n    0.333333;0.809524;,\r\n    0.357143;0.809524;,\r\n    0.380952;0.809524;,\r\n    0.404762;0.809524;,\r\n    0.309524;0.785714;,\r\n    0.333333;0.785714;,\r\n    0.357143;0.785714;,\r\n    0.380952;0.785714;,\r\n    0.404762;0.785714;,\r\n    0.309524;0.761905;,\r\n    0.333333;0.761905;,\r\n    0.357143;0.761905;,\r\n    0.380952;0.761905;,\r\n    0.404762;0.761905;,\r\n    0.309524;0.738095;,\r\n    0.333333;0.738095;,\r\n    0.357143;0.738095;,\r\n    0.380952;0.738095;,\r\n    0.404762;0.738095;,\r\n    0.452381;0.833333;,\r\n    0.476190;0.833333;,\r\n    0.500000;0.833333;,\r\n    0.523810;0.833333;,\r\n    0.547619;0.833333;,\r\n    0.452381;0.809524;,\r\n    0.476190;0.809524;,\r\n    0.500000;0.809524;,\r\n    0.523810;0.809524;,\r\n    0.547619;0.809524;,\r\n    0.452381;0.785714;,\r\n    0.476190;0.785714;,\r\n    0.500000;0.785714;,\r\n    0.523810;0.785714;,\r\n    0.547619;0.785714;,\r\n    0.452381;0.761905;,\r\n    0.476190;0.761905;,\r\n    0.500000;0.761905;,\r\n    0.523810;0.761905;,\r\n    0.547619;0.761905;,\r\n    0.452381;0.738095;,\r\n    0.476190;0.738095;,\r\n    0.500000;0.738095;,\r\n    0.523810;0.738095;,\r\n    0.547619;0.738095;,\r\n    0.595238;0.833333;,\r\n    0.619048;0.833333;,\r\n    0.642857;0.833333;,\r\n    0.666667;0.833333;,\r\n    0.690476;0.833333;,\r\n    0.595238;0.809524;,\r\n    0.619048;0.809524;,\r\n    0.642857;0.809524;,\r\n    0.666667;0.809524;,\r\n    0.690476;0.809524;,\r\n    0.595238;0.785714;,\r\n    0.619048;0.785714;,\r\n    0.642857;0.785714;,\r\n    0.666667;0.785714;,\r\n    0.690476;0.785714;,\r\n    0.595238;0.761905;,\r\n    0.619048;0.761905;,\r\n    0.642857;0.761905;,\r\n    0.666667;0.761905;,\r\n    0.690476;0.761905;,\r\n    0.595238;0.738095;,\r\n    0.619048;0.738095;,\r\n    0.642857;0.738095;,\r\n    0.666667;0.738095;,\r\n    0.690476;0.738095;,\r\n    0.738095;0.833333;,\r\n    0.761905;0.833333;,\r\n    0.785714;0.833333;,\r\n    0.809524;0.833333;,\r\n    0.833333;0.833333;,\r\n    0.738095;0.809524;,\r\n    0.761905;0.809524;,\r\n    0.785714;0.809524;,\r\n    0.809524;0.809524;,\r\n    0.833333;0.809524;,\r\n    0.738095;0.785714;,\r\n    0.761905;0.785714;,\r\n    0.785714;0.785714;,\r\n    0.809524;0.785714;,\r\n    0.833333;0.785714;,\r\n    0.738095;0.761905;,\r\n    0.761905;0.761905;,\r\n    0.785714;0.761905;,\r\n    0.809524;0.761905;,\r\n    0.833333;0.761905;,\r\n    0.738095;0.738095;,\r\n    0.761905;0.738095;,\r\n    0.785714;0.738095;,\r\n    0.809524;0.738095;,\r\n    0.833333;0.738095;,\r\n    0.880952;0.833333;,\r\n    0.880952;0.809524;,\r\n    0.904762;0.809524;,\r\n    0.880952;0.785714;,\r\n    0.904762;0.785714;,\r\n    0.928571;0.785714;,\r\n    0.880952;0.761905;,\r\n    0.904762;0.761905;,\r\n    0.928571;0.761905;,\r\n    0.952381;0.761905;,\r\n    0.880952;0.738095;,\r\n    0.904762;0.738095;,\r\n    0.928571;0.738095;,\r\n    0.952381;0.738095;,\r\n    0.023810;0.690476;,\r\n    0.047619;0.690476;,\r\n    0.071429;0.690476;,\r\n    0.095238;0.690476;,\r\n    0.119048;0.690476;,\r\n    0.023810;0.666667;,\r\n    0.047619;0.666667;,\r\n    0.071429;0.666667;,\r\n    0.095238;0.666667;,\r\n    0.119048;0.666667;,\r\n    0.023810;0.642857;,\r\n    0.047619;0.642857;,\r\n    0.071429;0.642857;,\r\n    0.095238;0.642857;,\r\n    0.119048;0.642857;,\r\n    0.023810;0.619048;,\r\n    0.047619;0.619048;,\r\n    0.071429;0.619048;,\r\n    0.095238;0.619048;,\r\n    0.119048;0.619048;,\r\n    0.023810;0.595238;,\r\n    0.047619;0.595238;,\r\n    0.071429;0.595238;,\r\n    0.095238;0.595238;,\r\n    0.119048;0.595238;,\r\n    0.166667;0.690476;,\r\n    0.190476;0.690476;,\r\n    0.214286;0.690476;,\r\n    0.238095;0.690476;,\r\n    0.261905;0.690476;,\r\n    0.166667;0.666667;,\r\n    0.190476;0.666667;,\r\n    0.214286;0.666667;,\r\n    0.238095;0.666667;,\r\n    0.261905;0.666667;,\r\n    0.166667;0.642857;,\r\n    0.190476;0.642857;,\r\n    0.214286;0.642857;,\r\n    0.238095;0.642857;,\r\n    0.261905;0.642857;,\r\n    0.166667;0.619048;,\r\n    0.190476;0.619048;,\r\n    0.214286;0.619048;,\r\n    0.238095;0.619048;,\r\n    0.261905;0.619048;,\r\n    0.166667;0.595238;,\r\n    0.190476;0.595238;,\r\n    0.214286;0.595238;,\r\n    0.238095;0.595238;,\r\n    0.261905;0.595238;,\r\n    0.309524;0.690476;,\r\n    0.333333;0.690476;,\r\n    0.357143;0.690476;,\r\n    0.380952;0.690476;,\r\n    0.404762;0.690476;,\r\n    0.309524;0.666667;,\r\n    0.333333;0.666667;,\r\n    0.357143;0.666667;,\r\n    0.380952;0.666667;,\r\n    0.404762;0.666667;,\r\n    0.309524;0.642857;,\r\n    0.333333;0.642857;,\r\n    0.357143;0.642857;,\r\n    0.380952;0.642857;,\r\n    0.404762;0.642857;,\r\n    0.309524;0.619048;,\r\n    0.333333;0.619048;,\r\n    0.357143;0.619048;,\r\n    0.380952;0.619048;,\r\n    0.404762;0.619048;,\r\n    0.309524;0.595238;,\r\n    0.333333;0.595238;,\r\n    0.357143;0.595238;,\r\n    0.380952;0.595238;,\r\n    0.404762;0.595238;,\r\n    0.452381;0.690476;,\r\n    0.476190;0.690476;,\r\n    0.500000;0.690476;,\r\n    0.523810;0.690476;,\r\n    0.547619;0.690476;,\r\n    0.452381;0.666667;,\r\n    0.476190;0.666667;,\r\n    0.500000;0.666667;,\r\n    0.523810;0.666667;,\r\n    0.547619;0.666667;,\r\n    0.452381;0.642857;,\r\n    0.476190;0.642857;,\r\n    0.500000;0.642857;,\r\n    0.523810;0.642857;,\r\n    0.547619;0.642857;,\r\n    0.452381;0.619048;,\r\n    0.476190;0.619048;,\r\n    0.500000;0.619048;,\r\n    0.523810;0.619048;,\r\n    0.547619;0.619048;,\r\n    0.452381;0.595238;,\r\n    0.476190;0.595238;,\r\n    0.500000;0.595238;,\r\n    0.523810;0.595238;,\r\n    0.547619;0.595238;,\r\n    0.595238;0.690476;,\r\n    0.619048;0.690476;,\r\n    0.642857;0.690476;,\r\n    0.666667;0.690476;,\r\n    0.690476;0.690476;,\r\n    0.595238;0.666667;,\r\n    0.619048;0.666667;,\r\n    0.642857;0.666667;,\r\n    0.666667;0.666667;,\r\n    0.690476;0.666667;,\r\n    0.595238;0.642857;,\r\n    0.619048;0.642857;,\r\n    0.642857;0.642857;,\r\n    0.666667;0.642857;,\r\n    0.690476;0.642857;,\r\n    0.595238;0.619048;,\r\n    0.619048;0.619048;,\r\n    0.642857;0.619048;,\r\n    0.666667;0.619048;,\r\n    0.690476;0.619048;,\r\n    0.595238;0.595238;,\r\n    0.619048;0.595238;,\r\n    0.642857;0.595238;,\r\n    0.666667;0.595238;,\r\n    0.690476;0.595238;,\r\n    0.738095;0.690476;,\r\n    0.761905;0.690476;,\r\n    0.785714;0.690476;,\r\n    0.809524;0.690476;,\r\n    0.833333;0.690476;,\r\n    0.738095;0.666667;,\r\n    0.761905;0.666667;,\r\n    0.785714;0.666667;,\r\n    0.809524;0.666667;,\r\n    0.833333;0.666667;,\r\n    0.738095;0.642857;,\r\n    0.761905;0.642857;,\r\n    0.785714;0.642857;,\r\n    0.809524;0.642857;,\r\n    0.833333;0.642857;,\r\n    0.738095;0.619048;,\r\n    0.761905;0.619048;,\r\n    0.785714;0.619048;,\r\n    0.809524;0.619048;,\r\n    0.833333;0.619048;,\r\n    0.738095;0.595238;,\r\n    0.761905;0.595238;,\r\n    0.785714;0.595238;,\r\n    0.809524;0.595238;,\r\n    0.833333;0.595238;,\r\n    0.880952;0.690476;,\r\n    0.904762;0.690476;,\r\n    0.928571;0.690476;,\r\n    0.952381;0.690476;,\r\n    0.976190;0.690476;,\r\n    0.880952;0.666667;,\r\n    0.904762;0.666667;,\r\n    0.928571;0.666667;,\r\n    0.952381;0.666667;,\r\n    0.976190;0.666667;,\r\n    0.880952;0.642857;,\r\n    0.904762;0.642857;,\r\n    0.928571;0.642857;,\r\n    0.952381;0.642857;,\r\n    0.976190;0.642857;,\r\n    0.880952;0.619048;,\r\n    0.904762;0.619048;,\r\n    0.928571;0.619048;,\r\n    0.952381;0.619048;,\r\n    0.976190;0.619048;,\r\n    0.880952;0.595238;,\r\n    0.904762;0.595238;,\r\n    0.928571;0.595238;,\r\n    0.952381;0.595238;,\r\n    0.976190;0.595238;,\r\n    0.023810;0.547619;,\r\n    0.047619;0.547619;,\r\n    0.071429;0.547619;,\r\n    0.095238;0.547619;,\r\n    0.119048;0.547619;,\r\n    0.023810;0.523810;,\r\n    0.047619;0.523810;,\r\n    0.071429;0.523810;,\r\n    0.095238;0.523810;,\r\n    0.119048;0.523810;,\r\n    0.023810;0.500000;,\r\n    0.047619;0.500000;,\r\n    0.071429;0.500000;,\r\n    0.095238;0.500000;,\r\n    0.119048;0.500000;,\r\n    0.023810;0.476190;,\r\n    0.047619;0.476190;,\r\n    0.071429;0.476190;,\r\n    0.095238;0.476190;,\r\n    0.119048;0.476190;,\r\n    0.023810;0.452381;,\r\n    0.047619;0.452381;,\r\n    0.071429;0.452381;,\r\n    0.095238;0.452381;,\r\n    0.119048;0.452381;,\r\n    0.166667;0.547619;,\r\n    0.190476;0.547619;,\r\n    0.214286;0.547619;,\r\n    0.238095;0.547619;,\r\n    0.261905;0.547619;,\r\n    0.166667;0.523810;,\r\n    0.190476;0.523810;,\r\n    0.214286;0.523810;,\r\n    0.238095;0.523810;,\r\n    0.261905;0.523810;,\r\n    0.166667;0.500000;,\r\n    0.190476;0.500000;,\r\n    0.214286;0.500000;,\r\n    0.238095;0.500000;,\r\n    0.261905;0.500000;,\r\n    0.166667;0.476190;,\r\n    0.190476;0.476190;,\r\n    0.214286;0.476190;,\r\n    0.238095;0.476190;,\r\n    0.261905;0.476190;,\r\n    0.166667;0.452381;,\r\n    0.190476;0.452381;,\r\n    0.214286;0.452381;,\r\n    0.238095;0.452381;,\r\n    0.261905;0.452381;,\r\n    0.309524;0.547619;,\r\n    0.333333;0.547619;,\r\n    0.357143;0.547619;,\r\n    0.380952;0.547619;,\r\n    0.404762;0.547619;,\r\n    0.309524;0.523810;,\r\n    0.333333;0.523810;,\r\n    0.357143;0.523810;,\r\n    0.380952;0.523810;,\r\n    0.404762;0.523810;,\r\n    0.309524;0.500000;,\r\n    0.333333;0.500000;,\r\n    0.357143;0.500000;,\r\n    0.380952;0.500000;,\r\n    0.404762;0.500000;,\r\n    0.309524;0.476190;,\r\n    0.333333;0.476190;,\r\n    0.357143;0.476190;,\r\n    0.380952;0.476190;,\r\n    0.404762;0.476190;,\r\n    0.309524;0.452381;,\r\n    0.333333;0.452381;,\r\n    0.357143;0.452381;,\r\n    0.380952;0.452381;,\r\n    0.404762;0.452381;,\r\n    0.452381;0.547619;,\r\n    0.476190;0.547619;,\r\n    0.500000;0.547619;,\r\n    0.523810;0.547619;,\r\n    0.547619;0.547619;,\r\n    0.452381;0.523810;,\r\n    0.476190;0.523810;,\r\n    0.500000;0.523810;,\r\n    0.523810;0.523810;,\r\n    0.547619;0.523810;,\r\n    0.452381;0.500000;,\r\n    0.476190;0.500000;,\r\n    0.500000;0.500000;,\r\n    0.523810;0.500000;,\r\n    0.547619;0.500000;,\r\n    0.452381;0.476190;,\r\n    0.476190;0.476190;,\r\n    0.500000;0.476190;,\r\n    0.523810;0.476190;,\r\n    0.547619;0.476190;,\r\n    0.452381;0.452381;,\r\n    0.476190;0.452381;,\r\n    0.500000;0.452381;,\r\n    0.523810;0.452381;,\r\n    0.547619;0.452381;,\r\n    0.595238;0.547619;,\r\n    0.619048;0.547619;,\r\n    0.642857;0.547619;,\r\n    0.666667;0.547619;,\r\n    0.690476;0.547619;,\r\n    0.595238;0.523810;,\r\n    0.619048;0.523810;,\r\n    0.642857;0.523810;,\r\n    0.666667;0.523810;,\r\n    0.690476;0.523810;,\r\n    0.595238;0.500000;,\r\n    0.619048;0.500000;,\r\n    0.642857;0.500000;,\r\n    0.666667;0.500000;,\r\n    0.690476;0.500000;,\r\n    0.595238;0.476190;,\r\n    0.619048;0.476190;,\r\n    0.642857;0.476190;,\r\n    0.666667;0.476190;,\r\n    0.690476;0.476190;,\r\n    0.595238;0.452381;,\r\n    0.619048;0.452381;,\r\n    0.642857;0.452381;,\r\n    0.666667;0.452381;,\r\n    0.690476;0.452381;,\r\n    0.738095;0.547619;,\r\n    0.761905;0.547619;,\r\n    0.785714;0.547619;,\r\n    0.809524;0.547619;,\r\n    0.833333;0.547619;,\r\n    0.738095;0.523810;,\r\n    0.761905;0.523810;,\r\n    0.785714;0.523810;,\r\n    0.809524;0.523810;,\r\n    0.833333;0.523810;,\r\n    0.738095;0.500000;,\r\n    0.761905;0.500000;,\r\n    0.785714;0.500000;,\r\n    0.809524;0.500000;,\r\n    0.833333;0.500000;,\r\n    0.738095;0.476190;,\r\n    0.761905;0.476190;,\r\n    0.785714;0.476190;,\r\n    0.809524;0.476190;,\r\n    0.833333;0.476190;,\r\n    0.738095;0.452381;,\r\n    0.761905;0.452381;,\r\n    0.785714;0.452381;,\r\n    0.809524;0.452381;,\r\n    0.833333;0.452381;,\r\n    0.880952;0.547619;,\r\n    0.904762;0.547619;,\r\n    0.928571;0.547619;,\r\n    0.952381;0.547619;,\r\n    0.976190;0.547619;,\r\n    0.880952;0.523810;,\r\n    0.904762;0.523810;,\r\n    0.928571;0.523810;,\r\n    0.952381;0.523810;,\r\n    0.976190;0.523810;,\r\n    0.880952;0.500000;,\r\n    0.904762;0.500000;,\r\n    0.928571;0.500000;,\r\n    0.952381;0.500000;,\r\n    0.976190;0.500000;,\r\n    0.880952;0.476190;,\r\n    0.904762;0.476190;,\r\n    0.928571;0.476190;,\r\n    0.952381;0.476190;,\r\n    0.976190;0.476190;,\r\n    0.880952;0.452381;,\r\n    0.904762;0.452381;,\r\n    0.928571;0.452381;,\r\n    0.952381;0.452381;,\r\n    0.976190;0.452381;,\r\n    0.023810;0.404762;,\r\n    0.047619;0.404762;,\r\n    0.071429;0.404762;,\r\n    0.095238;0.404762;,\r\n    0.119048;0.404762;,\r\n    0.023810;0.380952;,\r\n    0.047619;0.380952;,\r\n    0.071429;0.380952;,\r\n    0.095238;0.380952;,\r\n    0.119048;0.380952;,\r\n    0.023810;0.357143;,\r\n    0.047619;0.357143;,\r\n    0.071429;0.357143;,\r\n    0.095238;0.357143;,\r\n    0.119048;0.357143;,\r\n    0.023810;0.333333;,\r\n    0.047619;0.333333;,\r\n    0.071429;0.333333;,\r\n    0.095238;0.333333;,\r\n    0.119048;0.333333;,\r\n    0.023810;0.309524;,\r\n    0.047619;0.309524;,\r\n    0.071429;0.309524;,\r\n    0.095238;0.309524;,\r\n    0.119048;0.309524;,\r\n    0.166667;0.404762;,\r\n    0.190476;0.404762;,\r\n    0.214286;0.404762;,\r\n    0.238095;0.404762;,\r\n    0.261905;0.404762;,\r\n    0.166667;0.380952;,\r\n    0.190476;0.380952;,\r\n    0.214286;0.380952;,\r\n    0.238095;0.380952;,\r\n    0.261905;0.380952;,\r\n    0.166667;0.357143;,\r\n    0.190476;0.357143;,\r\n    0.214286;0.357143;,\r\n    0.238095;0.357143;,\r\n    0.261905;0.357143;,\r\n    0.166667;0.333333;,\r\n    0.190476;0.333333;,\r\n    0.214286;0.333333;,\r\n    0.238095;0.333333;,\r\n    0.261905;0.333333;,\r\n    0.166667;0.309524;,\r\n    0.190476;0.309524;,\r\n    0.214286;0.309524;,\r\n    0.238095;0.309524;,\r\n    0.261905;0.309524;,\r\n    0.309524;0.404762;,\r\n    0.333333;0.404762;,\r\n    0.357143;0.404762;,\r\n    0.380952;0.404762;,\r\n    0.404762;0.404762;,\r\n    0.309524;0.380952;,\r\n    0.333333;0.380952;,\r\n    0.357143;0.380952;,\r\n    0.380952;0.380952;,\r\n    0.404762;0.380952;,\r\n    0.309524;0.357143;,\r\n    0.333333;0.357143;,\r\n    0.357143;0.357143;,\r\n    0.380952;0.357143;,\r\n    0.404762;0.357143;,\r\n    0.309524;0.333333;,\r\n    0.333333;0.333333;,\r\n    0.357143;0.333333;,\r\n    0.380952;0.333333;,\r\n    0.404762;0.333333;,\r\n    0.309524;0.309524;,\r\n    0.333333;0.309524;,\r\n    0.357143;0.309524;,\r\n    0.380952;0.309524;,\r\n    0.404762;0.309524;,\r\n    0.452381;0.404762;,\r\n    0.476190;0.404762;,\r\n    0.500000;0.404762;,\r\n    0.523810;0.404762;,\r\n    0.547619;0.404762;,\r\n    0.452381;0.380952;,\r\n    0.476190;0.380952;,\r\n    0.500000;0.380952;,\r\n    0.523810;0.380952;,\r\n    0.547619;0.380952;,\r\n    0.452381;0.357143;,\r\n    0.476190;0.357143;,\r\n    0.500000;0.357143;,\r\n    0.523810;0.357143;,\r\n    0.547619;0.357143;,\r\n    0.452381;0.333333;,\r\n    0.476190;0.333333;,\r\n    0.500000;0.333333;,\r\n    0.523810;0.333333;,\r\n    0.547619;0.333333;,\r\n    0.452381;0.309524;,\r\n    0.476190;0.309524;,\r\n    0.500000;0.309524;,\r\n    0.523810;0.309524;,\r\n    0.547619;0.309524;,\r\n    0.595238;0.404762;,\r\n    0.619048;0.404762;,\r\n    0.642857;0.404762;,\r\n    0.666667;0.404762;,\r\n    0.690476;0.404762;,\r\n    0.595238;0.380952;,\r\n    0.619048;0.380952;,\r\n    0.642857;0.380952;,\r\n    0.666667;0.380952;,\r\n    0.690476;0.380952;,\r\n    0.595238;0.357143;,\r\n    0.619048;0.357143;,\r\n    0.642857;0.357143;,\r\n    0.666667;0.357143;,\r\n    0.690476;0.357143;,\r\n    0.595238;0.333333;,\r\n    0.619048;0.333333;,\r\n    0.642857;0.333333;,\r\n    0.666667;0.333333;,\r\n    0.690476;0.333333;,\r\n    0.595238;0.309524;,\r\n    0.619048;0.309524;,\r\n    0.642857;0.309524;,\r\n    0.666667;0.309524;,\r\n    0.690476;0.309524;,\r\n    0.738095;0.404762;,\r\n    0.761905;0.404762;,\r\n    0.785714;0.404762;,\r\n    0.809524;0.404762;,\r\n    0.833333;0.404762;,\r\n    0.738095;0.380952;,\r\n    0.761905;0.380952;,\r\n    0.785714;0.380952;,\r\n    0.809524;0.380952;,\r\n    0.833333;0.380952;,\r\n    0.738095;0.357143;,\r\n    0.761905;0.357143;,\r\n    0.785714;0.357143;,\r\n    0.809524;0.357143;,\r\n    0.833333;0.357143;,\r\n    0.738095;0.333333;,\r\n    0.761905;0.333333;,\r\n    0.785714;0.333333;,\r\n    0.809524;0.333333;,\r\n    0.833333;0.333333;,\r\n    0.738095;0.309524;,\r\n    0.761905;0.309524;,\r\n    0.785714;0.309524;,\r\n    0.809524;0.309524;,\r\n    0.833333;0.309524;,\r\n    0.880952;0.404762;,\r\n    0.904762;0.404762;,\r\n    0.928571;0.404762;,\r\n    0.952381;0.404762;,\r\n    0.976190;0.404762;,\r\n    0.880952;0.380952;,\r\n    0.904762;0.380952;,\r\n    0.928571;0.380952;,\r\n    0.952381;0.380952;,\r\n    0.976190;0.380952;,\r\n    0.880952;0.357143;,\r\n    0.904762;0.357143;,\r\n    0.928571;0.357143;,\r\n    0.952381;0.357143;,\r\n    0.976190;0.357143;,\r\n    0.880952;0.333333;,\r\n    0.904762;0.333333;,\r\n    0.928571;0.333333;,\r\n    0.952381;0.333333;,\r\n    0.976190;0.333333;,\r\n    0.880952;0.309524;,\r\n    0.904762;0.309524;,\r\n    0.928571;0.309524;,\r\n    0.952381;0.309524;,\r\n    0.047619;0.261905;,\r\n    0.071429;0.261905;,\r\n    0.095238;0.261905;,\r\n    0.119048;0.261905;,\r\n    0.047619;0.238095;,\r\n    0.071429;0.238095;,\r\n    0.095238;0.238095;,\r\n    0.119048;0.238095;,\r\n    0.071429;0.214286;,\r\n    0.095238;0.214286;,\r\n    0.119048;0.214286;,\r\n    0.071429;0.190476;,\r\n    0.095238;0.190476;,\r\n    0.119048;0.190476;,\r\n    0.095238;0.166667;,\r\n    0.119048;0.166667;,\r\n    0.166667;0.261905;,\r\n    0.190476;0.261905;,\r\n    0.214286;0.261905;,\r\n    0.238095;0.261905;,\r\n    0.261905;0.261905;,\r\n    0.166667;0.238095;,\r\n    0.190476;0.238095;,\r\n    0.214286;0.238095;,\r\n    0.238095;0.238095;,\r\n    0.261905;0.238095;,\r\n    0.166667;0.214286;,\r\n    0.190476;0.214286;,\r\n    0.214286;0.214286;,\r\n    0.238095;0.214286;,\r\n    0.261905;0.214286;,\r\n    0.166667;0.190476;,\r\n    0.190476;0.190476;,\r\n    0.214286;0.190476;,\r\n    0.238095;0.190476;,\r\n    0.261905;0.190476;,\r\n    0.166667;0.166667;,\r\n    0.190476;0.166667;,\r\n    0.214286;0.166667;,\r\n    0.238095;0.166667;,\r\n    0.261905;0.166667;,\r\n    0.309524;0.261905;,\r\n    0.333333;0.261905;,\r\n    0.357143;0.261905;,\r\n    0.380952;0.261905;,\r\n    0.404762;0.261905;,\r\n    0.309524;0.238095;,\r\n    0.333333;0.238095;,\r\n    0.357143;0.238095;,\r\n    0.380952;0.238095;,\r\n    0.404762;0.238095;,\r\n    0.309524;0.214286;,\r\n    0.333333;0.214286;,\r\n    0.357143;0.214286;,\r\n    0.380952;0.214286;,\r\n    0.404762;0.214286;,\r\n    0.309524;0.190476;,\r\n    0.333333;0.190476;,\r\n    0.357143;0.190476;,\r\n    0.380952;0.190476;,\r\n    0.404762;0.190476;,\r\n    0.309524;0.166667;,\r\n    0.333333;0.166667;,\r\n    0.357143;0.166667;,\r\n    0.380952;0.166667;,\r\n    0.404762;0.166667;,\r\n    0.452381;0.261905;,\r\n    0.476190;0.261905;,\r\n    0.500000;0.261905;,\r\n    0.523810;0.261905;,\r\n    0.547619;0.261905;,\r\n    0.452381;0.238095;,\r\n    0.476190;0.238095;,\r\n    0.500000;0.238095;,\r\n    0.523810;0.238095;,\r\n    0.547619;0.238095;,\r\n    0.452381;0.214286;,\r\n    0.476190;0.214286;,\r\n    0.500000;0.214286;,\r\n    0.523810;0.214286;,\r\n    0.547619;0.214286;,\r\n    0.452381;0.190476;,\r\n    0.476190;0.190476;,\r\n    0.500000;0.190476;,\r\n    0.523810;0.190476;,\r\n    0.547619;0.190476;,\r\n    0.452381;0.166667;,\r\n    0.476190;0.166667;,\r\n    0.500000;0.166667;,\r\n    0.523810;0.166667;,\r\n    0.547619;0.166667;,\r\n    0.595238;0.261905;,\r\n    0.619048;0.261905;,\r\n    0.642857;0.261905;,\r\n    0.666667;0.261905;,\r\n    0.690476;0.261905;,\r\n    0.595238;0.238095;,\r\n    0.619048;0.238095;,\r\n    0.642857;0.238095;,\r\n    0.666667;0.238095;,\r\n    0.690476;0.238095;,\r\n    0.595238;0.214286;,\r\n    0.619048;0.214286;,\r\n    0.642857;0.214286;,\r\n    0.666667;0.214286;,\r\n    0.690476;0.214286;,\r\n    0.595238;0.190476;,\r\n    0.619048;0.190476;,\r\n    0.642857;0.190476;,\r\n    0.666667;0.190476;,\r\n    0.690476;0.190476;,\r\n    0.595238;0.166667;,\r\n    0.619048;0.166667;,\r\n    0.642857;0.166667;,\r\n    0.666667;0.166667;,\r\n    0.690476;0.166667;,\r\n    0.738095;0.261905;,\r\n    0.761905;0.261905;,\r\n    0.785714;0.261905;,\r\n    0.809524;0.261905;,\r\n    0.833333;0.261905;,\r\n    0.738095;0.238095;,\r\n    0.761905;0.238095;,\r\n    0.785714;0.238095;,\r\n    0.809524;0.238095;,\r\n    0.833333;0.238095;,\r\n    0.738095;0.214286;,\r\n    0.761905;0.214286;,\r\n    0.785714;0.214286;,\r\n    0.809524;0.214286;,\r\n    0.833333;0.214286;,\r\n    0.738095;0.190476;,\r\n    0.761905;0.190476;,\r\n    0.785714;0.190476;,\r\n    0.809524;0.190476;,\r\n    0.833333;0.190476;,\r\n    0.738095;0.166667;,\r\n    0.761905;0.166667;,\r\n    0.785714;0.166667;,\r\n    0.809524;0.166667;,\r\n    0.833333;0.166667;,\r\n    0.880952;0.261905;,\r\n    0.904762;0.261905;,\r\n    0.928571;0.261905;,\r\n    0.952381;0.261905;,\r\n    0.880952;0.238095;,\r\n    0.904762;0.238095;,\r\n    0.928571;0.238095;,\r\n    0.880952;0.214286;,\r\n    0.904762;0.214286;,\r\n    0.880952;0.190476;,\r\n    0.904762;0.190476;,\r\n    0.880952;0.166667;,\r\n    0.166667;0.119048;,\r\n    0.190476;0.119048;,\r\n    0.214286;0.119048;,\r\n    0.238095;0.119048;,\r\n    0.261905;0.119048;,\r\n    0.166667;0.095238;,\r\n    0.190476;0.095238;,\r\n    0.214286;0.095238;,\r\n    0.238095;0.095238;,\r\n    0.261905;0.095238;,\r\n    0.238095;0.071429;,\r\n    0.261905;0.071429;,\r\n    0.238095;0.047619;,\r\n    0.261905;0.047619;,\r\n    0.309524;0.119048;,\r\n    0.333333;0.119048;,\r\n    0.357143;0.119048;,\r\n    0.380952;0.119048;,\r\n    0.404762;0.119048;,\r\n    0.309524;0.095238;,\r\n    0.333333;0.095238;,\r\n    0.357143;0.095238;,\r\n    0.380952;0.095238;,\r\n    0.404762;0.095238;,\r\n    0.309524;0.071429;,\r\n    0.333333;0.071429;,\r\n    0.357143;0.071429;,\r\n    0.380952;0.071429;,\r\n    0.404762;0.071429;,\r\n    0.309524;0.047619;,\r\n    0.333333;0.047619;,\r\n    0.357143;0.047619;,\r\n    0.380952;0.047619;,\r\n    0.404762;0.047619;,\r\n    0.333333;0.023810;,\r\n    0.357143;0.023810;,\r\n    0.380952;0.023810;,\r\n    0.404762;0.023810;,\r\n    0.452381;0.119048;,\r\n    0.476190;0.119048;,\r\n    0.500000;0.119048;,\r\n    0.523810;0.119048;,\r\n    0.547619;0.119048;,\r\n    0.452381;0.095238;,\r\n    0.476190;0.095238;,\r\n    0.500000;0.095238;,\r\n    0.523810;0.095238;,\r\n    0.547619;0.095238;,\r\n    0.452381;0.071429;,\r\n    0.476190;0.071429;,\r\n    0.500000;0.071429;,\r\n    0.523810;0.071429;,\r\n    0.547619;0.071429;,\r\n    0.452381;0.047619;,\r\n    0.476190;0.047619;,\r\n    0.500000;0.047619;,\r\n    0.523810;0.047619;,\r\n    0.547619;0.047619;,\r\n    0.452381;0.023810;,\r\n    0.476190;0.023810;,\r\n    0.500000;0.023810;,\r\n    0.523810;0.023810;,\r\n    0.547619;0.023810;,\r\n    0.595238;0.119048;,\r\n    0.619048;0.119048;,\r\n    0.642857;0.119048;,\r\n    0.666667;0.119048;,\r\n    0.690476;0.119048;,\r\n    0.595238;0.095238;,\r\n    0.619048;0.095238;,\r\n    0.642857;0.095238;,\r\n    0.666667;0.095238;,\r\n    0.690476;0.095238;,\r\n    0.595238;0.071429;,\r\n    0.619048;0.071429;,\r\n    0.642857;0.071429;,\r\n    0.666667;0.071429;,\r\n    0.690476;0.071429;,\r\n    0.595238;0.047619;,\r\n    0.619048;0.047619;,\r\n    0.642857;0.047619;,\r\n    0.666667;0.047619;,\r\n    0.690476;0.047619;,\r\n    0.595238;0.023810;,\r\n    0.619048;0.023810;,\r\n    0.642857;0.023810;,\r\n    0.666667;0.023810;,\r\n    0.738095;0.119048;,\r\n    0.761905;0.119048;,\r\n    0.785714;0.119048;,\r\n    0.809524;0.119048;,\r\n    0.833333;0.119048;,\r\n    0.738095;0.095238;,\r\n    0.761905;0.095238;,\r\n    0.785714;0.095238;,\r\n    0.809524;0.095238;,\r\n    0.738095;0.071429;,\r\n    0.761905;0.071429;,\r\n    0.785714;0.071429;,\r\n    0.738095;0.047619;;\r\n  }\r\n }\r\n}\r\n"
  },
  {
    "path": "common/Start Menu/DX Test/DirectX - 8/DolphinVS.bat",
    "content": "@echo off\nstart /unix C:/Addons/DXTest/DX8DolphinVS/DolphinVS.exe\n"
  },
  {
    "path": "common/Start Menu/DX Test/DirectX - 9/CubeMap.bat",
    "content": "@echo off\nstart /unix C:/Addons/DXTest/DX9EnvMapping/CubeMap.exe\n"
  },
  {
    "path": "common/Start Menu/DX Test/DirectX - 9/SphereMap.bat",
    "content": "@echo off\nstart /unix C:/Addons/DXTest/DX9EnvMapping/SphereMap.exe\n"
  },
  {
    "path": "common/Start Menu/DX Test/DirectX - 9/StencilMirror.bat",
    "content": "@echo off\nstart /unix C:/Addons/DXTest/DX9StencilMirror/StencilMirror.exe"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/6600GT.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/6600GT.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/9600GT.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/9600GT.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/ATIHD5800.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/ATIHD5800.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/GMAQ33.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/GMAQ33.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/GTX1050.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/GTX1050.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/GTX470.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/GTX470.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/IntelHD4000.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/IntelHD4000.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/RX480.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/RX480.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/VMWareSVGA3D.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/VMWareSVGA3D.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake GPU/VirtIOGPU.reg.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/VirtIOGPU.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/128MB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_128.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/1GB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_1024.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/256MB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_256.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/2GB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_2048.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/3GB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_3072.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/4GB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_4096.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/512MB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_512.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/6GB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_6144.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/768MB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_768.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Fake VRAM/8GB.bat",
    "content": "@echo off\nregedit C:/Addons/VRAMSize/VideoMemorySize_8196.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Graphics Settings/CSMT/0.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/csmt_0.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Graphics Settings/CSMT/1.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/csmt_1.reg\n"
  },
  {
    "path": "common/Start Menu/Regedit Tweak/Graphics Settings/CSMT/3.bat",
    "content": "@echo off\nregedit C:/Addons/FakeGPUs/csmt_3.reg\n"
  },
  {
    "path": "common/Start Menu/Update Prefix.bat",
    "content": "@echo off\n\nC:\\\\windows\\\\system32\\\\wineboot -u"
  },
  {
    "path": "create-rootfs-rat.sh",
    "content": "#!/bin/bash\nif [ $# -lt 1 ]; then\n  echo \"Specify Architecture for Building RootFS.\"\n  exit 0\nfi\n\nif [ \"$1\" != \"aarch64\" ] && [ \"$1\" != \"x86_64\" ]; then\n  echo \"Invalid Architecture Specified, Available 'aarch64' and 'x86_64'\"\n  exit 0\nfi\n\nexport PREFIX=/data/data/com.micewine.emu/files/usr\nexport INIT_DIR=$PWD\nexport ARCH=$1\nexport GIT_SHORT_SHA=$(git rev-parse --short HEAD)\n\nif [ ! -d \"$INIT_DIR/built-pkgs\" ]; then\n  echo \"built-pkgs: Don't Exist. Run 'build-all.sh' for generate the needed libs for creating a rootfs for MiceWine.\"\n  exit 0\nfi\n\nexport ROOTFS_PKGS=$(find \"$INIT_DIR/built-pkgs\" -name \"*$ARCH*.rat\" | sort)\nexport WINE_PKG=$(find \"$INIT_DIR/built-pkgs\" -name \"*wine*.rat\")\nexport WINE_UTILS_PKG=\"$INIT_DIR/Wine-Utils-($GIT_SHORT_SHA)-any.rat\"\n\nif [ ! -f \"$WINE_UTILS_PKG\" ]; then\n  $INIT_DIR/tools/download-external-dependencies.sh\n  $INIT_DIR/tools/create-rat-pkg.sh \"Wine-Utils\" \"Wine Utils\" \"\" \"any\" \"($GIT_SHORT_SHA)\" \"wine-utils\" \"$INIT_DIR/wine-utils\" \"$INIT_DIR\"\nfi\n\nROOTFS_PKGS+=\" $WINE_UTILS_PKG\"\n\nif [ -f \"$WINE_PKG\" ]; then\n  ROOTFS_PKGS+=\" $WINE_PKG\"\nelse\n  echo \"Warning, Wine Not Found.\"\nfi\n\nresolvePath()\n{\n  if [ -f \"$1\" ]; then\n    echo \"$1\"\n  elif [ -f \"$INIT_DIR/$1\" ]; then\n    echo \"$INIT_DIR/$1\"\n  fi\n}\n\ngetElementFromHeader()\n{\n  echo \"$(cat pkg-header | head -n $1 | tail -n 1 | cut -d \"=\" -f 2)\"\n}\n\nexport RAND_VAL=$RANDOM\n\nmkdir -p /tmp/$RAND_VAL\n\ncd /tmp/$RAND_VAL\n\nmkdir -p \"vulkanDrivers\"\nmkdir -p \"adrenoTools\"\nmkdir -p \"box64\"\nmkdir -p \"wine\"\n\ntouch new_makeSymlinks.sh\n\nfor i in $ROOTFS_PKGS; do\n  resolvedPath=$(resolvePath \"$i\")\n\n  if [ -n \"$resolvedPath\" ] && [ ! -f \"$INIT_DIR/built-pkgs/$(basename $i | sed \"s/.rat/.isOptional/g\")\" ]; then\n    echo \"Extracting '$(basename $resolvedPath)'...\"\n\n    tar -xf \"$resolvedPath\" pkg-header\n\n    packageCategory=$(getElementFromHeader 2)\n\n    if [ \"$packageCategory\" == \"VulkanDriver\" ]; then\n      cp -f \"$resolvedPath\" \"vulkanDrivers\"\n    elif [ \"$packageCategory\" == \"Box64\" ]; then\n      cp -f \"$resolvedPath\" \"box64\"\n    elif [ \"$packageCategory\" == \"Wine\" ]; then\n      cp -f \"$resolvedPath\" \"wine\"\n    elif [ \"$packageCategory\" == \"AdrenoTools\" ]; then\n      cp -f \"$resolvedPath\" \"adrenoTools\"\n    else\n      tar -xf \"$resolvedPath\"\n    fi\n\n    if [ -f \"makeSymlinks.sh\" ]; then\n      cat makeSymlinks.sh >> new_makeSymlinks.sh\n      rm -f makeSymlinks.sh\n    fi\n  fi\ndone\n\nmv new_makeSymlinks.sh makeSymlinks.sh\n\n$INIT_DIR/tools/create-rat-pkg.sh \"MiceWine-RootFS\" \"MiceWine RootFS\" \"\" \"$ARCH\" \"($GIT_SHORT_SHA)\" \"rootfs\" \"$PWD\" \"$INIT_DIR\"\n\ncd \"$INIT_DIR\"\n\nrm -rf /tmp/$RAND_VAL\n"
  },
  {
    "path": "packages/FreeGLUT/build.sh",
    "content": "PKG_VER=3.4.0\nSRC_URL=https://downloads.sourceforge.net/freeglut/freeglut-$PKG_VER.tar.gz\nCMAKE_ARGS=\"-DANDROID=OFF -DCMAKE_LIBRARY_PATH=$PREFIX_DIR/lib\"\nCFLAGS=\"-I$PREFIX_DIR/include\"\nLDFLAGS=\"-L$PREFIX_DIR/lib -lGL -landroid-shmem\"\nDEPENDENCIES=\"libX11 libXi libXrandr libXxf86vm GLU android-shmem\"\n"
  },
  {
    "path": "packages/FreeGLUT/fix-cmake-minimum.patch",
    "content": "diff -uNr freeglut-3.4.0/CMakeLists.txt freeglut-3.4.0-fix/CMakeLists.txt\n--- freeglut-3.4.0/CMakeLists.txt\t2022-10-07 13:12:51.000000000 -0300\n+++ freeglut-3.4.0-fix/CMakeLists.txt\t2025-04-16 14:32:50.880357391 -0300\n@@ -1,4 +1,4 @@\n-CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0 FATAL_ERROR)\n+CMAKE_MINIMUM_REQUIRED(VERSION 3.12...3.21 FATAL_ERROR)\n PROJECT(freeglut C)\n \n # for multiarch LIBDIR support (requires cmake>=2.8.8)\n"
  },
  {
    "path": "packages/FreeGLUT/src-fg_internal.h.patch",
    "content": "diff -uNr freeglut-3.2.1/src/fg_internal.h freeglut-3.2.1.mod/src/fg_internal.h\n--- freeglut-3.2.1/src/fg_internal.h\t2019-09-25 13:08:07.000000000 +0300\n+++ freeglut-3.2.1.mod/src/fg_internal.h\t2019-12-22 01:43:56.649519813 +0200\n@@ -46,7 +46,7 @@\n     || ( defined(__CYGWIN__) && defined(X_DISPLAY_MISSING) )\n #   define  TARGET_HOST_MS_WINDOWS 1\n \n-#elif defined (__ANDROID__)\n+#elif 0\n #   define  TARGET_HOST_ANDROID  1\n \n #elif defined (__QNXNTO__) || defined (__PLAYBOOK__)\n"
  },
  {
    "path": "packages/FreeGLUT/src-x11-fg_main_x11.c.patch",
    "content": "https://github.com/termux/termux-packages/issues/15852\n\n--- a/src/x11/fg_main_x11.c\n+++ b/src/x11/fg_main_x11.c\n@@ -30,6 +30,7 @@\n #include \"../fg_internal.h\"\n #include <errno.h>\n #include <stdarg.h>\n+#include <time.h>\n \n \n /*\n"
  },
  {
    "path": "packages/GLU/build.sh",
    "content": "PKG_VER=9.0.3\nSRC_URL=https://mesa.freedesktop.org/archive/glu/glu-$PKG_VER.tar.xz\nMESON_ARGS=\" \"\nDEPENDENCIES=\"libglvnd\"\n"
  },
  {
    "path": "packages/Vulkan-Headers/build.sh",
    "content": "PKG_VER=1.4.304\nSRC_URL=https://github.com/KhronosGroup/Vulkan-Headers/archive/v$PKG_VER.tar.gz\nCMAKE_ARGS=\" \"\n"
  },
  {
    "path": "packages/Vulkan-Loader/0001-fix-hardcoded-pathes.patch",
    "content": "--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -149,9 +149,9 @@\n set(LOADER_HELPER_FOLDER \"Helper Targets\")\n \n if(UNIX)\n-    set(FALLBACK_CONFIG_DIRS \"/etc/xdg\" CACHE STRING\n+    set(FALLBACK_CONFIG_DIRS \"/data/data/com.micewine.emu/files/usr/etc/xdg\" CACHE STRING\n             \"Search path to use when XDG_CONFIG_DIRS is unset or empty or the current process is SUID/SGID. Default is freedesktop compliant.\")\n-    set(FALLBACK_DATA_DIRS \"/usr/local/share:/usr/share\" CACHE STRING\n+    set(FALLBACK_DATA_DIRS \"/data/data/com.micewine.emu/files/usr/share\" CACHE STRING\n             \"Search path to use when XDG_DATA_DIRS is unset or empty or the current process is SUID/SGID. Default is freedesktop compliant.\")\n     set(SYSCONFDIR \"\" CACHE STRING\n             \"System-wide search directory. If not set or empty, CMAKE_INSTALL_FULL_SYSCONFDIR and /etc are used.\")\n@@ -338,8 +338,8 @@\n         target_compile_definitions(loader_common_options INTERFACE SYSCONFDIR=\"${CMAKE_INSTALL_FULL_SYSCONFDIR}\")\n \n         # Make sure /etc is searched by the loader\n-        if(NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL \"/etc\"))\n-            target_compile_definitions(loader_common_options INTERFACE EXTRASYSCONFDIR=\"/etc\")\n+        if(NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL \"/data/data/com.micewine.emu/files/usr/etc\"))\n+            target_compile_definitions(loader_common_options INTERFACE EXTRASYSCONFDIR=\"/data/data/com.micewine.emu/files/usr/etc\")\n         endif()\n     endif()\n endif()\n"
  },
  {
    "path": "packages/Vulkan-Loader/0002-properly-enable-extensions.patch",
    "content": "diff -uNr 37-Vulkan-Loader/CMakeLists.txt 37-Vulkan-Loader.mod/CMakeLists.txt\n--- 37-Vulkan-Loader/CMakeLists.txt\t2024-03-16 23:47:45.918186172 -0300\n+++ 37-Vulkan-Loader.mod/CMakeLists.txt\t2024-03-16 23:52:09.421513293 -0300\n@@ -109,6 +109,10 @@\n \n     find_package(PkgConfig REQUIRED QUIET) # Use PkgConfig to find Linux system libraries\n \n+    if(ANDROID)\n+        target_compile_definitions(platform_wsi INTERFACE VK_USE_PLATFORM_ANDROID_KHR)\n+    endif()\n+\n     if(BUILD_WSI_XCB_SUPPORT)\n         pkg_check_modules(XCB REQUIRED QUIET IMPORTED_TARGET xcb)\n         target_compile_definitions(platform_wsi INTERFACE VK_USE_PLATFORM_XCB_KHR)\n"
  },
  {
    "path": "packages/Vulkan-Loader/build.sh",
    "content": "PKG_VER=1.4.304\nSRC_URL=https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/v$PKG_VER.tar.gz\nCMAKE_ARGS=\"-DBUILD_TESTS=OFF -DCMAKE_SYSTEM_NAME=Linux -DENABLE_WERROR=OFF -DVULKAN_HEADERS_INSTALL_DIR=$PREFIX -DUSE_GAS=OFF\"\nDEPENDENCIES=\"Vulkan-Headers libX11 libXrandr\"\n"
  },
  {
    "path": "packages/Vulkan-Tools/01-no-android.patch",
    "content": "--- a/cube/CMakeLists.txt\n+++ b/cube/CMakeLists.txt\n@@ -61,11 +61,7 @@\n     endif()\n endif()\n \n-if(ANDROID OR APPLE)\n-    set(WSI_DISPLAY_DEFAULT_SETTING \"OFF\")\n-else()\n     set(WSI_DISPLAY_DEFAULT_SETTING \"ON\")\n-endif()\n \n option(BUILD_WSI_DISPLAY_SUPPORT \"Build DISPLAY WSI support\" ${WSI_DISPLAY_DEFAULT_SETTING})\n \n@@ -167,8 +163,6 @@\n if(WIN32)\n     add_definitions(-DWIN32_LEAN_AND_MEAN -DNOMINMAX)\n     list(APPEND ENABLED_CUBE_PLATFORMS VK_USE_PLATFORM_WIN32_KHR)\n-elseif(ANDROID)\n-    list(APPEND ENABLED_CUBE_PLATFORMS VK_USE_PLATFORM_ANDROID_KHR)\n elseif(APPLE)\n     list(APPEND ENABLED_CUBE_PLATFORMS VK_USE_PLATFORM_METAL_EXT)\n elseif(CMAKE_SYSTEM_NAME MATCHES \"Linux|BSD|GNU\")\n@@ -231,13 +225,6 @@\n \n if(APPLE)\n     add_subdirectory(macOS/cube)\n-elseif (ANDROID)\n-    add_library(vkcube MODULE)\n-\n-    target_sources(vkcube PRIVATE cube.c)\n-\n-    add_subdirectory(android)\n-\n elseif(CMAKE_SYSTEM_NAME MATCHES \"Linux|BSD|GNU\")\n     add_executable(vkcube)\n     target_sources(vkcube PRIVATE\n@@ -285,9 +272,7 @@\n target_include_directories(vkcube PRIVATE .)\n target_link_libraries(vkcube  Vulkan::Headers volk::volk_headers)\n \n-if (ANDROID)\n-    install(TARGETS vkcube DESTINATION ${CMAKE_INSTALL_LIBDIR})\n-elseif(APPLE)\n+if(APPLE)\n     install(\n         TARGETS vkcube\n         # Install runtime dependencies like the Vulkan::Loader so the app is self-contained\n@@ -301,10 +286,6 @@\n     install(TARGETS vkcube)\n endif()\n \n-if (ANDROID)\n-    return()\n-endif()\n-\n if (XCB_LINK_LIBRARIES)\n     target_compile_definitions(vkcube PRIVATE \"XCB_LIBRARY=\\\"${XCB_LINK_LIBRARIES}\\\"\")\n endif()\n--- a/cube/cube.c\n+++ b/cube/cube.c\n@@ -105,7 +105,7 @@\n     fflush(stdout);\n }\n \n-#elif defined __ANDROID__\n+#elif 0\n #include <android/log.h>\n #define ERR_EXIT(err_msg, err_class)                                           \\\n     do {                                                                       \\\n@@ -643,7 +643,7 @@\n     if (!demo->suppress_popups) MessageBox(NULL, message, \"Alert\", MB_OK);\n     in_callback = false;\n \n-#elif defined(ANDROID)\n+#elif 0\n \n     if (messageSeverity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT) {\n         __android_log_print(ANDROID_LOG_INFO, APP_SHORT_NAME, \"%s\", message);\n@@ -4703,7 +4703,7 @@\n             i++;\n             continue;\n         }\n-#if defined(ANDROID)\n+#if 0\n         ERR_EXIT(\"Usage: vkcube [--validate]\\n\", \"Usage\");\n #else\n \n@@ -4913,7 +4913,7 @@\n }\n \n #endif\n-#if defined(VK_USE_PLATFORM_ANDROID_KHR)\n+#if 0\n #include <android/log.h>\n #include <android_native_app_glue.h>\n #include \"android_util.h\"\n"
  },
  {
    "path": "packages/Vulkan-Tools/02-do-not-search-KHR_display-automatically.patch",
    "content": "https://github.com/termux/termux-packages/issues/22542\n\n--- a/cube/cube.c\n+++ b/cube/cube.c\n@@ -3931,7 +3931,11 @@ static void demo_init_vk(struct demo *demo) {\n #endif\n #if defined(VK_USE_PLATFORM_DISPLAY_KHR)\n             if (!strcmp(VK_KHR_DISPLAY_EXTENSION_NAME, instance_extensions[i].extensionName) &&\n+#ifdef __ANDROID__\n+                (demo->wsi_platform == WSI_PLATFORM_DISPLAY)) {\n+#else\n                 (demo->wsi_platform == WSI_PLATFORM_AUTO || demo->wsi_platform == WSI_PLATFORM_DISPLAY)) {\n+#endif\n                 platformSurfaceExtFound = true;\n                 demo->extension_names[demo->enabled_extension_count++] = VK_KHR_DISPLAY_EXTENSION_NAME;\n             }\ndiff --git a/cube/cube.cpp b/cube/cube.cpp\nindex 6c4f9b05..e488f2ef 100644\n--- a/cube/cube.cpp\n+++ b/cube/cube.cpp\n@@ -1534,7 +1534,11 @@ void Demo::init_vk() {\n #endif\n #if defined(VK_USE_PLATFORM_DISPLAY_KHR)\n         else if (!strcmp(VK_KHR_DISPLAY_EXTENSION_NAME, extension.extensionName) &&\n+#ifdef __ANDROID__\n+                 (wsi_platform == WsiPlatform::display)) {\n+#else\n                  (wsi_platform == WsiPlatform::auto_ || wsi_platform == WsiPlatform::display)) {\n+#endif\n             platformSurfaceExtFound = 1;\n             enabled_instance_extensions.push_back(VK_KHR_DISPLAY_EXTENSION_NAME);\n         }\n"
  },
  {
    "path": "packages/Vulkan-Tools/build.sh",
    "content": "PKG_VER=1.4.304\nSRC_URL=https://github.com/KhronosGroup/Vulkan-Tools/archive/refs/tags/v$PKG_VER.tar.gz\nCMAKE_ARGS=\"-DCMAKE_SYSTEM_NAME=Linux -DBUILD_CUBE=ON -DBUILD_ICD=OFF -DBUILD_WSI_WAYLAND_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=ON -DBUILD_WSI_XLIB_SUPPORT=ON -DVULKAN_HEADERS_INSTALL_DIR=$PREFIX\"\nDEPENDENCIES=\"Vulkan-Loader Vulkan-Volk libX11 libXrandr libxcb\"\n"
  },
  {
    "path": "packages/Vulkan-Volk/build.sh",
    "content": "PKG_VER=1.4.304\nSRC_URL=https://github.com/zeux/volk/archive/refs/tags/$PKG_VER.tar.gz\nCMAKE_ARGS=\"-DVOLK_INSTALL=ON\"\nDEPENDENCIES=\"Vulkan-Headers\"\n"
  },
  {
    "path": "packages/android-shmem/build.sh",
    "content": "PKG_VER=0.4\nSRC_URL=https://github.com/termux/libandroid-shmem/archive/v$PKG_VER.tar.gz\n"
  },
  {
    "path": "packages/android-shmem/fix-build.patch",
    "content": "diff -uNr 58-android-shmem/shmem.c 58-android-shmem.mod/shmem.c\n--- 58-android-shmem/shmem.c\t2022-03-27 13:15:50.000000000 -0300\n+++ 58-android-shmem.mod/shmem.c\t2024-04-13 19:22:22.244764249 -0300\n@@ -16,8 +16,12 @@\n \n #include \"shm.h\"\n \n+#include <fcntl.h>\n+#include <string.h>\n+\n #define DBG(...) __android_log_print(ANDROID_LOG_INFO, \"shmem\", __VA_ARGS__)\n #define ASHV_KEY_SYMLINK_PATH _PATH_TMP \"ashv_key_%d\"\n+#define _PATH_TMP \"/data/data/com.micewine.emu/files/usr/tmp\"\n #define ANDROID_SHMEM_SOCKNAME \"/dev/shm/%08x\"\n #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))\n \n"
  },
  {
    "path": "packages/box64-0.3.2/build.sh",
    "content": "PKG_VER=0.3.2\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\nPKG_DOWNLOADABLE=1\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=769c6c8f6139c20099f8569582c4f5854c6d13e6\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.2/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/box64-0.3.2/fix-signal.patch",
    "content": "diff --git a/src/include/signals.h b/src/include/signals.h\nindex ef72f401..2fae6c60 100644\n--- a/src/include/signals.h\n+++ b/src/include/signals.h\n@@ -4,6 +4,17 @@\n \n typedef void (*sighandler_t)(int);\n \n+#ifdef ANDROID\n+typedef struct x64_sigaction_s {\n+\tint sa_flags;\n+\tunion {\n+\t  sighandler_t _sa_handler;\n+\t  void (*_sa_sigaction)(int, siginfo_t *, void *);\n+\t} _u;\n+\tsigset_t sa_mask;\n+\tvoid (*sa_restorer)(void);\n+} x64_sigaction_t;\n+#else\n typedef struct x64_sigaction_s {\n \tunion {\n \t  sighandler_t _sa_handler;\n@@ -13,6 +24,7 @@ typedef struct x64_sigaction_s {\n \tuint32_t sa_flags;\n \tvoid (*sa_restorer)(void);\n } x64_sigaction_t;\n+#endif\n \n typedef struct x64_sigaction_restorer_s {\n \tunion {\n"
  },
  {
    "path": "packages/box64-0.3.3-8bb53e1/build.sh",
    "content": "PKG_VER=0.3.3-[gss]\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\nPKG_DOWNLOADABLE=1\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=8bb53e10018e7ebee785afc8ad571f1cee5f9bef\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.3-8bb53e1/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/box64-0.3.4/build.sh",
    "content": "PKG_VER=0.3.4\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\nPKG_DOWNLOADABLE=1\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=2b300bd199a7a65a3de1eecd24d6dff5593a9b55\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.4/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/box64-0.3.6/build.sh",
    "content": "PKG_VER=0.3.6\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\nPKG_DOWNLOADABLE=1\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=03d220b1d297a9e5be81760833b014edf9dfe7ab\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.6/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/box64-0.3.7-cb2c29c/build.sh",
    "content": "PKG_VER=0.3.7-cb2c29c\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=cb2c29c5f992cb4e5ec481f8d99b973b90411403\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.7-cb2c29c/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/box64-0.3.8/build.sh",
    "content": "PKG_VER=0.3.8\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\nPKG_DOWNLOADABLE=1\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=81c56d7155cdd7a4c49173a2fe4d7bdd87698683\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.8/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/box64-0.3.9-056999e/build.sh",
    "content": "PKG_VER=0.3.9-056999e\nPKG_CATEGORY=\"Box64\"\nPKG_PRETTY_NAME=\"Box64\"\nPKG_DOWNLOADABLE=1\n\nGIT_URL=https://github.com/ptitSeb/box64\nGIT_COMMIT=056999e8fd7ec7649762179f52e32819ef5e48e1\nCMAKE_ARGS=\"-DCMAKE_BUILD_TYPE=RelWithDebInfo -DANDROID=1 -DBAD_SIGNAL=1 -DARM_DYNAREC=1\"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/box64-0.3.9-056999e/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/bin\nmkdir -p $DESTDIR/$PREFIX/etc\n\ncp box64 $DESTDIR/$PREFIX/bin\ncp ../system/box64.box64rc $DESTDIR/$PREFIX/etc\n"
  },
  {
    "path": "packages/brotli/build.sh",
    "content": "PKG_VER=1.1.0\nSRC_URL=https://github.com/google/brotli/archive/v$PKG_VER.tar.gz\nCMAKE_ARGS=\" \"\n"
  },
  {
    "path": "packages/fakeintl/Makefile",
    "content": "install:\n\tinstall -Dm600 libintl.h $(DESTDIR)/$(PREFIX)/include/libintl.h"
  },
  {
    "path": "packages/fakeintl/build.sh",
    "content": "PKG_VER=1\nBUILD_IN_SRC=1\n"
  },
  {
    "path": "packages/fakeintl/libintl.h",
    "content": "#ifndef _LIBINTL_H\n#define _LIBINTL_H\n\n#include <errno.h>\n#include <string.h>\n\nstatic __inline__ char* gettext(const char* msgid)\n{ return (char*) msgid; }\n\nstatic __inline__ char* dgettext(const char* domainname, const char* msgid)\n{ return (char*) msgid; }\n\nstatic __inline__ char* dcgettext(const char* domainname, const char* msgid, int category)\n{ return (char*) msgid; }\n\nstatic __inline__ char* ngettext(const char* msgid1, const char* msgid2, unsigned long int n)\n{ return (char *) ((n == 1) ? msgid1 : msgid2); }\n\nstatic __inline__ char* dngettext(const char* domainname, const char* msgid1, const char* msgid2, unsigned long int n)\n{ return (char *) ((n == 1) ? msgid1 : msgid2); }\n\nstatic __inline__ char* dcngettext(const char* domainname, const char* msgid1, const char* msgid2, unsigned long int n, int category)\n{ return (char *) ((n == 1) ? msgid1 : msgid2); }\n\nstatic __inline__ char* textdomain(const char* domainname)\n{\n\tstatic const char default_str[] = \"messages\";\n\tif (domainname && *domainname && strcmp(domainname, default_str)) {\n\t\terrno = EINVAL;\n\t\treturn NULL;\n\t}\n\treturn (char*) default_str;\n}\n\nstatic __inline__ char* bindtextdomain(const char* domainname, const char* dirname)\n{\n\tstatic const char dir[] = \"/\";\n\tif (!domainname || !*domainname || (dirname && ((dirname[0] != '/') || dirname[1]))) {\n\t\terrno = EINVAL;\n\t\treturn NULL;\n\t}\n\treturn (char*) dir;\n}\n\nstatic __inline__ char* bind_textdomain_codeset(const char* domainname, const char* codeset)\n{\n\tif (!domainname || !*domainname || (codeset && strcasecmp(codeset, \"UTF-8\"))) {\n\t\terrno = EINVAL;\n\t}\n\treturn NULL;\n}\n\n#endif"
  },
  {
    "path": "packages/freetype/build.sh",
    "content": "PKG_VER=2.13.3\nSRC_URL=https://downloads.sourceforge.net/freetype/freetype-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --without-bzip2 --without-harfbuzz\"\nDEPENDENCIES=\"brotli libpng zlib\"\n"
  },
  {
    "path": "packages/glib/build.sh",
    "content": "PKG_VER=2.82.4\nSRC_URL=https://download.gnome.org/sources/glib/${PKG_VER%.*}/glib-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dintrospection=disabled -Druntime_dir=$PREFIX/var/run -Dlibmount=disabled -Dman-pages=enabled -Dtests=false -Dselinux=disabled -Dlibelf=disabled\"\nCFLAGS=\"-I$PREFIX/include\"\nLDFLAGS=\"-L$PREFIX/lib -l:libiconv.a\"\nDEPENDENCIES=\"zlib libiconv pcre2 libffi\"\n"
  },
  {
    "path": "packages/glib/gio-gdbusprivate.c.patch",
    "content": "--- ./gio/gdbusprivate.c.orig\t2021-12-10 17:28:44.551721009 +0530\n+++ ./gio/gdbusprivate.c\t2021-12-10 19:24:17.521718364 +0530\n@@ -2477,8 +2477,9 @@\n \n   /* Copy what dbus.git does: allow the /var/lib path to be configurable at\n    * build time, but hard-code the system-wide machine ID path in /etc. */\n+  /* Note that LOCALSTATEDIR is defined as \"/data/data/com.micewine.emu/files/usr/var\". */\n   const gchar *var_lib_path = LOCALSTATEDIR \"/lib/dbus/machine-id\";\n-  const gchar *etc_path = \"/etc/machine-id\";\n+  const gchar *etc_path = \"/data/data/com.micewine.emu/files/usr/etc/machine-id\";\n \n   if (!g_file_get_contents (var_lib_path,\n                             &ret,\n"
  },
  {
    "path": "packages/glib/gio-gkeyfilesettingsbackend.c.patch",
    "content": "--- ./gio/gkeyfilesettingsbackend.c.orig\t2021-12-10 19:39:09.321718024 +0530\n+++ ./gio/gkeyfilesettingsbackend.c\t2021-12-10 19:39:26.371718018 +0530\n@@ -662,7 +662,7 @@\n load_system_settings (GKeyfileSettingsBackend *kfsb)\n {\n   GError *error = NULL;\n-  const char *dir = \"/etc/glib-2.0/settings\";\n+  const char *dir = \"/data/data/com.micewine.emu/files/usr/etc/glib-2.0/settings\";\n   char *path;\n   char *contents;\n \n"
  },
  {
    "path": "packages/glib/gio-gnetworking.h.in.patch",
    "content": "--- ./gio/gnetworking.h.in.orig\t2021-12-10 19:44:29.271717902 +0530\n+++ ./gio/gnetworking.h.in\t2021-12-10 19:45:00.881717890 +0530\n@@ -51,7 +51,7 @@\n #endif\n \n #ifndef _PATH_RESCONF\n-#define _PATH_RESCONF \"/etc/resolv.conf\"\n+#define _PATH_RESCONF \"/data/data/com.micewine.emu/files/usr/etc/resolv.conf\"\n #endif\n \n #ifndef CMSG_LEN\n"
  },
  {
    "path": "packages/glib/gio-gunixmounts.c.patch",
    "content": "--- ./gio/gunixmounts.c.orig\t2021-12-10 16:01:41.791723001 +0530\n+++ ./gio/gunixmounts.c\t2021-12-10 16:03:20.861722964 +0530\n@@ -20,6 +20,8 @@\n  * Author: Alexander Larsson <alexl@redhat.com>\n  */\n \n+#include <mntent.h>\n+\n /* Prologue {{{1 */\n \n #include \"config.h\"\n"
  },
  {
    "path": "packages/glib/gio-xdgmime-xdgmime.c.patch",
    "content": "--- ./gio/xdgmime/xdgmime.c.orig\t2021-12-10 20:05:07.591717430 +0530\n+++ ./gio/xdgmime/xdgmime.c\t2021-12-10 20:05:11.861717428 +0530\n@@ -235,7 +235,7 @@\n   xdg_data_dirs = getenv (\"XDG_DATA_DIRS\");\n \n   if (xdg_data_dirs == NULL)\n-    xdg_data_dirs = \"/usr/local/share/:/usr/share/\";\n+    xdg_data_dirs = \"/data/data/com.micewine.emu/files/usr/local/share/:/data/data/com.micewine.emu/files/usr/share/\";\n \n   /* Work out how many dirs we’re dealing with. */\n   if (xdg_data_home != NULL || home != NULL)\n"
  },
  {
    "path": "packages/glib/glib-gcharset.c.patch",
    "content": "--- ./glib/gcharset.c.orig\t2021-12-10 21:38:06.571715302 +0530\n+++ ./glib/gcharset.c\t2021-12-10 21:38:11.361715300 +0530\n@@ -503,7 +503,7 @@\n   if (g_once_init_enter_pointer (&alias_table))\n     {\n       GHashTable *table = g_hash_table_new (g_str_hash, g_str_equal);\n-      read_aliases (\"/usr/share/locale/locale.alias\", table);\n+      read_aliases (\"/data/data/com.micewine.emu/files/usr/share/locale/locale.alias\", table);\n       g_once_init_leave_pointer (&alias_table, table);\n     }\n \n"
  },
  {
    "path": "packages/glib/glib-gspawn.c.patch",
    "content": "+++ ./glib/gspawn-posix.c\n@@ -1404,7 +1404,7 @@\n        * * what to search if PATH is unset. POSIX may, dunno.\n        * */\n \n-      chosen_search_path = \"/bin:/usr/bin:.\";\n+      chosen_search_path = \"/data/data/com.micewine.emu/files/usr/bin:.\";\n     }\n \n   if (search_path || search_path_from_envp)\n@@ -1815,7 +1815,7 @@\n   if (argc + 2 > argv_buffer_len)\n     return FALSE;\n \n-  argv_buffer[0] = (char *) \"/bin/sh\";\n+  argv_buffer[0] = (char *) \"/data/data/com.micewine.emu/files/usr/bin/sh\";\n   argv_buffer[1] = (char *) file;\n   while (argc > 0)\n     {\n"
  },
  {
    "path": "packages/glib/glib-gthread-posix.c.patch",
    "content": "+++ ./glib/gthread-posix.c\n@@ -1079,7 +1079,7 @@\n   sampled = cond->i[0];\n   g_mutex_unlock (mutex);\n \n-#if defined(HAVE_FUTEX_TIME64)\n+#if 0\n #if defined(__ANDROID__)\n   if (__builtin_available (android 30, *)) {\n #else\n"
  },
  {
    "path": "packages/glib/glib-gthreadprivate.h.patch",
    "content": "+++ ./glib/gthreadprivate.h\n@@ -46,6 +46,10 @@\n #include <sys/syscall.h>\n #include <unistd.h>\n \n+#ifndef __LP64__\n+#include <errno.h>\n+#endif\n+\n #ifndef FUTEX_WAIT_PRIVATE\n #define FUTEX_WAIT_PRIVATE FUTEX_WAIT\n #define FUTEX_WAKE_PRIVATE FUTEX_WAKE\n@@ -73,7 +77,7 @@\n  * This must not be called with a timeout parameter as that differs\n  * in size between the two syscall variants!\n  */\n-#if defined(HAVE_FUTEX) && defined(HAVE_FUTEX_TIME64)\n+#if defined(HAVE_FUTEX) && defined(HAVE_FUTEX_TIME64) && !defined(__ANDROID__)\n #if defined(__ANDROID__)\n #define g_futex_simple(uaddr, futex_op, ...)                                     \\\n   G_STMT_START                                                                   \\\n@@ -117,7 +121,7 @@\n   }                                                                              \\\n   G_STMT_END\n #endif /* defined(__ANDROID__) */\n-#elif defined(HAVE_FUTEX_TIME64)\n+#elif defined(HAVE_FUTEX_TIME64) && !defined(__ANDROID__)\n #define g_futex_simple(uaddr, futex_op, ...)                                     \\\n   G_STMT_START                                                                   \\\n   {                                                                              \\\n"
  },
  {
    "path": "packages/glib/glib-gtimezone.patch",
    "content": "--- ./glib/gtimezone.c.orig\t2021-12-11 16:52:41.154480293 +0530\n+++ ./glib/gtimezone.c\t2021-12-11 16:53:59.829643030 +0530\n@@ -46,6 +46,10 @@\n #include <wchar.h>\n #endif\n \n+#ifdef __ANDROID__\n+#include <sys/system_properties.h>\n+#endif\n+\n /**\n  * SECTION:timezone\n  * @title: GTimeZone\n@@ -509,6 +513,135 @@\n   return resolved_identifier;\n }\n \n+/* Android uses a 'persist.sys.timezone' system property for the\n+ * current timezone instead of a /etc/localtime file:\n+ * https://android.googlesource.com/platform/ndk/+/android-2.2_r1/docs/system/libc/OVERVIEW.TXT#67\n+ *\n+ * There are no files under /usr/share/zoneinfo - instead a single\n+ * /system/usr/share/zoneinfo/tzdata file is used which contains all\n+ * files compiled together with the following tool:\n+ * https://android.googlesource.com/platform/system/timezone/+/master/zone_compactor/main/java/ZoneCompactor.java\n+ */\n+static GBytes *\n+zone_info_android (const gchar  *identifier,\n+                   gchar       **out_identifier)\n+{\n+  char sys_timezone[PROP_VALUE_MAX];\n+  GMappedFile *file;\n+  gchar *tzdata;\n+  gsize tzdata_length;\n+  const gsize index_entry_size = 52;\n+  gint32 header_index_offset, header_data_offset;\n+  gint32 entry_count, current_index;\n+  char* entry_name;\n+  gint32 entry_offset, entry_length;\n+  guint32 entry_name_start, entry_name_end;\n+  guint32 zoneinfo_start, zoneinfo_end;\n+  GBytes *zoneinfo;\n+  GError *error = NULL;\n+\n+  if (identifier == NULL)\n+    {\n+      if (__system_property_get (\"persist.sys.timezone\", sys_timezone) < 1)\n+        {\n+          g_warning (\"__system_property_get(\\\"persist.sys.timezone\\\") failed\");\n+          return NULL;\n+        }\n+      identifier = sys_timezone;\n+    }\n+\n+  file = g_mapped_file_new (\"/system/usr/share/zoneinfo/tzdata\", FALSE, &error);\n+  if (file == NULL)\n+    {\n+      g_warning (\"Failed mapping tzdata file: %s\", error->message);\n+      g_error_free (error);\n+      return NULL;\n+    }\n+\n+  tzdata = g_mapped_file_get_contents (file);\n+  tzdata_length = g_mapped_file_get_length (file);\n+  if (tzdata == NULL || tzdata_length < 24)\n+    {\n+      g_warning (\"Too small tzdata file\");\n+      goto error;\n+    }\n+\n+  header_index_offset = gint32_from_be (*((gint32_be*) (tzdata + 12)));\n+  header_data_offset = gint32_from_be (*((gint32_be*) (tzdata + 16)));\n+\n+  if (header_index_offset < 0 || header_data_offset < 0 || header_data_offset < index_entry_size)\n+    {\n+      g_warning (\"Invalid tzdata content\");\n+      goto error;\n+    }\n+\n+  entry_count = (header_data_offset - header_index_offset) / index_entry_size;\n+  if (entry_count < 1)\n+    {\n+      g_warning (\"No index entry found\");\n+      goto error;\n+    }\n+\n+  current_index = 0;\n+  while (current_index < entry_count)\n+    {\n+      if (!g_uint_checked_mul (&entry_name_start, current_index, index_entry_size) ||\n+          !g_uint_checked_add (&entry_name_start, entry_name_start, header_index_offset) ||\n+          !g_uint_checked_add (&entry_name_end, entry_name_start, 40))\n+        {\n+          g_warning (\"Overflow when computing entry name offset\");\n+          goto error;\n+        }\n+\n+      entry_name = tzdata + entry_name_start;\n+\n+      /* The name should be null terminated within the 40 chars. */\n+      if (memchr (entry_name, 0, 40) == NULL)\n+        {\n+          g_warning (\"Invalid index entry\");\n+          goto error;\n+        }\n+\n+      if (strcmp (entry_name, identifier) == 0)\n+        {\n+          entry_offset = gint32_from_be (*(gint32_be*) (entry_name + 40));\n+          entry_length = gint32_from_be (*(gint32_be*) (entry_name + 44));\n+          if (entry_length == 0 || entry_length > 65536)\n+            {\n+              /* Use a reasonable but arbitrary max length of an entry. */\n+              g_warning (\"Invalid zoneinfo entry length\");\n+              goto error;\n+            }\n+\n+          if (!g_uint_checked_add (&zoneinfo_start, header_data_offset, entry_offset) ||\n+              !g_uint_checked_add (&zoneinfo_end, zoneinfo_start, entry_length) ||\n+              zoneinfo_end > tzdata_length)\n+            {\n+              g_warning (\"Too large zoneinfo entry length\");\n+              goto error;\n+            }\n+\n+          zoneinfo = g_bytes_new_with_free_func (tzdata + zoneinfo_start,\n+                                                 entry_length,\n+                                                 (GDestroyNotify)g_mapped_file_unref,\n+                                                 g_mapped_file_ref (file));\n+          g_mapped_file_unref (file);\n+\n+          if (out_identifier != NULL)\n+              *out_identifier = g_strdup (identifier);\n+\n+          return zoneinfo;\n+        }\n+      current_index++;\n+    }\n+\n+error:\n+  g_mapped_file_unref (file);\n+  return NULL;\n+}\n+\n+\n+\n static GBytes*\n zone_info_unix (const gchar *identifier,\n                 const gchar *resolved_identifier)\n@@ -1773,7 +1906,7 @@\n   if (tz->t_info == NULL)\n     {\n #ifdef G_OS_UNIX\n-      GBytes *zoneinfo = zone_info_unix (identifier, resolved_identifier);\n+      GBytes *zoneinfo = zone_info_android(identifier, &resolved_identifier);\n       if (zoneinfo != NULL)\n         {\n           init_zone_from_iana_info (tz, zoneinfo, g_steal_pointer (&resolved_identifier));\n"
  },
  {
    "path": "packages/glib/glib-gtypes.h.patch",
    "content": "--- a/glib/gtypes.h\n+++ b/glib/gtypes.h\n@@ -429,6 +429,10 @@\n #endif\n #endif\n \n+#if defined __clang__ && defined __arm__\n+#undef _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS\n+#endif\n+\n #ifdef _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS\n \n #define g_uint_checked_add(dest, a, b) \\\n"
  },
  {
    "path": "packages/glib/glib-gutils.c.patch",
    "content": "--- ./glib/gutils.c.orig\t2021-12-11 13:35:15.354088542 +0530\n+++ ./glib/gutils.c\t2021-12-11 13:36:59.724088502 +0530\n@@ -369,7 +369,7 @@\n        * what to search if PATH is unset. POSIX may, dunno.\n        */\n       \n-      path = \"/bin:/usr/bin:.\";\n+      path = \"/data/data/com.micewine.emu/files/usr/bin:.\";\n     }\n #else\n   n = GetModuleFileNameW (NULL, wfilename, MAXPATHLEN);\n@@ -949,7 +949,7 @@\n       if (tmp == NULL || *tmp == '\\0')\n         {\n           g_free (tmp);\n-          tmp = g_strdup (\"/tmp\");\n+          tmp = g_strdup (\"/data/data/com.micewine.emu/files/usr/tmp\");\n         }\n #endif /* !G_OS_WIN32 */\n \n@@ -1526,7 +1526,7 @@\n   else\n     return NULL;\n #elif defined (G_OS_UNIX)\n-  const gchar * const os_release_files[] = { \"/etc/os-release\", \"/usr/lib/os-release\" };\n+  const gchar * const os_release_files[] = { \"/data/data/com.micewine.emu/files/usr/etc/os-release\", \"/data/data/com.micewine.emu/files/usr/lib/os-release\" };\n   gsize i;\n   gchar *buffer = NULL;\n   gchar *result = NULL;\n@@ -2465,7 +2465,7 @@\n    */\n #ifndef G_OS_WIN32\n   if (!data_dirs || !data_dirs[0])\n-    data_dirs = \"/usr/local/share/:/usr/share/\";\n+    data_dirs = \"/data/data/com.micewine.emu/files/usr/local/share/:/data/data/com.micewine.emu/files/usr/share/\";\n \n   data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);\n #else\n"
  },
  {
    "path": "packages/glib/glib-no-ovverride-host-binary.patch",
    "content": "+++ ./girepository/compiler/meson.build\n@@ -26,7 +26,7 @@\n \n # Only override the user-installed compiler if we need to generate the GIRs\n # GLib, Gio, and GObject...\n-if enable_gir\n+if enable_gir and meson.can_run_host_binaries()\n   # Replace the default g-ir-compiler target with the version we\n   # just built.\n   meson.override_find_program('g-ir-compiler', gicompilerepository)\n"
  },
  {
    "path": "packages/glib/glib-tests-meson.build.patch",
    "content": "--- a/glib/tests/meson.build\n+++ b/glib/tests/meson.build\n@@ -232,7 +232,7 @@\n     'include' : {},\n     'unix' : {},\n   }\n-  if have_rtld_next and glib_build_shared\n+  if false\n     getpwuid_preload = shared_library('getpwuid-preload',\n                                       'getpwuid-preload.c',\n                                       name_prefix : '',\n"
  },
  {
    "path": "packages/glib/meson.build.patch",
    "content": "--- glib-2.82.4/meson.build\t2024-12-11 19:21:22.000000000 -0300\n+++ glib-2.82.4-fix/meson.build\t2025-04-16 22:20:15.974787910 -0300\n@@ -569,7 +569,6 @@\n     '-Wno-format-zero-length',\n     # We explicitly require variadic macros\n     '-Wno-variadic-macros',\n-    '-Werror=format=2',\n     '-Werror=init-self',\n     '-Werror=missing-include-dirs',\n     '-Werror=pointer-arith',\n@@ -695,7 +694,6 @@\n   'getresuid',\n   'getvfsstat',\n   'gmtime_r',\n-  'hasmntopt',\n   'inotify_init1',\n   'issetugid',\n   'kevent',\n@@ -1002,7 +1000,7 @@\n                int main (int argc, char ** argv) {\n                  syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);\n                  return 0;\n-               }''', name : 'futex(2) system call')\n+               }''', name : 'futex(2) system call') and host_system != 'android'\n   glib_conf.set('HAVE_FUTEX', 1)\n endif\n if cc.compiles('''#include <linux/futex.h>\n@@ -1011,7 +1009,7 @@\n                int main (int argc, char ** argv) {\n                  syscall (__NR_futex_time64, NULL, FUTEX_WAKE, FUTEX_WAIT);\n                  return 0;\n-               }''', name : 'futex_time64(2) system call')\n+               }''', name : 'futex_time64(2) system call') and host_system != 'android'\n   glib_conf.set('HAVE_FUTEX_TIME64', 1)\n endif\n \n@@ -1048,7 +1046,7 @@\n                  syscall (SYS_pidfd_open, 0, 0);\n                  waitid (P_PIDFD, 0, &child_info, WEXITED | WNOHANG);\n                  return 0;\n-               }''', name : 'pidfd_open(2) system call')\n+               }''', name : 'pidfd_open(2) system call') and host_system != 'android'\n   glib_conf.set('HAVE_PIDFD', 1)\n endif\n \n@@ -2602,11 +2600,7 @@\n \n # introspection\n gir_scanner = find_program('g-ir-scanner', required: get_option('introspection'))\n-enable_gir = get_option('introspection').allowed() and gir_scanner.found() and meson.can_run_host_binaries()\n-\n-if get_option('introspection').enabled() and not meson.can_run_host_binaries()\n-  error('Running binaries on the build host needs to be supported to build with -Dintrospection=enabled')\n-endif\n+enable_gir = get_option('introspection').allowed() and gir_scanner.found()\n \n gir_args = [\n   '--quiet',\n"
  },
  {
    "path": "packages/gst-plugins-bad/build.sh",
    "content": "PKG_VER=1.24.11\nSRC_URL=https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dandroidmedia=disabled -Dexamples=disabled -Drtmp=disabled -Dshm=disabled -Dtests=disabled -Dzbar=disabled -Dwebp=disabled -Dvulkan=disabled -Dhls-crypto=openssl\"\nLDFLAGS=\"-lm\"\nDEPENDENCIES=\"glib gstreamer gst-plugins-base opus libsndfile libX11 libxml2 openssl\"\n"
  },
  {
    "path": "packages/gst-plugins-bad/fix-build.patch",
    "content": "diff -uNr gst-plugins-bad/sys/kms/gstkmssink.c gst-plugins-bad.mod/sys/kms/gstkmssink.c\n--- gst-plugins-bad/sys/kms/gstkmssink.c\t2025-01-24 23:59:44.074586375 -0300\n+++ gst-plugins-bad.mod/sys/kms/gstkmssink.c\t2025-01-24 23:59:39.355599380 -0300\n@@ -68,6 +68,10 @@\n #include \"gstkmsedid.h\"\n #endif\n \n+#ifdef __ANDROID__\n+#define ffs __builtin_ffs\n+#endif\n+\n #define GST_PLUGIN_NAME \"kmssink\"\n #define GST_PLUGIN_DESC \"Video sink using the Linux kernel mode setting API\"\n \n"
  },
  {
    "path": "packages/gst-plugins-base/build.sh",
    "content": "PKG_VER=1.24.11\nSRC_URL=https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dintrospection=disabled -Dtests=disabled -Dexamples=disabled -Dpango=disabled \"\nMESON_ARGS+=\"-Dtools=disabled -Dglib-asserts=disabled -Dglib-checks=disabled\"\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nDEPENDENCIES=\"gstreamer glib android-shmem libogg opus libvorbis libX11 libxcb libXext libXi zlib\"\n"
  },
  {
    "path": "packages/gst-plugins-good/build.sh",
    "content": "PKG_VER=1.24.11\nSRC_URL=https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dcairo=disabled -Dexamples=disabled -Dgdk-pixbuf=disabled -Doss=disabled \"\nMESON_ARGS+=\"-Doss4=disabled -Dtests=disabled -Dv4l2=disabled -Daalib=disabled\"\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nDEPENDENCIES=\"glib gst-plugins-base android-shmem\"\n"
  },
  {
    "path": "packages/gst-plugins-ugly/build.sh",
    "content": "PKG_VER=1.24.11\nSRC_URL=https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dtests=disabled\"\nDEPENDENCIES=\"glib gst-plugins-base\"\n"
  },
  {
    "path": "packages/gstreamer/build.sh",
    "content": "PKG_VER=1.24.11\nSRC_URL=https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dintrospection=disabled -Dcheck=disabled -Dtests=disabled -Dexamples=disabled \"\nMESON_ARGS+=\"-Dbenchmarks=disabled -Dlibunwind=disabled -Dlibdw=disabled -Dnls=disabled\"\nCFLAGS=\"-I$PREFIX/include\"\nLDFLAGS=\"-L$PREFIX/lib\"\nDEPENDENCIES=\"glib\"\n"
  },
  {
    "path": "packages/icoutils/build.sh",
    "content": "PKG_VER=1\nGIT_URL=https://github.com/KreitinnSoftware/icoutils\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nCFLAGS=\"-I$PREFIX/include\"\nLDFLAGS=\"-L$PREFIX/lib -lpng16\"\nDEPENDENCIES=\"libpng\"\n"
  },
  {
    "path": "packages/libX11/build.sh",
    "content": "PKG_VER=1.8.9\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libX11-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nDEPENDENCIES=\"xorgproto libxcb xtrans xorg-utils-macros android-shmem\""
  },
  {
    "path": "packages/libX11/fix-pthread.patch",
    "content": "--- 13-libX11/configure\t2024-03-02 19:00:43.598785000 -0300\n+++ 13-libX11.mod/configure\t2024-03-02 19:01:08.520521000 -0300\n@@ -22175,7 +22175,7 @@\n if test x$xthreads = xyes ; then\n     case $host_os in\n     linux*|gnu*|k*bsd*-gnu)\n-        XTHREADLIB=-lpthread ;;\n+        XTHREADLIB=-pthread ;;\n     netbsd*)\n \tXTHREAD_CFLAGS=\"-D_POSIX_THREAD_SAFE_FUNCTIONS\"\n \tXTHREADLIB=\"-lpthread\" ;;\n"
  },
  {
    "path": "packages/libX11/src-CrGlCur.c.patch",
    "content": "diff -uNr libX11-1.6.7/src/CrGlCur.c libX11-1.6.7.mod/src/CrGlCur.c\n--- libX11-1.6.7/src/CrGlCur.c\t2018-10-09 17:27:08.000000000 +0300\n+++ libX11-1.6.7.mod/src/CrGlCur.c\t2018-11-28 19:31:06.941489053 +0200\n@@ -55,7 +55,7 @@\n #endif\n \n #ifndef LIBXCURSOR\n-#define LIBXCURSOR \"libXcursor.so.1\"\n+#define LIBXCURSOR \"libXcursor.so\"\n #endif\n \n static char libraryName[] = LIBXCURSOR;\n"
  },
  {
    "path": "packages/libX11/src-XlibInt.c.patch",
    "content": "diff -uNr libX11-1.6.8/src/XlibInt.c libX11-1.6.8.mod/src/XlibInt.c\n--- libX11-1.6.8/src/XlibInt.c\t2019-06-17 17:47:35.000000000 +0300\n+++ libX11-1.6.8.mod/src/XlibInt.c\t2019-06-29 22:13:06.054460413 +0300\n@@ -1263,7 +1263,7 @@\n     WSASetLastError(last_error);\n #else\n     last_error = errno;\n-    ioctl(ConnectionNumber(dpy), FIONREAD, &bytes);\n+    ioctl(ConnectionNumber(dpy), /* FIONREAD */ 0x541B, &bytes);\n     errno = last_error;\n #endif\n     return bytes;\n"
  },
  {
    "path": "packages/libXau/build.sh",
    "content": "PKG_VER=1.0.11\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXau-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"xorgproto\""
  },
  {
    "path": "packages/libXau/libXau-1.0.8_AuLock.c.patch",
    "content": "diff -uNr libXau-1.0.8/AuLock.c libXau-1.0.8.mod/AuLock.c\n--- libXau-1.0.8/AuLock.c\t2013-05-25 01:04:09.000000000 +0300\n+++ libXau-1.0.8.mod/AuLock.c\t2017-11-23 14:08:52.004479977 +0200\n@@ -91,7 +91,7 @@\n \t    } else\n #endif\n \t    {\n-\t    \tif (link (creat_name, link_name) != -1)\n+\t    \tif (symlink (creat_name, link_name) != -1)\n \t\t    return LOCK_SUCCESS;\n \t\tif (errno == ENOENT) {\n \t\t    creat_fd = -1;\t/* force re-creat next time around */\n"
  },
  {
    "path": "packages/libXcomposite/build.sh",
    "content": "PKG_VER=0.4.6\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXcomposite-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11 libXfixes\"\n"
  },
  {
    "path": "packages/libXcursor/build.sh",
    "content": "PKG_VER=1.2.2\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXcursor-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11 libXfixes libXrender\"\n"
  },
  {
    "path": "packages/libXcursor/fix-paths.patch",
    "content": "--- 18-libXcursor/src/library.c\t2022-04-03 14:00:22.000000000 -0300\n+++ 18-libXcursor.mod/src/library.c\t2024-03-02 18:30:38.118742000 -0300\n@@ -25,11 +25,11 @@\n #include <string.h>\n \n #ifndef ICONDIR\n-#define ICONDIR \"/usr/X11R6/lib/X11/icons\"\n+#define ICONDIR \"/data/data/com.micewine.emu/files/usr/X11R6/lib/X11/icons\"\n #endif\n \n #ifndef XCURSORPATH\n-#define XCURSORPATH \"~/.local/share/icons:~/.icons:/usr/share/icons:/usr/share/pixmaps:\"ICONDIR\n+#define XCURSORPATH \"~/.local/share/icons:~/.icons:/data/data/com.micewine.emu/files/usr/share/icons:/data/data/com.micewine.emu/files/usr/share/pixmaps:\"ICONDIR\n #endif\n \n typedef struct XcursorInherit {\n"
  },
  {
    "path": "packages/libXdmcp/build.sh",
    "content": "PKG_VER=1.1.5\nSRC_URL=https://xorg.freedesktop.org/archive/individual/lib/libXdmcp-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros\""
  },
  {
    "path": "packages/libXext/build.sh",
    "content": "PKG_VER=1.3.6\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXext-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11\"\n"
  },
  {
    "path": "packages/libXfixes/build.sh",
    "content": "PKG_VER=6.0.1\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXfixes-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11\"\n"
  },
  {
    "path": "packages/libXi/build.sh",
    "content": "PKG_VER=1.8.1\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXi-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11 libXfixes libXext\""
  },
  {
    "path": "packages/libXinerama/build.sh",
    "content": "PKG_VER=1.1.5\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXinerama-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11 libXext\"\n"
  },
  {
    "path": "packages/libXrandr/build.sh",
    "content": "PKG_VER=1.5.4\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXrandr-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros libX11 libXext libXrender\"\n"
  },
  {
    "path": "packages/libXrender/build.sh",
    "content": "PKG_VER=0.9.11\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXrender-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto libX11\"\n"
  },
  {
    "path": "packages/libXxf86vm/build.sh",
    "content": "PKG_VER=1.1.5\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libXxf86vm-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-malloc0returnsnull\"\nDEPENDENCIES=\"xorgproto libX11 libXext\"\n"
  },
  {
    "path": "packages/libadrenotools/01-fix-build.patch",
    "content": "diff -uNr libadrenotools/CMakeLists.txt libadrenotools-mod/CMakeLists.txt\n--- libadrenotools/CMakeLists.txt\t2025-02-22 00:49:47.364769744 +0000\n+++ libadrenotools-mod/CMakeLists.txt\t2025-02-22 01:19:37.538558903 +0000\n@@ -10,6 +10,8 @@\n \n add_subdirectory(lib/linkernsbypass)\n \n+set_property(TARGET linkernsbypass PROPERTY POSITION_INDEPENDENT_CODE ON)\n+\n set(LIB_SOURCES src/bcenabler.cpp\n                 src/driver.cpp\n                 include/adrenotools/bcenabler.h\n"
  },
  {
    "path": "packages/libadrenotools/build.sh",
    "content": "PKG_VER=v1.0\n\nGIT_URL=https://github.com/bylaws/libadrenotools\nGIT_COMMIT=8fae8ce254dfc1344527e05301e43f37dea2df80\nCMAKE_ARGS=\" \"\nBLACKLIST_ARCH=x86_64\n"
  },
  {
    "path": "packages/libadrenotools/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/lib\nmkdir -p $DESTDIR/$PREFIX/include\n\ncp libadrenotools.a $DESTDIR/$PREFIX/lib\ncp lib/linkernsbypass/liblinkernsbypass.a $DESTDIR/$PREFIX/lib\ncp src/hook/*.so $DESTDIR/$PREFIX/lib\ncp -rf ../include/* $DESTDIR/$PREFIX/include\ncp ../lib/linkernsbypass/android_linker_ns.h $DESTDIR/$PREFIX/include\n"
  },
  {
    "path": "packages/libandroid-wordexp/Makefile",
    "content": "libandroid-wordexp.so: wordexp.c wordexp.h\n\t$(CC) $(CFLAGS) -shared wordexp.c -o libandroid-wordexp.so\n\ninstall:\n\tinstall -Dm600 libandroid-wordexp.so $(DESTDIR)/$(PREFIX)/lib/libandroid-wordexp.so\n\tinstall -Dm600 wordexp.h $(DESTDIR)/$(PREFIX)/include/wordexp.h"
  },
  {
    "path": "packages/libandroid-wordexp/build.sh",
    "content": "PKG_VER=1\nBUILD_IN_SRC=1\n"
  },
  {
    "path": "packages/libandroid-wordexp/wordexp.c",
    "content": "#include \"wordexp.h\"\n#include <unistd.h>\n#include <stdio.h>\n#include <string.h>\n#include <limits.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <sys/wait.h>\n#include <signal.h>\n#include <errno.h>\n#include <fcntl.h>\n//##include <bthread.h>\n#include <sys/types.h>\n\nextern int pipe2(int *, int);\n\nstatic void reap(pid_t pid)\n{\n\tint status;\n\tfor (;;) {\n\t\tif (waitpid(pid, &status, 0) < 0) {\n\t\t\tif (errno != EINTR) return;\n\t\t} else {\n\t\t\tif (WIFEXITED(status)) return;\n\t\t}\n\t}\n}\n\nstatic char *getword(FILE *f)\n{\n\tchar *s = 0;\n\treturn getdelim(&s, (size_t [1]){0}, 0, f) < 0 ? 0 : s;\n}\n\nstatic int do_wordexp(const char *s, wordexp_t *we, int flags)\n{\n\tsize_t i, l;\n\tint sq=0, dq=0;\n\tsize_t np=0;\n\tchar *w, **tmp;\n\tchar *redir = (flags & WRDE_SHOWERR) ? \"\" : \"2>/dev/null\";\n\tint err = 0;\n\tFILE *f;\n\tsize_t wc = 0;\n\tchar **wv = 0;\n\tint p[2];\n\tpid_t pid;\n\tsigset_t set;\n\tsigset_t all_set;\n\tif (flags & WRDE_REUSE) wordfree(we);\n\n\tif (flags & WRDE_NOCMD) for (i=0; s[i]; i++) switch (s[i]) {\n\tcase '\\\\':\n\t\tif (!sq) i++;\n\t\tbreak;\n\tcase '\\'':\n\t\tif (!dq) sq^=1;\n\t\tbreak;\n\tcase '\"':\n\t\tif (!sq) dq^=1;\n\t\tbreak;\n\tcase '(':\n\t\tif (np) {\n\t\t\tnp++;\n\t\t\tbreak;\n\t\t}\n\tcase ')':\n\t\tif (np) {\n\t\t\tnp--;\n\t\t\tbreak;\n\t\t}\n\tcase '\\n':\n\tcase '|':\n\tcase '&':\n\tcase ';':\n\tcase '<':\n\tcase '>':\n\tcase '{':\n\tcase '}':\n\t\tif (!(sq|dq|np)) return WRDE_BADCHAR;\n\t\tbreak;\n\tcase '$':\n\t\tif (sq) break;\n\t\tif (s[i+1]=='(' && s[i+2]=='(') {\n\t\t\ti += 2;\n\t\t\tnp += 2;\n\t\t\tbreak;\n\t\t} else if (s[i+1] != '(') break;\n\tcase '`':\n\t\tif (sq) break;\n\t\treturn WRDE_CMDSUB;\n\t}\n\n\tif (flags & WRDE_APPEND) {\n\t\twc = we->we_wordc;\n\t\twv = we->we_wordv;\n\t}\n\n\ti = wc;\n\tif (flags & WRDE_DOOFFS) {\n\t\tif (we->we_offs > SIZE_MAX/sizeof(void *)/4)\n\t\t\tgoto nospace;\n\t\ti += we->we_offs;\n\t} else {\n\t\twe->we_offs = 0;\n\t}\n\n\tif (pipe2(p, O_CLOEXEC) < 0) goto nospace;\n//\tsigfillset(&all_set);\n//\tsigprocmask(SIG_SETMASK, &all_set, &set);\n\tpid = fork();\n//\tsigprocmask(SIG_SETMASK, &set, &all_set);\n\tif (pid < 0) {\n\t\tclose(p[0]);\n\t\tclose(p[1]);\n\t\tgoto nospace;\n\t}\n\tif (!pid) {\n\t\tif (p[1] == 1) fcntl(1, F_SETFD, 0);\n\t\telse dup2(p[1], 1);\n\t\texecl(\"/system/bin/sh\", \"sh\", \"-c\",\n\t\t\t\"eval \\\"printf %s\\\\\\\\\\\\\\\\0 x $1 $2\\\"\",\n\t\t\t\"sh\", s, redir, (char *)0);\n\t\t_exit(1);\n\t}\n\tclose(p[1]);\n\n\tf = fdopen(p[0], \"r\");\n\tif (!f) {\n\t\tclose(p[0]);\n\t\tkill(pid, SIGKILL);\n\t\treap(pid);\n\t\tgoto nospace;\n\t}\n\n\tl = wv ? i+1 : 0;\n\n\tfree(getword(f));\n\tif (feof(f)) {\n\t\tfclose(f);\n\t\treap(pid);\n\t\treturn WRDE_SYNTAX;\n\t}\n\n\twhile ((w = getword(f))) {\n\t\tif (i+1 >= l) {\n\t\t\tl += l/2+10;\n\t\t\ttmp = realloc(wv, l*sizeof(char *));\n\t\t\tif (!tmp) break;\n\t\t\twv = tmp;\n\t\t}\n\t\twv[i++] = w;\n\t\twv[i] = 0;\n\t}\n\tif (!feof(f)) err = WRDE_NOSPACE;\n\n\tfclose(f);\n\treap(pid);\n\n\tif (!wv) wv = calloc(i+1, sizeof *wv);\n\n\twe->we_wordv = wv;\n\twe->we_wordc = i;\n\n\tif (flags & WRDE_DOOFFS) {\n\t\tif (wv) for (i=we->we_offs; i; i--)\n\t\t\twe->we_wordv[i-1] = 0;\n\t\twe->we_wordc -= we->we_offs;\n\t}\n\treturn err;\n\nnospace:\n\tif (!(flags & WRDE_APPEND)) {\n\t\twe->we_wordc = 0;\n\t\twe->we_wordv = 0;\n\t}\n\treturn WRDE_NOSPACE;\n}\n\nint wordexp(const char *restrict s, wordexp_t *restrict we, int flags)\n{\n\tint r, cs;\n\t//pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);\n\tr = do_wordexp(s, we, flags);\n\t//pthread_setcancelstate(cs, 0);\n\treturn r;\n}\n\nvoid wordfree(wordexp_t *we)\n{\n\tsize_t i;\n\tif (!we->we_wordv) return;\n\tfor (i=0; i<we->we_wordc; i++) free(we->we_wordv[we->we_offs+i]);\n\tfree(we->we_wordv);\n\twe->we_wordv = 0;\n\twe->we_wordc = 0;\n}\n"
  },
  {
    "path": "packages/libandroid-wordexp/wordexp.h",
    "content": "#ifndef        _WORDEXP_H\n#define        _WORDEXP_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <features.h>\n\n#define __NEED_size_t\n\n//#include <sys/types.h>\n\n#define WRDE_DOOFFS  1\n#define WRDE_APPEND  2\n#define WRDE_NOCMD   4\n#define WRDE_REUSE   8\n#define WRDE_SHOWERR 16\n#define WRDE_UNDEF   32\n#include <sys/types.h>\ntypedef struct {\n       size_t we_wordc;\n       char **we_wordv;\n       size_t we_offs;\n} wordexp_t;\n\n#define WRDE_NOSYS   -1\n#define WRDE_NOSPACE 1\n#define WRDE_BADCHAR 2\n#define WRDE_BADVAL  3\n#define WRDE_CMDSUB  4\n#define WRDE_SYNTAX  5\n\nint wordexp (const char *__restrict, wordexp_t *__restrict, int);\nvoid wordfree (wordexp_t *);\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "packages/libarchive/archive.h.patch",
    "content": "--- a/libarchive/archive.h\n+++ b/libarchive/archive.h\n@@ -96,11 +96,6 @@\n # endif\n #endif\n \n-/* Large file support for Android */\n-#if defined(__LIBARCHIVE_BUILD) && defined(__ANDROID__)\n-#include \"android_lf.h\"\n-#endif\n-\n /*\n  * On Windows, define LIBARCHIVE_STATIC if you're building or using a\n  * .lib.  The default here assumes you're building a DLL.  Only\n"
  },
  {
    "path": "packages/libarchive/archive_entry.h.patch",
    "content": "--- a/libarchive/archive_entry.h\n+++ b/libarchive/archive_entry.h\n@@ -98,11 +98,6 @@\n # define\t__LA_MODE_T\tmode_t\n #endif\n \n-/* Large file support for Android */\n-#if defined(__LIBARCHIVE_BUILD) && defined(__ANDROID__)\n-#include \"android_lf.h\"\n-#endif\n-\n /*\n  * On Windows, define LIBARCHIVE_STATIC if you're building or using a\n  * .lib.  The default here assumes you're building a DLL.  Only\n"
  },
  {
    "path": "packages/libarchive/archive_string.c.patch",
    "content": "diff -u -r ../libarchive-3.1.2/libarchive/archive_string.c ./libarchive/archive_string.c\n--- ../libarchive-3.1.2/libarchive/archive_string.c\t2013-01-14 02:43:45.000000000 +0100\n+++ ./libarchive/archive_string.c\t2014-07-15 19:07:54.334848056 +0200\n@@ -414,7 +414,9 @@\n default_iconv_charset(const char *charset) {\n \tif (charset != NULL && charset[0] != '\\0')\n \t\treturn charset;\n-#if HAVE_LOCALE_CHARSET && !defined(__APPLE__)\n+#ifdef __ANDROID__\n+        return \"UTF-8\";\n+#elif HAVE_LOCALE_CHARSET && !defined(__APPLE__)\n \t/* locale_charset() is broken on Mac OS */\n \treturn locale_charset();\n #elif HAVE_NL_LANGINFO\n"
  },
  {
    "path": "packages/libarchive/archive_util.c.patch",
    "content": "diff -uNr libarchive-3.3.3/libarchive/archive_util.c libarchive-3.3.3.mod/libarchive/archive_util.c\n--- libarchive-3.3.3/libarchive/archive_util.c\t2018-09-02 09:05:18.000000000 +0300\n+++ libarchive-3.3.3.mod/libarchive/archive_util.c\t2019-03-02 02:14:39.252942170 +0200\n@@ -374,7 +374,7 @@\n #ifdef _PATH_TMP\n \t\ttmp = _PATH_TMP;\n #else\n-                tmp = \"/tmp\";\n+                tmp = \"/data/data/com.micewine.emu/files/usr/tmp\";\n #endif\n \tarchive_strcpy(temppath, tmp);\n \tif (temppath->s[temppath->length-1] != '/')\n"
  },
  {
    "path": "packages/libarchive/archive_write_disk_posix.c.patch",
    "content": "diff -u -r ../libarchive-3.3.1/libarchive/archive_write_disk_posix.c ./libarchive/archive_write_disk_posix.c\n--- ../libarchive-3.3.1/libarchive/archive_write_disk_posix.c\t2017-02-25 18:37:08.000000000 +0100\n+++ ./libarchive/archive_write_disk_posix.c\t2017-03-27 02:35:07.446390387 +0200\n@@ -2756,7 +2756,11 @@\n \talen = 0;\n \tmb = 0;\n \tcomplete = 1;\n+#ifdef __ANDROID__\n+\tutf8 = 1;\n+#else\n \tutf8 = (strcmp(nl_langinfo(CODESET), \"UTF-8\") == 0)? 1: 0;\n+#endif\n \tfor (p = path; *p != '\\0'; p++) {\n \t\t++alen;\n \t\tif (*p == '\\\\') {\n"
  },
  {
    "path": "packages/libarchive/archive_write_set_format_zip.c.patch",
    "content": "diff -u -r ../libarchive-3.2.0/libarchive/archive_write_set_format_zip.c ./libarchive/archive_write_set_format_zip.c\n--- ../libarchive-3.2.0/libarchive/archive_write_set_format_zip.c\t2016-01-01 17:18:57.000000000 -0500\n+++ ./libarchive/archive_write_set_format_zip.c\t2016-05-02 20:09:52.331542213 -0400\n@@ -651,10 +651,8 @@\n \t\t\tif (strcmp(archive_string_conversion_charset_name(\n \t\t\t\t\tzip->opt_sconv), \"UTF-8\") == 0)\n \t\t\t\tzip->entry_flags |= ZIP_ENTRY_FLAG_UTF8_NAME;\n-#if HAVE_NL_LANGINFO\n-\t\t} else if (strcmp(nl_langinfo(CODESET), \"UTF-8\") == 0) {\n+\t\t} else {\n \t\t\tzip->entry_flags |= ZIP_ENTRY_FLAG_UTF8_NAME;\n-#endif\n \t\t}\n \t}\n \tfilename_length = path_length(zip->entry);\n"
  },
  {
    "path": "packages/libarchive/build.sh",
    "content": "PKG_VER=3.7.7\nSRC_URL=https://github.com/libarchive/libarchive/releases/download/v$PKG_VER/libarchive-$PKG_VER.tar.gz\nCMAKE_ARGS=\"-DENABLE_BZip2=OFF -DENABLE_LZ4=OFF -DENABLE_LIBB2=OFF -DENABLE_ICONV=OFF -DENABLE_ZSTD=OFF -DENABLE_NETTLE=OFF -DENABLE_ACL=OFF -DENABLE_XATTR=OFF -DENABLE_LZMA=OFF -DENABLE_ZLIB=OFF\"\nRUN_POST_BUILD=\"sed -i '/^Requires\\.private:/s/ iconv//' $PREFIX/lib/pkgconfig/libarchive.pc\"\nLDFLAGS=\"-L$PREFIX/lib -lz\"\nDEPENDENCIES=\"zlib zstd openssl libxml2\"\n"
  },
  {
    "path": "packages/libarchive/fix-cmake-minimum.patch",
    "content": "diff -uNr libarchive/CMakeLists.txt libarchive-fix/CMakeLists.txt\n--- libarchive/CMakeLists.txt\t2024-10-13 05:11:23.000000000 -0300\n+++ libarchive-fix/CMakeLists.txt\t2025-04-16 21:44:09.420760045 -0300\n@@ -1,5 +1,5 @@\n #\n-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)\n+CMAKE_MINIMUM_REQUIRED(VERSION 3.12...3.21 FATAL_ERROR)\n if(APPLE AND CMAKE_VERSION VERSION_LESS \"3.17.0\")\n   message(WARNING \"CMake>=3.17.0 required to make the generated shared library have the same Mach-O headers as autotools\")\n endif()\n"
  },
  {
    "path": "packages/libc++/Makefile",
    "content": "all:\n\t@echo\n"
  },
  {
    "path": "packages/libc++/build.sh",
    "content": "PKG_VER=1.0\nPKG_PRETTY_NAME=\"Android C++ Library\"\nPKG_CATEGORY=library\nBUILD_IN_SRC=1\n"
  },
  {
    "path": "packages/libc++/custom-make-install.sh",
    "content": "mkdir -p $DESTDIR/$PREFIX/lib\n\ncp $INIT_DIR/cache/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/$ARCH-linux-android/libc++_shared.so $DESTDIR/$PREFIX/lib\n"
  },
  {
    "path": "packages/libdrm/build.sh",
    "content": "PKG_VER=2.4.124\nSRC_URL=https://dri.freedesktop.org/libdrm/libdrm-$PKG_VER.tar.xz\n\ngetDrmDrivers()\n{\n\tif [ \"$ARCHITECTURE\" == \"aarch64\" ]; then\n\t\techo \"-Dfreedreno=enabled -Dfreedreno-kgsl=true\"\n\telif [ \"$ARCHITECTURE\" == \"x86_64\" ]; then\n\t\techo \"-Dradeon=enabled -Damdgpu=enabled\"\n\tfi\n}\n\nMESON_ARGS=\"-Dintel=disabled $(getDrmDrivers) -Dvmwgfx=disabled -Dtests=false\"\n"
  },
  {
    "path": "packages/libevent/build.sh",
    "content": "PKG_VER=2.1.12\nSRC_URL=https://github.com/libevent/libevent/archive/release-$PKG_VER-stable.tar.gz\nCMAKE_ARGS=\"-DEVENT__DISABLE_THREAD_SUPPORT=1 -DEVENT__DISABLE_TESTS=1\"\nDEPENDENCIES=\"openssl zlib\"\n"
  },
  {
    "path": "packages/libevent/cmake-minimum-fix.patch",
    "content": "diff -uNr libevent/CMakeLists.txt libevent-fix/CMakeLists.txt\n--- libevent/CMakeLists.txt\t2020-07-05 09:02:46.000000000 -0300\n+++ libevent-fix/CMakeLists.txt\t2025-04-16 20:53:15.914324139 -0300\n@@ -19,7 +19,7 @@\n #       start libevent.sln\n #\n \n-cmake_minimum_required(VERSION 3.1 FATAL_ERROR)\n+cmake_minimum_required(VERSION 3.12...3.21 FATAL_ERROR)\n \n if (POLICY CMP0054)\n     cmake_policy(SET CMP0054 NEW)\n"
  },
  {
    "path": "packages/libevent/fix.patch",
    "content": "diff -uNr 49-libevent/evdns.c 49-libevent.mod/evdns.c\n--- 49-libevent/evdns.c\t2020-07-05 09:02:46.000000000 -0300\n+++ 49-libevent.mod/evdns.c\t2024-03-25 20:14:08.375999228 -0300\n@@ -52,6 +52,9 @@\n #include \"evconfig-private.h\"\n \n #include <sys/types.h>\n+#ifdef __ANDROID__\n+#include <sys/system_properties.h>\n+#endif\n \n #ifndef _FORTIFY_SOURCE\n #define _FORTIFY_SOURCE 3\n@@ -3655,7 +3658,7 @@\n \tevutil_snprintf(path_out, len_out, \"%s%s\", path, hostfile);\n \treturn path_out;\n #else\n-\treturn mm_strdup(\"/etc/hosts\");\n+\treturn mm_strdup(\"/data/data/com.micewine.emu/files/usr/etc/hosts\");\n #endif\n }\n \n@@ -4032,6 +4035,21 @@\n \n #ifdef _WIN32\n \t\tr = evdns_base_config_windows_nameservers(base);\n+#elif defined(__ANDROID__)\n+\t\t/** From: http://www.programering.com/a/MjMwcjMwATA.html */\n+\t\tint add_servers = 0;\n+\t\tchar buf[PROP_VALUE_MAX];\n+\t\tr = __system_property_get(\"net.dns1\", buf);\n+\t\tif (r >= 7) {\n+\t\t\tadd_servers++;\n+\t\t\tevdns_base_nameserver_ip_add(base, buf);\n+\t\t}\n+\t\tr = __system_property_get(\"net.dns2\", buf);\n+\t\tif (r >= 7) {\n+\t\t\tadd_servers++;\n+\t\t\tevdns_base_nameserver_ip_add(base, buf);\n+\t\t}\n+\t\tif (add_servers == 0) evdns_base_nameserver_ip_add(base, \"8.8.8.8\");\n #else\n \t\tr = evdns_base_resolv_conf_parse(base, opts, \"/etc/resolv.conf\");\n #endif\ndiff -uNr 49-libevent/evutil.c 49-libevent.mod/evutil.c\n--- 49-libevent/evutil.c\t2020-07-05 09:02:46.000000000 -0300\n+++ 49-libevent.mod/evutil.c\t2024-03-25 20:08:52.615984829 -0300\n@@ -49,6 +49,7 @@\n #include <sys/socket.h>\n #endif\n #ifdef EVENT__HAVE_UNISTD_H\n+#define __USE_GNU 1 /* For pipe2(). */\n #include <unistd.h>\n #endif\n #ifdef EVENT__HAVE_FCNTL_H\n"
  },
  {
    "path": "packages/libexpat/build.sh",
    "content": "PKG_VER=2.6.4\nSRC_URL=https://github.com/libexpat/libexpat/releases/download/R_$(echo $PKG_VER | sed 's/\\./_/g')/expat-$PKG_VER.tar.bz2\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --without-xmlwf --without-docbook\"\nRUN_POST_APPLY_PATCH=\"sed -i 's/^\\(linux\\*android\\)\\*)/\\1-non-micewine)/' configure\"\n"
  },
  {
    "path": "packages/libffi/build.sh",
    "content": "PKG_VER=3.4.6\nSRC_URL=https://github.com/libffi/libffi/releases/download/v$PKG_VER/libffi-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --disable-multi-os-directory\"\nRUN_POST_CONFIGURE=\"echo \\\"#define FFI_MMAP_EXEC_WRIT 1\\\" >> fficonfig.h\"\n"
  },
  {
    "path": "packages/libghttp/build.sh",
    "content": "PKG_VER=1.64.0\nSRC_URL=https://github.com/nghttp2/nghttp2/releases/download/v$PKG_VER/nghttp2-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-lib-only\"\n"
  },
  {
    "path": "packages/libglvnd/build.sh",
    "content": "PKG_VER=1.7.0\nSRC_URL=https://github.com/NVIDIA/libglvnd/archive/refs/tags/v$PKG_VER.tar.gz\nMESON_ARGS=\"-Dtls=false -Degl=false -Dgles1=false -Dgles2=false\"\nCFLAGS=\"-I$PREFIX_DIR/include\"\nDEPENDENCIES=\"xorgproto libX11 libXext\"\n"
  },
  {
    "path": "packages/libglvnd/egl-not-android.diff",
    "content": "--- a/EGL/eglplatform.h\n+++ b/EGL/eglplatform.h\n@@ -88,7 +88,7 @@\n typedef struct gbm_bo      *EGLNativePixmapType;\n typedef void               *EGLNativeWindowType;\n \n-#elif defined(__ANDROID__) || defined(ANDROID)\n+#elif 0\n \n struct ANativeWindow;\n struct egl_native_pixmap_t;\n"
  },
  {
    "path": "packages/libgmp/build.sh",
    "content": "PKG_VER=6.3.0\nSRC_URL=https://mirrors.kernel.org/gnu/gmp/gmp-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nLDFLAGS=\"-L$PREFIX/lib\"\n"
  },
  {
    "path": "packages/libgnutls/build.sh",
    "content": "PKG_VER=3.8.5\nSRC_URL=https://www.gnupg.org/ftp/gcrypt/gnutls/v${PKG_VER%.*}/gnutls-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --disable-hardware-acceleration --with-default-trust-store-file=$PREFIX_DIR/etc/tls/cert.pem --with-system-priority-file=$PREFIX_DIR/etc/gnutls/default-priorities --with-unbound-root-key-file=$PREFIX_DIR/etc/unbound/root.key  --with-included-libtasn1 --enable-local-libopts --without-p11-kit --disable-guile --disable-doc --without-zstd\"\nLDFLAGS=\"-L$PREFIX/lib\"\nCFLAGS=\"-I$PREFIX/include\"\nDEPENDENCIES=\"brotli libgmp libidn2 libunistring libnettle zlib\"\n"
  },
  {
    "path": "packages/libgnutls/gl-stdio-impl.h.patch",
    "content": "--- a/gl/stdio-impl.h\n+++ b/gl/stdio-impl.h\n@@ -68,8 +68,10 @@\n # elif defined __ANDROID__ /* Android */\n #  ifdef __LP64__\n #   define _gl_flags_file_t int\n+#   define _gl_struct_file_off_t int64_t\n #  else\n #   define _gl_flags_file_t short\n+#   define _gl_struct_file_off_t __kernel_off_t\n #  endif\n #  ifdef __LP64__\n #   define _gl_file_offset_t int64_t\n@@ -102,7 +104,7 @@\n                          unsigned char _nbuf[1]; \\\n                          struct { unsigned char *_base; size_t _size; } _lb; \\\n                          int _blksize; \\\n-                         _gl_file_offset_t _offset; \\\n+                         _gl_struct_file_off_t _offset; \\\n                          /* More fields, not relevant here.  */ \\\n                        } *) fp)\n # else\n"
  },
  {
    "path": "packages/libgnutls/src-gl-stdio-impl.h.patch",
    "content": "--- a/src/gl/stdio-impl.h\n+++ b/src/gl/stdio-impl.h\n@@ -68,8 +68,10 @@\n # elif defined __ANDROID__ /* Android */\n #  ifdef __LP64__\n #   define _gl_flags_file_t int\n+#   define _gl_struct_file_off_t int64_t\n #  else\n #   define _gl_flags_file_t short\n+#   define _gl_struct_file_off_t __kernel_off_t\n #  endif\n #  ifdef __LP64__\n #   define _gl_file_offset_t int64_t\n@@ -102,7 +104,7 @@\n                          unsigned char _nbuf[1]; \\\n                          struct { unsigned char *_base; size_t _size; } _lb; \\\n                          int _blksize; \\\n-                         _gl_file_offset_t _offset; \\\n+                         _gl_struct_file_off_t _offset; \\\n                          /* More fields, not relevant here.  */ \\\n                        } *) fp)\n # else\n"
  },
  {
    "path": "packages/libiconv/build.sh",
    "content": "PKG_VER=1.17\nSRC_URL=https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-extra-encodings --enable-static --enable-shared\"\n"
  },
  {
    "path": "packages/libidn2/0000-disable-versioning-of-symbols.patch",
    "content": "--- a/configure\t2024-03-26 19:57:45.298723256 -0300\n+++ a/configure_mod\t2024-03-26 19:58:12.058723097 -0300\n@@ -32898,8 +32898,6 @@\n if ac_fn_c_try_compile \"$LINENO\"\n then :\n \n-printf \"%s\\n\" \"#define HAVE_SYMVER_ALIAS_SUPPORT 1\" >>confdefs.h\n-\n fi\n rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext\n \n"
  },
  {
    "path": "packages/libidn2/build.sh",
    "content": "PKG_VER=2.3.7\nSRC_URL=https://mirrors.kernel.org/gnu/libidn/libidn2-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"libunistring\"\n"
  },
  {
    "path": "packages/libnettle/build.sh",
    "content": "PKG_VER=3.10\nSRC_URL=https://mirrors.kernel.org/gnu/nettle/nettle-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nLDFLAGS=\"-L$PREFIX/lib\"\nCFLAGS=-I$PREFIX/include\nDEPENDENCIES=\"libgmp\"\n"
  },
  {
    "path": "packages/libnettle/configure.patch",
    "content": "diff -u -r ../nettle-3.3/configure ./configure\n--- ../nettle-3.3/configure\t2016-10-01 09:28:38.000000000 +0200\n+++ ./configure\t2017-07-07 08:35:12.539208424 +0200\n@@ -7091,6 +7091,7 @@\n   CFLAGS=\"$CFLAGS $CCPIC\"\n   cat confdefs.h - <<_ACEOF >conftest.$ac_ext\n /* end confdefs.h.  */\n+#include <stdlib.h>\n \n int\n main ()\n"
  },
  {
    "path": "packages/libogg/build.sh",
    "content": "PKG_VER=1.3.5\nSRC_URL=https://github.com/xiph/ogg/releases/download/v$PKG_VER/libogg-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\n"
  },
  {
    "path": "packages/libpng/build.sh",
    "content": "PKG_VER=1.6.43\nSRC_URL=https://download.sourceforge.net/libpng/libpng-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"zlib\"\n"
  },
  {
    "path": "packages/libsndfile/build.sh",
    "content": "PKG_VER=1.2.2\nSRC_URL=https://github.com/libsndfile/libsndfile/archive/refs/tags/$PKG_VER.tar.gz\nCMAKE_ARGS=\"-DBUILD_SHARED_LIBS=0 -DENABLE_EXTERNAL_LIBS=0 -DCMAKE_C_FLAGS=-fPIC -DENABLE_MPEG=0 -DBUILD_REGTEST=0 -DANDROID=1\"\n"
  },
  {
    "path": "packages/libsndfile/fix-cmake-minimum.patch",
    "content": "diff -uNr libsndfile/CMakeLists.txt libsndfile-fix/CMakeLists.txt\n--- libsndfile/CMakeLists.txt\t2025-04-16 12:22:49.528240419 -0300\n+++ libsndfile-fix/CMakeLists.txt\t2025-04-16 12:57:57.492746076 -0300\n@@ -1,4 +1,4 @@\n-cmake_minimum_required (VERSION 3.1..3.18)\n+cmake_minimum_required (VERSION 3.12...3.18)\n \n # MSVC runtime library flags are selected by an abstraction, CMake >= 3.15\n # This policy still need to be set even with cmake_minimum_required() command above.\n"
  },
  {
    "path": "packages/libsndfile/fix-tmpdir-and-alsa.patch",
    "content": "diff -uNr 31-libsndfile/CMakeLists.txt 31-libsndfile.mod/CMakeLists.txt\n--- 31-libsndfile/CMakeLists.txt\t2023-08-13 05:53:51.000000000 -0300\n+++ 31-libsndfile.mod/CMakeLists.txt\t2024-03-09 22:17:44.945328163 -0300\n@@ -83,6 +83,8 @@\n option (ENABLE_PACKAGE_CONFIG \"Generate and install package config file\" ON)\n option (INSTALL_PKGCONFIG_MODULE \"Generate and install pkg-config module\" ON)\n \n+option (ANDROID \"Android Build\" OFF)\n+\n list (APPEND CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/cmake\")\n if (CMAKE_VERSION VERSION_LESS 3.14)\n \tlist (APPEND CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/cmake/sqlite\")\n@@ -126,6 +128,11 @@\n \n set (HAVE_EXTERNAL_XIPH_LIBS ${ENABLE_EXTERNAL_LIBS})\n set (HAVE_SQLITE3 ${BUILD_REGTEST})\n+\n+if (ANDROID)\n+\tset (ALSA_FOUND 0)\n+endif()\n+\n set (HAVE_ALSA_ASOUNDLIB_H ${ALSA_FOUND})\n set (HAVE_SNDIO_H ${SNDIO_FOUND})\n \ndiff -uNr 31-libsndfile/src/common.c 31-libsndfile.mod/src/common.c\n--- 31-libsndfile/src/common.c\t2023-08-13 05:53:51.000000000 -0300\n+++ 31-libsndfile.mod/src/common.c\t2024-03-09 22:16:14.488661282 -0300\n@@ -1827,7 +1827,7 @@\n \t\ttmpdir = getenv (\"TEMP\") ;\n \telse\n \t{\ttmpdir = getenv (\"TMPDIR\") ;\n-\t\ttmpdir = tmpdir == NULL ? \"/tmp\" : tmpdir ;\n+\t\ttmpdir = tmpdir == NULL ? \"/data/data/com.micewine.emu/files/usr/tmp\" : tmpdir ;\n \t\t} ;\n \n \tif (tmpdir && access (tmpdir, R_OK | W_OK | X_OK) == 0)\n"
  },
  {
    "path": "packages/libtool/build.sh",
    "content": "PKG_VER=2.5.4\nSRC_URL=https://mirrors.kernel.org/gnu/libtool/libtool-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\n"
  },
  {
    "path": "packages/libunbound/build.sh",
    "content": "PKG_VER=1.22.0\nSRC_URL=https://nlnetlabs.nl/downloads/unbound/unbound-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE ac_cv_func_chown=no ac_cv_func_chroot=no ac_cv_func_getpwnam=no --enable-event-api --enable-ipsecmod --enable-linux-ip-local-port-range --enable-tfo-server --with-libevent=$PREFIX_DIR --with-libexpat=$PREFIX_DIR --without-libhiredis --without-libmnl --without-pyunbound --without-pythonmodule --with-libnghttp2=$PREFIX_DIR --with-ssl=$PREFIX_DIR --with-pidfile=$PREFIX_DIR/var/run/unbound.pid --with-username= --with-libunbound-only --enable-static=no\"\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nDEPENDENCIES=\"openssl libevent libghttp libexpat android-shmem\"\n"
  },
  {
    "path": "packages/libunbound/libunbound-libunbound.c.patch",
    "content": "--- a/libunbound/libunbound.c\n+++ b/libunbound/libunbound.c\n@@ -1095,7 +1095,7 @@\n \n \tif(fname == NULL) {\n #if !defined(UB_ON_WINDOWS) || !defined(HAVE_WINDOWS_H)\n-\t\tfname = \"/etc/resolv.conf\";\n+\t\tfname = \"/data/data/com.micewine.emu/files/usr/etc/resolv.conf\";\n #else\n \t\tFIXED_INFO *info;\n \t\tULONG buflen = sizeof(*info);\n@@ -1204,7 +1204,7 @@\n \t\t}\n \t\treturn UB_READFILE;\n #else\n-\t\tfname = \"/etc/hosts\";\n+\t\tfname = \"/data/data/com.micewine.emu/files/usr/etc/hosts\";\n #endif /* WIN32 */\n \t}\n \tin = fopen(fname, \"r\");\n"
  },
  {
    "path": "packages/libunbound/smallapp-unbound-host.c.patch",
    "content": "--- a/smallapp/unbound-host.c\n+++ b/smallapp/unbound-host.c\n@@ -99,7 +99,7 @@\n \tprintf(\"    -C config\t\tuse the specified unbound.conf (none read by default)\\n\");\n \tprintf(\"\t\t\tpass as first argument if you want to override some\\n\");\n \tprintf(\"\t\t\toptions with further arguments\\n\");\n-\tprintf(\"    -r\t\t\tread forwarder information from /etc/resolv.conf\\n\");\n+\tprintf(\"    -r\t\t\tread forwarder information from /data/data/com.micewine.emu/files/usr/etc/resolv.conf\\n\");\n \tprintf(\"      \t\t\tbreaks validation if the forwarder does not do DNSSEC.\\n\");\n \tprintf(\"    -v\t\t\tbe more verbose, shows nodata and security.\\n\");\n \tprintf(\"    -d\t\t\tdebug, traces the action, -d -d shows more.\\n\");\n@@ -462,7 +462,7 @@\n \t\t\t\tdebuglevel = 2; /* at least VERB_DETAIL */\n \t\t\tbreak;\n \t\tcase 'r':\n-\t\t\tcheck_ub_res(ub_ctx_resolvconf(ctx, \"/etc/resolv.conf\"));\n+\t\t\tcheck_ub_res(ub_ctx_resolvconf(ctx, \"/data/data/com.micewine.emu/files/usr/etc/resolv.conf\"));\n \t\t\tbreak;\n \t\tcase 't':\n \t\t\tqtype = optarg;\n"
  },
  {
    "path": "packages/libunistring/build.sh",
    "content": "PKG_VER=1.3\nSRC_URL=https://mirrors.kernel.org/gnu/libunistring/libunistring-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE ac_cv_func_uselocale=no am_cv_langinfo_codeset=yes\"\n"
  },
  {
    "path": "packages/libvorbis/build.sh",
    "content": "PKG_VER=1.3.7\nSRC_URL=http://downloads.xiph.org/releases/vorbis/libvorbis-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"libogg\"\n"
  },
  {
    "path": "packages/libxcb/build.sh",
    "content": "PKG_VER=1.17.0\nSRC_URL=https://xorg.freedesktop.org/archive/individual/lib/libxcb-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"xorgproto libXau libXdmcp xcb-proto\"\n"
  },
  {
    "path": "packages/libxcb/libxcb-1.12_src_xcb_util.c.patch",
    "content": "diff -uNr libxcb-1.12/src/xcb_util.c libxcb-1.12.mod/src/xcb_util.c\n--- libxcb-1.12/src/xcb_util.c\t2016-05-09 19:10:55.000000000 +0300\n+++ libxcb-1.12.mod/src/xcb_util.c\t2017-11-22 00:13:51.337058457 +0200\n@@ -229,7 +229,7 @@\n #ifdef __hpux\n     static const char unix_base[] = \"/usr/spool/sockets/X11/\";\n #else\n-    static const char unix_base[] = \"/tmp/.X11-unix/X\";\n+    static const char unix_base[] = \"/data/data/com.micewine.emu/files/usr/tmp/.X11-unix/X\";\n #endif\n     const char *base = unix_base;\n     size_t filelen;\n"
  },
  {
    "path": "packages/libxml2/build.sh",
    "content": "PKG_VER=2.13.5\nSRC_URL=https://download.gnome.org/sources/libxml2/${PKG_VER%.*}/libxml2-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE  --without-python --without-lzma\"\nRUN_POST_APPLY_PATCH=\"sed -i 's/^\\(linux\\*android\\)\\*)/\\1-notermux)/' configure\"\nCFLAGS=\"-fPIC\"\nDEPENDENCIES=\"zlib\"\n"
  },
  {
    "path": "packages/libxshmfence/build.sh",
    "content": "PKG_VER=1.3.2\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/libxshmfence-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --disable-futex\"\nDEPENDENCIES=\"xorgproto xorg-utils-macros\"\n"
  },
  {
    "path": "packages/mangohud/01-fix-build.patch",
    "content": "diff -uNr ../mangohud/src/fps_metrics.h ./src/fps_metrics.h\n--- ../mangohud/src/fps_metrics.h\t2025-03-05 06:56:10.000000000 -0300\n+++ ./src/fps_metrics.h\t2025-06-26 19:17:05.817373239 -0300\n@@ -11,6 +11,7 @@\n #include <stdexcept>\n #include <iomanip>\n #include <spdlog/spdlog.h>\n+#include <sstream>\n \n struct metric_t {\n     std::string name;\n@@ -165,4 +166,4 @@\n         }\n };\n \n-extern std::unique_ptr<fpsMetrics> fpsmetrics;\n\\ No newline at end of file\n+extern std::unique_ptr<fpsMetrics> fpsmetrics;\ndiff -uNr ../mangohud/src/gpu_fdinfo.h ./src/gpu_fdinfo.h\n--- ../mangohud/src/gpu_fdinfo.h\t2025-03-05 06:56:10.000000000 -0300\n+++ ./src/gpu_fdinfo.h\t2025-06-26 19:17:54.112818545 -0300\n@@ -11,6 +11,7 @@\n #include <map>\n #include <set>\n #include <regex>\n+#include <sstream>\n \n #ifdef TEST_ONLY\n #include <../src/mesa/util/os_time.h>\n"
  },
  {
    "path": "packages/mangohud/02-fix-x11-lib-name.patch",
    "content": "diff --git a/src/loaders/loader_x11.cpp b/src/loaders/loader_x11.cpp\nindex 214fd50..124610f 100644\n--- a/src/loaders/loader_x11.cpp\n+++ b/src/loaders/loader_x11.cpp\n@@ -110,6 +110,6 @@ static std::shared_ptr<libx11_loader> loader;\n std::shared_ptr<libx11_loader> get_libx11()\n {\n     if (!loader)\n-        loader = std::make_shared<libx11_loader>(\"libX11.so.6\");\n+        loader = std::make_shared<libx11_loader>(\"libX11.so\");\n     return loader;\n }\n"
  },
  {
    "path": "packages/mangohud/03-not-search-gpu-on-sys-folder.patch",
    "content": "diff -uNr ../mangohud/src/gpu.cpp ./src/gpu.cpp\n--- ../mangohud/src/gpu.cpp\t2025-03-05 06:56:10.000000000 -0300\n+++ ./src/gpu.cpp\t2025-06-26 19:20:46.145938572 -0300\n@@ -20,6 +20,10 @@\n namespace fs = ghc::filesystem;\n \n GPUS::GPUS(overlay_params* params) : params(params) {\n+#ifdef __ANDROID__\n+    return;\n+#endif\n+\n     std::vector<std::string> gpu_entries;\n \n     for (const auto& entry : fs::directory_iterator(\"/sys/class/drm\")) {\n"
  },
  {
    "path": "packages/mangohud/04-set-android-os-name.patch",
    "content": "diff --git a/src/overlay.cpp b/src/overlay.cpp\nindex a1cfd25..fa326d4 100644\n--- a/src/overlay.cpp\n+++ b/src/overlay.cpp\n@@ -765,7 +765,11 @@ void init_system_info(){\n       trim(cpu);\n       kernel = exec(\"uname -r\");\n       trim(kernel);\n+   #ifdef __ANDROID__\n+      os = \"Android\";\n+   #else\n       os = exec(\"sed -n 's/PRETTY_NAME=\\\\(.*\\\\)/\\\\1/p' /etc/*-release\");\n+   #endif\n       os.erase(remove(os.begin(), os.end(), '\\\"' ), os.end());\n       trim(os);\n       cpusched = read_line(\"/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor\");\n"
  },
  {
    "path": "packages/mangohud/05-disable-cpu-info.patch",
    "content": "diff -uNr mangohud/src/cpu.cpp mangohud-mod/src/cpu.cpp\n--- mangohud/src/cpu.cpp\t2025-02-16 11:41:44.227866045 -0300\n+++ mangohud-mod/src/cpu.cpp\t2025-02-16 11:43:38.085309923 -0300\n@@ -109,6 +109,10 @@\n \n bool CPUStats::Init()\n {\n+#ifdef __ANDROID__\n+    return false;\n+#endif\n+\n     if (m_inited)\n         return true;\n \n@@ -502,6 +506,10 @@\n }\n \n bool CPUStats::GetCpuFile() {\n+#ifdef __ANDROID__\n+    return false;\n+#endif\n+\n     if (m_cpuTempFile)\n         return true;\n \n"
  },
  {
    "path": "packages/mangohud/build.sh",
    "content": "PKG_VER=0.8.1\nSRC_URL=https://github.com/flightlessmango/MangoHud/releases/download/v$PKG_VER/MangoHud-v$PKG_VER-Source.tar.xz\nLDFLAGS=\"-Wl,--undefined-version\"\nMESON_ARGS=\"-Dwith_xnvctrl=disabled -Dwith_wayland=disabled -Dwith_dbus=disabled -Dtests=disabled\"\nDEPENDENCIES=\"libX11 libXrandr xkbcommon libglvnd Vulkan-Headers Vulkan-Loader\"\n"
  },
  {
    "path": "packages/mesa-demos/0001-fix-KHR-define.patch",
    "content": "--- a/src/glad/include/KHR/khrplatform.h\n+++ b/src/glad/include/KHR/khrplatform.h\n@@ -101,7 +101,7 @@\n #   define KHRONOS_APICALL __declspec(dllimport)\n #elif defined (__SYMBIAN32__)\n #   define KHRONOS_APICALL IMPORT_C\n-#elif defined(__ANDROID__)\n+#elif 0\n #   include <sys/cdefs.h>\n #   define KHRONOS_APICALL __attribute__((visibility(\"default\"))) __NDK_FPABI__\n #else\n"
  },
  {
    "path": "packages/mesa-demos/build.sh",
    "content": "PKG_VER=9.0.0\nSRC_URL=https://mesa.freedesktop.org/archive/demos/mesa-demos-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dlibdrm=disabled -Dvulkan=disabled -Dwayland=disabled -Dwith-system-data-files=true -Dglut=disabled -Degl=disabled\"\nDEPENDENCIES=\"Vulkan-Headers Vulkan-Loader xkbcommon libdrm libglvnd FreeGLUT GLU libX11\"\n"
  },
  {
    "path": "packages/mesa-demos/src-tests-texdown.c.patch",
    "content": "--- a/src/tests/texdown.c\n+++ b/src/tests/texdown.c\n@@ -175,7 +175,7 @@\n #ifdef _WIN32\n    texImage = (GLubyte *) _aligned_malloc(bytes, ALIGN);\n #else\n-   texImage = (GLubyte *) aligned_alloc(ALIGN, bytes);\n+   texImage = (GLubyte *) memalign(ALIGN, bytes);\n #endif\n    if (!texImage) {\n       DownloadRate = 0.0;\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.0.0/build.sh",
    "content": "PKG_VER=24.0.0\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Turnip Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_freedreno.so\"\n\nBLACKLIST_ARCH=x86_64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kmds=msm,kgsl -Dglvnd=false -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.0.0/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 1c8667a8fce..1e9b4fd811d 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1361,7 +1361,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'renderdoc_app.h', 'sys/inotify.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1371,11 +1371,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.0.0/force-linux-like-build.patch",
    "content": "diff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 469b502bbd9..8a72b42aa08 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(ANDROID)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\ndiff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 746103bc1f4..9a76a321ffc 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -18,7 +18,7 @@\n #define __VK_ANDROID_NATIVE_BUFFER_H__\n \n /* MESA: A hack to avoid #ifdefs in driver code. */\n-#ifdef ANDROID\n+#if 0\n #include <cutils/native_handle.h>\n #include <vulkan/vulkan.h>\n \n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.0.0/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 60ee4576c60..1e7108035cd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n+ \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def main():\n     parser = argparse.ArgumentParser()\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.0.0/tu_kgsl_export_dmabuf.patch",
    "content": "diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc\nindex f892fcedcb3..0a5c4dd7a49 100644\n--- a/src/freedreno/vulkan/tu_device.cc\n+++ b/src/freedreno/vulkan/tu_device.cc\n@@ -2624,6 +2624,14 @@ tu_AllocateMemory(VkDevice _device,\n       uint64_t client_address = 0;\n       BITMASK_ENUM(tu_bo_alloc_flags) alloc_flags = TU_BO_ALLOC_NO_FLAGS;\n \n+      const VkExportMemoryAllocateInfo *export_info = vk_find_struct_const(\n+         pAllocateInfo->pNext, EXPORT_MEMORY_ALLOCATE_INFO);\n+      if (export_info && (export_info->handleTypes &\n+                          (VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT |\n+                           VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT))) {\n+         alloc_flags |= TU_BO_ALLOC_SHAREABLE;\n+      }\n+\n       const VkMemoryOpaqueCaptureAddressAllocateInfo *replay_info =\n          vk_find_struct_const(pAllocateInfo->pNext,\n                               MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO);\ndiff --git a/src/freedreno/vulkan/tu_knl.h b/src/freedreno/vulkan/tu_knl.h\nindex 78cb442dc93..264000c5ea8 100644\n--- a/src/freedreno/vulkan/tu_knl.h\n+++ b/src/freedreno/vulkan/tu_knl.h\n@@ -21,6 +21,7 @@ enum tu_bo_alloc_flags\n    TU_BO_ALLOC_ALLOW_DUMP = 1 << 0,\n    TU_BO_ALLOC_GPU_READ_ONLY = 1 << 1,\n    TU_BO_ALLOC_REPLAYABLE = 1 << 2,\n+   TU_BO_ALLOC_SHAREABLE = 1 << 3,\n };\n \n /* Define tu_timeline_sync type based on drm syncobj for a point type\n@@ -53,6 +54,7 @@ struct tu_bo {\n    uint32_t bo_list_idx;\n \n    bool implicit_sync : 1;\n+   int dmabuf_fd;\n };\n \n struct tu_knl {\ndiff --git a/src/freedreno/vulkan/tu_knl_kgsl.cc b/src/freedreno/vulkan/tu_knl_kgsl.cc\nindex 0c2f16c496c..6a484d83a47 100644\n--- a/src/freedreno/vulkan/tu_knl_kgsl.cc\n+++ b/src/freedreno/vulkan/tu_knl_kgsl.cc\n@@ -11,6 +11,7 @@\n #include <stdint.h>\n #include <sys/ioctl.h>\n #include <sys/mman.h>\n+#include <linux/dma-heap.h>\n \n #include \"msm_kgsl.h\"\n #include \"vk_util.h\"\n@@ -18,6 +19,7 @@\n #include \"util/u_debug.h\"\n #include \"util/u_vector.h\"\n #include \"util/libsync.h\"\n+#include \"util/os_file.h\"\n #include \"util/timespec.h\"\n \n #include \"tu_cmd_buffer.h\"\n@@ -67,6 +69,57 @@ kgsl_submitqueue_close(struct tu_device *dev, uint32_t queue_id)\n    safe_ioctl(dev->physical_device->local_fd, IOCTL_KGSL_DRAWCTXT_DESTROY, &req);\n }\n \n+static int\n+dmabuf_alloc(uint64_t size)\n+{\n+   int ret;\n+   int dma_heap = open(\"/dev/dma_heap/system\", O_RDONLY);\n+\n+   if (dma_heap < 0) {\n+      int ion_heap = open(\"/dev/ion\", O_RDONLY);\n+\n+      if (ion_heap < 0)\n+         return -1;\n+\n+      struct ion_allocation_data {\n+         __u64 len;\n+         __u32 heap_id_mask;\n+         __u32 flags;\n+         __u32 fd;\n+         __u32 unused;\n+      } alloc_data = {\n+         .len = size,\n+         /* ION_HEAP_SYSTEM | ION_SYSTEM_HEAP_ID */\n+         .heap_id_mask = (1U << 0) | (1U << 25),\n+         .flags = 0, /* uncached */\n+      };\n+\n+      ret = safe_ioctl(ion_heap, _IOWR('I', 0, struct ion_allocation_data),\n+                      &alloc_data);\n+\n+      close(ion_heap);\n+\n+      if (ret)\n+         return -1;\n+\n+      return alloc_data.fd;\n+   } else {\n+      struct dma_heap_allocation_data alloc_data = {\n+         .len = size,\n+         .fd_flags = O_RDWR | O_CLOEXEC,\n+      };\n+\n+      ret = safe_ioctl(dma_heap, DMA_HEAP_IOCTL_ALLOC, &alloc_data);\n+\n+      close(dma_heap);\n+\n+      if (ret)\n+         return -1;\n+\n+      return alloc_data.fd;\n+   }\n+}\n+\n static VkResult\n kgsl_bo_init(struct tu_device *dev,\n              struct tu_bo **out_bo,\n@@ -78,6 +131,21 @@ kgsl_bo_init(struct tu_device *dev,\n {\n    assert(client_iova == 0);\n \n+   if (flags & TU_BO_ALLOC_SHAREABLE) {\n+      int fd = dmabuf_alloc(size);\n+\n+      if (fd < 0) {\n+         return vk_errorf(dev, VK_ERROR_OUT_OF_DEVICE_MEMORY,\n+                       \"DMABUF_ALLOC failed (%s)\", strerror(errno));\n+      }\n+\n+      VkResult res = tu_bo_init_dmabuf(dev, out_bo, size, fd);\n+\n+      close(fd);\n+\n+      return res;\n+   }\n+\n    struct kgsl_gpumem_alloc_id req = {\n       .size = size,\n    };\n@@ -113,6 +181,7 @@ kgsl_bo_init(struct tu_device *dev,\n       .iova = req.gpuaddr,\n       .name = tu_debug_bos_add(dev, req.mmapsize, name),\n       .refcnt = 1,\n+      .dmabuf_fd = -1,\n    };\n \n    *out_bo = bo;\n@@ -162,6 +231,7 @@ kgsl_bo_init_dmabuf(struct tu_device *dev,\n       .iova = info_req.gpuaddr,\n       .name = tu_debug_bos_add(dev, info_req.size, \"dmabuf\"),\n       .refcnt = 1,\n+      .dmabuf_fd = os_dupfd_cloexec(fd),\n    };\n \n    *out_bo = bo;\n@@ -172,9 +242,7 @@ kgsl_bo_init_dmabuf(struct tu_device *dev,\n static int\n kgsl_bo_export_dmabuf(struct tu_device *dev, struct tu_bo *bo)\n {\n-   tu_stub();\n-\n-   return -1;\n+   return os_dupfd_cloexec(bo->dmabuf_fd);\n }\n \n static VkResult\n@@ -183,6 +251,15 @@ kgsl_bo_map(struct tu_device *dev, struct tu_bo *bo)\n    if (bo->map)\n       return VK_SUCCESS;\n \n+   if (bo->dmabuf_fd != -1) {\n+      void *map = mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED, bo->dmabuf_fd, 0);\n+\n+      if (map != MAP_FAILED) {\n+         bo->map = map;\n+         return VK_SUCCESS;\n+      }\n+   }\n+\n    uint64_t offset = bo->gem_handle << 12;\n    void *map = mmap(0, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED,\n                     dev->physical_device->local_fd, offset);\n@@ -210,6 +287,9 @@ kgsl_bo_finish(struct tu_device *dev, struct tu_bo *bo)\n    if (bo->map)\n       munmap(bo->map, bo->size);\n \n+   if (bo->dmabuf_fd != -1)\n+      close(bo->dmabuf_fd);\n+\n    struct kgsl_gpumem_free_id req = {\n       .id = bo->gem_handle\n    };\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.0.0/wsi-common-no-pthread-cancel.patch",
    "content": "diff -uNr mesa-24.0.0/src/vulkan/wsi/wsi_common_display.c mesa-24.0.0-mod/src/vulkan/wsi/wsi_common_display.c\n--- mesa-24.0.0/src/vulkan/wsi/wsi_common_display.c 2024-01-31 20:29:42.000000000 -0300\n+++ mesa-24.0.0-mod/src/vulkan/wsi/wsi_common_display.c 2025-06-26 23:10:56.455202991 -0300\n@@ -175,6 +175,12 @@\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1339,8 +1345,9 @@\n       .fd = wsi->fd,\n       .events = POLLIN\n    };\n-\n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1370,7 +1377,11 @@\n {\n    pthread_mutex_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2214,7 +2225,9 @@\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2337,6 +2350,15 @@\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2348,7 +2370,11 @@\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.3.0/build.sh",
    "content": "PKG_VER=24.3.0\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Turnip Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_freedreno.so\"\n\nBLACKLIST_ARCH=x86_64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kmds=msm,kgsl -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.3.0/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.3.0/experimental-ad710-support.patch",
    "content": "diff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\t2025-04-21 20:40:27.570841169 -0300\n@@ -1057,6 +1057,24 @@\n     ))\n \n add_gpus([\n+        GPUId(chip_id=0x07010000, name=\"FD710\"), # KGSL, no speedbin data\n+        GPUId(chip_id=0xffff07010000, name=\"FD710\"), # Default no-speedbin fallback\n+    ], A6xxGPUInfo(\n+        CHIP.A7XX,\n+        [a7xx_base, a7xx_gen1],\n+        num_ccu = 4,\n+        tile_align_w = 64,\n+        tile_align_h = 32,\n+        num_vsc_pipes = 32,\n+        cs_shared_mem_size = 32 * 1024,\n+        wave_granularity = 2,\n+        fibers_per_sp = 128 * 2 * 16,\n+        highest_bank_bit = 16,\n+        magic_regs = a730_magic_regs,\n+        raw_magic_regs = a730_raw_magic_regs,\n+    ))\n+\n+add_gpus([\n         GPUId(chip_id=0x07030001, name=\"FD730\"), # KGSL, no speedbin data\n         GPUId(chip_id=0xffff07030001, name=\"FD730\"), # Default no-speedbin fallback\n     ], A6xxGPUInfo(\ndiff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-21 20:40:28.371145184 -0300\n@@ -235,6 +235,11 @@\n       .gmem_size = 1024 * 1024 + 512 * 1024,\n    },\n    {\n+      .gpu_id = 710\n+      .chip_id = 0x07010000,\n+      .gmem_size = 2 * 1024 * 1024,\n+   },\n+   {\n       .gpu_id = 730,\n       .chip_id = 0x07030001,\n       .gmem_size = 2 * 1024 * 1024,\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.3.0/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.3.0/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-24.3.0/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.0/build.sh",
    "content": "PKG_VER=25.0.0\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Turnip Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_freedreno.so\"\n\nBLACKLIST_ARCH=x86_64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kmds=msm,kgsl -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.0/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.0/experimental-ad710-support.patch",
    "content": "diff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\t2025-04-21 20:40:27.570841169 -0300\n@@ -1057,6 +1057,24 @@\n     ))\n \n add_gpus([\n+        GPUId(chip_id=0x07010000, name=\"FD710\"), # KGSL, no speedbin data\n+        GPUId(chip_id=0xffff07010000, name=\"FD710\"), # Default no-speedbin fallback\n+    ], A6xxGPUInfo(\n+        CHIP.A7XX,\n+        [a7xx_base, a7xx_gen1],\n+        num_ccu = 4,\n+        tile_align_w = 64,\n+        tile_align_h = 32,\n+        num_vsc_pipes = 32,\n+        cs_shared_mem_size = 32 * 1024,\n+        wave_granularity = 2,\n+        fibers_per_sp = 128 * 2 * 16,\n+        highest_bank_bit = 16,\n+        magic_regs = a730_magic_regs,\n+        raw_magic_regs = a730_raw_magic_regs,\n+    ))\n+\n+add_gpus([\n         GPUId(chip_id=0x07030001, name=\"FD730\"), # KGSL, no speedbin data\n         GPUId(chip_id=0xffff07030001, name=\"FD730\"), # Default no-speedbin fallback\n     ], A6xxGPUInfo(\ndiff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-21 20:40:28.371145184 -0300\n@@ -235,6 +235,11 @@\n       .gmem_size = 1024 * 1024 + 512 * 1024,\n    },\n    {\n+      .gpu_id = 710\n+      .chip_id = 0x07010000,\n+      .gmem_size = 2 * 1024 * 1024,\n+   },\n+   {\n       .gpu_id = 730,\n       .chip_id = 0x07030001,\n       .gmem_size = 2 * 1024 * 1024,\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.0/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.0/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.0/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.3/build.sh",
    "content": "PKG_VER=25.0.3\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Turnip Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_freedreno.so\"\n\nBLACKLIST_ARCH=x86_64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kmds=msm,kgsl -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.3/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.3/experimental-ad710-support.patch",
    "content": "diff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\t2025-04-21 20:40:27.570841169 -0300\n@@ -1057,6 +1057,24 @@\n     ))\n \n add_gpus([\n+        GPUId(chip_id=0x07010000, name=\"FD710\"), # KGSL, no speedbin data\n+        GPUId(chip_id=0xffff07010000, name=\"FD710\"), # Default no-speedbin fallback\n+    ], A6xxGPUInfo(\n+        CHIP.A7XX,\n+        [a7xx_base, a7xx_gen1],\n+        num_ccu = 4,\n+        tile_align_w = 64,\n+        tile_align_h = 32,\n+        num_vsc_pipes = 32,\n+        cs_shared_mem_size = 32 * 1024,\n+        wave_granularity = 2,\n+        fibers_per_sp = 128 * 2 * 16,\n+        highest_bank_bit = 16,\n+        magic_regs = a730_magic_regs,\n+        raw_magic_regs = a730_raw_magic_regs,\n+    ))\n+\n+add_gpus([\n         GPUId(chip_id=0x07030001, name=\"FD730\"), # KGSL, no speedbin data\n         GPUId(chip_id=0xffff07030001, name=\"FD730\"), # Default no-speedbin fallback\n     ], A6xxGPUInfo(\ndiff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-21 20:40:28.371145184 -0300\n@@ -235,6 +235,11 @@\n       .gmem_size = 1024 * 1024 + 512 * 1024,\n    },\n    {\n+      .gpu_id = 710\n+      .chip_id = 0x07010000,\n+      .gmem_size = 2 * 1024 * 1024,\n+   },\n+   {\n       .gpu_id = 730,\n       .chip_id = 0x07030001,\n       .gmem_size = 2 * 1024 * 1024,\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.3/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.3/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.0.3/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.0/build.sh",
    "content": "PKG_VER=25.1.0\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Turnip Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_freedreno.so\"\n\nBLACKLIST_ARCH=x86_64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kmds=msm,kgsl -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.0/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.0/experimental-ad710-support.patch",
    "content": "diff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\t2025-04-21 20:40:27.570841169 -0300\n@@ -1057,6 +1057,24 @@\n     ))\n \n add_gpus([\n+        GPUId(chip_id=0x07010000, name=\"FD710\"), # KGSL, no speedbin data\n+        GPUId(chip_id=0xffff07010000, name=\"FD710\"), # Default no-speedbin fallback\n+    ], A6xxGPUInfo(\n+        CHIP.A7XX,\n+        [a7xx_base, a7xx_gen1],\n+        num_ccu = 4,\n+        tile_align_w = 64,\n+        tile_align_h = 32,\n+        num_vsc_pipes = 32,\n+        cs_shared_mem_size = 32 * 1024,\n+        wave_granularity = 2,\n+        fibers_per_sp = 128 * 2 * 16,\n+        highest_bank_bit = 16,\n+        magic_regs = a730_magic_regs,\n+        raw_magic_regs = a730_raw_magic_regs,\n+    ))\n+\n+add_gpus([\n         GPUId(chip_id=0x07030001, name=\"FD730\"), # KGSL, no speedbin data\n         GPUId(chip_id=0xffff07030001, name=\"FD730\"), # Default no-speedbin fallback\n     ], A6xxGPUInfo(\ndiff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-21 20:40:28.371145184 -0300\n@@ -235,6 +235,11 @@\n       .gmem_size = 1024 * 1024 + 512 * 1024,\n    },\n    {\n+      .gpu_id = 710\n+      .chip_id = 0x07010000,\n+      .gmem_size = 2 * 1024 * 1024,\n+   },\n+   {\n       .gpu_id = 730,\n       .chip_id = 0x07030001,\n       .gmem_size = 2 * 1024 * 1024,\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.0/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.0/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.0/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.4/build.sh",
    "content": "PKG_VER=25.1.4\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Turnip Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_freedreno.so\"\n\nBLACKLIST_ARCH=x86_64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kmds=msm,kgsl -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.4/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.4/experimental-ad710-support.patch",
    "content": "diff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/common/freedreno_devices.py\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/common/freedreno_devices.py\t2025-04-21 20:40:27.570841169 -0300\n@@ -1057,6 +1057,24 @@\n     ))\n \n add_gpus([\n+        GPUId(chip_id=0x07010000, name=\"FD710\"), # KGSL, no speedbin data\n+        GPUId(chip_id=0xffff07010000, name=\"FD710\"), # Default no-speedbin fallback\n+    ], A6xxGPUInfo(\n+        CHIP.A7XX,\n+        [a7xx_base, a7xx_gen1],\n+        num_ccu = 4,\n+        tile_align_w = 64,\n+        tile_align_h = 32,\n+        num_vsc_pipes = 32,\n+        cs_shared_mem_size = 32 * 1024,\n+        wave_granularity = 2,\n+        fibers_per_sp = 128 * 2 * 16,\n+        highest_bank_bit = 16,\n+        magic_regs = a730_magic_regs,\n+        raw_magic_regs = a730_raw_magic_regs,\n+    ))\n+\n+add_gpus([\n         GPUId(chip_id=0x07030001, name=\"FD730\"), # KGSL, no speedbin data\n         GPUId(chip_id=0xffff07030001, name=\"FD730\"), # Default no-speedbin fallback\n     ], A6xxGPUInfo(\ndiff -uNr mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\n--- mesa-vulkan-freedreno-25.0.3/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-02 13:35:11.000000000 -0300\n+++ mesa-vulkan-freedreno-25.0.3-exp710/src/freedreno/drm-shim/freedreno_noop.c\t2025-04-21 20:40:28.371145184 -0300\n@@ -235,6 +235,11 @@\n       .gmem_size = 1024 * 1024 + 512 * 1024,\n    },\n    {\n+      .gpu_id = 710\n+      .chip_id = 0x07010000,\n+      .gmem_size = 2 * 1024 * 1024,\n+   },\n+   {\n       .gpu_id = 730,\n       .chip_id = 0x07030001,\n       .gmem_size = 2 * 1024 * 1024,\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.4/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.4/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-freedreno-25.1.4/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-radeon/build.sh",
    "content": "PKG_VER=25.0.0\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Radeon Driver\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_radeon.so\"\n\nBLACKLIST_ARCH=aarch64\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nCPPFLAGS=\"-D__USE_GNU\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=amd -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-radeon/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-radeon/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-vulkan-radeon/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-radeon/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper/build.sh",
    "content": "PKG_VER=25.1.4-[gss]\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Android Wrapper\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_wrapper.so\"\n\nGIT_URL=https://github.com/KreitinnSoftware/mesa\nGIT_COMMIT=7227cf46526196d54b22bd9ee53a265824f37420\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=wrapper -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-adrenotools/01-implement-adrenotools.patch",
    "content": "diff -uNr mesa-vulkan-wrapper/src/vulkan/wrapper/wrapper_instance.c mesa-vulkan-wrapper-adreno-tools/src/vulkan/wrapper/wrapper_instance.c\n--- mesa-vulkan-wrapper/src/vulkan/wrapper/wrapper_instance.c\t2025-02-22 00:17:54.436045057 +0000\n+++ mesa-vulkan-wrapper-adreno-tools/src/vulkan/wrapper/wrapper_instance.c\t2025-02-22 00:22:51.479558550 +0000\n@@ -4,6 +4,7 @@\n #include \"vk_common_entrypoints.h\"\n #include \"vk_dispatch_table.h\"\n #include \"vk_extensions.h\"\n+#include \"adrenotools/driver.h\"\n \n const struct vk_instance_extension_table wrapper_instance_extensions = {\n    .KHR_get_surface_capabilities2 = true,\n@@ -53,9 +54,43 @@\n    if (vulkan_library_handle)\n       return true;\n \n-   const char *env = getenv(\"WRAPPER_VULKAN_PATH\");\n-   vulkan_library_handle = dlopen(env ? env : DEFAULT_VULKAN_PATH,\n-                                  RTLD_LOCAL | RTLD_NOW);\n+   char *hook_lib_dir = getenv(\"ADRENOTOOLS_HOOK_LIB_DIR\");\n+   char *custom_driver_dir = getenv(\"ADRENOTOOLS_CUSTOM_DRIVER_DIR\");\n+   char *custom_driver_name = getenv(\"ADRENOTOOLS_CUSTOM_DRIVER_NAME\");\n+   char *file_redirect_dir = getenv(\"ADRENOTOOLS_FILE_REDIRECT_DIR\");\n+\n+   if (hook_lib_dir == NULL) {\n+        hook_lib_dir = \"/data/data/com.micewine.emu/files/usr/lib/\";\n+   }\n+\n+   if (custom_driver_dir == NULL) {\n+        custom_driver_dir = \"/data/data/com.micewine.emu/files/home/hook/\";\n+   }\n+\n+   char *use_adrenotools = getenv(\"USE_ADRENOTOOLS\");\n+\n+   if (use_adrenotools && strcmp(use_adrenotools, \"1\") == 0) {\n+      int adrenotools_flags = ADRENOTOOLS_DRIVER_GPU_MAPPING_IMPORT;\n+\n+      void *adrenotools_mapping_handle = NULL;\n+\n+      if (file_redirect_dir) {\n+          adrenotools_flags |= ADRENOTOOLS_DRIVER_FILE_REDIRECT;\n+      }\n+\n+      if (custom_driver_dir) {\n+          adrenotools_flags |= ADRENOTOOLS_DRIVER_CUSTOM;\n+      }\n+\n+      vulkan_library_handle = adrenotools_open_libvulkan(RTLD_NOW, adrenotools_flags, NULL, hook_lib_dir,\n+                                               custom_driver_dir, custom_driver_name,\n+                                               file_redirect_dir, &adrenotools_mapping_handle);\n+\n+   } else {\n+      const char *env = getenv(\"WRAPPER_VULKAN_PATH\");\n+      vulkan_library_handle = dlopen(env ? env : DEFAULT_VULKAN_PATH,\n+                                   RTLD_LOCAL | RTLD_NOW);\n+   }\n \n    if (vulkan_library_handle) {\n       create_instance = dlsym(vulkan_library_handle, \"vkCreateInstance\");\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-adrenotools/build.sh",
    "content": "PKG_VER=25.1.4-[gss]-adrenotools\nPKG_CATEGORY=\"AdrenoTools\"\nPKG_PRETTY_NAME=\"Mesa Android Wrapper\"\nVK_DRIVER_LIB=\"libvulkan_wrapper.so\"\n\nBLACKLIST_ARCH=x86_64\n\nGIT_URL=https://github.com/KreitinnSoftware/mesa\nGIT_COMMIT=7227cf46526196d54b22bd9ee53a265824f37420\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem -ladrenotools -llinkernsbypass\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=wrapper -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libXxf86vm libadrenotools\"\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/01-install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/02-disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/03-wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/04-Android-Vulkan-wrapper.patch",
    "content": "From 6c9c359bbf864458eeaf46caccd21e6f25fb7753 Mon Sep 17 00:00:00 2001\nFrom: xMeM <haooy@outlook.com>\nDate: Sat, 26 Oct 2024 19:19:39 +0800\nSubject: [PATCH 1/2] Android Vulkan wrapper\n\nWrap the Android Vulkan loader into ICD, using common WSI to provide X11 platform surface support.\n\nSigned-off-by: xMeM <haooy@outlook.com>\n---\n meson.build                                   |   5 +-\n meson_options.txt                             |   2 +-\n src/android_stub/nativewindow_stub.cpp        |   7 +\n src/vulkan/meson.build                        |   5 +-\n src/vulkan/wrapper/meson.build                |  93 ++++\n src/vulkan/wrapper/vk_entrypoints.py          |   1 +\n src/vulkan/wrapper/vk_extensions.py           |   1 +\n src/vulkan/wrapper/vk_wrapper_features_gen.py | 298 +++++++++++++\n .../wrapper/vk_wrapper_trampolines_gen.py     | 222 ++++++++++\n src/vulkan/wrapper/wrapper_device.c           | 404 ++++++++++++++++++\n src/vulkan/wrapper/wrapper_device_memory.c    | 246 +++++++++++\n src/vulkan/wrapper/wrapper_instance.c         | 297 +++++++++++++\n src/vulkan/wrapper/wrapper_physical_device.c  | 195 +++++++++\n src/vulkan/wrapper/wrapper_private.h          |  85 ++++\n src/vulkan/wsi/wsi_common.c                   |  26 +-\n src/vulkan/wsi/wsi_common.h                   |   2 +\n 16 files changed, 1881 insertions(+), 8 deletions(-)\n create mode 100644 src/vulkan/wrapper/meson.build\n create mode 120000 src/vulkan/wrapper/vk_entrypoints.py\n create mode 120000 src/vulkan/wrapper/vk_extensions.py\n create mode 100644 src/vulkan/wrapper/vk_wrapper_features_gen.py\n create mode 100644 src/vulkan/wrapper/vk_wrapper_trampolines_gen.py\n create mode 100644 src/vulkan/wrapper/wrapper_device.c\n create mode 100644 src/vulkan/wrapper/wrapper_device_memory.c\n create mode 100644 src/vulkan/wrapper/wrapper_instance.c\n create mode 100644 src/vulkan/wrapper/wrapper_physical_device.c\n create mode 100644 src/vulkan/wrapper/wrapper_private.h\n\ndiff --git a/meson.build b/meson.build\nindex 9fb4160cf54..f232f7be3ef 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -243,6 +243,7 @@ elif _vulkan_drivers.contains('all')\n                       'nouveau']\n endif\n \n+with_wrapper_vk = _vulkan_drivers.contains('wrapper')\n with_intel_vk = _vulkan_drivers.contains('intel')\n with_intel_hasvk = _vulkan_drivers.contains('intel_hasvk')\n with_amd_vk = _vulkan_drivers.contains('amd')\n@@ -896,8 +897,8 @@ endif\n pre_args += '-DGLAPI_EXPORT_PROTO_ENTRY_POINTS=@0@'.format(with_glapi_export_proto_entry_points.to_int())\n \n with_android_stub = get_option('android-stub')\n-if with_android_stub and not with_platform_android\n-  error('`-D android-stub=true` makes no sense without `-D platforms=android`')\n+if with_wrapper_vk\n+  with_android_stub = true\n endif\n \n with_libbacktrace = get_option('android-libbacktrace') \\\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 382393e5097..325219090bd 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -236,7 +236,7 @@ option(\n   value : ['auto'],\n   choices : ['auto', 'amd', 'broadcom', 'freedreno', 'intel', 'intel_hasvk',\n              'panfrost', 'swrast', 'virtio', 'imagination-experimental',\n-             'microsoft-experimental', 'nouveau', 'all'],\n+             'microsoft-experimental', 'nouveau', 'wrapper', 'all'],\n   description : 'List of vulkan drivers to build. If this is set to auto ' +\n                 'all drivers applicable to the target OS/architecture ' +\n                 'will be built'\ndiff --git a/src/android_stub/nativewindow_stub.cpp b/src/android_stub/nativewindow_stub.cpp\nindex 9276a9c3d2e..4bd0cfe25ab 100644\n--- a/src/android_stub/nativewindow_stub.cpp\n+++ b/src/android_stub/nativewindow_stub.cpp\n@@ -43,6 +43,13 @@ AHardwareBuffer_getNativeHandle(const AHardwareBuffer *buffer)\n    return NULL;\n }\n \n+int\n+AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer,\n+                                       int socketFd)\n+{\n+   return 0;\n+}\n+\n void\n ANativeWindow_acquire(ANativeWindow *window)\n {\ndiff --git a/src/vulkan/meson.build b/src/vulkan/meson.build\nindex 56f35fc90fe..f54b6b444ff 100644\n--- a/src/vulkan/meson.build\n+++ b/src/vulkan/meson.build\n@@ -62,7 +62,7 @@ if with_xlib_lease\n   vulkan_wsi_deps += [dep_xlib_xrandr]\n   vulkan_wsi_list += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT'\n endif\n-if with_platform_android\n+if with_platform_android or with_wrapper_vk\n   vulkan_wsi_list += '-DVK_USE_PLATFORM_ANDROID_KHR'\n endif\n if with_platform_windows\n@@ -88,3 +88,6 @@ endif\n if with_vulkan_device_select_layer\n   subdir('device-select-layer')\n endif\n+if with_wrapper_vk\n+  subdir('wrapper')\n+endif\ndiff --git a/src/vulkan/wrapper/meson.build b/src/vulkan/wrapper/meson.build\nnew file mode 100644\nindex 00000000000..8960fb62493\n--- /dev/null\n+++ b/src/vulkan/wrapper/meson.build\n@@ -0,0 +1,93 @@\n+wrapper_icd = custom_target(\n+  'wrapper_icd',\n+  input: [vk_icd_gen, vk_api_xml],\n+  output: 'wrapper_icd.@0@.json'.format(host_machine.cpu()),\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--api-version', '1.3',\n+    '--xml', '@INPUT1@',\n+    '--lib-path', join_paths(get_option('prefix'), get_option('libdir'), 'libvulkan_wrapper.so'),\n+    '--out', '@OUTPUT@',\n+  ],\n+  build_by_default: true,\n+  install_dir: with_vulkan_icd_dir,\n+  install: true,\n+)\n+\n+wrapper_entrypoints = custom_target(\n+  'wrapper_entrypoints',\n+  input: [vk_entrypoints_gen, vk_api_xml],\n+  output: ['wrapper_entrypoints.h', 'wrapper_entrypoints.c'],\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--xml', '@INPUT1@',\n+    '--proto',\n+    '--weak',\n+    '--beta', with_vulkan_beta.to_string(),\n+    '--out-h', '@OUTPUT0@',\n+    '--out-c', '@OUTPUT1@',\n+    '--prefix', 'wrapper',\n+  ],\n+  depend_files: vk_entrypoints_gen_depend_files,\n+)\n+\n+wrapper_trampolines_gen = files('vk_wrapper_trampolines_gen.py')\n+\n+wrapper_trampolines = custom_target(\n+  'wrapper_trampolines',\n+  input: [wrapper_trampolines_gen, vk_api_xml],\n+  output: ['wrapper_trampolines.c', 'wrapper_trampolines.h'],\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--xml', '@INPUT1@',\n+    '--out-c', '@OUTPUT0@',\n+    '--out-h', '@OUTPUT1@',\n+    '--beta', with_vulkan_beta.to_string(),\n+  ],\n+  depend_files: vk_dispatch_trampolines_gen_depend_files,\n+)\n+\n+wrapper_features_gen = files('vk_wrapper_features_gen.py')\n+\n+wrapper_features = custom_target(\n+  'vk_wrapper_features',\n+  input: [wrapper_features_gen, vk_api_xml],\n+  output: ['wrapper_features.c'],\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--xml', '@INPUT1@',\n+    '--out-c', '@OUTPUT0@',\n+    '--beta', with_vulkan_beta.to_string(),\n+  ],\n+  depend_files: vk_physical_device_features_gen_depend_files,\n+)\n+\n+wrapper_files = files(\n+  'wrapper_device.c',\n+  'wrapper_device_memory.c',\n+  'wrapper_instance.c',\n+  'wrapper_physical_device.c',\n+)\n+\n+wrapper_deps = [\n+  idep_vulkan_runtime,\n+  idep_vulkan_util,\n+  idep_vulkan_wsi,\n+  dep_android,\n+]\n+\n+libvulkan_wrapper = shared_library(\n+  'vulkan_wrapper',\n+  [wrapper_entrypoints, wrapper_trampolines, wrapper_features, wrapper_files],\n+  include_directories: [\n+    inc_include,\n+    inc_src,\n+  ],\n+  dependencies: [wrapper_deps, vulkan_wsi_deps],\n+  gnu_symbol_visibility: 'hidden',\n+  install: true,\n+)\ndiff --git a/src/vulkan/wrapper/vk_entrypoints.py b/src/vulkan/wrapper/vk_entrypoints.py\nnew file mode 120000\nindex 00000000000..bbc9deb820f\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_entrypoints.py\n@@ -0,0 +1 @@\n+../util/vk_entrypoints.py\n\\ No newline at end of file\ndiff --git a/src/vulkan/wrapper/vk_extensions.py b/src/vulkan/wrapper/vk_extensions.py\nnew file mode 120000\nindex 00000000000..4407eca87b3\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_extensions.py\n@@ -0,0 +1 @@\n+../util/vk_extensions.py\n\\ No newline at end of file\ndiff --git a/src/vulkan/wrapper/vk_wrapper_features_gen.py b/src/vulkan/wrapper/vk_wrapper_features_gen.py\nnew file mode 100644\nindex 00000000000..eef8d4bf85b\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_wrapper_features_gen.py\n@@ -0,0 +1,298 @@\n+COPYRIGHT=u\"\"\"\n+/* Copyright © 2021 Intel Corporation\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a\n+ * copy of this software and associated documentation files (the \"Software\"),\n+ * to deal in the Software without restriction, including without limitation\n+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n+ * and/or sell copies of the Software, and to permit persons to whom the\n+ * Software is furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice (including the next\n+ * paragraph) shall be included in all copies or substantial portions of the\n+ * Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\n+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n+ * IN THE SOFTWARE.\n+ */\n+\"\"\"\n+\n+import argparse\n+from collections import OrderedDict\n+from dataclasses import dataclass\n+import os\n+import sys\n+import typing\n+import xml.etree.ElementTree as et\n+\n+import mako\n+from mako.template import Template\n+from vk_extensions import Requirements, get_all_required, filter_api\n+\n+def str_removeprefix(s, prefix):\n+    if s.startswith(prefix):\n+        return s[len(prefix):]\n+    return s\n+\n+RENAMED_FEATURES = {\n+    # See https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17272#note_1446477 for details\n+    ('BufferDeviceAddressFeaturesEXT', 'bufferDeviceAddressCaptureReplay'): 'bufferDeviceAddressCaptureReplayEXT',\n+\n+    ('MeshShaderFeaturesNV', 'taskShader'): 'taskShaderNV',\n+    ('MeshShaderFeaturesNV', 'meshShader'): 'meshShaderNV',\n+\n+    ('CooperativeMatrixFeaturesNV', 'cooperativeMatrix'): 'cooperativeMatrixNV',\n+    ('CooperativeMatrixFeaturesNV', 'cooperativeMatrixRobustBufferAccess'): 'cooperativeMatrixRobustBufferAccessNV',\n+\n+    ('DeviceGeneratedCommandsFeaturesNV', 'deviceGeneratedCommands'): 'deviceGeneratedCommandsNV',\n+}\n+\n+KNOWN_ALIASES = [\n+    (['Vulkan11Features', '16BitStorageFeatures'], ['storageBuffer16BitAccess', 'uniformAndStorageBuffer16BitAccess', 'storagePushConstant16', 'storageInputOutput16']),\n+    (['Vulkan11Features', 'MultiviewFeatures'], ['multiview', 'multiviewGeometryShader', 'multiviewTessellationShader']),\n+    (['Vulkan11Features', 'VariablePointersFeatures'], ['variablePointersStorageBuffer', 'variablePointers']),\n+    (['Vulkan11Features', 'ProtectedMemoryFeatures'], ['protectedMemory']),\n+    (['Vulkan11Features', 'SamplerYcbcrConversionFeatures'], ['samplerYcbcrConversion']),\n+    (['Vulkan11Features', 'ShaderDrawParametersFeatures'], ['shaderDrawParameters']),\n+\n+    (['Vulkan12Features', '8BitStorageFeatures'], ['storageBuffer8BitAccess', 'uniformAndStorageBuffer8BitAccess', 'storagePushConstant8']),\n+    (['Vulkan12Features', 'ShaderAtomicInt64Features'], ['shaderBufferInt64Atomics', 'shaderSharedInt64Atomics']),\n+    (['Vulkan12Features', 'ShaderFloat16Int8Features'], ['shaderFloat16', 'shaderInt8']),\n+    (\n+        ['Vulkan12Features', 'DescriptorIndexingFeatures'],\n+        [\n+            'shaderInputAttachmentArrayDynamicIndexing',\n+            'shaderUniformTexelBufferArrayDynamicIndexing',\n+            'shaderStorageTexelBufferArrayDynamicIndexing',\n+            'shaderUniformBufferArrayNonUniformIndexing',\n+            'shaderSampledImageArrayNonUniformIndexing',\n+            'shaderStorageBufferArrayNonUniformIndexing',\n+            'shaderStorageImageArrayNonUniformIndexing',\n+            'shaderInputAttachmentArrayNonUniformIndexing',\n+            'shaderUniformTexelBufferArrayNonUniformIndexing',\n+            'shaderStorageTexelBufferArrayNonUniformIndexing',\n+            'descriptorBindingUniformBufferUpdateAfterBind',\n+            'descriptorBindingSampledImageUpdateAfterBind',\n+            'descriptorBindingStorageImageUpdateAfterBind',\n+            'descriptorBindingStorageBufferUpdateAfterBind',\n+            'descriptorBindingUniformTexelBufferUpdateAfterBind',\n+            'descriptorBindingStorageTexelBufferUpdateAfterBind',\n+            'descriptorBindingUpdateUnusedWhilePending',\n+            'descriptorBindingPartiallyBound',\n+            'descriptorBindingVariableDescriptorCount',\n+            'runtimeDescriptorArray',\n+        ],\n+    ),\n+    (['Vulkan12Features', 'ScalarBlockLayoutFeatures'], ['scalarBlockLayout']),\n+    (['Vulkan12Features', 'ImagelessFramebufferFeatures'], ['imagelessFramebuffer']),\n+    (['Vulkan12Features', 'UniformBufferStandardLayoutFeatures'], ['uniformBufferStandardLayout']),\n+    (['Vulkan12Features', 'ShaderSubgroupExtendedTypesFeatures'], ['shaderSubgroupExtendedTypes']),\n+    (['Vulkan12Features', 'SeparateDepthStencilLayoutsFeatures'], ['separateDepthStencilLayouts']),\n+    (['Vulkan12Features', 'HostQueryResetFeatures'], ['hostQueryReset']),\n+    (['Vulkan12Features', 'TimelineSemaphoreFeatures'], ['timelineSemaphore']),\n+    (['Vulkan12Features', 'BufferDeviceAddressFeatures', 'BufferDeviceAddressFeaturesEXT'], ['bufferDeviceAddress', 'bufferDeviceAddressMultiDevice']),\n+    (['Vulkan12Features', 'BufferDeviceAddressFeatures'], ['bufferDeviceAddressCaptureReplay']),\n+    (['Vulkan12Features', 'VulkanMemoryModelFeatures'], ['vulkanMemoryModel', 'vulkanMemoryModelDeviceScope', 'vulkanMemoryModelAvailabilityVisibilityChains']),\n+\n+    (['Vulkan13Features', 'ImageRobustnessFeatures'], ['robustImageAccess']),\n+    (['Vulkan13Features', 'InlineUniformBlockFeatures'], ['inlineUniformBlock', 'descriptorBindingInlineUniformBlockUpdateAfterBind']),\n+    (['Vulkan13Features', 'PipelineCreationCacheControlFeatures'], ['pipelineCreationCacheControl']),\n+    (['Vulkan13Features', 'PrivateDataFeatures'], ['privateData']),\n+    (['Vulkan13Features', 'ShaderDemoteToHelperInvocationFeatures'], ['shaderDemoteToHelperInvocation']),\n+    (['Vulkan13Features', 'ShaderTerminateInvocationFeatures'], ['shaderTerminateInvocation']),\n+    (['Vulkan13Features', 'SubgroupSizeControlFeatures'], ['subgroupSizeControl', 'computeFullSubgroups']),\n+    (['Vulkan13Features', 'Synchronization2Features'], ['synchronization2']),\n+    (['Vulkan13Features', 'TextureCompressionASTCHDRFeatures'], ['textureCompressionASTC_HDR']),\n+    (['Vulkan13Features', 'ZeroInitializeWorkgroupMemoryFeatures'], ['shaderZeroInitializeWorkgroupMemory']),\n+    (['Vulkan13Features', 'DynamicRenderingFeatures'], ['dynamicRendering']),\n+    (['Vulkan13Features', 'ShaderIntegerDotProductFeatures'], ['shaderIntegerDotProduct']),\n+    (['Vulkan13Features', 'Maintenance4Features'], ['maintenance4']),\n+]\n+\n+for (feature_structs, features) in KNOWN_ALIASES:\n+    for flag in features:\n+        for f in feature_structs:\n+            rename = (f, flag)\n+            assert rename not in RENAMED_FEATURES, f\"{rename} already exists in RENAMED_FEATURES\"\n+            RENAMED_FEATURES[rename] = flag\n+\n+def get_renamed_feature(c_type, feature):\n+    return RENAMED_FEATURES.get((str_removeprefix(c_type, 'VkPhysicalDevice'), feature), feature)\n+\n+@dataclass\n+class FeatureStruct:\n+    reqs: Requirements\n+    c_type: str\n+    s_type: str\n+    features: typing.List[str]\n+\n+TEMPLATE_C = Template(COPYRIGHT + \"\"\"\n+/* This file generated from ${filename}, don't edit directly. */\n+\n+#include \"wrapper_private.h\"\n+#include \"vk_physical_device_features.h\"\n+#include \"vk_util.h\"\n+\n+void\n+wrapper_setup_device_features(struct wrapper_physical_device *physical_device)\n+{\n+   VkPhysicalDevice vk_physical_device = physical_device->dispatch_handle;\n+\n+   /* Query the device what kind of features are supported. */\n+   VkPhysicalDeviceFeatures2 supported_features2 = {\n+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,\n+   };\n+\n+% for f in feature_structs:\n+   ${f.c_type} supported_${f.c_type} = {\n+      .sType = ${f.s_type},\n+      .pNext = NULL,\n+   };\n+   __vk_append_struct(&supported_features2, &supported_${f.c_type});\n+% endfor\n+\n+   physical_device->dispatch_table.GetPhysicalDeviceFeatures2(\n+      vk_physical_device, &supported_features2);\n+\n+   vk_set_physical_device_features(&physical_device->vk.supported_features,\n+                                   &supported_features2);\n+}\n+\"\"\")\n+\n+def get_pdev_features(doc):\n+    _type = doc.find(\".types/type[@name='VkPhysicalDeviceFeatures']\")\n+    if _type is not None:\n+        flags = []\n+        for p in _type.findall('./member'):\n+            assert p.find('./type').text == 'VkBool32'\n+            flags.append(p.find('./name').text)\n+        return flags\n+    return None\n+\n+def filter_api(elem, api):\n+    if 'api' not in elem.attrib:\n+        return True\n+\n+    return api in elem.attrib['api'].split(',')\n+\n+def get_feature_structs(doc, api, beta):\n+    feature_structs = OrderedDict()\n+\n+    required = get_all_required(doc, 'type', api, beta)\n+\n+    # parse all struct types where structextends VkPhysicalDeviceFeatures2\n+    for _type in doc.findall('./types/type[@category=\"struct\"]'):\n+        if _type.attrib.get('structextends') != 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo':\n+            continue\n+        if _type.attrib['name'] not in required:\n+            continue\n+\n+        reqs = required[_type.attrib['name']]\n+        # Skip extensions with a define for now\n+        guard = reqs.guard\n+        if guard is not None and (guard != \"VK_ENABLE_BETA_EXTENSIONS\" or beta != \"true\"):\n+            continue\n+\n+        # find Vulkan structure type\n+        for elem in _type:\n+            if \"STRUCTURE_TYPE\" in str(elem.attrib):\n+                s_type = elem.attrib.get('values')\n+\n+        # collect a list of feature flags\n+        flags = []\n+\n+        for p in _type.findall('./member'):\n+            if not filter_api(p, api):\n+                continue\n+\n+            m_name = p.find('./name').text\n+            if m_name == 'pNext':\n+                pass\n+            elif m_name == 'sType':\n+                s_type = p.attrib.get('values')\n+            else:\n+                assert p.find('./type').text == 'VkBool32'\n+                flags.append(m_name)\n+\n+        feature_struct = FeatureStruct(reqs=reqs, c_type=_type.attrib.get('name'), s_type=s_type, features=flags)\n+        feature_structs[feature_struct.c_type] = feature_struct\n+\n+    return feature_structs.values()\n+\n+def get_feature_structs_from_xml(xml_files, beta, api='vulkan'):\n+    diagnostics = []\n+\n+    pdev_features = None\n+    feature_structs = []\n+\n+    for filename in xml_files:\n+        doc = et.parse(filename)\n+        feature_structs += get_feature_structs(doc, api, beta)\n+        if not pdev_features:\n+            pdev_features = get_pdev_features(doc)\n+\n+    unused_renames = {**RENAMED_FEATURES}\n+\n+    features = OrderedDict()\n+\n+    for flag in pdev_features:\n+        features[flag] = 'VkPhysicalDeviceFeatures'\n+\n+    for f in feature_structs:\n+        for flag in f.features:\n+            renamed_flag = get_renamed_feature(f.c_type, flag)\n+            if renamed_flag not in features:\n+                features[renamed_flag] = f.c_type\n+            else:\n+                a = str_removeprefix(features[renamed_flag], 'VkPhysicalDevice')\n+                b = str_removeprefix(f.c_type, 'VkPhysicalDevice')\n+                if (a, flag) not in RENAMED_FEATURES or (b, flag) not in RENAMED_FEATURES:\n+                    diagnostics.append(f'{a} and {b} both define {flag}')\n+\n+            unused_renames.pop((str_removeprefix(f.c_type, 'VkPhysicalDevice'), flag), None)\n+\n+    for rename in unused_renames:\n+        diagnostics.append(f'unused rename {rename}')\n+\n+    assert len(diagnostics) == 0, '\\n'.join(diagnostics)\n+\n+    return pdev_features, feature_structs, features\n+\n+\n+def main():\n+    parser = argparse.ArgumentParser()\n+    parser.add_argument('--out-c', required=True, help='Output C file.')\n+    parser.add_argument('--beta', required=True, help='Enable beta extensions.')\n+    parser.add_argument('--xml',\n+                        help='Vulkan API XML file.',\n+                        required=True, action='append', dest='xml_files')\n+    args = parser.parse_args()\n+\n+    pdev_features, feature_structs, all_flags = get_feature_structs_from_xml(args.xml_files, args.beta)\n+\n+    environment = {\n+        'filename': os.path.basename(__file__),\n+        'pdev_features': pdev_features,\n+        'feature_structs': feature_structs,\n+        'all_flags': all_flags,\n+        'get_renamed_feature': get_renamed_feature,\n+    }\n+\n+    try:\n+        with open(args.out_c, 'w', encoding='utf-8') as f:\n+            f.write(TEMPLATE_C.render(**environment))\n+    except Exception:\n+        # In the event there's an error, this uses some helpers from mako\n+        # to print a useful stack trace and prints it, then exits with\n+        # status 1, if python is run with debug; otherwise it just raises\n+        # the exception\n+        print(mako.exceptions.text_error_template().render(), file=sys.stderr)\n+        sys.exit(1)\n+\n+if __name__ == '__main__':\n+    main()\ndiff --git a/src/vulkan/wrapper/vk_wrapper_trampolines_gen.py b/src/vulkan/wrapper/vk_wrapper_trampolines_gen.py\nnew file mode 100644\nindex 00000000000..f20fde16034\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_wrapper_trampolines_gen.py\n@@ -0,0 +1,222 @@\n+# coding=utf-8\n+COPYRIGHT = \"\"\"\\\n+/*\n+ * Copyright 2020 Intel Corporation\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a\n+ * copy of this software and associated documentation files (the\n+ * \"Software\"), to deal in the Software without restriction, including\n+ * without limitation the rights to use, copy, modify, merge, publish,\n+ * distribute, sub license, and/or sell copies of the Software, and to\n+ * permit persons to whom the Software is furnished to do so, subject to\n+ * the following conditions:\n+ *\n+ * The above copyright notice and this permission notice (including the\n+ * next paragraph) shall be included in all copies or substantial portions\n+ * of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR\n+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n+ */\n+\"\"\"\n+\n+import argparse\n+import os\n+\n+from mako.template import Template\n+\n+# Mesa-local imports must be declared in meson variable\n+# '{file_without_suffix}_depend_files'.\n+from vk_entrypoints import get_entrypoints_from_xml\n+\n+TEMPLATE_H = Template(COPYRIGHT + \"\"\"\\\n+/* This file generated from ${filename}, don't edit directly. */\n+\n+#ifndef WRAPPER_TRAMPOLINES_H\n+#define WRAPPER_TRAMPOLINES_H\n+\n+#include \"vk_dispatch_table.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+extern struct vk_physical_device_entrypoint_table wrapper_physical_device_trampolines;\n+extern struct vk_device_entrypoint_table wrapper_device_trampolines;\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* WRAPPER_TRAMPOLINES_H */\n+\"\"\")\n+\n+TEMPLATE_C = Template(COPYRIGHT + \"\"\"\\\n+/* This file generated from ${filename}, don't edit directly. */\n+\n+#include \"wrapper_private.h\"\n+#include \"wrapper_trampolines.h\"\n+\n+% for e in entrypoints:\n+  % if not e.is_physical_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+static VKAPI_ATTR ${e.return_type} VKAPI_CALL\n+${e.prefixed_name('wrapper_tramp')}(${e.decl_params()})\n+{\n+    <% assert e.params[0].type == 'VkPhysicalDevice' %>\n+    VK_FROM_HANDLE(wrapper_physical_device, vk_physical_device, ${e.params[0].name});\n+  % if e.return_type == 'void':\n+    vk_physical_device->dispatch_table.${e.name}(vk_physical_device->dispatch_handle, ${e.call_params(1)});\n+  % else:\n+    return vk_physical_device->dispatch_table.${e.name}(vk_physical_device->dispatch_handle, ${e.call_params(1)});\n+  % endif\n+}\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+\n+struct vk_physical_device_entrypoint_table wrapper_physical_device_trampolines = {\n+% for e in entrypoints:\n+  % if not e.is_physical_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+    .${e.name} = ${e.prefixed_name('wrapper_tramp')},\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+};\n+\n+% for e in entrypoints:\n+  % if not e.is_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+static VKAPI_ATTR ${e.return_type} VKAPI_CALL\n+${e.prefixed_name('wrapper_tramp')}(${e.decl_params()})\n+{\n+  % if e.params[0].type == 'VkDevice':\n+    VK_FROM_HANDLE(wrapper_device, vk_device, ${e.params[0].name});\n+    % if e.return_type == 'void':\n+      % if len(e.params) > 1:\n+    vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle);\n+      % endif\n+    % else:\n+      % if len(e.params) > 1:\n+    return vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    return vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle);\n+      % endif\n+    % endif\n+  % elif e.params[0].type == 'VkCommandBuffer':\n+    VK_FROM_HANDLE(wrapper_command_buffer, wcb, ${e.params[0].name});\n+    % if e.return_type == 'void':\n+      % if len(e.params) > 1:\n+    wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle);\n+      % endif\n+    % else:\n+      % if len(e.params) > 1:\n+    return wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    return wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle);\n+      % endif\n+    % endif\n+  % elif e.params[0].type == 'VkQueue':\n+    VK_FROM_HANDLE(wrapper_queue, wqueue, ${e.params[0].name});\n+    % if e.return_type == 'void':\n+      % if len(e.params) > 1:\n+    wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle);\n+      % endif\n+    % else:\n+      % if len(e.params) > 1:\n+    return wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    return wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle);\n+      % endif\n+    % endif\n+  % else:\n+    assert(!\"Unhandled device child trampoline case: ${e.params[0].type}\");\n+  % endif\n+}\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+\n+struct vk_device_entrypoint_table wrapper_device_trampolines = {\n+% for e in entrypoints:\n+  % if not e.is_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+    .${e.name} = ${e.prefixed_name('wrapper_tramp')},\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+};\n+\"\"\")\n+\n+def main():\n+    parser = argparse.ArgumentParser()\n+    parser.add_argument('--out-c', help='Output C file.')\n+    parser.add_argument('--out-h', help='Output H file.')\n+    parser.add_argument('--beta', required=True, help='Enable beta extensions.')\n+    parser.add_argument('--xml',\n+                        help='Vulkan API XML file.',\n+                        required=True,\n+                        action='append',\n+                        dest='xml_files')\n+    args = parser.parse_args()\n+\n+    entrypoints = get_entrypoints_from_xml(args.xml_files, args.beta)\n+\n+    # For outputting entrypoints.h we generate a anv_EntryPoint() prototype\n+    # per entry point.\n+    try:\n+        if args.out_h:\n+            with open(args.out_h, 'w', encoding='utf-8') as f:\n+                f.write(TEMPLATE_H.render(entrypoints=entrypoints,\n+                                          filename=os.path.basename(__file__)))\n+        if args.out_c:\n+            with open(args.out_c, 'w', encoding='utf-8') as f:\n+                f.write(TEMPLATE_C.render(entrypoints=entrypoints,\n+                                          filename=os.path.basename(__file__)))\n+    except Exception:\n+        # In the event there's an error, this imports some helpers from mako\n+        # to print a useful stack trace and prints it, then exits with\n+        # status 1, if python is run with debug; otherwise it just raises\n+        # the exception\n+        if __debug__:\n+            import sys\n+            from mako import exceptions\n+            sys.stderr.write(exceptions.text_error_template().render() + '\\n')\n+            sys.exit(1)\n+        raise\n+\n+\n+if __name__ == '__main__':\n+    main()\ndiff --git a/src/vulkan/wrapper/wrapper_device.c b/src/vulkan/wrapper/wrapper_device.c\nnew file mode 100644\nindex 00000000000..25ca9480164\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_device.c\n@@ -0,0 +1,404 @@\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"wrapper_trampolines.h\"\n+#include \"vk_alloc.h\"\n+#include \"vk_common_entrypoints.h\"\n+#include \"vk_device.h\"\n+#include \"vk_dispatch_table.h\"\n+#include \"vk_extensions.h\"\n+#include \"vk_queue.h\"\n+#include \"vk_util.h\"\n+#include \"util/list.h\"\n+\n+const struct vk_device_extension_table wrapper_device_extensions =\n+{\n+   .KHR_swapchain = true,\n+   .EXT_swapchain_maintenance1 = true,\n+   .KHR_swapchain_mutable_format = true,\n+#ifdef VK_USE_PLATFORM_DISPLAY_KHR\n+   .EXT_display_control = true,\n+#endif\n+   .KHR_present_id = true,\n+   .KHR_present_wait = true,\n+   .KHR_incremental_present = true,\n+   .KHR_map_memory2 = true,\n+   .EXT_map_memory_placed = true,\n+};\n+\n+const struct vk_device_extension_table wrapper_filter_extensions =\n+{\n+   .EXT_hdr_metadata = true,\n+   .GOOGLE_display_timing = true,\n+   .KHR_shared_presentable_image = true,\n+   .EXT_image_compression_control_swapchain = true,\n+};\n+\n+static void\n+wrapper_filter_enabled_extensions(const struct vk_device *device,\n+                                  uint32_t *enable_extension_count,\n+                                  const char **enable_extensions)\n+{\n+   for (int idx = 0; idx < VK_DEVICE_EXTENSION_COUNT; idx++) {\n+      if (!device->enabled_extensions.extensions[idx])\n+         continue;\n+\n+      if (wrapper_device_extensions.extensions[idx])\n+         continue;\n+\n+      if (wrapper_filter_extensions.extensions[idx])\n+         continue;\n+\n+      enable_extensions[(*enable_extension_count)++] =\n+         vk_device_extensions[idx].extensionName;\n+   }\n+}\n+\n+static inline void\n+wrapper_append_required_extensions(const struct vk_device *device,\n+                                  uint32_t *count,\n+                                  const char **exts) {\n+#define REQUIRED_EXTENSION(name) \\\n+   if (!device->enabled_extensions.name && \\\n+       device->physical->supported_extensions.name) { \\\n+      exts[(*count)++] = \"VK_\" #name; \\\n+   }\n+   REQUIRED_EXTENSION(KHR_external_fence);\n+   REQUIRED_EXTENSION(KHR_external_semaphore);\n+   REQUIRED_EXTENSION(KHR_external_memory);\n+   REQUIRED_EXTENSION(KHR_external_fence_fd);\n+   REQUIRED_EXTENSION(KHR_external_semaphore_fd);\n+   REQUIRED_EXTENSION(KHR_external_memory_fd);\n+   REQUIRED_EXTENSION(KHR_dedicated_allocation);\n+   REQUIRED_EXTENSION(EXT_queue_family_foreign);\n+   REQUIRED_EXTENSION(KHR_maintenance1)\n+   REQUIRED_EXTENSION(KHR_maintenance2)\n+   REQUIRED_EXTENSION(KHR_image_format_list)\n+   REQUIRED_EXTENSION(KHR_timeline_semaphore);\n+   REQUIRED_EXTENSION(EXT_external_memory_host);\n+   REQUIRED_EXTENSION(EXT_external_memory_dma_buf);\n+   REQUIRED_EXTENSION(EXT_image_drm_format_modifier);\n+   REQUIRED_EXTENSION(ANDROID_external_memory_android_hardware_buffer);\n+#undef REQUIRED_EXTENSION\n+}\n+\n+static VkResult\n+wrapper_create_device_queue(struct wrapper_device *device,\n+                            const VkDeviceCreateInfo* pCreateInfo)\n+{\n+   const VkDeviceQueueCreateInfo *create_info;\n+   struct wrapper_queue *queue;\n+   VkResult result;\n+\n+   for (int i = 0; i < pCreateInfo->queueCreateInfoCount; i++) {\n+      create_info = &pCreateInfo->pQueueCreateInfos[i];\n+      for (int j = 0; j < create_info->queueCount; j++) {\n+         queue = vk_zalloc(&device->vk.alloc, sizeof(*queue), 8,\n+                           VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);\n+         if (!queue)\n+            return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+         device->dispatch_table.GetDeviceQueue(device->dispatch_handle,\n+                                               create_info->queueFamilyIndex,\n+                                               j, &queue->dispatch_handle);;\n+         queue->device = device;\n+\n+         result = vk_queue_init(&queue->vk, &device->vk, create_info, j);\n+         if (result != VK_SUCCESS) {\n+            vk_free(&device->vk.alloc, queue);\n+            return result;\n+         }\n+      }\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_CreateDevice(VkPhysicalDevice physicalDevice,\n+                     const VkDeviceCreateInfo* pCreateInfo,\n+                     const VkAllocationCallbacks* pAllocator,\n+                     VkDevice* pDevice)\n+{\n+   VK_FROM_HANDLE(wrapper_physical_device, physical_device, physicalDevice);\n+   const char *wrapper_enable_extensions[VK_DEVICE_EXTENSION_COUNT];\n+   uint32_t wrapper_enable_extension_count = 0;\n+   VkDeviceCreateInfo wrapper_create_info = *pCreateInfo;\n+   struct vk_device_dispatch_table dispatch_table;\n+   struct wrapper_device *device;\n+   VkPhysicalDeviceFeatures2 *pdf2;\n+   VkPhysicalDeviceFeatures *pdf;\n+   VkResult result;\n+\n+   device = vk_zalloc2(&physical_device->instance->vk.alloc, pAllocator,\n+                       sizeof(*device), 8, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);\n+   if (!device)\n+      return vk_error(physical_device, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   list_inithead(&device->command_buffers);\n+   device->physical = physical_device;\n+   device->memorys = _mesa_hash_table_create(NULL,\n+                                             _mesa_hash_pointer,\n+                                             _mesa_key_pointer_equal);\n+   if (!device->memorys) {\n+      vk_free2(&physical_device->instance->vk.alloc, pAllocator,\n+               device);\n+      return vk_error(physical_device, VK_ERROR_OUT_OF_HOST_MEMORY);\n+   }\n+\n+   vk_device_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wrapper_device_entrypoints, true);\n+   vk_device_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wsi_device_entrypoints, false);\n+   vk_device_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wrapper_device_trampolines, false);\n+\n+   result = vk_device_init(&device->vk, &physical_device->vk,\n+                           &dispatch_table, pCreateInfo, pAllocator);\n+\n+   if (result != VK_SUCCESS) {\n+      vk_free2(&physical_device->instance->vk.alloc, pAllocator,\n+               device);\n+      return vk_error(physical_device, result);\n+   }\n+\n+   wrapper_filter_enabled_extensions(&device->vk,\n+                                     &wrapper_enable_extension_count,\n+                                     wrapper_enable_extensions);\n+   wrapper_append_required_extensions(&device->vk,\n+                                      &wrapper_enable_extension_count,\n+                                      wrapper_enable_extensions);\n+\n+   wrapper_create_info.enabledExtensionCount = wrapper_enable_extension_count;\n+   wrapper_create_info.ppEnabledExtensionNames = wrapper_enable_extensions;\n+\n+   pdf = (void *)pCreateInfo->pEnabledFeatures;\n+   if (pdf && pdf->textureCompressionBC) {\n+      pdf->textureCompressionBC &=\n+         physical_device->backup_supported_features.textureCompressionBC;\n+   }\n+   pdf2 = __vk_find_struct((void *)pCreateInfo->pNext,\n+            VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2);\n+   if (pdf2 && pdf2->features.textureCompressionBC) {\n+      pdf2->features.textureCompressionBC &=\n+         physical_device->backup_supported_features.textureCompressionBC;\n+   }\n+\n+   result = physical_device->dispatch_table.CreateDevice(\n+      physical_device->dispatch_handle, &wrapper_create_info,\n+         pAllocator, &device->dispatch_handle);\n+\n+   if (result != VK_SUCCESS) {\n+      vk_device_finish(&device->vk);\n+      vk_free(&device->vk.alloc, device);\n+      return vk_error(physical_device, result);\n+   }\n+\n+   void *gdpa = physical_device->instance->dispatch_table.GetInstanceProcAddr(\n+      physical_device->instance->dispatch_handle, \"vkGetDeviceProcAddr\");\n+   vk_device_dispatch_table_load(&device->dispatch_table, gdpa,\n+                                 device->dispatch_handle);\n+\n+   result = wrapper_create_device_queue(device, pCreateInfo);\n+   if (result != VK_SUCCESS) {\n+      wrapper_DestroyDevice(wrapper_device_to_handle(device),\n+                            &device->vk.alloc);\n+      return vk_error(physical_device, result);\n+   }\n+\n+   *pDevice = wrapper_device_to_handle(device);\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex,\n+                       uint32_t queueIndex, VkQueue* pQueue) {\n+   vk_common_GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo,\n+                        VkQueue* pQueue) {\n+   vk_common_GetDeviceQueue2(device, pQueueInfo, pQueue);\n+}\n+\n+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+wrapper_GetDeviceProcAddr(VkDevice _device, const char* pName) {\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   return vk_device_get_proc_addr(&device->vk, pName);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_QueueSubmit(VkQueue _queue, uint32_t submitCount,\n+                    const VkSubmitInfo* pSubmits, VkFence fence)\n+{\n+   VK_FROM_HANDLE(wrapper_queue, queue, _queue);\n+   VkCommandBuffer wrapper_command_buffers[submitCount][32];\n+   VkSubmitInfo wrapper_submits[submitCount];\n+\n+   for (int i = 0; i < submitCount; i++) {\n+      const VkSubmitInfo *submit_info = &pSubmits[i];\n+      for (int j = 0; j < submit_info->commandBufferCount; j++) {\n+         VK_FROM_HANDLE(wrapper_command_buffer, wcb,\n+                        submit_info->pCommandBuffers[j]);\n+         wrapper_command_buffers[i][j] = wcb->dispatch_handle;\n+      }\n+      wrapper_submits[i] = pSubmits[i];\n+      wrapper_submits[i].pCommandBuffers = wrapper_command_buffers[i];\n+   }\n+   return queue->device->dispatch_table.QueueSubmit(queue->dispatch_handle,\n+                                                    submitCount,\n+                                                    wrapper_submits,\n+                                                    fence);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_QueueSubmit2(VkQueue _queue, uint32_t submitCount,\n+                     const VkSubmitInfo2* pSubmits, VkFence fence)\n+{\n+   VK_FROM_HANDLE(wrapper_queue, queue, _queue);\n+   VkCommandBufferSubmitInfo wrapper_command_buffers[submitCount][32];\n+   VkSubmitInfo2 wrapper_submits[submitCount];\n+\n+   for (int i = 0; i < submitCount; i++) {\n+      const VkSubmitInfo2 *submit_info = &pSubmits[i];\n+      for (int j = 0; j < submit_info->commandBufferInfoCount; j++) {\n+         VK_FROM_HANDLE(wrapper_command_buffer, wcb,\n+                        submit_info->pCommandBufferInfos[j].commandBuffer);\n+         wrapper_command_buffers[i][j] = pSubmits[i].pCommandBufferInfos[j];\n+         wrapper_command_buffers[i][j].commandBuffer = wcb->dispatch_handle;\n+      }\n+      wrapper_submits[i] = pSubmits[i];\n+      wrapper_submits[i].pCommandBufferInfos = wrapper_command_buffers[i];\n+   }\n+   return queue->device->dispatch_table.QueueSubmit2(queue->dispatch_handle,\n+                                                     submitCount,\n+                                                     wrapper_submits,\n+                                                     fence);\n+}\n+\n+static VkResult\n+wrapper_command_buffer_create(struct wrapper_device *device,\n+                              VkCommandPool pool,\n+                              VkCommandBuffer dispatch_handle,\n+                              VkCommandBuffer *pCommandBuffers) {\n+   struct wrapper_command_buffer *wrapper_command_buffer;\n+   wrapper_command_buffer = vk_object_zalloc(&device->vk, &device->vk.alloc,\n+                              sizeof(struct wrapper_command_buffer),\n+                              VK_OBJECT_TYPE_COMMAND_BUFFER);\n+   if (!wrapper_command_buffer)\n+      return vk_error(&device->vk, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   wrapper_command_buffer->device = device;\n+   wrapper_command_buffer->pool = pool;\n+   wrapper_command_buffer->dispatch_handle = dispatch_handle;\n+   list_add(&wrapper_command_buffer->link, &device->command_buffers);\n+\n+   *pCommandBuffers = wrapper_command_buffer_to_handle(wrapper_command_buffer);\n+\n+   return VK_SUCCESS;\n+}\n+\n+static void\n+wrapper_command_buffer_destroy(struct wrapper_device *device,\n+                               struct wrapper_command_buffer *wcb) {\n+   list_del(&wcb->link);\n+   vk_object_free(&device->vk, NULL, wcb);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_AllocateCommandBuffers(VkDevice _device,\n+                               const VkCommandBufferAllocateInfo* pAllocateInfo,\n+                               VkCommandBuffer* pCommandBuffers)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   VkCommandBuffer dispatch_handles[pAllocateInfo->commandBufferCount];\n+   VkResult result;\n+   uint32_t i;\n+   \n+   result = device->dispatch_table.AllocateCommandBuffers(device->dispatch_handle,\n+                                                          pAllocateInfo,\n+                                                          dispatch_handles);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   for (i = 0; i < pAllocateInfo->commandBufferCount; i++) {\n+      result = wrapper_command_buffer_create(device,\n+                                             pAllocateInfo->commandPool,\n+                                             dispatch_handles[i],\n+                                             &pCommandBuffers[i]);\n+      if (result != VK_SUCCESS)\n+         break;\n+   }\n+\n+   if (result != VK_SUCCESS) {\n+      device->dispatch_table.FreeCommandBuffers(device->dispatch_handle,\n+                                                pAllocateInfo->commandPool,\n+                                                pAllocateInfo->commandBufferCount,\n+                                                dispatch_handles);\n+      for (int q = 0; q < i; q++) {\n+         VK_FROM_HANDLE(wrapper_command_buffer, wcb, pCommandBuffers[q]);\n+         wrapper_command_buffer_destroy(device, wcb);\n+      }\n+\n+      for (i = 0; i < pAllocateInfo->commandBufferCount; i++)\n+         pCommandBuffers[i] = VK_NULL_HANDLE;\n+\n+      return result;\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_FreeCommandBuffers(VkDevice _device,\n+                           VkCommandPool commandPool,\n+                           uint32_t commandBufferCount,\n+                           const VkCommandBuffer* pCommandBuffers)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   VkCommandBuffer dispatch_handles[commandBufferCount];\n+\n+   for (int i = 0; i < commandBufferCount; i++) {\n+      VK_FROM_HANDLE(wrapper_command_buffer, wcb, pCommandBuffers[i]);\n+      dispatch_handles[i] = wcb->dispatch_handle;\n+      wrapper_command_buffer_destroy(device, wcb);\n+   }\n+   device->dispatch_table.FreeCommandBuffers(device->dispatch_handle,\n+                                             commandPool, commandBufferCount,\n+                                             dispatch_handles);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DestroyCommandPool(VkDevice _device, VkCommandPool commandPool,\n+                           const VkAllocationCallbacks* pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   list_for_each_entry_safe(struct wrapper_command_buffer, wcb,\n+                            &device->command_buffers, link) {\n+      if (wcb->pool == commandPool) {\n+         wrapper_command_buffer_destroy(device, wcb);\n+      }\n+   }\n+   device->dispatch_table.DestroyCommandPool(device->dispatch_handle,\n+                                             commandPool, pAllocator);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DestroyDevice(VkDevice _device, const VkAllocationCallbacks* pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   list_for_each_entry_safe(struct wrapper_command_buffer, wcb,\n+                            &device->command_buffers, link) {\n+      wrapper_command_buffer_destroy(device, wcb);\n+   }\n+   list_for_each_entry_safe(struct vk_queue, queue, &device->vk.queues, link) {\n+      vk_queue_finish(queue);\n+      vk_free2(&device->vk.alloc, pAllocator, queue);\n+   }\n+   device->dispatch_table.DestroyDevice(device->dispatch_handle, pAllocator);\n+   vk_device_finish(&device->vk);\n+   vk_free2(&device->vk.alloc, pAllocator, device);\n+}\n+\ndiff --git a/src/vulkan/wrapper/wrapper_device_memory.c b/src/vulkan/wrapper/wrapper_device_memory.c\nnew file mode 100644\nindex 00000000000..e2e40e5a977\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_device_memory.c\n@@ -0,0 +1,246 @@\n+#define native_handle_t __native_handle_t\n+#define buffer_handle_t __buffer_handle_t\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"vk_common_entrypoints.h\"\n+#undef native_handle_t\n+#undef buffer_handle_t\n+#include \"util/hash_table.h\"\n+#include \"vk_util.h\"\n+\n+#include <android/hardware_buffer.h>\n+#include <vndk/hardware_buffer.h>\n+#include <sys/mman.h>\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_AllocateMemory(VkDevice _device,\n+                       const VkMemoryAllocateInfo* pAllocateInfo,\n+                       const VkAllocationCallbacks* pAllocator,\n+                       VkDeviceMemory* pMemory)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   const VkImportAndroidHardwareBufferInfoANDROID *import_info;\n+   const VkExportMemoryAllocateInfo *export_info;\n+   VkExportMemoryAllocateInfo local_export_info;\n+   VkMemoryAllocateInfo wrapper_allocate_info;\n+   struct wrapper_device_memory *memory;\n+   VkMemoryPropertyFlags mem_flags;\n+   bool can_get_ahardware_buffer;\n+   VkResult result;\n+\n+   mem_flags = device->physical->memory_properties.memoryTypes\n+      [pAllocateInfo->memoryTypeIndex].propertyFlags;\n+\n+   if (!device->vk.enabled_extensions.EXT_map_memory_placed ||\n+       !(mem_flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)) {\n+      return device->dispatch_table.AllocateMemory(device->dispatch_handle,\n+                                                   pAllocateInfo,\n+                                                   pAllocator,\n+                                                   pMemory);\n+   }\n+\n+   memory = vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*memory),\n+                       8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);\n+   if (!memory)\n+      return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   wrapper_allocate_info = *pAllocateInfo;\n+   \n+   import_info = vk_find_struct_const(pAllocateInfo,\n+                    IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID);\n+   export_info = vk_find_struct_const(pAllocateInfo,\n+                    EXPORT_MEMORY_ALLOCATE_INFO);\n+\n+   if (import_info) {\n+      memory->ahardware_buffer = import_info->buffer;\n+      AHardwareBuffer_acquire(memory->ahardware_buffer);\n+   } else if (!export_info) {\n+      local_export_info = (VkExportMemoryAllocateInfo) {\n+         .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,\n+         .pNext = wrapper_allocate_info.pNext,\n+         .handleTypes =\n+            VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,\n+      };\n+      wrapper_allocate_info.pNext = &local_export_info;\n+      export_info = &local_export_info;\n+   }\n+\n+   result = device->dispatch_table.AllocateMemory(device->dispatch_handle,\n+                                                  &wrapper_allocate_info,\n+                                                  pAllocator,\n+                                                  pMemory);\n+   if (result != VK_SUCCESS) {\n+      if (memory->ahardware_buffer)\n+         AHardwareBuffer_release(memory->ahardware_buffer);\n+      vk_free2(&device->vk.alloc, pAllocator, memory);\n+      return vk_error(device, result);\n+   }\n+\n+   can_get_ahardware_buffer = (export_info && export_info->handleTypes ==\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID);\n+\n+   if (can_get_ahardware_buffer) {\n+      const VkMemoryGetAndroidHardwareBufferInfoANDROID get_ahb_info = {\n+         .sType =\n+            VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+         .memory = *pMemory,\n+      };\n+      device->dispatch_table.GetMemoryAndroidHardwareBufferANDROID(\n+         device->dispatch_handle, &get_ahb_info, &memory->ahardware_buffer);\n+   }\n+\n+   memory->alloc_size = pAllocateInfo->allocationSize;\n+   _mesa_hash_table_insert(device->memorys, (void *)(*pMemory), memory);\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_FreeMemory(VkDevice _device, VkDeviceMemory _memory,\n+                   const VkAllocationCallbacks* pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   struct hash_entry *entry = NULL;\n+\n+   if (_memory != VK_NULL_HANDLE)\n+      entry = _mesa_hash_table_search(device->memorys, (void *)_memory);\n+\n+   if (entry) {\n+      struct wrapper_device_memory *memory = entry->data;\n+      if (memory->map_address && memory->map_size) {\n+         munmap(memory->map_address, memory->map_size);\n+      }\n+      if (memory->ahardware_buffer) {\n+         AHardwareBuffer_release(memory->ahardware_buffer);\n+      }\n+      vk_free2(&device->vk.alloc, pAllocator, memory);\n+      _mesa_hash_table_remove(device->memorys, entry);\n+   }\n+\n+   device->dispatch_table.FreeMemory(device->dispatch_handle,\n+                                     _memory,\n+                                     pAllocator);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_MapMemory2KHR(VkDevice _device,\n+                      const VkMemoryMapInfoKHR* pMemoryMapInfo,\n+                      void** ppData)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   struct wrapper_device_memory *memory;\n+   const VkMemoryMapPlacedInfoEXT *placed_info;\n+   const struct hash_entry *entry = NULL;\n+   const native_handle_t *handle;\n+   const int *handle_fds;\n+\n+   placed_info = vk_find_struct_const(pMemoryMapInfo->pNext,\n+                                      MEMORY_MAP_PLACED_INFO_EXT);\n+   if (pMemoryMapInfo->memory != VK_NULL_HANDLE)\n+      entry = _mesa_hash_table_search(device->memorys,\n+                                      (void *)pMemoryMapInfo->memory);\n+   if (!placed_info || !entry) {\n+      return device->dispatch_table.MapMemory(device->dispatch_handle,\n+                                              pMemoryMapInfo->memory,\n+                                              pMemoryMapInfo->offset,\n+                                              pMemoryMapInfo->size,\n+                                              0,\n+                                              ppData);\n+   }\n+   memory = entry->data;\n+\n+   if (memory->map_address) {\n+      if (placed_info->pPlacedAddress != memory->map_address) {\n+         return VK_ERROR_MEMORY_MAP_FAILED;\n+      } else {\n+         *ppData = (char *)memory->map_address + pMemoryMapInfo->offset;\n+         return VK_SUCCESS;\n+      }\n+   }\n+\n+   if (!memory->ahardware_buffer) {\n+      fprintf(stderr, \"Can't get AHardwareBuffer, mapping memory will fail\");\n+      return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+   }\n+\n+   handle = AHardwareBuffer_getNativeHandle(memory->ahardware_buffer);\n+   handle_fds = &handle->data[0];\n+\n+   int idx;\n+   for (idx = 0; idx < handle->numFds; idx++) {\n+      size_t size = lseek(handle_fds[idx], 0, SEEK_END);\n+      if (size < memory->alloc_size)\n+         continue;\n+\n+      if (pMemoryMapInfo->size == VK_WHOLE_SIZE)\n+      {\n+         memory->map_size = size;\n+         break;\n+      } else if (size >= pMemoryMapInfo->size) {\n+         memory->map_size = pMemoryMapInfo->size;\n+         break;\n+      }\n+   }\n+   assert(idx < handle->numFds);\n+\n+   memory->map_address = mmap(placed_info->pPlacedAddress,\n+                              memory->map_size,\n+                              PROT_READ | PROT_WRITE,\n+                              MAP_SHARED | MAP_FIXED,\n+                              handle_fds[idx], 0);\n+\n+   if (memory->map_address == MAP_FAILED) {\n+      memory->map_address = NULL;\n+      memory->map_size = 0;\n+      fprintf(stderr, \"%s: mmap failed\\n\", __func__);\n+      return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+   }\n+\n+   *ppData = (char *)memory->map_address + pMemoryMapInfo->offset;\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_UnmapMemory(VkDevice _device, VkDeviceMemory _memory) {\n+   vk_common_UnmapMemory(_device, _memory);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_UnmapMemory2KHR(VkDevice _device,\n+                        const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   struct wrapper_device_memory *memory;\n+   const struct hash_entry *entry = NULL;\n+\n+   if (pMemoryUnmapInfo->memory != VK_NULL_HANDLE)\n+      entry = _mesa_hash_table_search(device->memorys,\n+                                      (void *)pMemoryUnmapInfo->memory);\n+   if (!entry) {\n+      device->dispatch_table.UnmapMemory(device->dispatch_handle,\n+                                       pMemoryUnmapInfo->memory);\n+      return VK_SUCCESS;\n+   }\n+\n+   memory = entry->data;\n+\n+   if (!memory->map_address)\n+      return VK_SUCCESS;\n+\n+   if (pMemoryUnmapInfo->flags & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) {\n+      memory->map_address = mmap(memory->map_address, memory->map_size,\n+         PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);\n+      if (memory->map_address == MAP_FAILED) {\n+         fprintf(stderr, \"Failed to replace mapping with reserved memory\");\n+         return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+      }\n+   } else {\n+      munmap(memory->map_address, memory->map_size);\n+   }\n+\n+   memory->map_size = 0;\n+   memory->map_address = 0;\n+   \n+   return VK_SUCCESS;\n+}\ndiff --git a/src/vulkan/wrapper/wrapper_instance.c b/src/vulkan/wrapper/wrapper_instance.c\nnew file mode 100644\nindex 00000000000..3b083ec40d8\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_instance.c\n@@ -0,0 +1,297 @@\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"vk_alloc.h\"\n+#include \"vk_common_entrypoints.h\"\n+#include \"vk_dispatch_table.h\"\n+#include \"vk_extensions.h\"\n+\n+const struct vk_instance_extension_table wrapper_instance_extensions = {\n+   .KHR_get_surface_capabilities2 = true,\n+   .EXT_surface_maintenance1 = true,\n+   .KHR_surface_protected_capabilities = true,\n+   .KHR_surface = true,\n+   .EXT_swapchain_colorspace = true,\n+#ifdef VK_USE_PLATFORM_ANDROID_KHR\n+   .KHR_android_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_XCB_KHR\n+   .KHR_xcb_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_XLIB_KHR\n+   .KHR_xlib_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n+   .KHR_wayland_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_DISPLAY_KHR\n+   .KHR_display = true,\n+   .KHR_get_display_properties2 = true,\n+   .EXT_display_surface_counter = true,\n+   .EXT_acquire_drm_display = true,\n+   .EXT_direct_mode_display = true,\n+#endif\n+   .EXT_headless_surface = true,\n+   .EXT_debug_utils = true,\n+   .EXT_debug_report = true,\n+};\n+\n+static void *vulkan_library_handle;\n+static PFN_vkCreateInstance create_instance;\n+static PFN_vkGetInstanceProcAddr get_instance_proc_addr;\n+static PFN_vkEnumerateInstanceVersion enumerate_instance_version;\n+static PFN_vkEnumerateInstanceExtensionProperties enumerate_instance_extension_properties;\n+static struct vk_instance_extension_table *supported_instance_extensions;\n+\n+#ifdef __LP64__\n+#define DEFAULT_VULKAN_PATH \"/system/lib64/libvulkan.so\"\n+#else\n+#define DEFAULT_VULKAN_PATH \"/system/lib/libvulkan.so\"\n+#endif\n+\n+#include <dlfcn.h>\n+\n+static bool vulkan_library_init()\n+{\n+   if (vulkan_library_handle)\n+      return true;\n+\n+   const char *env = getenv(\"WRAPPER_VULKAN_PATH\");\n+   vulkan_library_handle = dlopen(env ? env : DEFAULT_VULKAN_PATH,\n+                                  RTLD_LOCAL | RTLD_NOW);\n+\n+   if (vulkan_library_handle) {\n+      create_instance = dlsym(vulkan_library_handle, \"vkCreateInstance\");\n+      get_instance_proc_addr = dlsym(vulkan_library_handle,\n+                                     \"vkGetInstanceProcAddr\");\n+      enumerate_instance_version = dlsym(vulkan_library_handle,\n+                                         \"vkEnumerateInstanceVersion\");\n+      enumerate_instance_extension_properties =\n+         dlsym(vulkan_library_handle, \"vkEnumerateInstanceExtensionProperties\");\n+   }\n+   else {\n+      fprintf(stderr, \"%s\", dlerror());\n+   }\n+\n+   return vulkan_library_handle ? true : false;\n+}\n+\n+static VkResult wrapper_vulkan_init()\n+{\n+   VkExtensionProperties props[VK_INSTANCE_EXTENSION_COUNT];\n+   uint32_t prop_count = VK_INSTANCE_EXTENSION_COUNT;\n+   VkResult result;\n+\n+   if (supported_instance_extensions)\n+      return VK_SUCCESS;\n+\n+   if (!vulkan_library_init())\n+      return VK_ERROR_INCOMPATIBLE_DRIVER;\n+\n+   result = enumerate_instance_extension_properties(NULL, &prop_count, props);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   supported_instance_extensions = malloc(sizeof(*supported_instance_extensions));\n+   if (!supported_instance_extensions)\n+      return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+   *supported_instance_extensions = wrapper_instance_extensions;\n+\n+   for(int i = 0; i < prop_count; i++) {\n+      int idx;\n+      for (idx = 0; idx < VK_INSTANCE_EXTENSION_COUNT; idx++) {\n+         if (strcmp(vk_instance_extensions[idx].extensionName,\n+                    props[i].extensionName) == 0)\n+            break;\n+      }\n+\n+      if (idx >= VK_INSTANCE_EXTENSION_COUNT)\n+         continue;\n+\n+      supported_instance_extensions->extensions[idx] = true;\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_EnumerateInstanceVersion(uint32_t* pApiVersion)\n+{\n+\n+   if (!vulkan_library_init())\n+      return vk_error(NULL, VK_ERROR_INCOMPATIBLE_DRIVER);\n+\n+   return enumerate_instance_version(pApiVersion);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_EnumerateInstanceExtensionProperties(const char* pLayerName,\n+                                             uint32_t* pPropertyCount,\n+                                             VkExtensionProperties* pProperties)\n+{\n+   VkResult result;\n+\n+   result = wrapper_vulkan_init();\n+   if (result != VK_SUCCESS)\n+      return vk_error(NULL, result);\n+\n+   return vk_enumerate_instance_extension_properties(supported_instance_extensions,\n+                                                     pPropertyCount,\n+                                                     pProperties);\n+}\n+\n+static inline void\n+set_wrapper_required_extensions(const struct vk_instance *instance,\n+                                uint32_t *enable_extension_count,\n+                                const char **enable_extensions)\n+{\n+   uint32_t count = *enable_extension_count;\n+#define REQUIRED_EXTENSION(name) \\\n+   assert (count < VK_INSTANCE_EXTENSION_COUNT); \\\n+   if (!instance->enabled_extensions.name && \\\n+       supported_instance_extensions->name) { \\\n+      enable_extensions[count++] = \"VK_\" #name; \\\n+   }\n+   REQUIRED_EXTENSION(KHR_get_physical_device_properties2);\n+   REQUIRED_EXTENSION(KHR_external_fence_capabilities);\n+   REQUIRED_EXTENSION(KHR_external_memory_capabilities);\n+   REQUIRED_EXTENSION(KHR_external_semaphore_capabilities);\n+#undef REQUIRED_EXTENSION\n+   *enable_extension_count = count;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,\n+                       const VkAllocationCallbacks *pAllocator,\n+                       VkInstance *pInstance)\n+{\n+   const char *wrapper_enable_extensions[VK_INSTANCE_EXTENSION_COUNT];\n+   uint32_t wrapper_enable_extension_count = 0;\n+   VkInstanceCreateInfo wrapper_create_info = *pCreateInfo;\n+   struct vk_instance_dispatch_table dispatch_table;\n+   struct wrapper_instance *instance;\n+   VkResult result;\n+\n+   result = wrapper_vulkan_init();\n+   if (result != VK_SUCCESS)\n+      return vk_error(NULL, result);\n+\n+   instance = vk_zalloc2(vk_default_allocator(), pAllocator, sizeof(*instance),\n+                         8, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);\n+   if (!instance)\n+      return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   vk_instance_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wrapper_instance_entrypoints, true);\n+   vk_instance_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wsi_instance_entrypoints, false);\n+\n+   result = vk_instance_init(&instance->vk, supported_instance_extensions,\n+                             &dispatch_table, pCreateInfo,\n+                             pAllocator ? pAllocator : vk_default_allocator());\n+\n+   if (result != VK_SUCCESS) {\n+      vk_free2(vk_default_allocator(), pAllocator, instance);\n+      return vk_error(NULL, result);\n+   }\n+\n+   instance->vk.physical_devices.enumerate = enumerate_physical_device;\n+   instance->vk.physical_devices.destroy = destroy_physical_device;\n+\n+   for (int idx = 0; idx < pCreateInfo->enabledExtensionCount; idx++) {\n+      if (wrapper_instance_extensions.extensions[idx])\n+         continue;\n+\n+      if (!instance->vk.enabled_extensions.extensions[idx])\n+         continue;\n+\n+      wrapper_enable_extensions[wrapper_enable_extension_count++] =\n+         vk_instance_extensions[idx].extensionName;\n+   }\n+\n+   set_wrapper_required_extensions(&instance->vk,\n+                                   &wrapper_enable_extension_count,\n+                                   wrapper_enable_extensions);\n+\n+   wrapper_create_info.enabledExtensionCount = wrapper_enable_extension_count;\n+   wrapper_create_info.ppEnabledExtensionNames = wrapper_enable_extensions;\n+\n+   result = create_instance(&wrapper_create_info, pAllocator,\n+                            &instance->dispatch_handle);\n+   if (result != VK_SUCCESS) {\n+      vk_instance_finish(&instance->vk);\n+      vk_free2(vk_default_allocator(), pAllocator, instance);\n+      return vk_error(NULL, result);\n+   }\n+   vk_instance_dispatch_table_load(&instance->dispatch_table,\n+                                   get_instance_proc_addr,\n+                                   instance->dispatch_handle);\n+\n+   *pInstance = wrapper_instance_to_handle(instance);\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DestroyInstance(VkInstance _instance,\n+                        const VkAllocationCallbacks *pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_instance, instance, _instance);\n+   instance->dispatch_table.DestroyInstance(instance->dispatch_handle,\n+                                            pAllocator);\n+   vk_instance_finish(&instance->vk);\n+   vk_free2(&instance->vk.alloc, pAllocator, instance);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DebugReportMessageEXT(VkInstance _instance,\n+                                VkDebugReportFlagsEXT flags,\n+                                VkDebugReportObjectTypeEXT objectType,\n+                                uint64_t object,\n+                                size_t location,\n+                                int32_t messageCode,\n+                                const char* pLayerPrefix,\n+                                const char* pMessage)\n+{\n+   VK_FROM_HANDLE(wrapper_instance, instance, _instance);\n+\n+   switch (objectType) {\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:\n+      break;\n+   default:\n+      object = (uint64_t)VK_NULL_HANDLE;\n+   }\n+\n+   vk_common_DebugReportMessageEXT(instance->dispatch_handle, flags,\n+                                   objectType, object, location, messageCode,\n+                                   pLayerPrefix, pMessage);\n+}\n+\n+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+wrapper_GetInstanceProcAddr(VkInstance _instance,\n+                            const char *pName)\n+{\n+   VK_FROM_HANDLE(wrapper_instance, instance, _instance);\n+   return vk_instance_get_proc_addr(&instance->vk,\n+                                    &wrapper_instance_entrypoints,\n+                                    pName);\n+}\n+\n+PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+vk_icdGetInstanceProcAddr(VkInstance instance,\n+                          const char *pName);\n+\n+\n+PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+vk_icdGetInstanceProcAddr(VkInstance instance,\n+                          const char *pName)\n+{\n+   return wrapper_GetInstanceProcAddr(instance, pName);\n+}\ndiff --git a/src/vulkan/wrapper/wrapper_physical_device.c b/src/vulkan/wrapper/wrapper_physical_device.c\nnew file mode 100644\nindex 00000000000..2f0880dfb5b\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_physical_device.c\n@@ -0,0 +1,195 @@\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"wrapper_trampolines.h\"\n+#include \"vk_alloc.h\"\n+#include \"vk_common_entrypoints.h\"\n+#include \"vk_dispatch_table.h\"\n+#include \"vk_extensions.h\"\n+#include \"vk_physical_device.h\"\n+#include \"vk_util.h\"\n+#include \"wsi_common.h\"\n+#include \"util/os_misc.h\"\n+\n+static VkResult\n+wrapper_setup_device_extensions(struct wrapper_physical_device *pdevice) {\n+   struct vk_device_extension_table *exts = &pdevice->vk.supported_extensions;\n+   VkExtensionProperties pdevice_extensions[VK_DEVICE_EXTENSION_COUNT];\n+   uint32_t pdevice_extension_count = VK_DEVICE_EXTENSION_COUNT;\n+   VkResult result;\n+\n+   result = pdevice->dispatch_table.EnumerateDeviceExtensionProperties(\n+      pdevice->dispatch_handle, NULL, &pdevice_extension_count, pdevice_extensions);\n+\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   *exts = wrapper_device_extensions;\n+\n+   for (int i = 0; i < pdevice_extension_count; i++) {\n+      int idx;\n+      for (idx = 0; idx < VK_DEVICE_EXTENSION_COUNT; idx++) {\n+         if (strcmp(vk_device_extensions[idx].extensionName,\n+                     pdevice_extensions[i].extensionName) == 0)\n+            break;\n+      }\n+\n+      if (idx >= VK_DEVICE_EXTENSION_COUNT)\n+         continue;\n+\n+      if (wrapper_filter_extensions.extensions[idx])\n+         continue;\n+\n+      exts->extensions[idx] = true;\n+   }\n+\n+   exts->KHR_present_wait = exts->KHR_timeline_semaphore;\n+\n+   return VK_SUCCESS;\n+}\n+\n+static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+wrapper_wsi_proc_addr(VkPhysicalDevice physicalDevice, const char *pName)\n+{\n+   VK_FROM_HANDLE(vk_physical_device, pdevice, physicalDevice);\n+   return vk_instance_get_proc_addr_unchecked(pdevice->instance, pName);\n+}\n+\n+VkResult enumerate_physical_device(struct vk_instance *_instance)\n+{\n+   struct wrapper_instance *instance = (struct wrapper_instance *)_instance;\n+   VkPhysicalDevice physical_devices[16];\n+   uint32_t physical_device_count = 16;\n+   VkResult result;\n+\n+   result = instance->dispatch_table.EnumeratePhysicalDevices(\n+      instance->dispatch_handle, &physical_device_count, physical_devices);\n+\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   for (int i = 0; i < physical_device_count; i++) {\n+      PFN_vkGetInstanceProcAddr get_instance_proc_addr;\n+      struct wrapper_physical_device *pdevice;\n+\n+      pdevice = vk_zalloc(&_instance->alloc, sizeof(*pdevice), 8,\n+                          VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);\n+      if (!pdevice)\n+         return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+      struct vk_physical_device_dispatch_table dispatch_table;\n+      vk_physical_device_dispatch_table_from_entrypoints(\n+         &dispatch_table, &wrapper_physical_device_entrypoints, true);\n+      vk_physical_device_dispatch_table_from_entrypoints(\n+         &dispatch_table, &wsi_physical_device_entrypoints, false);\n+      vk_physical_device_dispatch_table_from_entrypoints(\n+         &dispatch_table, &wrapper_physical_device_trampolines, false);\n+\n+      result = vk_physical_device_init(&pdevice->vk,\n+                                       &instance->vk,\n+                                       NULL, NULL, NULL,\n+                                       &dispatch_table);\n+      if (result != VK_SUCCESS) {\n+         vk_free(&_instance->alloc, pdevice);\n+         return result;\n+      }\n+\n+      pdevice->instance = instance;\n+      pdevice->dispatch_handle = physical_devices[i];\n+      get_instance_proc_addr = instance->dispatch_table.GetInstanceProcAddr;\n+\n+      vk_physical_device_dispatch_table_load(&pdevice->dispatch_table,\n+                                             get_instance_proc_addr,\n+                                             instance->dispatch_handle);\n+\n+      wrapper_setup_device_extensions(pdevice);\n+      wrapper_setup_device_features(pdevice);\n+\n+      struct vk_features *supported_features = &pdevice->vk.supported_features;\n+      pdevice->backup_supported_features = *supported_features;\n+      supported_features->presentId = true;\n+      supported_features->presentWait = supported_features->timelineSemaphore;\n+      supported_features->swapchainMaintenance1 = true;\n+      supported_features->imageCompressionControlSwapchain = false;\n+      supported_features->memoryMapPlaced = true;\n+      supported_features->memoryUnmapReserve = true;\n+      supported_features->textureCompressionBC = true;\n+\n+      result = wsi_device_init(&pdevice->wsi_device,\n+                               wrapper_physical_device_to_handle(pdevice),\n+                               wrapper_wsi_proc_addr, &_instance->alloc, -1,\n+                               NULL, &(struct wsi_device_options){});\n+      if (result != VK_SUCCESS) {\n+         vk_physical_device_finish(&pdevice->vk);\n+         vk_free(&_instance->alloc, pdevice);\n+         return result;\n+      }\n+      pdevice->vk.wsi_device = &pdevice->wsi_device;\n+      pdevice->wsi_device.force_bgra8_unorm_first = true;\n+#ifdef __ANDROID__\n+      pdevice->wsi_device.wants_ahardware_buffer = true;\n+#endif\n+\n+      pdevice->dispatch_table.GetPhysicalDeviceMemoryProperties(\n+         pdevice->dispatch_handle, &pdevice->memory_properties);\n+\n+      list_addtail(&pdevice->vk.link, &_instance->physical_devices.list);\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+void destroy_physical_device(struct vk_physical_device *pdevice) {\n+   wsi_device_finish(pdevice->wsi_device, &pdevice->instance->alloc);\n+   vk_physical_device_finish(pdevice);\n+   vk_free(&pdevice->instance->alloc, pdevice);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,\n+                                           const char* pLayerName,\n+                                           uint32_t* pPropertyCount,\n+                                           VkExtensionProperties* pProperties)\n+{\n+   return vk_common_EnumerateDeviceExtensionProperties(physicalDevice,\n+                                                       pLayerName,\n+                                                       pPropertyCount,\n+                                                       pProperties);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,\n+                                  VkPhysicalDeviceFeatures* pFeatures)\n+{\n+   return vk_common_GetPhysicalDeviceFeatures(physicalDevice, pFeatures);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,\n+                                   VkPhysicalDeviceFeatures2* pFeatures) {\n+   vk_common_GetPhysicalDeviceFeatures2(physicalDevice, pFeatures);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,\n+                                     VkPhysicalDeviceProperties2* pProperties)\n+{\n+   VK_FROM_HANDLE(wrapper_physical_device, pdevice, physicalDevice);\n+   pdevice->dispatch_table.GetPhysicalDeviceProperties2(\n+      pdevice->dispatch_handle, pProperties);\n+\n+   vk_foreach_struct(prop, pProperties->pNext) {\n+      switch (prop->sType) {\n+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT:\n+      {\n+         VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *placed_prop =\n+               (VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *)prop;\n+         uint64_t os_page_size;\n+         os_get_page_size(&os_page_size);\n+         placed_prop->minPlacedMemoryMapAlignment = os_page_size;\n+         break;\n+      }\n+      default:\n+         break;\n+      }\n+   }\n+}\ndiff --git a/src/vulkan/wrapper/wrapper_private.h b/src/vulkan/wrapper/wrapper_private.h\nnew file mode 100644\nindex 00000000000..696cd937d2c\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_private.h\n@@ -0,0 +1,85 @@\n+#include \"vulkan/runtime/vk_instance.h\"\n+#include \"vulkan/runtime/vk_physical_device.h\"\n+#include \"vulkan/runtime/vk_device.h\"\n+#include \"vulkan/runtime/vk_queue.h\"\n+#include \"vulkan/runtime/vk_command_buffer.h\"\n+#include \"vulkan/runtime/vk_log.h\"\n+#include \"vulkan/util/vk_dispatch_table.h\"\n+#include \"vulkan/wsi/wsi_common.h\"\n+#include \"util/hash_table.h\"\n+\n+extern const struct vk_instance_extension_table wrapper_instance_extensions;\n+extern const struct vk_device_extension_table wrapper_device_extensions;\n+extern const struct vk_device_extension_table wrapper_filter_extensions;\n+\n+struct wrapper_instance {\n+   struct vk_instance vk;\n+\n+   VkInstance dispatch_handle;\n+   struct vk_instance_dispatch_table dispatch_table;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_instance, vk.base, VkInstance,\n+                       VK_OBJECT_TYPE_INSTANCE)\n+\n+struct wrapper_physical_device {\n+   struct vk_physical_device vk;\n+\n+   VkPhysicalDevice dispatch_handle;\n+   VkPhysicalDeviceMemoryProperties memory_properties;\n+   struct wsi_device wsi_device;\n+   struct wrapper_instance *instance;\n+   struct vk_features backup_supported_features;\n+   struct vk_physical_device_dispatch_table dispatch_table;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_physical_device, vk.base, VkPhysicalDevice,\n+                       VK_OBJECT_TYPE_PHYSICAL_DEVICE)\n+\n+struct wrapper_queue {\n+   struct vk_queue vk;\n+\n+   struct wrapper_device *device;\n+   VkQueue dispatch_handle;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_queue, vk.base, VkQueue,\n+                       VK_OBJECT_TYPE_QUEUE)\n+\n+struct wrapper_device {\n+   struct vk_device vk;\n+\n+   VkDevice dispatch_handle;\n+   struct list_head command_buffers;\n+   struct hash_table *memorys;\n+   struct wrapper_physical_device *physical;\n+   struct vk_device_dispatch_table dispatch_table;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_device, vk.base, VkDevice,\n+                       VK_OBJECT_TYPE_DEVICE)\n+\n+struct wrapper_command_buffer {\n+   struct vk_command_buffer vk;\n+\n+   struct wrapper_device *device;\n+   struct list_head link;\n+   VkCommandPool pool;\n+   VkCommandBuffer dispatch_handle;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_command_buffer, vk.base, VkCommandBuffer,\n+                       VK_OBJECT_TYPE_COMMAND_BUFFER)\n+\n+struct wrapper_device_memory {\n+   struct AHardwareBuffer *ahardware_buffer;\n+   void *map_address;\n+   size_t map_size;\n+   size_t alloc_size;\n+};\n+\n+VkResult enumerate_physical_device(struct vk_instance *_instance);\n+void destroy_physical_device(struct vk_physical_device *pdevice);\n+\n+void\n+wrapper_setup_device_features(struct wrapper_physical_device *physical_device);\ndiff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c\nindex 898bdd7bcdb..a11b6bd64bc 100644\n--- a/src/vulkan/wsi/wsi_common.c\n+++ b/src/vulkan/wsi/wsi_common.c\n@@ -201,6 +201,8 @@ wsi_device_init(struct wsi_device *wsi,\n    WSI_GET_CB(GetPhysicalDeviceFormatProperties2);\n    WSI_GET_CB(GetPhysicalDeviceImageFormatProperties2);\n    WSI_GET_CB(GetSemaphoreFdKHR);\n+   WSI_GET_CB(ImportSemaphoreFdKHR);\n+   WSI_GET_CB(ImportFenceFdKHR);\n    WSI_GET_CB(ResetFences);\n    WSI_GET_CB(QueueSubmit);\n    WSI_GET_CB(WaitForFences);\n@@ -1167,8 +1169,16 @@ wsi_signal_semaphore_for_image(struct vk_device *device,\n                                const struct wsi_image *image,\n                                VkSemaphore _semaphore)\n {\n-   if (device->physical->supported_sync_types == NULL)\n-      return VK_SUCCESS;\n+   if (device->physical->supported_sync_types == NULL) {\n+      const VkImportSemaphoreFdInfoKHR import_fd_info = {\n+         .sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,\n+         .semaphore = _semaphore,\n+         .handleType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,\n+         .fd = -1,\n+         .flags = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,\n+      };\n+      return chain->wsi->ImportSemaphoreFdKHR(chain->device, &import_fd_info);\n+   }\n \n    VK_FROM_HANDLE(vk_semaphore, semaphore, _semaphore);\n \n@@ -1203,8 +1213,16 @@ wsi_signal_fence_for_image(struct vk_device *device,\n                            const struct wsi_image *image,\n                            VkFence _fence)\n {\n-   if (device->physical->supported_sync_types == NULL)\n-      return VK_SUCCESS;\n+   if (device->physical->supported_sync_types == NULL) {\n+      const VkImportFenceFdInfoKHR import_fd_info = {\n+         .sType = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,\n+         .fence = _fence,\n+         .handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,\n+         .fd = -1,\n+         .flags = VK_FENCE_IMPORT_TEMPORARY_BIT,\n+      };\n+      return chain->wsi->ImportFenceFdKHR(chain->device, &import_fd_info);\n+   }\n \n    VK_FROM_HANDLE(vk_fence, fence, _fence);\n \ndiff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h\nindex 014cb718b17..2316d3156d0 100644\n--- a/src/vulkan/wsi/wsi_common.h\n+++ b/src/vulkan/wsi/wsi_common.h\n@@ -263,6 +263,8 @@ struct wsi_device {\n    WSI_CB(GetPhysicalDeviceFormatProperties2);\n    WSI_CB(GetPhysicalDeviceImageFormatProperties2);\n    WSI_CB(GetSemaphoreFdKHR);\n+   WSI_CB(ImportSemaphoreFdKHR);\n+   WSI_CB(ImportFenceFdKHR);\n    WSI_CB(ResetFences);\n    WSI_CB(QueueSubmit);\n    WSI_CB(WaitForFences);\n-- \n2.47.0\n\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/05-vulkan-x11-termux-x11-support.patch",
    "content": "From 7c2187cfd58354f937cb7de4727ef7040d1acb9f Mon Sep 17 00:00:00 2001\nFrom: xMeM <haooy@outlook.com>\nDate: Fri, 8 Nov 2024 17:21:21 +0800\nSubject: [PATCH 2/2] vulkan/x11: termux-x11 support\n\nSigned-off-by: xMeM <haooy@outlook.com>\n---\n src/vulkan/wsi/wsi_common.c         | 314 +++++++++++++++++++++++++++-\n src/vulkan/wsi/wsi_common.h         |   7 +\n src/vulkan/wsi/wsi_common_private.h |   8 +\n src/vulkan/wsi/wsi_common_x11.c     |  92 ++++----\n 4 files changed, 377 insertions(+), 44 deletions(-)\n\ndiff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c\nindex a11b6bd64bc..77755e96b93 100644\n--- a/src/vulkan/wsi/wsi_common.c\n+++ b/src/vulkan/wsi/wsi_common.c\n@@ -47,6 +47,10 @@\n #include <unistd.h>\n #endif\n \n+#ifdef __ANDROID__\n+#include <android/hardware_buffer.h>\n+#endif\n+\n uint64_t WSI_DEBUG;\n \n static const struct debug_control debug_control[] = {\n@@ -55,6 +59,7 @@ static const struct debug_control debug_control[] = {\n    { \"noshm\",        WSI_DEBUG_NOSHM },\n    { \"linear\",       WSI_DEBUG_LINEAR },\n    { \"dxgi\",         WSI_DEBUG_DXGI },\n+   { \"blit\",         WSI_DEBUG_BLIT },\n    { NULL, },\n };\n \n@@ -86,6 +91,7 @@ wsi_device_init(struct wsi_device *wsi,\n    wsi->sw = device_options->sw_device || (WSI_DEBUG & WSI_DEBUG_SW);\n    wsi->wants_linear = (WSI_DEBUG & WSI_DEBUG_LINEAR) != 0;\n    wsi->x11.extra_xwayland_image = device_options->extra_xwayland_image;\n+   wsi->needs_blit = (WSI_DEBUG & WSI_DEBUG_BLIT) != 0;\n #define WSI_GET_CB(func) \\\n    PFN_vk##func func = (PFN_vk##func)proc_addr(pdevice, \"vk\" #func)\n    WSI_GET_CB(GetPhysicalDeviceExternalSemaphoreProperties);\n@@ -99,12 +105,19 @@ wsi_device_init(struct wsi_device *wsi,\n    wsi->pci_bus_info.sType =\n       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;\n    wsi->pci_bus_info.pNext = &wsi->drm_info;\n+   VkPhysicalDeviceDriverProperties pddp = {\n+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,\n+      .pNext = &wsi->pci_bus_info,\n+   };\n    VkPhysicalDeviceProperties2 pdp2 = {\n       .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,\n-      .pNext = &wsi->pci_bus_info,\n+      .pNext = &pddp,\n    };\n    GetPhysicalDeviceProperties2(pdevice, &pdp2);\n \n+   if (pddp.driverID == VK_DRIVER_ID_ARM_PROPRIETARY)\n+      wsi->needs_blit = true;\n+\n    wsi->maxImageDimension2D = pdp2.properties.limits.maxImageDimension2D;\n    assert(pdp2.properties.limits.optimalBufferCopyRowPitchAlignment <= UINT32_MAX);\n    wsi->optimalBufferCopyRowPitchAlignment =\n@@ -210,6 +223,10 @@ wsi_device_init(struct wsi_device *wsi,\n    WSI_GET_CB(UnmapMemory);\n    if (wsi->khr_present_wait)\n       WSI_GET_CB(WaitSemaphores);\n+#ifdef __ANDROID__\n+   WSI_GET_CB(GetMemoryAndroidHardwareBufferANDROID);\n+   WSI_GET_CB(GetAndroidHardwareBufferPropertiesANDROID);\n+#endif\n #undef WSI_GET_CB\n \n #ifdef VK_USE_PLATFORM_XCB_KHR\n@@ -366,6 +383,12 @@ get_blit_type(const struct wsi_device *wsi,\n       return wsi_cpu_image_needs_buffer_blit(wsi, cpu_params) ?\n          WSI_SWAPCHAIN_BUFFER_BLIT : WSI_SWAPCHAIN_NO_BLIT;\n    }\n+#ifdef __ANDROID__\n+   case WSI_IMAGE_TYPE_AHB: {\n+      return wsi->needs_blit ? WSI_SWAPCHAIN_IMAGE_BLIT :\n+         WSI_SWAPCHAIN_NO_BLIT;\n+   }\n+#endif\n #ifdef HAVE_LIBDRM\n    case WSI_IMAGE_TYPE_DRM: {\n       const struct wsi_drm_image_params *drm_params =\n@@ -386,6 +409,14 @@ get_blit_type(const struct wsi_device *wsi,\n    }\n }\n \n+#ifdef __ANDROID__\n+static VkResult\n+wsi_configure_ahb_image(const struct wsi_swapchain *chain,\n+                        const VkSwapchainCreateInfoKHR *pCreateInfo,\n+                        const struct wsi_base_image_params *params,\n+                        struct wsi_image_info *info);\n+#endif\n+\n static VkResult\n configure_image(const struct wsi_swapchain *chain,\n                 const VkSwapchainCreateInfoKHR *pCreateInfo,\n@@ -399,6 +430,11 @@ configure_image(const struct wsi_swapchain *chain,\n          container_of(params, const struct wsi_cpu_image_params, base);\n       return wsi_configure_cpu_image(chain, pCreateInfo, cpu_params, info);\n    }\n+#ifdef __ANDROID__\n+   case WSI_IMAGE_TYPE_AHB: {\n+      return wsi_configure_ahb_image(chain, pCreateInfo, params, info);\n+   }\n+#endif\n #ifdef HAVE_LIBDRM\n    case WSI_IMAGE_TYPE_DRM: {\n       const struct wsi_drm_image_params *drm_params =\n@@ -698,6 +734,12 @@ wsi_destroy_image_info(const struct wsi_swapchain *chain,\n       vk_free(&chain->alloc, info->modifier_props);\n       info->modifier_props = NULL;\n    }\n+#ifdef __ANDROID__\n+   if (info->ahb_desc != NULL) {\n+      vk_free(&chain->alloc, info->ahb_desc);\n+      info->ahb_desc = NULL;\n+   }\n+#endif\n }\n \n VkResult\n@@ -760,6 +802,11 @@ wsi_destroy_image(const struct wsi_swapchain *chain,\n {\n    const struct wsi_device *wsi = chain->wsi;\n \n+#ifdef __ANDROID__\n+   if (image->ahb)\n+      AHardwareBuffer_release(image->ahb);\n+#endif\n+\n #ifndef _WIN32\n    if (image->dma_buf_fd >= 0)\n       close(image->dma_buf_fd);\n@@ -2161,6 +2208,162 @@ wsi_create_cpu_linear_image_mem(const struct wsi_swapchain *chain,\n    return VK_SUCCESS;\n }\n \n+#ifdef __ANDROID__\n+static VkResult\n+wsi_create_ahb_image_mem(const struct wsi_swapchain *chain,\n+                         const struct wsi_image_info *info,\n+                         struct wsi_image *image)\n+{\n+   const struct wsi_device *wsi = chain->wsi;\n+   VkAndroidHardwareBufferPropertiesANDROID ahb_props;\n+   VkResult result;\n+\n+   if (AHardwareBuffer_allocate(info->ahb_desc, &image->ahb))\n+      return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+   ahb_props = (VkAndroidHardwareBufferPropertiesANDROID) {\n+      .sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,\n+   };\n+\n+   result = wsi->GetAndroidHardwareBufferPropertiesANDROID(\n+      chain->device, image->ahb, &ahb_props);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   const VkMemoryDedicatedAllocateInfo memory_dedicated_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n+      .image = image->image,\n+      .buffer = VK_NULL_HANDLE,\n+   };\n+   VkImportAndroidHardwareBufferInfoANDROID impory_memory_info = {\n+      .sType = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+      .pNext = &memory_dedicated_info,\n+      .buffer = image->ahb,\n+   };\n+   VkMemoryAllocateInfo memory_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .pNext = &impory_memory_info,\n+      .allocationSize = ahb_props.allocationSize,\n+      .memoryTypeIndex =\n+         wsi_select_device_memory_type(wsi, ahb_props.memoryTypeBits),\n+   };\n+\n+   result = wsi->AllocateMemory(chain->device, &memory_info,\n+                                &chain->alloc, &image->memory);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   image->num_planes = 1;\n+   image->drm_modifier = 0;\n+\n+   return VK_SUCCESS;\n+}\n+\n+static VkResult\n+wsi_create_ahb_blit_context(const struct wsi_swapchain *chain,\n+                            const struct wsi_image_info *info,\n+                            struct wsi_image *image)\n+{\n+   assert(chain->blit.type == WSI_SWAPCHAIN_IMAGE_BLIT);\n+\n+   const VkExternalMemoryHandleTypeFlags handle_types =\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;\n+\n+   const struct wsi_device *wsi = chain->wsi;\n+   VkResult result;\n+\n+   const VkExternalMemoryImageCreateInfo image_external_info = {\n+      .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,\n+      .handleTypes = handle_types,\n+   };\n+   const VkImageCreateInfo image_info = {\n+      .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,\n+      .pNext = &image_external_info,\n+      .flags = 0u,\n+      .extent = info->create.extent,\n+      .format = VK_FORMAT_R8G8B8A8_UNORM,\n+      .imageType = VK_IMAGE_TYPE_2D,\n+      .mipLevels = 1,\n+      .arrayLayers = 1,\n+      .samples = VK_SAMPLE_COUNT_1_BIT,\n+      .tiling = VK_IMAGE_TILING_OPTIMAL,\n+      .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT,\n+      .sharingMode = VK_SHARING_MODE_EXCLUSIVE,\n+      .queueFamilyIndexCount = info->create.queueFamilyIndexCount,\n+      .pQueueFamilyIndices = info->create.pQueueFamilyIndices,\n+      .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED,\n+   };\n+   result = wsi->CreateImage(chain->device, &image_info,\n+                             &chain->alloc, &image->blit.image);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   VkMemoryDedicatedAllocateInfo img_mem_dedicated_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n+      .pNext = NULL,\n+      .image = image->blit.image,\n+      .buffer = VK_NULL_HANDLE,\n+   };\n+   VkExportMemoryAllocateInfo export_info = {\n+      .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,\n+      .pNext = &img_mem_dedicated_info,\n+      .handleTypes = handle_types,\n+   };\n+   VkMemoryAllocateInfo buf_mem_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .pNext = &export_info,\n+      .allocationSize = 0,\n+      .memoryTypeIndex = 0,\n+   };\n+\n+   result = wsi->AllocateMemory(chain->device, &buf_mem_info,\n+                                &chain->alloc, &image->blit.memory);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   result = wsi->BindImageMemory(chain->device, image->blit.image,\n+                                 image->blit.memory, 0);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   VkMemoryGetAndroidHardwareBufferInfoANDROID get_ahb_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+      .pNext = NULL,\n+      .memory = image->blit.memory,\n+   };\n+\n+   result = wsi->GetMemoryAndroidHardwareBufferANDROID(\n+      chain->device, &get_ahb_info, &image->ahb);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   VkMemoryRequirements reqs;\n+   wsi->GetImageMemoryRequirements(chain->device, image->image, &reqs);\n+\n+   const VkMemoryDedicatedAllocateInfo memory_dedicated_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n+      .image = image->image,\n+   };\n+   const VkMemoryAllocateInfo memory_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .pNext = &memory_dedicated_info,\n+      .allocationSize = reqs.size,\n+      .memoryTypeIndex =\n+         wsi_select_device_memory_type(wsi, reqs.memoryTypeBits),\n+   };\n+\n+   result = wsi->AllocateMemory(chain->device, &memory_info,\n+                                &chain->alloc, &image->memory);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   image->num_planes = 1;\n+\n+   return VK_SUCCESS;\n+}\n+\n+#endif\n+\n static VkResult\n wsi_create_cpu_buffer_image_mem(const struct wsi_swapchain *chain,\n                                 const struct wsi_image_info *info,\n@@ -2233,6 +2436,115 @@ wsi_configure_cpu_image(const struct wsi_swapchain *chain,\n    return VK_SUCCESS;\n }\n \n+#ifdef __ANDROID__\n+inline static uint32_t\n+vk_format_to_ahb_format(VkFormat format) {\n+   switch (format) {\n+   case VK_FORMAT_B8G8R8A8_SRGB:\n+   case VK_FORMAT_B8G8R8A8_UNORM:\n+      return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;\n+   case VK_FORMAT_R5G6B5_UNORM_PACK16:\n+      return AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM;\n+   case VK_FORMAT_A2R10G10B10_UNORM_PACK32:\n+      return AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM;\n+   default:\n+      unreachable(\"unsupported format\");\n+   }\n+}\n+#endif\n+\n+#ifdef __ANDROID__\n+static VkResult\n+wsi_configure_ahb_image(const struct wsi_swapchain *chain,\n+                        const VkSwapchainCreateInfoKHR *pCreateInfo,\n+                        const struct wsi_base_image_params *params,\n+                        struct wsi_image_info *info)\n+{\n+   assert(params->image_type == WSI_IMAGE_TYPE_AHB);\n+   assert(chain->blit.type == WSI_SWAPCHAIN_NO_BLIT ||\n+          chain->blit.type == WSI_SWAPCHAIN_IMAGE_BLIT);\n+\n+   VkResult result;\n+\n+   if (chain->blit.type == WSI_SWAPCHAIN_IMAGE_BLIT) {\n+      result = wsi_configure_image(chain, pCreateInfo, 0, info);\n+      if (result != VK_SUCCESS)\n+         return result;\n+\n+      wsi_configure_image_blit_image(chain, info);\n+      info->create_mem = wsi_create_ahb_blit_context;\n+      return VK_SUCCESS;\n+   }\n+\n+   VkExternalMemoryHandleTypeFlags handle_types =\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;\n+\n+   VkPhysicalDeviceImageFormatInfo2 format_info = {\n+      .sType =\n+         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,\n+      .format = pCreateInfo->imageFormat,\n+      .type = VK_IMAGE_TYPE_2D,\n+      .tiling = VK_IMAGE_TILING_OPTIMAL,\n+      .usage = pCreateInfo->imageUsage,\n+      .flags = info->create.flags,\n+   };\n+   VkPhysicalDeviceExternalImageFormatInfo external_format_info =\n+   {\n+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,\n+      .pNext = NULL,\n+      .handleType = handle_types,\n+   };\n+   __vk_append_struct(&format_info, &external_format_info);\n+\n+   VkImageFormatProperties2 format_props = {\n+      .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,\n+   };\n+   VkExternalImageFormatProperties external_format_props = {\n+      .sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,\n+      .pNext = NULL,\n+   };\n+   __vk_append_struct(&format_props, &external_format_props);\n+\n+   result = chain->wsi->GetPhysicalDeviceImageFormatProperties2(\n+      chain->wsi->pdevice, &format_info, &format_props);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   assert(pCreateInfo->imageExtent.width <= format_props.imageFormatProperties.maxExtent.width &&\n+          pCreateInfo->imageExtent.height <= format_props.imageFormatProperties.maxExtent.height);\n+   assert(external_format_props.externalMemoryProperties.externalMemoryFeatures &\n+          VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT);\n+\n+   result = wsi_configure_image(chain, pCreateInfo, handle_types,\n+                                info);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   info->ahb_desc = vk_alloc(&chain->alloc,\n+                             sizeof(AHardwareBuffer_Desc),\n+                             8,\n+                             VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);\n+   if (!info->ahb_desc) {\n+      wsi_destroy_image_info(chain, info);\n+      return VK_ERROR_OUT_OF_HOST_MEMORY;\n+   }\n+\n+   *info->ahb_desc = (AHardwareBuffer_Desc) {\n+      .width = info->create.extent.width,\n+      .height = info->create.extent.height,\n+      .format = vk_format_to_ahb_format(info->create.format),\n+      .layers = info->create.arrayLayers,\n+      .usage = AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT |\n+               AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE |\n+               AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN,\n+   };\n+   info->create.format = VK_FORMAT_UNDEFINED;\n+   info->create_mem = wsi_create_ahb_image_mem;\n+\n+   return VK_SUCCESS;\n+}\n+#endif\n+\n VKAPI_ATTR VkResult VKAPI_CALL\n wsi_WaitForPresentKHR(VkDevice device, VkSwapchainKHR _swapchain,\n                       uint64_t presentId, uint64_t timeout)\ndiff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h\nindex 2316d3156d0..ffa3a94e74c 100644\n--- a/src/vulkan/wsi/wsi_common.h\n+++ b/src/vulkan/wsi/wsi_common.h\n@@ -179,6 +179,9 @@ struct wsi_device {\n \n    bool sw;\n \n+   bool wants_ahardware_buffer;\n+   bool needs_blit;\n+\n    /* Set to true if the implementation is ok with linear WSI images. */\n    bool wants_linear;\n \n@@ -271,6 +274,10 @@ struct wsi_device {\n    WSI_CB(MapMemory);\n    WSI_CB(UnmapMemory);\n    WSI_CB(WaitSemaphores);\n+#ifdef __ANDROID__\n+   WSI_CB(GetMemoryAndroidHardwareBufferANDROID);\n+   WSI_CB(GetAndroidHardwareBufferPropertiesANDROID);\n+#endif\n #undef WSI_CB\n \n     struct wsi_interface *                  wsi[VK_ICD_WSI_PLATFORM_MAX];\ndiff --git a/src/vulkan/wsi/wsi_common_private.h b/src/vulkan/wsi/wsi_common_private.h\nindex b89e962c3ff..c205c4f62c3 100644\n--- a/src/vulkan/wsi/wsi_common_private.h\n+++ b/src/vulkan/wsi/wsi_common_private.h\n@@ -40,6 +40,7 @@ struct wsi_swapchain;\n #define WSI_DEBUG_NOSHM       (1ull << 2)\n #define WSI_DEBUG_LINEAR      (1ull << 3)\n #define WSI_DEBUG_DXGI        (1ull << 4)\n+#define WSI_DEBUG_BLIT        (1ull << 8)\n \n extern uint64_t WSI_DEBUG;\n \n@@ -47,6 +48,7 @@ enum wsi_image_type {\n    WSI_IMAGE_TYPE_CPU,\n    WSI_IMAGE_TYPE_DRM,\n    WSI_IMAGE_TYPE_DXGI,\n+   WSI_IMAGE_TYPE_AHB,\n };\n \n struct wsi_base_image_params {\n@@ -84,6 +86,9 @@ struct wsi_image_info {\n    VkExternalMemoryImageCreateInfo ext_mem;\n    VkImageFormatListCreateInfo format_list;\n    VkImageDrmFormatModifierListCreateInfoEXT drm_mod_list;\n+#ifdef __ANDROID__\n+   struct AHardwareBuffer_Desc *ahb_desc;\n+#endif\n \n    enum wsi_image_type image_type;\n    bool explicit_sync;\n@@ -165,6 +170,9 @@ struct wsi_image {\n    int dma_buf_fd;\n #endif\n    void *cpu_map;\n+#ifdef __ANDROID__\n+   struct AHardwareBuffer *ahb;\n+#endif\n };\n \n struct wsi_swapchain {\ndiff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c\nindex 0c0c489d893..7911e54eae6 100644\n--- a/src/vulkan/wsi/wsi_common_x11.c\n+++ b/src/vulkan/wsi/wsi_common_x11.c\n@@ -22,7 +22,6 @@\n  */\n \n #include <X11/Xlib-xcb.h>\n-#include <X11/xshmfence.h>\n #define XK_MISCELLANY\n #define XK_LATIN1\n #include <X11/keysymdef.h>\n@@ -69,6 +68,11 @@\n #include <sys/shm.h>\n #endif\n \n+#ifdef __ANDROID__\n+#include <android/hardware_buffer.h>\n+#include <sys/socket.h>\n+#endif\n+\n #ifndef XCB_PRESENT_OPTION_ASYNC_MAY_TEAR\n #define XCB_PRESENT_OPTION_ASYNC_MAY_TEAR 16\n #endif\n@@ -1057,7 +1061,6 @@ struct x11_image {\n    xcb_pixmap_t                              pixmap;\n    xcb_xfixes_region_t                       update_region; /* long lived XID */\n    xcb_xfixes_region_t                       update_area;   /* the above or None */\n-   struct xshmfence *                        shm_fence;\n    uint32_t                                  sync_fence;\n    xcb_shm_seg_t                             shmseg;\n    int                                       shmid;\n@@ -1402,8 +1405,6 @@ x11_present_to_x11_dri3(struct x11_swapchain *chain, uint32_t image_index,\n       options |= XCB_PRESENT_OPTION_SUBOPTIMAL;\n #endif\n \n-   xshmfence_reset(image->shm_fence);\n-\n    if (!chain->base.image_info.explicit_sync) {\n       ++chain->sent_image_count;\n       assert(chain->sent_image_count <= chain->base.image_count);\n@@ -1771,9 +1772,6 @@ x11_acquire_next_image(struct wsi_swapchain *anv_chain,\n       return result;\n \n    assert(*image_index < chain->base.image_count);\n-   if (chain->images[*image_index].shm_fence &&\n-       !chain->base.image_info.explicit_sync)\n-      xshmfence_await(chain->images[*image_index].shm_fence);\n \n    return result;\n }\n@@ -2098,6 +2096,17 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n       /* If the image has a modifier, we must have DRI3 v1.2. */\n       assert(chain->has_dri3_modifiers);\n \n+#ifdef __ANDROID__\n+      int sock_fds[2] = { -1, -1 };\n+      if (image->base.ahb) {\n+         if (socketpair(AF_UNIX, SOCK_STREAM, 0, sock_fds) < 0) {\n+            return VK_ERROR_OUT_OF_HOST_MEMORY;\n+         }\n+         AHardwareBuffer_sendHandleToUnixSocket(image->base.ahb, sock_fds[0]);\n+         image->base.dma_buf_fd = sock_fds[1];\n+         image->base.drm_modifier = 1255;\n+      }\n+#endif\n       /* XCB requires an array of file descriptors but we only have one */\n       int fds[4] = { -1, -1, -1, -1 };\n       for (int i = 0; i < image->base.num_planes; i++) {\n@@ -2128,6 +2137,16 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n                                               chain->depth, bpp,\n                                               image->base.drm_modifier,\n                                               fds);\n+#ifdef __ANDROID__\n+      if (image->base.ahb) {\n+         xcb_flush(chain->conn);\n+         read(sock_fds[0], &image->base.dma_buf_fd, 1);\n+         for (int i = 0; i < ARRAY_SIZE(sock_fds); i++) {\n+            close(sock_fds[i]);\n+         }\n+         image->base.dma_buf_fd = -1;\n+      }\n+#endif\n    } else\n #endif\n    {\n@@ -2140,14 +2159,23 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n          return VK_ERROR_OUT_OF_HOST_MEMORY;\n \n       cookie =\n-         xcb_dri3_pixmap_from_buffer_checked(chain->conn,\n-                                             image->pixmap,\n-                                             chain->window,\n-                                             image->base.sizes[0],\n-                                             pCreateInfo->imageExtent.width,\n-                                             pCreateInfo->imageExtent.height,\n-                                             image->base.row_pitches[0],\n-                                             chain->depth, bpp, fd);\n+         xcb_dri3_pixmap_from_buffers_checked(chain->conn,\n+                                              image->pixmap,\n+                                              chain->window,\n+                                              image->base.num_planes,\n+                                              pCreateInfo->imageExtent.width,\n+                                              pCreateInfo->imageExtent.height,\n+                                              image->base.row_pitches[0],\n+                                              image->base.offsets[0],\n+                                              image->base.row_pitches[1],\n+                                              image->base.offsets[1],\n+                                              image->base.row_pitches[2],\n+                                              image->base.offsets[2],\n+                                              image->base.row_pitches[3],\n+                                              image->base.offsets[3],\n+                                              chain->depth, bpp,\n+                                              1274,\n+                                              &fd);\n    }\n \n    error = xcb_request_check(chain->conn, cookie);\n@@ -2178,32 +2206,8 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n #endif\n \n out_fence:\n-   fence_fd = xshmfence_alloc_shm();\n-   if (fence_fd < 0)\n-      goto fail_pixmap;\n-\n-   image->shm_fence = xshmfence_map_shm(fence_fd);\n-   if (image->shm_fence == NULL)\n-      goto fail_shmfence_alloc;\n-\n-   image->sync_fence = xcb_generate_id(chain->conn);\n-   xcb_dri3_fence_from_fd(chain->conn,\n-                          image->pixmap,\n-                          image->sync_fence,\n-                          false,\n-                          fence_fd);\n-\n-   xshmfence_trigger(image->shm_fence);\n-\n    return VK_SUCCESS;\n \n-fail_shmfence_alloc:\n-   close(fence_fd);\n-\n-fail_pixmap:\n-   cookie = xcb_free_pixmap(chain->conn, image->pixmap);\n-   xcb_discard_reply(chain->conn, cookie.sequence);\n-\n fail_image:\n    wsi_destroy_image(&chain->base, &image->base);\n \n@@ -2218,10 +2222,6 @@ x11_image_finish(struct x11_swapchain *chain,\n    xcb_void_cookie_t cookie;\n \n    if (!chain->base.wsi->sw || chain->has_mit_shm) {\n-      cookie = xcb_sync_destroy_fence(chain->conn, image->sync_fence);\n-      xcb_discard_reply(chain->conn, cookie.sequence);\n-      xshmfence_unmap_shm(image->shm_fence);\n-\n       cookie = xcb_free_pixmap(chain->conn, image->pixmap);\n       xcb_discard_reply(chain->conn, cookie.sequence);\n \n@@ -2618,6 +2618,12 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,\n          .alloc_shm = wsi_conn->has_mit_shm ? &alloc_shm : NULL,\n       };\n       image_params = &cpu_image_params.base;\n+#ifdef __ANDROID__\n+   } else if (wsi_device->wants_ahardware_buffer) {\n+      image_params = &(struct wsi_base_image_params){\n+         .image_type = WSI_IMAGE_TYPE_AHB,\n+      };\n+#endif\n    } else {\n       drm_image_params = (struct wsi_drm_image_params) {\n          .base.image_type = WSI_IMAGE_TYPE_DRM,\n-- \n2.47.0\n\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/06-wrapper-map-dmabuf_fd.patch",
    "content": "diff --git a/src/vulkan/wrapper/wrapper_device_memory.c b/src/vulkan/wrapper/wrapper_device_memory.c\nindex e2e40e5a977..2fc0b04b494 100644\n--- a/src/vulkan/wrapper/wrapper_device_memory.c\n+++ b/src/vulkan/wrapper/wrapper_device_memory.c\n@@ -6,6 +6,7 @@\n #undef native_handle_t\n #undef buffer_handle_t\n #include \"util/hash_table.h\"\n+#include \"util/os_file.h\"\n #include \"vk_util.h\"\n \n #include <android/hardware_buffer.h>\n@@ -19,20 +20,23 @@ wrapper_AllocateMemory(VkDevice _device,\n                        VkDeviceMemory* pMemory)\n {\n    VK_FROM_HANDLE(wrapper_device, device, _device);\n-   const VkImportAndroidHardwareBufferInfoANDROID *import_info;\n+   const VkImportAndroidHardwareBufferInfoANDROID *import_ahb_info;\n+   const VkImportMemoryFdInfoKHR *import_fd_info;\n    const VkExportMemoryAllocateInfo *export_info;\n    VkExportMemoryAllocateInfo local_export_info;\n    VkMemoryAllocateInfo wrapper_allocate_info;\n    struct wrapper_device_memory *memory;\n    VkMemoryPropertyFlags mem_flags;\n    bool can_get_ahardware_buffer;\n+   bool can_get_dmabuf_fd;\n    VkResult result;\n \n    mem_flags = device->physical->memory_properties.memoryTypes\n       [pAllocateInfo->memoryTypeIndex].propertyFlags;\n \n    if (!device->vk.enabled_extensions.EXT_map_memory_placed ||\n-       !(mem_flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)) {\n+      (mem_flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) == 0)\n+   {\n       return device->dispatch_table.AllocateMemory(device->dispatch_handle,\n                                                    pAllocateInfo,\n                                                    pAllocator,\n@@ -44,21 +48,29 @@ wrapper_AllocateMemory(VkDevice _device,\n    if (!memory)\n       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);\n \n+   memory->alloc_size = pAllocateInfo->allocationSize;\n+   memory->dmabuf_fd = -1;\n+   memory->ahardware_buffer = NULL;\n    wrapper_allocate_info = *pAllocateInfo;\n    \n-   import_info = vk_find_struct_const(pAllocateInfo,\n-                    IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID);\n+   import_ahb_info = vk_find_struct_const(pAllocateInfo,\n+      IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID);\n+   import_fd_info = vk_find_struct_const(pAllocateInfo,\n+      IMPORT_MEMORY_FD_INFO_KHR);\n    export_info = vk_find_struct_const(pAllocateInfo,\n-                    EXPORT_MEMORY_ALLOCATE_INFO);\n+      EXPORT_MEMORY_ALLOCATE_INFO);\n \n-   if (import_info) {\n-      memory->ahardware_buffer = import_info->buffer;\n+   if (import_ahb_info) {\n+      memory->ahardware_buffer = import_ahb_info->buffer;\n       AHardwareBuffer_acquire(memory->ahardware_buffer);\n-   } else if (!export_info) {\n+   } else if (import_fd_info) {\n+      memory->dmabuf_fd = os_dupfd_cloexec(import_fd_info->fd);\n+   } else if (export_info == NULL) {\n       local_export_info = (VkExportMemoryAllocateInfo) {\n          .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,\n          .pNext = wrapper_allocate_info.pNext,\n-         .handleTypes =\n+         .handleTypes = device->physical->vk.supported_extensions.\n+            EXT_external_memory_dma_buf ? VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT :\n             VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,\n       };\n       wrapper_allocate_info.pNext = &local_export_info;\n@@ -72,24 +84,35 @@ wrapper_AllocateMemory(VkDevice _device,\n    if (result != VK_SUCCESS) {\n       if (memory->ahardware_buffer)\n          AHardwareBuffer_release(memory->ahardware_buffer);\n+      if (memory->dmabuf_fd != -1)\n+         close(memory->dmabuf_fd);\n       vk_free2(&device->vk.alloc, pAllocator, memory);\n       return vk_error(device, result);\n    }\n \n+   can_get_dmabuf_fd = (export_info && export_info->handleTypes ==\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT);\n    can_get_ahardware_buffer = (export_info && export_info->handleTypes ==\n       VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID);\n \n-   if (can_get_ahardware_buffer) {\n+   if (can_get_dmabuf_fd) {\n+      const VkMemoryGetFdInfoKHR get_fd_info = {\n+         .sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,\n+         .memory = *pMemory,\n+         .handleType =\n+            VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,\n+      };\n+      device->dispatch_table.GetMemoryFdKHR(device->dispatch_handle,\n+         &get_fd_info, &memory->dmabuf_fd);\n+   } else if (can_get_ahardware_buffer) {\n       const VkMemoryGetAndroidHardwareBufferInfoANDROID get_ahb_info = {\n-         .sType =\n-            VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+         .sType = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n          .memory = *pMemory,\n       };\n       device->dispatch_table.GetMemoryAndroidHardwareBufferANDROID(\n          device->dispatch_handle, &get_ahb_info, &memory->ahardware_buffer);\n    }\n \n-   memory->alloc_size = pAllocateInfo->allocationSize;\n    _mesa_hash_table_insert(device->memorys, (void *)(*pMemory), memory);\n \n    return VK_SUCCESS;\n@@ -107,12 +130,12 @@ wrapper_FreeMemory(VkDevice _device, VkDeviceMemory _memory,\n \n    if (entry) {\n       struct wrapper_device_memory *memory = entry->data;\n-      if (memory->map_address && memory->map_size) {\n+      if (memory->map_address && memory->map_size)\n          munmap(memory->map_address, memory->map_size);\n-      }\n-      if (memory->ahardware_buffer) {\n+      if (memory->ahardware_buffer)\n          AHardwareBuffer_release(memory->ahardware_buffer);\n-      }\n+      if (memory->dmabuf_fd != -1)\n+         close(memory->dmabuf_fd);\n       vk_free2(&device->vk.alloc, pAllocator, memory);\n       _mesa_hash_table_remove(device->memorys, entry);\n    }\n@@ -131,8 +154,7 @@ wrapper_MapMemory2KHR(VkDevice _device,\n    struct wrapper_device_memory *memory;\n    const VkMemoryMapPlacedInfoEXT *placed_info;\n    const struct hash_entry *entry = NULL;\n-   const native_handle_t *handle;\n-   const int *handle_fds;\n+   int fd;\n \n    placed_info = vk_find_struct_const(pMemoryMapInfo->pNext,\n                                       MEMORY_MAP_PLACED_INFO_EXT);\n@@ -157,38 +179,39 @@ wrapper_MapMemory2KHR(VkDevice _device,\n          return VK_SUCCESS;\n       }\n    }\n+   assert(memory->dmabuf_fd >= 0 || memory->ahardware_buffer != NULL);\n \n-   if (!memory->ahardware_buffer) {\n-      fprintf(stderr, \"Can't get AHardwareBuffer, mapping memory will fail\");\n-      return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n-   }\n+   if (memory->ahardware_buffer) {\n+      const native_handle_t *handle;\n+      const int *handle_fds;\n \n-   handle = AHardwareBuffer_getNativeHandle(memory->ahardware_buffer);\n-   handle_fds = &handle->data[0];\n-\n-   int idx;\n-   for (idx = 0; idx < handle->numFds; idx++) {\n-      size_t size = lseek(handle_fds[idx], 0, SEEK_END);\n-      if (size < memory->alloc_size)\n-         continue;\n-\n-      if (pMemoryMapInfo->size == VK_WHOLE_SIZE)\n-      {\n-         memory->map_size = size;\n-         break;\n-      } else if (size >= pMemoryMapInfo->size) {\n-         memory->map_size = pMemoryMapInfo->size;\n-         break;\n+      handle = AHardwareBuffer_getNativeHandle(memory->ahardware_buffer);\n+      handle_fds = &handle->data[0];\n+\n+      int idx;\n+      for (idx = 0; idx < handle->numFds; idx++) {\n+         size_t size = lseek(handle_fds[idx], 0, SEEK_END);\n+         if (size >= memory->alloc_size) {\n+            break;\n+         }\n       }\n+      assert(idx < handle->numFds);\n+      fd = handle_fds[idx];\n+   } else {\n+      fd = memory->dmabuf_fd;\n    }\n-   assert(idx < handle->numFds);\n+\n+   if (pMemoryMapInfo->size == VK_WHOLE_SIZE)\n+      memory->map_size = memory->alloc_size > 0 ?\n+         memory->alloc_size : lseek(fd, 0, SEEK_END);\n+   else\n+      memory->map_size = pMemoryMapInfo->size;\n \n    memory->map_address = mmap(placed_info->pPlacedAddress,\n                               memory->map_size,\n                               PROT_READ | PROT_WRITE,\n                               MAP_SHARED | MAP_FIXED,\n-                              handle_fds[idx], 0);\n-\n+                              fd, 0);\n    if (memory->map_address == MAP_FAILED) {\n       memory->map_address = NULL;\n       memory->map_size = 0;\n@@ -211,36 +234,29 @@ wrapper_UnmapMemory2KHR(VkDevice _device,\n                         const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo)\n {\n    VK_FROM_HANDLE(wrapper_device, device, _device);\n-   struct wrapper_device_memory *memory;\n    const struct hash_entry *entry = NULL;\n \n    if (pMemoryUnmapInfo->memory != VK_NULL_HANDLE)\n       entry = _mesa_hash_table_search(device->memorys,\n                                       (void *)pMemoryUnmapInfo->memory);\n-   if (!entry) {\n-      device->dispatch_table.UnmapMemory(device->dispatch_handle,\n-                                       pMemoryUnmapInfo->memory);\n-      return VK_SUCCESS;\n-   }\n-\n-   memory = entry->data;\n-\n-   if (!memory->map_address)\n-      return VK_SUCCESS;\n-\n-   if (pMemoryUnmapInfo->flags & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) {\n-      memory->map_address = mmap(memory->map_address, memory->map_size,\n-         PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);\n-      if (memory->map_address == MAP_FAILED) {\n-         fprintf(stderr, \"Failed to replace mapping with reserved memory\");\n-         return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+   if (entry) {\n+      struct wrapper_device_memory *memory = entry->data;\n+      if (pMemoryUnmapInfo->flags & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) {\n+         memory->map_address = mmap(memory->map_address, memory->map_size,\n+            PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);\n+         if (memory->map_address == MAP_FAILED) {\n+            fprintf(stderr, \"Failed to replace mapping with reserved memory\");\n+            return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+         }\n+      } else {\n+         munmap(memory->map_address, memory->map_size);\n       }\n-   } else {\n-      munmap(memory->map_address, memory->map_size);\n+\n+      memory->map_size = 0;\n+      memory->map_address = NULL;\n    }\n \n-   memory->map_size = 0;\n-   memory->map_address = 0;\n-   \n+   device->dispatch_table.UnmapMemory(device->dispatch_handle,\n+                                      pMemoryUnmapInfo->memory);\n    return VK_SUCCESS;\n }\ndiff --git a/src/vulkan/wrapper/wrapper_private.h b/src/vulkan/wrapper/wrapper_private.h\nindex 696cd937d2c..63194251247 100644\n--- a/src/vulkan/wrapper/wrapper_private.h\n+++ b/src/vulkan/wrapper/wrapper_private.h\n@@ -73,6 +73,7 @@ VK_DEFINE_HANDLE_CASTS(wrapper_command_buffer, vk.base, VkCommandBuffer,\n \n struct wrapper_device_memory {\n    struct AHardwareBuffer *ahardware_buffer;\n+   int dmabuf_fd;\n    void *map_address;\n    size_t map_size;\n    size_t alloc_size;\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/07-fix-build.patch",
    "content": "diff --git a/include/android_stub/vndk/hardware_buffer.h b/include/android_stub/vndk/hardware_buffer.h\nindex 12f8691..91d2251 100644\n--- a/include/android_stub/vndk/hardware_buffer.h\n+++ b/include/android_stub/vndk/hardware_buffer.h\n@@ -24,7 +24,7 @@\n \n __BEGIN_DECLS\n \n-const native_handle_t* AHardwareBuffer_getNativeHandle(const AHardwareBuffer* buffer);\n+const __native_handle_t* AHardwareBuffer_getNativeHandle(const AHardwareBuffer* buffer);\n \n enum CreateFromHandleMethod {\n     // enum values chosen to match internal GraphicBuffer::HandleWrapMethod\n@@ -46,7 +46,7 @@ enum CreateFromHandleMethod {\n  * clone registered. The AHardwareBuffer will own the cloned handle but not the original.\n  */\n int AHardwareBuffer_createFromHandle(const AHardwareBuffer_Desc* desc,\n-                                     const native_handle_t* handle, int32_t method,\n+                                     const __native_handle_t* handle, int32_t method,\n                                      AHardwareBuffer** outBuffer);\n \n /**\ndiff --git a/src/vulkan/wrapper/wrapper_device_memory.c b/src/vulkan/wrapper/wrapper_device_memory.c\nindex 2fc0b04..a1e0ea0 100644\n--- a/src/vulkan/wrapper/wrapper_device_memory.c\n+++ b/src/vulkan/wrapper/wrapper_device_memory.c\n@@ -182,7 +182,7 @@ wrapper_MapMemory2KHR(VkDevice _device,\n    assert(memory->dmabuf_fd >= 0 || memory->ahardware_buffer != NULL);\n \n    if (memory->ahardware_buffer) {\n-      const native_handle_t *handle;\n+      const __native_handle_t *handle;\n       const int *handle_fds;\n \n       handle = AHardwareBuffer_getNativeHandle(memory->ahardware_buffer);\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev8/build.sh",
    "content": "PKG_VER=24.2.5\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Android Wrapper (Rev 8)\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_wrapper.so\"\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=wrapper -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/01-install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/02-disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/03-Android-Vulkan-wrapper.patch",
    "content": "From 875196978f484b3bb9278d079b83d3417b86bcc5 Mon Sep 17 00:00:00 2001\nFrom: xMeM <haooy@outlook.com>\nDate: Sat, 26 Oct 2024 19:19:39 +0800\nSubject: [PATCH 1/2] Android Vulkan wrapper\n\nWrap the Android Vulkan loader into ICD, using common WSI to provide X11 platform surface support.\n\nSigned-off-by: xMeM <haooy@outlook.com>\n---\n meson.build                                   |   5 +-\n meson_options.txt                             |   2 +-\n src/android_stub/nativewindow_stub.cpp        |   7 +\n src/vulkan/meson.build                        |   5 +-\n src/vulkan/wrapper/meson.build                |  93 ++++\n src/vulkan/wrapper/vk_entrypoints.py          |   1 +\n src/vulkan/wrapper/vk_extensions.py           |   1 +\n src/vulkan/wrapper/vk_wrapper_features_gen.py | 298 +++++++++++++\n .../wrapper/vk_wrapper_trampolines_gen.py     | 222 ++++++++++\n src/vulkan/wrapper/wrapper_device.c           | 411 ++++++++++++++++++\n src/vulkan/wrapper/wrapper_device_memory.c    | 398 +++++++++++++++++\n src/vulkan/wrapper/wrapper_instance.c         | 297 +++++++++++++\n src/vulkan/wrapper/wrapper_physical_device.c  | 215 +++++++++\n src/vulkan/wrapper/wrapper_private.h          |  94 ++++\n src/vulkan/wsi/wsi_common.c                   |  26 +-\n src/vulkan/wsi/wsi_common.h                   |   2 +\n 16 files changed, 2069 insertions(+), 8 deletions(-)\n create mode 100644 src/vulkan/wrapper/meson.build\n create mode 120000 src/vulkan/wrapper/vk_entrypoints.py\n create mode 120000 src/vulkan/wrapper/vk_extensions.py\n create mode 100644 src/vulkan/wrapper/vk_wrapper_features_gen.py\n create mode 100644 src/vulkan/wrapper/vk_wrapper_trampolines_gen.py\n create mode 100644 src/vulkan/wrapper/wrapper_device.c\n create mode 100644 src/vulkan/wrapper/wrapper_device_memory.c\n create mode 100644 src/vulkan/wrapper/wrapper_instance.c\n create mode 100644 src/vulkan/wrapper/wrapper_physical_device.c\n create mode 100644 src/vulkan/wrapper/wrapper_private.h\n\ndiff --git a/meson.build b/meson.build\nindex 9fb4160cf54..f232f7be3ef 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -243,6 +243,7 @@ elif _vulkan_drivers.contains('all')\n                       'nouveau']\n endif\n \n+with_wrapper_vk = _vulkan_drivers.contains('wrapper')\n with_intel_vk = _vulkan_drivers.contains('intel')\n with_intel_hasvk = _vulkan_drivers.contains('intel_hasvk')\n with_amd_vk = _vulkan_drivers.contains('amd')\n@@ -896,8 +897,8 @@ endif\n pre_args += '-DGLAPI_EXPORT_PROTO_ENTRY_POINTS=@0@'.format(with_glapi_export_proto_entry_points.to_int())\n \n with_android_stub = get_option('android-stub')\n-if with_android_stub and not with_platform_android\n-  error('`-D android-stub=true` makes no sense without `-D platforms=android`')\n+if with_wrapper_vk\n+  with_android_stub = true\n endif\n \n with_libbacktrace = get_option('android-libbacktrace') \\\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 382393e5097..325219090bd 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -236,7 +236,7 @@ option(\n   value : ['auto'],\n   choices : ['auto', 'amd', 'broadcom', 'freedreno', 'intel', 'intel_hasvk',\n              'panfrost', 'swrast', 'virtio', 'imagination-experimental',\n-             'microsoft-experimental', 'nouveau', 'all'],\n+             'microsoft-experimental', 'nouveau', 'wrapper', 'all'],\n   description : 'List of vulkan drivers to build. If this is set to auto ' +\n                 'all drivers applicable to the target OS/architecture ' +\n                 'will be built'\ndiff --git a/src/android_stub/nativewindow_stub.cpp b/src/android_stub/nativewindow_stub.cpp\nindex 9276a9c3d2e..4bd0cfe25ab 100644\n--- a/src/android_stub/nativewindow_stub.cpp\n+++ b/src/android_stub/nativewindow_stub.cpp\n@@ -43,6 +43,13 @@ AHardwareBuffer_getNativeHandle(const AHardwareBuffer *buffer)\n    return NULL;\n }\n \n+int\n+AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer,\n+                                       int socketFd)\n+{\n+   return 0;\n+}\n+\n void\n ANativeWindow_acquire(ANativeWindow *window)\n {\ndiff --git a/src/vulkan/meson.build b/src/vulkan/meson.build\nindex 56f35fc90fe..f54b6b444ff 100644\n--- a/src/vulkan/meson.build\n+++ b/src/vulkan/meson.build\n@@ -62,7 +62,7 @@ if with_xlib_lease\n   vulkan_wsi_deps += [dep_xlib_xrandr]\n   vulkan_wsi_list += '-DVK_USE_PLATFORM_XLIB_XRANDR_EXT'\n endif\n-if with_platform_android\n+if with_platform_android or with_wrapper_vk\n   vulkan_wsi_list += '-DVK_USE_PLATFORM_ANDROID_KHR'\n endif\n if with_platform_windows\n@@ -88,3 +88,6 @@ endif\n if with_vulkan_device_select_layer\n   subdir('device-select-layer')\n endif\n+if with_wrapper_vk\n+  subdir('wrapper')\n+endif\ndiff --git a/src/vulkan/wrapper/meson.build b/src/vulkan/wrapper/meson.build\nnew file mode 100644\nindex 00000000000..8960fb62493\n--- /dev/null\n+++ b/src/vulkan/wrapper/meson.build\n@@ -0,0 +1,93 @@\n+wrapper_icd = custom_target(\n+  'wrapper_icd',\n+  input: [vk_icd_gen, vk_api_xml],\n+  output: 'wrapper_icd.@0@.json'.format(host_machine.cpu()),\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--api-version', '1.3',\n+    '--xml', '@INPUT1@',\n+    '--lib-path', join_paths(get_option('prefix'), get_option('libdir'), 'libvulkan_wrapper.so'),\n+    '--out', '@OUTPUT@',\n+  ],\n+  build_by_default: true,\n+  install_dir: with_vulkan_icd_dir,\n+  install: true,\n+)\n+\n+wrapper_entrypoints = custom_target(\n+  'wrapper_entrypoints',\n+  input: [vk_entrypoints_gen, vk_api_xml],\n+  output: ['wrapper_entrypoints.h', 'wrapper_entrypoints.c'],\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--xml', '@INPUT1@',\n+    '--proto',\n+    '--weak',\n+    '--beta', with_vulkan_beta.to_string(),\n+    '--out-h', '@OUTPUT0@',\n+    '--out-c', '@OUTPUT1@',\n+    '--prefix', 'wrapper',\n+  ],\n+  depend_files: vk_entrypoints_gen_depend_files,\n+)\n+\n+wrapper_trampolines_gen = files('vk_wrapper_trampolines_gen.py')\n+\n+wrapper_trampolines = custom_target(\n+  'wrapper_trampolines',\n+  input: [wrapper_trampolines_gen, vk_api_xml],\n+  output: ['wrapper_trampolines.c', 'wrapper_trampolines.h'],\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--xml', '@INPUT1@',\n+    '--out-c', '@OUTPUT0@',\n+    '--out-h', '@OUTPUT1@',\n+    '--beta', with_vulkan_beta.to_string(),\n+  ],\n+  depend_files: vk_dispatch_trampolines_gen_depend_files,\n+)\n+\n+wrapper_features_gen = files('vk_wrapper_features_gen.py')\n+\n+wrapper_features = custom_target(\n+  'vk_wrapper_features',\n+  input: [wrapper_features_gen, vk_api_xml],\n+  output: ['wrapper_features.c'],\n+  command: [\n+    prog_python,\n+    '@INPUT0@',\n+    '--xml', '@INPUT1@',\n+    '--out-c', '@OUTPUT0@',\n+    '--beta', with_vulkan_beta.to_string(),\n+  ],\n+  depend_files: vk_physical_device_features_gen_depend_files,\n+)\n+\n+wrapper_files = files(\n+  'wrapper_device.c',\n+  'wrapper_device_memory.c',\n+  'wrapper_instance.c',\n+  'wrapper_physical_device.c',\n+)\n+\n+wrapper_deps = [\n+  idep_vulkan_runtime,\n+  idep_vulkan_util,\n+  idep_vulkan_wsi,\n+  dep_android,\n+]\n+\n+libvulkan_wrapper = shared_library(\n+  'vulkan_wrapper',\n+  [wrapper_entrypoints, wrapper_trampolines, wrapper_features, wrapper_files],\n+  include_directories: [\n+    inc_include,\n+    inc_src,\n+  ],\n+  dependencies: [wrapper_deps, vulkan_wsi_deps],\n+  gnu_symbol_visibility: 'hidden',\n+  install: true,\n+)\ndiff --git a/src/vulkan/wrapper/vk_entrypoints.py b/src/vulkan/wrapper/vk_entrypoints.py\nnew file mode 120000\nindex 00000000000..bbc9deb820f\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_entrypoints.py\n@@ -0,0 +1 @@\n+../util/vk_entrypoints.py\n\\ No newline at end of file\ndiff --git a/src/vulkan/wrapper/vk_extensions.py b/src/vulkan/wrapper/vk_extensions.py\nnew file mode 120000\nindex 00000000000..4407eca87b3\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_extensions.py\n@@ -0,0 +1 @@\n+../util/vk_extensions.py\n\\ No newline at end of file\ndiff --git a/src/vulkan/wrapper/vk_wrapper_features_gen.py b/src/vulkan/wrapper/vk_wrapper_features_gen.py\nnew file mode 100644\nindex 00000000000..eef8d4bf85b\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_wrapper_features_gen.py\n@@ -0,0 +1,298 @@\n+COPYRIGHT=u\"\"\"\n+/* Copyright © 2021 Intel Corporation\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a\n+ * copy of this software and associated documentation files (the \"Software\"),\n+ * to deal in the Software without restriction, including without limitation\n+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n+ * and/or sell copies of the Software, and to permit persons to whom the\n+ * Software is furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice (including the next\n+ * paragraph) shall be included in all copies or substantial portions of the\n+ * Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\n+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n+ * IN THE SOFTWARE.\n+ */\n+\"\"\"\n+\n+import argparse\n+from collections import OrderedDict\n+from dataclasses import dataclass\n+import os\n+import sys\n+import typing\n+import xml.etree.ElementTree as et\n+\n+import mako\n+from mako.template import Template\n+from vk_extensions import Requirements, get_all_required, filter_api\n+\n+def str_removeprefix(s, prefix):\n+    if s.startswith(prefix):\n+        return s[len(prefix):]\n+    return s\n+\n+RENAMED_FEATURES = {\n+    # See https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17272#note_1446477 for details\n+    ('BufferDeviceAddressFeaturesEXT', 'bufferDeviceAddressCaptureReplay'): 'bufferDeviceAddressCaptureReplayEXT',\n+\n+    ('MeshShaderFeaturesNV', 'taskShader'): 'taskShaderNV',\n+    ('MeshShaderFeaturesNV', 'meshShader'): 'meshShaderNV',\n+\n+    ('CooperativeMatrixFeaturesNV', 'cooperativeMatrix'): 'cooperativeMatrixNV',\n+    ('CooperativeMatrixFeaturesNV', 'cooperativeMatrixRobustBufferAccess'): 'cooperativeMatrixRobustBufferAccessNV',\n+\n+    ('DeviceGeneratedCommandsFeaturesNV', 'deviceGeneratedCommands'): 'deviceGeneratedCommandsNV',\n+}\n+\n+KNOWN_ALIASES = [\n+    (['Vulkan11Features', '16BitStorageFeatures'], ['storageBuffer16BitAccess', 'uniformAndStorageBuffer16BitAccess', 'storagePushConstant16', 'storageInputOutput16']),\n+    (['Vulkan11Features', 'MultiviewFeatures'], ['multiview', 'multiviewGeometryShader', 'multiviewTessellationShader']),\n+    (['Vulkan11Features', 'VariablePointersFeatures'], ['variablePointersStorageBuffer', 'variablePointers']),\n+    (['Vulkan11Features', 'ProtectedMemoryFeatures'], ['protectedMemory']),\n+    (['Vulkan11Features', 'SamplerYcbcrConversionFeatures'], ['samplerYcbcrConversion']),\n+    (['Vulkan11Features', 'ShaderDrawParametersFeatures'], ['shaderDrawParameters']),\n+\n+    (['Vulkan12Features', '8BitStorageFeatures'], ['storageBuffer8BitAccess', 'uniformAndStorageBuffer8BitAccess', 'storagePushConstant8']),\n+    (['Vulkan12Features', 'ShaderAtomicInt64Features'], ['shaderBufferInt64Atomics', 'shaderSharedInt64Atomics']),\n+    (['Vulkan12Features', 'ShaderFloat16Int8Features'], ['shaderFloat16', 'shaderInt8']),\n+    (\n+        ['Vulkan12Features', 'DescriptorIndexingFeatures'],\n+        [\n+            'shaderInputAttachmentArrayDynamicIndexing',\n+            'shaderUniformTexelBufferArrayDynamicIndexing',\n+            'shaderStorageTexelBufferArrayDynamicIndexing',\n+            'shaderUniformBufferArrayNonUniformIndexing',\n+            'shaderSampledImageArrayNonUniformIndexing',\n+            'shaderStorageBufferArrayNonUniformIndexing',\n+            'shaderStorageImageArrayNonUniformIndexing',\n+            'shaderInputAttachmentArrayNonUniformIndexing',\n+            'shaderUniformTexelBufferArrayNonUniformIndexing',\n+            'shaderStorageTexelBufferArrayNonUniformIndexing',\n+            'descriptorBindingUniformBufferUpdateAfterBind',\n+            'descriptorBindingSampledImageUpdateAfterBind',\n+            'descriptorBindingStorageImageUpdateAfterBind',\n+            'descriptorBindingStorageBufferUpdateAfterBind',\n+            'descriptorBindingUniformTexelBufferUpdateAfterBind',\n+            'descriptorBindingStorageTexelBufferUpdateAfterBind',\n+            'descriptorBindingUpdateUnusedWhilePending',\n+            'descriptorBindingPartiallyBound',\n+            'descriptorBindingVariableDescriptorCount',\n+            'runtimeDescriptorArray',\n+        ],\n+    ),\n+    (['Vulkan12Features', 'ScalarBlockLayoutFeatures'], ['scalarBlockLayout']),\n+    (['Vulkan12Features', 'ImagelessFramebufferFeatures'], ['imagelessFramebuffer']),\n+    (['Vulkan12Features', 'UniformBufferStandardLayoutFeatures'], ['uniformBufferStandardLayout']),\n+    (['Vulkan12Features', 'ShaderSubgroupExtendedTypesFeatures'], ['shaderSubgroupExtendedTypes']),\n+    (['Vulkan12Features', 'SeparateDepthStencilLayoutsFeatures'], ['separateDepthStencilLayouts']),\n+    (['Vulkan12Features', 'HostQueryResetFeatures'], ['hostQueryReset']),\n+    (['Vulkan12Features', 'TimelineSemaphoreFeatures'], ['timelineSemaphore']),\n+    (['Vulkan12Features', 'BufferDeviceAddressFeatures', 'BufferDeviceAddressFeaturesEXT'], ['bufferDeviceAddress', 'bufferDeviceAddressMultiDevice']),\n+    (['Vulkan12Features', 'BufferDeviceAddressFeatures'], ['bufferDeviceAddressCaptureReplay']),\n+    (['Vulkan12Features', 'VulkanMemoryModelFeatures'], ['vulkanMemoryModel', 'vulkanMemoryModelDeviceScope', 'vulkanMemoryModelAvailabilityVisibilityChains']),\n+\n+    (['Vulkan13Features', 'ImageRobustnessFeatures'], ['robustImageAccess']),\n+    (['Vulkan13Features', 'InlineUniformBlockFeatures'], ['inlineUniformBlock', 'descriptorBindingInlineUniformBlockUpdateAfterBind']),\n+    (['Vulkan13Features', 'PipelineCreationCacheControlFeatures'], ['pipelineCreationCacheControl']),\n+    (['Vulkan13Features', 'PrivateDataFeatures'], ['privateData']),\n+    (['Vulkan13Features', 'ShaderDemoteToHelperInvocationFeatures'], ['shaderDemoteToHelperInvocation']),\n+    (['Vulkan13Features', 'ShaderTerminateInvocationFeatures'], ['shaderTerminateInvocation']),\n+    (['Vulkan13Features', 'SubgroupSizeControlFeatures'], ['subgroupSizeControl', 'computeFullSubgroups']),\n+    (['Vulkan13Features', 'Synchronization2Features'], ['synchronization2']),\n+    (['Vulkan13Features', 'TextureCompressionASTCHDRFeatures'], ['textureCompressionASTC_HDR']),\n+    (['Vulkan13Features', 'ZeroInitializeWorkgroupMemoryFeatures'], ['shaderZeroInitializeWorkgroupMemory']),\n+    (['Vulkan13Features', 'DynamicRenderingFeatures'], ['dynamicRendering']),\n+    (['Vulkan13Features', 'ShaderIntegerDotProductFeatures'], ['shaderIntegerDotProduct']),\n+    (['Vulkan13Features', 'Maintenance4Features'], ['maintenance4']),\n+]\n+\n+for (feature_structs, features) in KNOWN_ALIASES:\n+    for flag in features:\n+        for f in feature_structs:\n+            rename = (f, flag)\n+            assert rename not in RENAMED_FEATURES, f\"{rename} already exists in RENAMED_FEATURES\"\n+            RENAMED_FEATURES[rename] = flag\n+\n+def get_renamed_feature(c_type, feature):\n+    return RENAMED_FEATURES.get((str_removeprefix(c_type, 'VkPhysicalDevice'), feature), feature)\n+\n+@dataclass\n+class FeatureStruct:\n+    reqs: Requirements\n+    c_type: str\n+    s_type: str\n+    features: typing.List[str]\n+\n+TEMPLATE_C = Template(COPYRIGHT + \"\"\"\n+/* This file generated from ${filename}, don't edit directly. */\n+\n+#include \"wrapper_private.h\"\n+#include \"vk_physical_device_features.h\"\n+#include \"vk_util.h\"\n+\n+void\n+wrapper_setup_device_features(struct wrapper_physical_device *physical_device)\n+{\n+   VkPhysicalDevice vk_physical_device = physical_device->dispatch_handle;\n+\n+   /* Query the device what kind of features are supported. */\n+   VkPhysicalDeviceFeatures2 supported_features2 = {\n+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,\n+   };\n+\n+% for f in feature_structs:\n+   ${f.c_type} supported_${f.c_type} = {\n+      .sType = ${f.s_type},\n+      .pNext = NULL,\n+   };\n+   __vk_append_struct(&supported_features2, &supported_${f.c_type});\n+% endfor\n+\n+   physical_device->dispatch_table.GetPhysicalDeviceFeatures2(\n+      vk_physical_device, &supported_features2);\n+\n+   vk_set_physical_device_features(&physical_device->vk.supported_features,\n+                                   &supported_features2);\n+}\n+\"\"\")\n+\n+def get_pdev_features(doc):\n+    _type = doc.find(\".types/type[@name='VkPhysicalDeviceFeatures']\")\n+    if _type is not None:\n+        flags = []\n+        for p in _type.findall('./member'):\n+            assert p.find('./type').text == 'VkBool32'\n+            flags.append(p.find('./name').text)\n+        return flags\n+    return None\n+\n+def filter_api(elem, api):\n+    if 'api' not in elem.attrib:\n+        return True\n+\n+    return api in elem.attrib['api'].split(',')\n+\n+def get_feature_structs(doc, api, beta):\n+    feature_structs = OrderedDict()\n+\n+    required = get_all_required(doc, 'type', api, beta)\n+\n+    # parse all struct types where structextends VkPhysicalDeviceFeatures2\n+    for _type in doc.findall('./types/type[@category=\"struct\"]'):\n+        if _type.attrib.get('structextends') != 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo':\n+            continue\n+        if _type.attrib['name'] not in required:\n+            continue\n+\n+        reqs = required[_type.attrib['name']]\n+        # Skip extensions with a define for now\n+        guard = reqs.guard\n+        if guard is not None and (guard != \"VK_ENABLE_BETA_EXTENSIONS\" or beta != \"true\"):\n+            continue\n+\n+        # find Vulkan structure type\n+        for elem in _type:\n+            if \"STRUCTURE_TYPE\" in str(elem.attrib):\n+                s_type = elem.attrib.get('values')\n+\n+        # collect a list of feature flags\n+        flags = []\n+\n+        for p in _type.findall('./member'):\n+            if not filter_api(p, api):\n+                continue\n+\n+            m_name = p.find('./name').text\n+            if m_name == 'pNext':\n+                pass\n+            elif m_name == 'sType':\n+                s_type = p.attrib.get('values')\n+            else:\n+                assert p.find('./type').text == 'VkBool32'\n+                flags.append(m_name)\n+\n+        feature_struct = FeatureStruct(reqs=reqs, c_type=_type.attrib.get('name'), s_type=s_type, features=flags)\n+        feature_structs[feature_struct.c_type] = feature_struct\n+\n+    return feature_structs.values()\n+\n+def get_feature_structs_from_xml(xml_files, beta, api='vulkan'):\n+    diagnostics = []\n+\n+    pdev_features = None\n+    feature_structs = []\n+\n+    for filename in xml_files:\n+        doc = et.parse(filename)\n+        feature_structs += get_feature_structs(doc, api, beta)\n+        if not pdev_features:\n+            pdev_features = get_pdev_features(doc)\n+\n+    unused_renames = {**RENAMED_FEATURES}\n+\n+    features = OrderedDict()\n+\n+    for flag in pdev_features:\n+        features[flag] = 'VkPhysicalDeviceFeatures'\n+\n+    for f in feature_structs:\n+        for flag in f.features:\n+            renamed_flag = get_renamed_feature(f.c_type, flag)\n+            if renamed_flag not in features:\n+                features[renamed_flag] = f.c_type\n+            else:\n+                a = str_removeprefix(features[renamed_flag], 'VkPhysicalDevice')\n+                b = str_removeprefix(f.c_type, 'VkPhysicalDevice')\n+                if (a, flag) not in RENAMED_FEATURES or (b, flag) not in RENAMED_FEATURES:\n+                    diagnostics.append(f'{a} and {b} both define {flag}')\n+\n+            unused_renames.pop((str_removeprefix(f.c_type, 'VkPhysicalDevice'), flag), None)\n+\n+    for rename in unused_renames:\n+        diagnostics.append(f'unused rename {rename}')\n+\n+    assert len(diagnostics) == 0, '\\n'.join(diagnostics)\n+\n+    return pdev_features, feature_structs, features\n+\n+\n+def main():\n+    parser = argparse.ArgumentParser()\n+    parser.add_argument('--out-c', required=True, help='Output C file.')\n+    parser.add_argument('--beta', required=True, help='Enable beta extensions.')\n+    parser.add_argument('--xml',\n+                        help='Vulkan API XML file.',\n+                        required=True, action='append', dest='xml_files')\n+    args = parser.parse_args()\n+\n+    pdev_features, feature_structs, all_flags = get_feature_structs_from_xml(args.xml_files, args.beta)\n+\n+    environment = {\n+        'filename': os.path.basename(__file__),\n+        'pdev_features': pdev_features,\n+        'feature_structs': feature_structs,\n+        'all_flags': all_flags,\n+        'get_renamed_feature': get_renamed_feature,\n+    }\n+\n+    try:\n+        with open(args.out_c, 'w', encoding='utf-8') as f:\n+            f.write(TEMPLATE_C.render(**environment))\n+    except Exception:\n+        # In the event there's an error, this uses some helpers from mako\n+        # to print a useful stack trace and prints it, then exits with\n+        # status 1, if python is run with debug; otherwise it just raises\n+        # the exception\n+        print(mako.exceptions.text_error_template().render(), file=sys.stderr)\n+        sys.exit(1)\n+\n+if __name__ == '__main__':\n+    main()\ndiff --git a/src/vulkan/wrapper/vk_wrapper_trampolines_gen.py b/src/vulkan/wrapper/vk_wrapper_trampolines_gen.py\nnew file mode 100644\nindex 00000000000..f20fde16034\n--- /dev/null\n+++ b/src/vulkan/wrapper/vk_wrapper_trampolines_gen.py\n@@ -0,0 +1,222 @@\n+# coding=utf-8\n+COPYRIGHT = \"\"\"\\\n+/*\n+ * Copyright 2020 Intel Corporation\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a\n+ * copy of this software and associated documentation files (the\n+ * \"Software\"), to deal in the Software without restriction, including\n+ * without limitation the rights to use, copy, modify, merge, publish,\n+ * distribute, sub license, and/or sell copies of the Software, and to\n+ * permit persons to whom the Software is furnished to do so, subject to\n+ * the following conditions:\n+ *\n+ * The above copyright notice and this permission notice (including the\n+ * next paragraph) shall be included in all copies or substantial portions\n+ * of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\n+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR\n+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n+ */\n+\"\"\"\n+\n+import argparse\n+import os\n+\n+from mako.template import Template\n+\n+# Mesa-local imports must be declared in meson variable\n+# '{file_without_suffix}_depend_files'.\n+from vk_entrypoints import get_entrypoints_from_xml\n+\n+TEMPLATE_H = Template(COPYRIGHT + \"\"\"\\\n+/* This file generated from ${filename}, don't edit directly. */\n+\n+#ifndef WRAPPER_TRAMPOLINES_H\n+#define WRAPPER_TRAMPOLINES_H\n+\n+#include \"vk_dispatch_table.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+extern struct vk_physical_device_entrypoint_table wrapper_physical_device_trampolines;\n+extern struct vk_device_entrypoint_table wrapper_device_trampolines;\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* WRAPPER_TRAMPOLINES_H */\n+\"\"\")\n+\n+TEMPLATE_C = Template(COPYRIGHT + \"\"\"\\\n+/* This file generated from ${filename}, don't edit directly. */\n+\n+#include \"wrapper_private.h\"\n+#include \"wrapper_trampolines.h\"\n+\n+% for e in entrypoints:\n+  % if not e.is_physical_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+static VKAPI_ATTR ${e.return_type} VKAPI_CALL\n+${e.prefixed_name('wrapper_tramp')}(${e.decl_params()})\n+{\n+    <% assert e.params[0].type == 'VkPhysicalDevice' %>\n+    VK_FROM_HANDLE(wrapper_physical_device, vk_physical_device, ${e.params[0].name});\n+  % if e.return_type == 'void':\n+    vk_physical_device->dispatch_table.${e.name}(vk_physical_device->dispatch_handle, ${e.call_params(1)});\n+  % else:\n+    return vk_physical_device->dispatch_table.${e.name}(vk_physical_device->dispatch_handle, ${e.call_params(1)});\n+  % endif\n+}\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+\n+struct vk_physical_device_entrypoint_table wrapper_physical_device_trampolines = {\n+% for e in entrypoints:\n+  % if not e.is_physical_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+    .${e.name} = ${e.prefixed_name('wrapper_tramp')},\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+};\n+\n+% for e in entrypoints:\n+  % if not e.is_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+static VKAPI_ATTR ${e.return_type} VKAPI_CALL\n+${e.prefixed_name('wrapper_tramp')}(${e.decl_params()})\n+{\n+  % if e.params[0].type == 'VkDevice':\n+    VK_FROM_HANDLE(wrapper_device, vk_device, ${e.params[0].name});\n+    % if e.return_type == 'void':\n+      % if len(e.params) > 1:\n+    vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle);\n+      % endif\n+    % else:\n+      % if len(e.params) > 1:\n+    return vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    return vk_device->dispatch_table.${e.name}(vk_device->dispatch_handle);\n+      % endif\n+    % endif\n+  % elif e.params[0].type == 'VkCommandBuffer':\n+    VK_FROM_HANDLE(wrapper_command_buffer, wcb, ${e.params[0].name});\n+    % if e.return_type == 'void':\n+      % if len(e.params) > 1:\n+    wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle);\n+      % endif\n+    % else:\n+      % if len(e.params) > 1:\n+    return wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    return wcb->device->dispatch_table.${e.name}(wcb->dispatch_handle);\n+      % endif\n+    % endif\n+  % elif e.params[0].type == 'VkQueue':\n+    VK_FROM_HANDLE(wrapper_queue, wqueue, ${e.params[0].name});\n+    % if e.return_type == 'void':\n+      % if len(e.params) > 1:\n+    wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle);\n+      % endif\n+    % else:\n+      % if len(e.params) > 1:\n+    return wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle, ${e.call_params(1)});\n+      % else:\n+    return wqueue->device->dispatch_table.${e.name}(wqueue->dispatch_handle);\n+      % endif\n+    % endif\n+  % else:\n+    assert(!\"Unhandled device child trampoline case: ${e.params[0].type}\");\n+  % endif\n+}\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+\n+struct vk_device_entrypoint_table wrapper_device_trampolines = {\n+% for e in entrypoints:\n+  % if not e.is_device_entrypoint() or e.alias:\n+    <% continue %>\n+  % endif\n+  % if e.guard is not None:\n+#ifdef ${e.guard}\n+  % endif\n+    .${e.name} = ${e.prefixed_name('wrapper_tramp')},\n+  % if e.guard is not None:\n+#endif\n+  % endif\n+% endfor\n+};\n+\"\"\")\n+\n+def main():\n+    parser = argparse.ArgumentParser()\n+    parser.add_argument('--out-c', help='Output C file.')\n+    parser.add_argument('--out-h', help='Output H file.')\n+    parser.add_argument('--beta', required=True, help='Enable beta extensions.')\n+    parser.add_argument('--xml',\n+                        help='Vulkan API XML file.',\n+                        required=True,\n+                        action='append',\n+                        dest='xml_files')\n+    args = parser.parse_args()\n+\n+    entrypoints = get_entrypoints_from_xml(args.xml_files, args.beta)\n+\n+    # For outputting entrypoints.h we generate a anv_EntryPoint() prototype\n+    # per entry point.\n+    try:\n+        if args.out_h:\n+            with open(args.out_h, 'w', encoding='utf-8') as f:\n+                f.write(TEMPLATE_H.render(entrypoints=entrypoints,\n+                                          filename=os.path.basename(__file__)))\n+        if args.out_c:\n+            with open(args.out_c, 'w', encoding='utf-8') as f:\n+                f.write(TEMPLATE_C.render(entrypoints=entrypoints,\n+                                          filename=os.path.basename(__file__)))\n+    except Exception:\n+        # In the event there's an error, this imports some helpers from mako\n+        # to print a useful stack trace and prints it, then exits with\n+        # status 1, if python is run with debug; otherwise it just raises\n+        # the exception\n+        if __debug__:\n+            import sys\n+            from mako import exceptions\n+            sys.stderr.write(exceptions.text_error_template().render() + '\\n')\n+            sys.exit(1)\n+        raise\n+\n+\n+if __name__ == '__main__':\n+    main()\ndiff --git a/src/vulkan/wrapper/wrapper_device.c b/src/vulkan/wrapper/wrapper_device.c\nnew file mode 100644\nindex 00000000000..1fde56970d0\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_device.c\n@@ -0,0 +1,411 @@\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"wrapper_trampolines.h\"\n+#include \"vk_alloc.h\"\n+#include \"vk_common_entrypoints.h\"\n+#include \"vk_device.h\"\n+#include \"vk_dispatch_table.h\"\n+#include \"vk_extensions.h\"\n+#include \"vk_queue.h\"\n+#include \"vk_util.h\"\n+#include \"util/list.h\"\n+\n+const struct vk_device_extension_table wrapper_device_extensions =\n+{\n+   .KHR_swapchain = true,\n+   .EXT_swapchain_maintenance1 = true,\n+   .KHR_swapchain_mutable_format = true,\n+#ifdef VK_USE_PLATFORM_DISPLAY_KHR\n+   .EXT_display_control = true,\n+#endif\n+   .KHR_present_id = true,\n+   .KHR_present_wait = true,\n+   .KHR_incremental_present = true,\n+   .KHR_map_memory2 = true,\n+   .EXT_map_memory_placed = true,\n+};\n+\n+const struct vk_device_extension_table wrapper_filter_extensions =\n+{\n+   .EXT_hdr_metadata = true,\n+   .GOOGLE_display_timing = true,\n+   .KHR_shared_presentable_image = true,\n+   .EXT_image_compression_control_swapchain = true,\n+};\n+\n+static void\n+wrapper_filter_enabled_extensions(const struct vk_device *device,\n+                                  uint32_t *enable_extension_count,\n+                                  const char **enable_extensions)\n+{\n+   for (int idx = 0; idx < VK_DEVICE_EXTENSION_COUNT; idx++) {\n+      if (!device->enabled_extensions.extensions[idx])\n+         continue;\n+\n+      if (wrapper_device_extensions.extensions[idx])\n+         continue;\n+\n+      if (wrapper_filter_extensions.extensions[idx])\n+         continue;\n+\n+      enable_extensions[(*enable_extension_count)++] =\n+         vk_device_extensions[idx].extensionName;\n+   }\n+}\n+\n+static inline void\n+wrapper_append_required_extensions(const struct vk_device *device,\n+                                  uint32_t *count,\n+                                  const char **exts) {\n+#define REQUIRED_EXTENSION(name) \\\n+   if (!device->enabled_extensions.name && \\\n+       device->physical->supported_extensions.name) { \\\n+      exts[(*count)++] = \"VK_\" #name; \\\n+   }\n+   REQUIRED_EXTENSION(KHR_external_fence);\n+   REQUIRED_EXTENSION(KHR_external_semaphore);\n+   REQUIRED_EXTENSION(KHR_external_memory);\n+   REQUIRED_EXTENSION(KHR_external_fence_fd);\n+   REQUIRED_EXTENSION(KHR_external_semaphore_fd);\n+   REQUIRED_EXTENSION(KHR_external_memory_fd);\n+   REQUIRED_EXTENSION(KHR_dedicated_allocation);\n+   REQUIRED_EXTENSION(EXT_queue_family_foreign);\n+   REQUIRED_EXTENSION(KHR_maintenance1)\n+   REQUIRED_EXTENSION(KHR_maintenance2)\n+   REQUIRED_EXTENSION(KHR_image_format_list)\n+   REQUIRED_EXTENSION(KHR_timeline_semaphore);\n+   REQUIRED_EXTENSION(EXT_external_memory_host);\n+   REQUIRED_EXTENSION(EXT_external_memory_dma_buf);\n+   REQUIRED_EXTENSION(EXT_image_drm_format_modifier);\n+   REQUIRED_EXTENSION(ANDROID_external_memory_android_hardware_buffer);\n+#undef REQUIRED_EXTENSION\n+}\n+\n+static VkResult\n+wrapper_create_device_queue(struct wrapper_device *device,\n+                            const VkDeviceCreateInfo* pCreateInfo)\n+{\n+   const VkDeviceQueueCreateInfo *create_info;\n+   struct wrapper_queue *queue;\n+   VkResult result;\n+\n+   for (int i = 0; i < pCreateInfo->queueCreateInfoCount; i++) {\n+      create_info = &pCreateInfo->pQueueCreateInfos[i];\n+      for (int j = 0; j < create_info->queueCount; j++) {\n+         queue = vk_zalloc(&device->vk.alloc, sizeof(*queue), 8,\n+                           VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);\n+         if (!queue)\n+            return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+         device->dispatch_table.GetDeviceQueue(device->dispatch_handle,\n+                                               create_info->queueFamilyIndex,\n+                                               j, &queue->dispatch_handle);;\n+         queue->device = device;\n+\n+         result = vk_queue_init(&queue->vk, &device->vk, create_info, j);\n+         if (result != VK_SUCCESS) {\n+            vk_free(&device->vk.alloc, queue);\n+            return result;\n+         }\n+      }\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_CreateDevice(VkPhysicalDevice physicalDevice,\n+                     const VkDeviceCreateInfo* pCreateInfo,\n+                     const VkAllocationCallbacks* pAllocator,\n+                     VkDevice* pDevice)\n+{\n+   VK_FROM_HANDLE(wrapper_physical_device, physical_device, physicalDevice);\n+   const char *wrapper_enable_extensions[VK_DEVICE_EXTENSION_COUNT];\n+   uint32_t wrapper_enable_extension_count = 0;\n+   VkDeviceCreateInfo wrapper_create_info = *pCreateInfo;\n+   struct vk_device_dispatch_table dispatch_table;\n+   struct wrapper_device *device;\n+   VkPhysicalDeviceFeatures2 *pdf2;\n+   VkPhysicalDeviceFeatures *pdf;\n+   VkResult result;\n+\n+   device = vk_zalloc2(&physical_device->instance->vk.alloc, pAllocator,\n+                       sizeof(*device), 8, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);\n+   if (!device)\n+      return vk_error(physical_device, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   list_inithead(&device->command_buffers);\n+   device->physical = physical_device;\n+   device->memorys = _mesa_hash_table_create(NULL,\n+                                             _mesa_hash_pointer,\n+                                             _mesa_key_pointer_equal);\n+   if (!device->memorys) {\n+      vk_free2(&physical_device->instance->vk.alloc, pAllocator,\n+               device);\n+      return vk_error(physical_device, VK_ERROR_OUT_OF_HOST_MEMORY);\n+   }\n+\n+   vk_device_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wrapper_device_entrypoints, true);\n+   vk_device_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wsi_device_entrypoints, false);\n+   vk_device_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wrapper_device_trampolines, false);\n+\n+   result = vk_device_init(&device->vk, &physical_device->vk,\n+                           &dispatch_table, pCreateInfo, pAllocator);\n+\n+   if (result != VK_SUCCESS) {\n+      _mesa_hash_table_destroy(device->memorys, NULL);\n+      vk_free2(&physical_device->instance->vk.alloc, pAllocator,\n+               device);\n+      return vk_error(physical_device, result);\n+   }\n+\n+   wrapper_filter_enabled_extensions(&device->vk,\n+                                     &wrapper_enable_extension_count,\n+                                     wrapper_enable_extensions);\n+   wrapper_append_required_extensions(&device->vk,\n+                                      &wrapper_enable_extension_count,\n+                                      wrapper_enable_extensions);\n+\n+   wrapper_create_info.enabledExtensionCount = wrapper_enable_extension_count;\n+   wrapper_create_info.ppEnabledExtensionNames = wrapper_enable_extensions;\n+\n+   pdf = (void *)pCreateInfo->pEnabledFeatures;\n+   if (pdf && pdf->textureCompressionBC) {\n+      pdf->textureCompressionBC &=\n+         physical_device->backup_supported_features.textureCompressionBC;\n+   }\n+   pdf2 = __vk_find_struct((void *)pCreateInfo->pNext,\n+            VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2);\n+   if (pdf2 && pdf2->features.textureCompressionBC) {\n+      pdf2->features.textureCompressionBC &=\n+         physical_device->backup_supported_features.textureCompressionBC;\n+   }\n+\n+   result = physical_device->dispatch_table.CreateDevice(\n+      physical_device->dispatch_handle, &wrapper_create_info,\n+         pAllocator, &device->dispatch_handle);\n+\n+   if (result != VK_SUCCESS) {\n+      wrapper_DestroyDevice(wrapper_device_to_handle(device),\n+                            &device->vk.alloc);\n+      return vk_error(physical_device, result);\n+   }\n+\n+   void *gdpa = physical_device->instance->dispatch_table.GetInstanceProcAddr(\n+      physical_device->instance->dispatch_handle, \"vkGetDeviceProcAddr\");\n+   vk_device_dispatch_table_load(&device->dispatch_table, gdpa,\n+                                 device->dispatch_handle);\n+\n+   result = wrapper_create_device_queue(device, pCreateInfo);\n+   if (result != VK_SUCCESS) {\n+      wrapper_DestroyDevice(wrapper_device_to_handle(device),\n+                            &device->vk.alloc);\n+      return vk_error(physical_device, result);\n+   }\n+\n+   device->import_dmabuf = wrapper_try_import_dmabuf(device);\n+\n+   *pDevice = wrapper_device_to_handle(device);\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex,\n+                       uint32_t queueIndex, VkQueue* pQueue) {\n+   vk_common_GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo,\n+                        VkQueue* pQueue) {\n+   vk_common_GetDeviceQueue2(device, pQueueInfo, pQueue);\n+}\n+\n+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+wrapper_GetDeviceProcAddr(VkDevice _device, const char* pName) {\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   return vk_device_get_proc_addr(&device->vk, pName);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_QueueSubmit(VkQueue _queue, uint32_t submitCount,\n+                    const VkSubmitInfo* pSubmits, VkFence fence)\n+{\n+   VK_FROM_HANDLE(wrapper_queue, queue, _queue);\n+   VkCommandBuffer wrapper_command_buffers[submitCount][32];\n+   VkSubmitInfo wrapper_submits[submitCount];\n+\n+   for (int i = 0; i < submitCount; i++) {\n+      const VkSubmitInfo *submit_info = &pSubmits[i];\n+      for (int j = 0; j < submit_info->commandBufferCount; j++) {\n+         VK_FROM_HANDLE(wrapper_command_buffer, wcb,\n+                        submit_info->pCommandBuffers[j]);\n+         wrapper_command_buffers[i][j] = wcb->dispatch_handle;\n+      }\n+      wrapper_submits[i] = pSubmits[i];\n+      wrapper_submits[i].pCommandBuffers = wrapper_command_buffers[i];\n+   }\n+   return queue->device->dispatch_table.QueueSubmit(queue->dispatch_handle,\n+                                                    submitCount,\n+                                                    wrapper_submits,\n+                                                    fence);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_QueueSubmit2(VkQueue _queue, uint32_t submitCount,\n+                     const VkSubmitInfo2* pSubmits, VkFence fence)\n+{\n+   VK_FROM_HANDLE(wrapper_queue, queue, _queue);\n+   VkCommandBufferSubmitInfo wrapper_command_buffers[submitCount][32];\n+   VkSubmitInfo2 wrapper_submits[submitCount];\n+\n+   for (int i = 0; i < submitCount; i++) {\n+      const VkSubmitInfo2 *submit_info = &pSubmits[i];\n+      for (int j = 0; j < submit_info->commandBufferInfoCount; j++) {\n+         VK_FROM_HANDLE(wrapper_command_buffer, wcb,\n+                        submit_info->pCommandBufferInfos[j].commandBuffer);\n+         wrapper_command_buffers[i][j] = pSubmits[i].pCommandBufferInfos[j];\n+         wrapper_command_buffers[i][j].commandBuffer = wcb->dispatch_handle;\n+      }\n+      wrapper_submits[i] = pSubmits[i];\n+      wrapper_submits[i].pCommandBufferInfos = wrapper_command_buffers[i];\n+   }\n+   return queue->device->dispatch_table.QueueSubmit2(queue->dispatch_handle,\n+                                                     submitCount,\n+                                                     wrapper_submits,\n+                                                     fence);\n+}\n+\n+static VkResult\n+wrapper_command_buffer_create(struct wrapper_device *device,\n+                              VkCommandPool pool,\n+                              VkCommandBuffer dispatch_handle,\n+                              VkCommandBuffer *pCommandBuffers) {\n+   struct wrapper_command_buffer *wrapper_command_buffer;\n+   wrapper_command_buffer = vk_object_zalloc(&device->vk, &device->vk.alloc,\n+                              sizeof(struct wrapper_command_buffer),\n+                              VK_OBJECT_TYPE_COMMAND_BUFFER);\n+   if (!wrapper_command_buffer)\n+      return vk_error(&device->vk, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   wrapper_command_buffer->device = device;\n+   wrapper_command_buffer->pool = pool;\n+   wrapper_command_buffer->dispatch_handle = dispatch_handle;\n+   list_add(&wrapper_command_buffer->link, &device->command_buffers);\n+\n+   *pCommandBuffers = wrapper_command_buffer_to_handle(wrapper_command_buffer);\n+\n+   return VK_SUCCESS;\n+}\n+\n+static void\n+wrapper_command_buffer_destroy(struct wrapper_device *device,\n+                               struct wrapper_command_buffer *wcb) {\n+   list_del(&wcb->link);\n+   vk_object_free(&device->vk, NULL, wcb);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_AllocateCommandBuffers(VkDevice _device,\n+                               const VkCommandBufferAllocateInfo* pAllocateInfo,\n+                               VkCommandBuffer* pCommandBuffers)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   VkCommandBuffer dispatch_handles[pAllocateInfo->commandBufferCount];\n+   VkResult result;\n+   uint32_t i;\n+   \n+   result = device->dispatch_table.AllocateCommandBuffers(device->dispatch_handle,\n+                                                          pAllocateInfo,\n+                                                          dispatch_handles);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   for (i = 0; i < pAllocateInfo->commandBufferCount; i++) {\n+      result = wrapper_command_buffer_create(device,\n+                                             pAllocateInfo->commandPool,\n+                                             dispatch_handles[i],\n+                                             &pCommandBuffers[i]);\n+      if (result != VK_SUCCESS)\n+         break;\n+   }\n+\n+   if (result != VK_SUCCESS) {\n+      device->dispatch_table.FreeCommandBuffers(device->dispatch_handle,\n+                                                pAllocateInfo->commandPool,\n+                                                pAllocateInfo->commandBufferCount,\n+                                                dispatch_handles);\n+      for (int q = 0; q < i; q++) {\n+         VK_FROM_HANDLE(wrapper_command_buffer, wcb, pCommandBuffers[q]);\n+         wrapper_command_buffer_destroy(device, wcb);\n+      }\n+\n+      for (i = 0; i < pAllocateInfo->commandBufferCount; i++)\n+         pCommandBuffers[i] = VK_NULL_HANDLE;\n+\n+      return result;\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_FreeCommandBuffers(VkDevice _device,\n+                           VkCommandPool commandPool,\n+                           uint32_t commandBufferCount,\n+                           const VkCommandBuffer* pCommandBuffers)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   VkCommandBuffer dispatch_handles[commandBufferCount];\n+\n+   for (int i = 0; i < commandBufferCount; i++) {\n+      VK_FROM_HANDLE(wrapper_command_buffer, wcb, pCommandBuffers[i]);\n+      dispatch_handles[i] = wcb->dispatch_handle;\n+      wrapper_command_buffer_destroy(device, wcb);\n+   }\n+   device->dispatch_table.FreeCommandBuffers(device->dispatch_handle,\n+                                             commandPool, commandBufferCount,\n+                                             dispatch_handles);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DestroyCommandPool(VkDevice _device, VkCommandPool commandPool,\n+                           const VkAllocationCallbacks* pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   list_for_each_entry_safe(struct wrapper_command_buffer, wcb,\n+                            &device->command_buffers, link) {\n+      if (wcb->pool == commandPool) {\n+         wrapper_command_buffer_destroy(device, wcb);\n+      }\n+   }\n+   device->dispatch_table.DestroyCommandPool(device->dispatch_handle,\n+                                             commandPool, pAllocator);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DestroyDevice(VkDevice _device, const VkAllocationCallbacks* pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   list_for_each_entry_safe(struct wrapper_command_buffer, wcb,\n+                            &device->command_buffers, link) {\n+      wrapper_command_buffer_destroy(device, wcb);\n+   }\n+   list_for_each_entry_safe(struct vk_queue, queue, &device->vk.queues, link) {\n+      vk_queue_finish(queue);\n+      vk_free2(&device->vk.alloc, pAllocator, queue);\n+   }\n+   if (device->dispatch_handle != VK_NULL_HANDLE) {\n+      device->dispatch_table.DestroyDevice(device->\n+         dispatch_handle, pAllocator);\n+   }\n+   _mesa_hash_table_destroy(device->memorys, NULL);\n+   vk_device_finish(&device->vk);\n+   vk_free2(&device->vk.alloc, pAllocator, device);\n+}\n+\ndiff --git a/src/vulkan/wrapper/wrapper_device_memory.c b/src/vulkan/wrapper/wrapper_device_memory.c\nnew file mode 100644\nindex 00000000000..46b663d011d\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_device_memory.c\n@@ -0,0 +1,398 @@\n+#define native_handle_t __native_handle_t\n+#define buffer_handle_t __buffer_handle_t\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"vk_common_entrypoints.h\"\n+#undef native_handle_t\n+#undef buffer_handle_t\n+#include \"util/hash_table.h\"\n+#include \"util/os_file.h\"\n+#include \"vk_util.h\"\n+\n+#include <android/hardware_buffer.h>\n+#include <vndk/hardware_buffer.h>\n+#include <sys/mman.h>\n+#include <sys/ioctl.h>\n+#include <linux/dma-heap.h>\n+\n+static int\n+safe_ioctl(int fd, unsigned long request, void *arg)\n+{\n+   int ret;\n+\n+   do {\n+      ret = ioctl(fd, request, arg);\n+   } while (ret == -1 && (errno == EINTR || errno == EAGAIN));\n+\n+   return ret;\n+}\n+\n+static int\n+dma_heap_alloc(int heap_fd, size_t size) {\n+   struct dma_heap_allocation_data alloc_data = {\n+      .len = size,\n+      .fd_flags = O_RDWR | O_CLOEXEC,\n+   };\n+   if (safe_ioctl(heap_fd, DMA_HEAP_IOCTL_ALLOC, &alloc_data) < 0)\n+      return -1;\n+\n+   return alloc_data.fd;\n+}\n+\n+static int\n+ion_heap_alloc(int heap_fd, size_t size) {\n+   struct ion_allocation_data {\n+      __u64 len;\n+      __u32 heap_id_mask;\n+      __u32 flags;\n+      __u32 fd;\n+      __u32 unused;\n+   } alloc_data = {\n+      .len = size,\n+      /* ION_HEAP_SYSTEM | ION_SYSTEM_HEAP_ID */\n+      .heap_id_mask = (1U << 0) | (1U << 25),\n+      .flags = 0, /* uncached */\n+   };\n+\n+   if (safe_ioctl(heap_fd, _IOWR('I', 0, struct ion_allocation_data),\n+                  &alloc_data) < 0)\n+      return -1;\n+\n+   return alloc_data.fd;\n+}\n+\n+static int\n+wrapper_dmabuf_alloc(struct wrapper_device *device, size_t size)\n+{\n+   int fd;\n+\n+   fd = dma_heap_alloc(device->physical->dma_heap_fd, size);\n+\n+   if (fd < 0)\n+      fd = ion_heap_alloc(device->physical->dma_heap_fd, size);\n+\n+   return fd;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_AllocateMemory(VkDevice _device,\n+                       const VkMemoryAllocateInfo* pAllocateInfo,\n+                       const VkAllocationCallbacks* pAllocator,\n+                       VkDeviceMemory* pMemory)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   const VkImportAndroidHardwareBufferInfoANDROID *import_ahb_info;\n+   const VkImportMemoryFdInfoKHR *import_fd_info;\n+   const VkExportMemoryAllocateInfo *export_info;\n+   VkImportMemoryFdInfoKHR local_import_info = { .fd = -1 };\n+   VkExportMemoryAllocateInfo local_export_info;\n+   VkMemoryAllocateInfo wrapper_allocate_info;\n+   struct wrapper_device_memory *memory;\n+   VkMemoryPropertyFlags mem_flags;\n+   bool can_get_ahardware_buffer;\n+   bool can_get_dmabuf_fd;\n+   VkResult result;\n+\n+   mem_flags = device->physical->memory_properties.memoryTypes\n+      [pAllocateInfo->memoryTypeIndex].propertyFlags;\n+\n+   if (!device->vk.enabled_extensions.EXT_map_memory_placed\n+      || !device->vk.enabled_features.memoryMapPlaced\n+      || !(mem_flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)) {\n+      return device->dispatch_table.AllocateMemory(\n+         device->dispatch_handle,\n+         pAllocateInfo,\n+         pAllocator,\n+         pMemory);\n+   }\n+\n+   memory = vk_zalloc2(&device->vk.alloc, pAllocator, sizeof(*memory),\n+                       8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);\n+   if (!memory)\n+      return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   memory->alloc_size = pAllocateInfo->allocationSize;\n+   memory->dmabuf_fd = -1;\n+   memory->ahardware_buffer = NULL;\n+   wrapper_allocate_info = *pAllocateInfo;\n+   \n+   import_ahb_info = vk_find_struct_const(pAllocateInfo,\n+      IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID);\n+   import_fd_info = vk_find_struct_const(pAllocateInfo,\n+      IMPORT_MEMORY_FD_INFO_KHR);\n+   export_info = vk_find_struct_const(pAllocateInfo,\n+      EXPORT_MEMORY_ALLOCATE_INFO);\n+\n+   if (import_ahb_info) {\n+      memory->ahardware_buffer = import_ahb_info->buffer;\n+      AHardwareBuffer_acquire(memory->ahardware_buffer);\n+   } else if (import_fd_info) {\n+      memory->dmabuf_fd = os_dupfd_cloexec(import_fd_info->fd);\n+   } else if (export_info == NULL) {\n+      if (device->import_dmabuf) {\n+         int import_dmabuf_fd = wrapper_dmabuf_alloc(device,\n+            pAllocateInfo->allocationSize);\n+         if (import_dmabuf_fd < 0)\n+            goto fallback;\n+\n+         local_import_info = (VkImportMemoryFdInfoKHR) {\n+            .sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,\n+            .pNext = wrapper_allocate_info.pNext,\n+            .fd = import_dmabuf_fd,\n+            .handleType =\n+               VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,\n+         };\n+         wrapper_allocate_info.pNext = &local_import_info;\n+         memory->dmabuf_fd = os_dupfd_cloexec(import_dmabuf_fd);\n+      } else {\n+      fallback:\n+         local_export_info = (VkExportMemoryAllocateInfo) {\n+            .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,\n+            .pNext = wrapper_allocate_info.pNext,\n+            .handleTypes =\n+               device->physical->vk.supported_extensions.EXT_external_memory_dma_buf\n+               ? VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT\n+               : VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,\n+         };\n+         wrapper_allocate_info.pNext = &local_export_info;\n+         export_info = &local_export_info;\n+      }\n+   }\n+\n+   result = device->dispatch_table.AllocateMemory(device->dispatch_handle,\n+                                                  &wrapper_allocate_info,\n+                                                  pAllocator,\n+                                                  pMemory);\n+   if (result != VK_SUCCESS) {\n+      if (memory->ahardware_buffer)\n+         AHardwareBuffer_release(memory->ahardware_buffer);\n+      if (local_import_info.fd != -1)\n+         close(local_import_info.fd);\n+      if (memory->dmabuf_fd != -1)\n+         close(memory->dmabuf_fd);\n+      vk_free2(&device->vk.alloc, pAllocator, memory);\n+      return vk_error(device, result);\n+   }\n+\n+   can_get_dmabuf_fd = (export_info && export_info->handleTypes ==\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT);\n+   can_get_ahardware_buffer = (export_info && export_info->handleTypes ==\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID);\n+\n+   if (can_get_dmabuf_fd) {\n+      const VkMemoryGetFdInfoKHR get_fd_info = {\n+         .sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,\n+         .memory = *pMemory,\n+         .handleType =\n+            VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,\n+      };\n+      device->dispatch_table.GetMemoryFdKHR(device->dispatch_handle,\n+         &get_fd_info, &memory->dmabuf_fd);\n+   } else if (can_get_ahardware_buffer) {\n+      const VkMemoryGetAndroidHardwareBufferInfoANDROID get_ahb_info = {\n+         .sType = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+         .memory = *pMemory,\n+      };\n+      device->dispatch_table.GetMemoryAndroidHardwareBufferANDROID(\n+         device->dispatch_handle, &get_ahb_info, &memory->ahardware_buffer);\n+   }\n+\n+   _mesa_hash_table_insert(device->memorys, (void *)(*pMemory), memory);\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_FreeMemory(VkDevice _device, VkDeviceMemory _memory,\n+                   const VkAllocationCallbacks* pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   struct hash_entry *entry = NULL;\n+\n+   if (_memory != VK_NULL_HANDLE)\n+      entry = _mesa_hash_table_search(device->memorys, (void *)_memory);\n+\n+   if (entry) {\n+      struct wrapper_device_memory *memory = entry->data;\n+      if (memory->map_address && memory->map_size)\n+         munmap(memory->map_address, memory->map_size);\n+      if (memory->ahardware_buffer)\n+         AHardwareBuffer_release(memory->ahardware_buffer);\n+      if (memory->dmabuf_fd != -1)\n+         close(memory->dmabuf_fd);\n+      vk_free2(&device->vk.alloc, pAllocator, memory);\n+      _mesa_hash_table_remove(device->memorys, entry);\n+   }\n+\n+   device->dispatch_table.FreeMemory(device->dispatch_handle,\n+                                     _memory,\n+                                     pAllocator);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_MapMemory2KHR(VkDevice _device,\n+                      const VkMemoryMapInfoKHR* pMemoryMapInfo,\n+                      void** ppData)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   struct wrapper_device_memory *memory;\n+   const VkMemoryMapPlacedInfoEXT *placed_info = NULL;\n+   const struct hash_entry *entry = NULL;\n+   int fd;\n+\n+   if (pMemoryMapInfo->flags & VK_MEMORY_MAP_PLACED_BIT_EXT)\n+      placed_info = vk_find_struct_const(pMemoryMapInfo->pNext,\n+         MEMORY_MAP_PLACED_INFO_EXT);\n+\n+   if (pMemoryMapInfo->memory != VK_NULL_HANDLE)\n+      entry = _mesa_hash_table_search(device->memorys,\n+         (void *)pMemoryMapInfo->memory);\n+\n+   if (placed_info == NULL || entry == NULL) {\n+      return device->dispatch_table.MapMemory(\n+         device->dispatch_handle,\n+         pMemoryMapInfo->memory,\n+         pMemoryMapInfo->offset,\n+         pMemoryMapInfo->size,\n+         0,\n+         ppData);\n+   }\n+   memory = entry->data;\n+\n+   if (memory->map_address) {\n+      if (placed_info->pPlacedAddress != memory->map_address) {\n+         return VK_ERROR_MEMORY_MAP_FAILED;\n+      } else {\n+         *ppData = (char *)memory->map_address\n+            + pMemoryMapInfo->offset;\n+         return VK_SUCCESS;\n+      }\n+   }\n+   assert(memory->dmabuf_fd >= 0 || memory->ahardware_buffer != NULL);\n+\n+   if (memory->ahardware_buffer) {\n+      const native_handle_t *handle;\n+      const int *handle_fds;\n+\n+      handle = AHardwareBuffer_getNativeHandle(memory->ahardware_buffer);\n+      handle_fds = &handle->data[0];\n+\n+      int idx;\n+      for (idx = 0; idx < handle->numFds; idx++) {\n+         size_t size = lseek(handle_fds[idx], 0, SEEK_END);\n+         if (size >= memory->alloc_size) {\n+            break;\n+         }\n+      }\n+      assert(idx < handle->numFds);\n+      fd = handle_fds[idx];\n+   } else {\n+      fd = memory->dmabuf_fd;\n+   }\n+\n+   if (pMemoryMapInfo->size == VK_WHOLE_SIZE)\n+      memory->map_size = memory->alloc_size > 0 ?\n+         memory->alloc_size : lseek(fd, 0, SEEK_END);\n+   else\n+      memory->map_size = pMemoryMapInfo->size;\n+\n+   memory->map_address = mmap(placed_info->pPlacedAddress,\n+                              memory->map_size,\n+                              PROT_READ | PROT_WRITE,\n+                              MAP_SHARED | MAP_FIXED,\n+                              fd, 0);\n+   if (memory->map_address == MAP_FAILED) {\n+      memory->map_address = NULL;\n+      memory->map_size = 0;\n+      fprintf(stderr, \"%s: mmap failed\\n\", __func__);\n+      return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+   }\n+\n+   *ppData = (char *)memory->map_address + pMemoryMapInfo->offset;\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_UnmapMemory(VkDevice _device, VkDeviceMemory _memory) {\n+   vk_common_UnmapMemory(_device, _memory);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_UnmapMemory2KHR(VkDevice _device,\n+                        const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo)\n+{\n+   VK_FROM_HANDLE(wrapper_device, device, _device);\n+   const struct hash_entry *entry = NULL;\n+\n+   if (pMemoryUnmapInfo->memory != VK_NULL_HANDLE)\n+      entry = _mesa_hash_table_search(device->memorys,\n+                                      (void *)pMemoryUnmapInfo->memory);\n+   if (entry) {\n+      struct wrapper_device_memory *memory = entry->data;\n+      if (pMemoryUnmapInfo->flags & VK_MEMORY_UNMAP_RESERVE_BIT_EXT) {\n+         memory->map_address = mmap(memory->map_address, memory->map_size,\n+            PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);\n+         if (memory->map_address == MAP_FAILED) {\n+            fprintf(stderr, \"Failed to replace mapping with reserved memory\");\n+            return vk_error(device, VK_ERROR_MEMORY_MAP_FAILED);\n+         }\n+      } else {\n+         munmap(memory->map_address, memory->map_size);\n+      }\n+\n+      memory->map_size = 0;\n+      memory->map_address = NULL;\n+   }\n+\n+   device->dispatch_table.UnmapMemory(device->dispatch_handle,\n+                                      pMemoryUnmapInfo->memory);\n+   return VK_SUCCESS;\n+}\n+\n+bool wrapper_try_import_dmabuf(struct wrapper_device *device) {\n+   VkMemoryFdPropertiesKHR fd_props;\n+   VkMemoryAllocateInfo alloc_info;\n+   VkDeviceMemory memory;\n+   VkResult result;\n+   int fd;\n+\n+   if (device->physical->dma_heap_fd < 0)\n+      return false;\n+\n+   fd = wrapper_dmabuf_alloc(device, 0x1000);\n+   if (fd < 0)\n+      return false;\n+\n+   fd_props = (VkMemoryFdPropertiesKHR) {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,\n+   };\n+   result = device->dispatch_table.GetMemoryFdPropertiesKHR(\n+      device->dispatch_handle,\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,\n+      fd, &fd_props);\n+   if (result != VK_SUCCESS) {\n+      close(fd);\n+      return false;\n+   }\n+\n+   alloc_info = (VkMemoryAllocateInfo) {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .allocationSize = 0x1000,\n+      .memoryTypeIndex = wrapper_select_memory_type(\n+         device->physical->memory_properties,\n+         VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |\n+         fd_props.memoryTypeBits),\n+   };\n+   result = device->dispatch_table.AllocateMemory(\n+      device->dispatch_handle, &alloc_info, NULL, &memory);\n+   if (result != VK_SUCCESS) {\n+      close(fd);\n+      return false;\n+   }\n+\n+   device->dispatch_table.FreeMemory(device->dispatch_handle,\n+                                     memory, NULL);\n+   return true;\n+}\n+\ndiff --git a/src/vulkan/wrapper/wrapper_instance.c b/src/vulkan/wrapper/wrapper_instance.c\nnew file mode 100644\nindex 00000000000..3b083ec40d8\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_instance.c\n@@ -0,0 +1,297 @@\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"vk_alloc.h\"\n+#include \"vk_common_entrypoints.h\"\n+#include \"vk_dispatch_table.h\"\n+#include \"vk_extensions.h\"\n+\n+const struct vk_instance_extension_table wrapper_instance_extensions = {\n+   .KHR_get_surface_capabilities2 = true,\n+   .EXT_surface_maintenance1 = true,\n+   .KHR_surface_protected_capabilities = true,\n+   .KHR_surface = true,\n+   .EXT_swapchain_colorspace = true,\n+#ifdef VK_USE_PLATFORM_ANDROID_KHR\n+   .KHR_android_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_XCB_KHR\n+   .KHR_xcb_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_XLIB_KHR\n+   .KHR_xlib_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_WAYLAND_KHR\n+   .KHR_wayland_surface = true,\n+#endif\n+#ifdef VK_USE_PLATFORM_DISPLAY_KHR\n+   .KHR_display = true,\n+   .KHR_get_display_properties2 = true,\n+   .EXT_display_surface_counter = true,\n+   .EXT_acquire_drm_display = true,\n+   .EXT_direct_mode_display = true,\n+#endif\n+   .EXT_headless_surface = true,\n+   .EXT_debug_utils = true,\n+   .EXT_debug_report = true,\n+};\n+\n+static void *vulkan_library_handle;\n+static PFN_vkCreateInstance create_instance;\n+static PFN_vkGetInstanceProcAddr get_instance_proc_addr;\n+static PFN_vkEnumerateInstanceVersion enumerate_instance_version;\n+static PFN_vkEnumerateInstanceExtensionProperties enumerate_instance_extension_properties;\n+static struct vk_instance_extension_table *supported_instance_extensions;\n+\n+#ifdef __LP64__\n+#define DEFAULT_VULKAN_PATH \"/system/lib64/libvulkan.so\"\n+#else\n+#define DEFAULT_VULKAN_PATH \"/system/lib/libvulkan.so\"\n+#endif\n+\n+#include <dlfcn.h>\n+\n+static bool vulkan_library_init()\n+{\n+   if (vulkan_library_handle)\n+      return true;\n+\n+   const char *env = getenv(\"WRAPPER_VULKAN_PATH\");\n+   vulkan_library_handle = dlopen(env ? env : DEFAULT_VULKAN_PATH,\n+                                  RTLD_LOCAL | RTLD_NOW);\n+\n+   if (vulkan_library_handle) {\n+      create_instance = dlsym(vulkan_library_handle, \"vkCreateInstance\");\n+      get_instance_proc_addr = dlsym(vulkan_library_handle,\n+                                     \"vkGetInstanceProcAddr\");\n+      enumerate_instance_version = dlsym(vulkan_library_handle,\n+                                         \"vkEnumerateInstanceVersion\");\n+      enumerate_instance_extension_properties =\n+         dlsym(vulkan_library_handle, \"vkEnumerateInstanceExtensionProperties\");\n+   }\n+   else {\n+      fprintf(stderr, \"%s\", dlerror());\n+   }\n+\n+   return vulkan_library_handle ? true : false;\n+}\n+\n+static VkResult wrapper_vulkan_init()\n+{\n+   VkExtensionProperties props[VK_INSTANCE_EXTENSION_COUNT];\n+   uint32_t prop_count = VK_INSTANCE_EXTENSION_COUNT;\n+   VkResult result;\n+\n+   if (supported_instance_extensions)\n+      return VK_SUCCESS;\n+\n+   if (!vulkan_library_init())\n+      return VK_ERROR_INCOMPATIBLE_DRIVER;\n+\n+   result = enumerate_instance_extension_properties(NULL, &prop_count, props);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   supported_instance_extensions = malloc(sizeof(*supported_instance_extensions));\n+   if (!supported_instance_extensions)\n+      return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+   *supported_instance_extensions = wrapper_instance_extensions;\n+\n+   for(int i = 0; i < prop_count; i++) {\n+      int idx;\n+      for (idx = 0; idx < VK_INSTANCE_EXTENSION_COUNT; idx++) {\n+         if (strcmp(vk_instance_extensions[idx].extensionName,\n+                    props[i].extensionName) == 0)\n+            break;\n+      }\n+\n+      if (idx >= VK_INSTANCE_EXTENSION_COUNT)\n+         continue;\n+\n+      supported_instance_extensions->extensions[idx] = true;\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_EnumerateInstanceVersion(uint32_t* pApiVersion)\n+{\n+\n+   if (!vulkan_library_init())\n+      return vk_error(NULL, VK_ERROR_INCOMPATIBLE_DRIVER);\n+\n+   return enumerate_instance_version(pApiVersion);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_EnumerateInstanceExtensionProperties(const char* pLayerName,\n+                                             uint32_t* pPropertyCount,\n+                                             VkExtensionProperties* pProperties)\n+{\n+   VkResult result;\n+\n+   result = wrapper_vulkan_init();\n+   if (result != VK_SUCCESS)\n+      return vk_error(NULL, result);\n+\n+   return vk_enumerate_instance_extension_properties(supported_instance_extensions,\n+                                                     pPropertyCount,\n+                                                     pProperties);\n+}\n+\n+static inline void\n+set_wrapper_required_extensions(const struct vk_instance *instance,\n+                                uint32_t *enable_extension_count,\n+                                const char **enable_extensions)\n+{\n+   uint32_t count = *enable_extension_count;\n+#define REQUIRED_EXTENSION(name) \\\n+   assert (count < VK_INSTANCE_EXTENSION_COUNT); \\\n+   if (!instance->enabled_extensions.name && \\\n+       supported_instance_extensions->name) { \\\n+      enable_extensions[count++] = \"VK_\" #name; \\\n+   }\n+   REQUIRED_EXTENSION(KHR_get_physical_device_properties2);\n+   REQUIRED_EXTENSION(KHR_external_fence_capabilities);\n+   REQUIRED_EXTENSION(KHR_external_memory_capabilities);\n+   REQUIRED_EXTENSION(KHR_external_semaphore_capabilities);\n+#undef REQUIRED_EXTENSION\n+   *enable_extension_count = count;\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,\n+                       const VkAllocationCallbacks *pAllocator,\n+                       VkInstance *pInstance)\n+{\n+   const char *wrapper_enable_extensions[VK_INSTANCE_EXTENSION_COUNT];\n+   uint32_t wrapper_enable_extension_count = 0;\n+   VkInstanceCreateInfo wrapper_create_info = *pCreateInfo;\n+   struct vk_instance_dispatch_table dispatch_table;\n+   struct wrapper_instance *instance;\n+   VkResult result;\n+\n+   result = wrapper_vulkan_init();\n+   if (result != VK_SUCCESS)\n+      return vk_error(NULL, result);\n+\n+   instance = vk_zalloc2(vk_default_allocator(), pAllocator, sizeof(*instance),\n+                         8, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);\n+   if (!instance)\n+      return vk_error(NULL, VK_ERROR_OUT_OF_HOST_MEMORY);\n+\n+   vk_instance_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wrapper_instance_entrypoints, true);\n+   vk_instance_dispatch_table_from_entrypoints(\n+      &dispatch_table, &wsi_instance_entrypoints, false);\n+\n+   result = vk_instance_init(&instance->vk, supported_instance_extensions,\n+                             &dispatch_table, pCreateInfo,\n+                             pAllocator ? pAllocator : vk_default_allocator());\n+\n+   if (result != VK_SUCCESS) {\n+      vk_free2(vk_default_allocator(), pAllocator, instance);\n+      return vk_error(NULL, result);\n+   }\n+\n+   instance->vk.physical_devices.enumerate = enumerate_physical_device;\n+   instance->vk.physical_devices.destroy = destroy_physical_device;\n+\n+   for (int idx = 0; idx < pCreateInfo->enabledExtensionCount; idx++) {\n+      if (wrapper_instance_extensions.extensions[idx])\n+         continue;\n+\n+      if (!instance->vk.enabled_extensions.extensions[idx])\n+         continue;\n+\n+      wrapper_enable_extensions[wrapper_enable_extension_count++] =\n+         vk_instance_extensions[idx].extensionName;\n+   }\n+\n+   set_wrapper_required_extensions(&instance->vk,\n+                                   &wrapper_enable_extension_count,\n+                                   wrapper_enable_extensions);\n+\n+   wrapper_create_info.enabledExtensionCount = wrapper_enable_extension_count;\n+   wrapper_create_info.ppEnabledExtensionNames = wrapper_enable_extensions;\n+\n+   result = create_instance(&wrapper_create_info, pAllocator,\n+                            &instance->dispatch_handle);\n+   if (result != VK_SUCCESS) {\n+      vk_instance_finish(&instance->vk);\n+      vk_free2(vk_default_allocator(), pAllocator, instance);\n+      return vk_error(NULL, result);\n+   }\n+   vk_instance_dispatch_table_load(&instance->dispatch_table,\n+                                   get_instance_proc_addr,\n+                                   instance->dispatch_handle);\n+\n+   *pInstance = wrapper_instance_to_handle(instance);\n+\n+   return VK_SUCCESS;\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DestroyInstance(VkInstance _instance,\n+                        const VkAllocationCallbacks *pAllocator)\n+{\n+   VK_FROM_HANDLE(wrapper_instance, instance, _instance);\n+   instance->dispatch_table.DestroyInstance(instance->dispatch_handle,\n+                                            pAllocator);\n+   vk_instance_finish(&instance->vk);\n+   vk_free2(&instance->vk.alloc, pAllocator, instance);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_DebugReportMessageEXT(VkInstance _instance,\n+                                VkDebugReportFlagsEXT flags,\n+                                VkDebugReportObjectTypeEXT objectType,\n+                                uint64_t object,\n+                                size_t location,\n+                                int32_t messageCode,\n+                                const char* pLayerPrefix,\n+                                const char* pMessage)\n+{\n+   VK_FROM_HANDLE(wrapper_instance, instance, _instance);\n+\n+   switch (objectType) {\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:\n+   case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:\n+      break;\n+   default:\n+      object = (uint64_t)VK_NULL_HANDLE;\n+   }\n+\n+   vk_common_DebugReportMessageEXT(instance->dispatch_handle, flags,\n+                                   objectType, object, location, messageCode,\n+                                   pLayerPrefix, pMessage);\n+}\n+\n+VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+wrapper_GetInstanceProcAddr(VkInstance _instance,\n+                            const char *pName)\n+{\n+   VK_FROM_HANDLE(wrapper_instance, instance, _instance);\n+   return vk_instance_get_proc_addr(&instance->vk,\n+                                    &wrapper_instance_entrypoints,\n+                                    pName);\n+}\n+\n+PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+vk_icdGetInstanceProcAddr(VkInstance instance,\n+                          const char *pName);\n+\n+\n+PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+vk_icdGetInstanceProcAddr(VkInstance instance,\n+                          const char *pName)\n+{\n+   return wrapper_GetInstanceProcAddr(instance, pName);\n+}\ndiff --git a/src/vulkan/wrapper/wrapper_physical_device.c b/src/vulkan/wrapper/wrapper_physical_device.c\nnew file mode 100644\nindex 00000000000..196dfea81b7\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_physical_device.c\n@@ -0,0 +1,215 @@\n+#include \"wrapper_private.h\"\n+#include \"wrapper_entrypoints.h\"\n+#include \"wrapper_trampolines.h\"\n+#include \"vk_alloc.h\"\n+#include \"vk_common_entrypoints.h\"\n+#include \"vk_dispatch_table.h\"\n+#include \"vk_extensions.h\"\n+#include \"vk_physical_device.h\"\n+#include \"vk_util.h\"\n+#include \"wsi_common.h\"\n+#include \"util/os_misc.h\"\n+\n+static VkResult\n+wrapper_setup_device_extensions(struct wrapper_physical_device *pdevice) {\n+   struct vk_device_extension_table *exts = &pdevice->vk.supported_extensions;\n+   VkExtensionProperties pdevice_extensions[VK_DEVICE_EXTENSION_COUNT];\n+   uint32_t pdevice_extension_count = VK_DEVICE_EXTENSION_COUNT;\n+   VkResult result;\n+\n+   result = pdevice->dispatch_table.EnumerateDeviceExtensionProperties(\n+      pdevice->dispatch_handle, NULL, &pdevice_extension_count, pdevice_extensions);\n+\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   *exts = wrapper_device_extensions;\n+\n+   for (int i = 0; i < pdevice_extension_count; i++) {\n+      int idx;\n+      for (idx = 0; idx < VK_DEVICE_EXTENSION_COUNT; idx++) {\n+         if (strcmp(vk_device_extensions[idx].extensionName,\n+                     pdevice_extensions[i].extensionName) == 0)\n+            break;\n+      }\n+\n+      if (idx >= VK_DEVICE_EXTENSION_COUNT)\n+         continue;\n+\n+      if (wrapper_filter_extensions.extensions[idx])\n+         continue;\n+\n+      exts->extensions[idx] = true;\n+   }\n+\n+   exts->KHR_present_wait = exts->KHR_timeline_semaphore;\n+\n+   return VK_SUCCESS;\n+}\n+\n+static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL\n+wrapper_wsi_proc_addr(VkPhysicalDevice physicalDevice, const char *pName)\n+{\n+   VK_FROM_HANDLE(vk_physical_device, pdevice, physicalDevice);\n+   return vk_instance_get_proc_addr_unchecked(pdevice->instance, pName);\n+}\n+\n+VkResult enumerate_physical_device(struct vk_instance *_instance)\n+{\n+   struct wrapper_instance *instance = (struct wrapper_instance *)_instance;\n+   VkPhysicalDevice physical_devices[16];\n+   uint32_t physical_device_count = 16;\n+   VkResult result;\n+\n+   result = instance->dispatch_table.EnumeratePhysicalDevices(\n+      instance->dispatch_handle, &physical_device_count, physical_devices);\n+\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   for (int i = 0; i < physical_device_count; i++) {\n+      PFN_vkGetInstanceProcAddr get_instance_proc_addr;\n+      struct wrapper_physical_device *pdevice;\n+\n+      pdevice = vk_zalloc(&_instance->alloc, sizeof(*pdevice), 8,\n+                          VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);\n+      if (!pdevice)\n+         return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+      struct vk_physical_device_dispatch_table dispatch_table;\n+      vk_physical_device_dispatch_table_from_entrypoints(\n+         &dispatch_table, &wrapper_physical_device_entrypoints, true);\n+      vk_physical_device_dispatch_table_from_entrypoints(\n+         &dispatch_table, &wsi_physical_device_entrypoints, false);\n+      vk_physical_device_dispatch_table_from_entrypoints(\n+         &dispatch_table, &wrapper_physical_device_trampolines, false);\n+\n+      result = vk_physical_device_init(&pdevice->vk,\n+                                       &instance->vk,\n+                                       NULL, NULL, NULL,\n+                                       &dispatch_table);\n+      if (result != VK_SUCCESS) {\n+         vk_free(&_instance->alloc, pdevice);\n+         return result;\n+      }\n+\n+      pdevice->instance = instance;\n+      pdevice->dispatch_handle = physical_devices[i];\n+      get_instance_proc_addr = instance->dispatch_table.GetInstanceProcAddr;\n+\n+      vk_physical_device_dispatch_table_load(&pdevice->dispatch_table,\n+                                             get_instance_proc_addr,\n+                                             instance->dispatch_handle);\n+\n+      wrapper_setup_device_extensions(pdevice);\n+      wrapper_setup_device_features(pdevice);\n+\n+      struct vk_features *supported_features = &pdevice->vk.supported_features;\n+      pdevice->backup_supported_features = *supported_features;\n+      supported_features->presentId = true;\n+      supported_features->presentWait = supported_features->timelineSemaphore;\n+      supported_features->swapchainMaintenance1 = true;\n+      supported_features->imageCompressionControlSwapchain = false;\n+      supported_features->memoryMapPlaced = true;\n+      supported_features->memoryUnmapReserve = true;\n+      supported_features->textureCompressionBC = true;\n+\n+      result = wsi_device_init(&pdevice->wsi_device,\n+                               wrapper_physical_device_to_handle(pdevice),\n+                               wrapper_wsi_proc_addr, &_instance->alloc, -1,\n+                               NULL, &(struct wsi_device_options){});\n+      if (result != VK_SUCCESS) {\n+         vk_physical_device_finish(&pdevice->vk);\n+         vk_free(&_instance->alloc, pdevice);\n+         return result;\n+      }\n+      pdevice->vk.wsi_device = &pdevice->wsi_device;\n+      pdevice->wsi_device.force_bgra8_unorm_first = true;\n+#ifdef __ANDROID__\n+      pdevice->wsi_device.wants_ahardware_buffer = true;\n+#endif\n+\n+      pdevice->dispatch_table.GetPhysicalDeviceMemoryProperties(\n+         pdevice->dispatch_handle, &pdevice->memory_properties);\n+\n+      pdevice->dma_heap_fd = open(\"/dev/dma_heap/system\", O_RDONLY);\n+      if (pdevice->dma_heap_fd < 0)\n+         pdevice->dma_heap_fd = open(\"/dev/ion\", O_RDONLY);\n+\n+      list_addtail(&pdevice->vk.link, &_instance->physical_devices.list);\n+   }\n+\n+   return VK_SUCCESS;\n+}\n+\n+void destroy_physical_device(struct vk_physical_device *pdevice) {\n+   VK_FROM_HANDLE(wrapper_physical_device, wpdevice,\n+                  vk_physical_device_to_handle(pdevice));\n+   if (wpdevice->dma_heap_fd != -1)\n+      close(wpdevice->dma_heap_fd);\n+   wsi_device_finish(pdevice->wsi_device, &pdevice->instance->alloc);\n+   vk_physical_device_finish(pdevice);\n+   vk_free(&pdevice->instance->alloc, pdevice);\n+}\n+\n+VKAPI_ATTR VkResult VKAPI_CALL\n+wrapper_EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,\n+                                           const char* pLayerName,\n+                                           uint32_t* pPropertyCount,\n+                                           VkExtensionProperties* pProperties)\n+{\n+   return vk_common_EnumerateDeviceExtensionProperties(physicalDevice,\n+                                                       pLayerName,\n+                                                       pPropertyCount,\n+                                                       pProperties);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,\n+                                  VkPhysicalDeviceFeatures* pFeatures)\n+{\n+   return vk_common_GetPhysicalDeviceFeatures(physicalDevice, pFeatures);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,\n+                                   VkPhysicalDeviceFeatures2* pFeatures) {\n+   vk_common_GetPhysicalDeviceFeatures2(physicalDevice, pFeatures);\n+}\n+\n+VKAPI_ATTR void VKAPI_CALL\n+wrapper_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,\n+                                     VkPhysicalDeviceProperties2* pProperties)\n+{\n+   VK_FROM_HANDLE(wrapper_physical_device, pdevice, physicalDevice);\n+   pdevice->dispatch_table.GetPhysicalDeviceProperties2(\n+      pdevice->dispatch_handle, pProperties);\n+\n+   vk_foreach_struct(prop, pProperties->pNext) {\n+      switch (prop->sType) {\n+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT:\n+      {\n+         VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *placed_prop =\n+               (VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *)prop;\n+         uint64_t os_page_size;\n+         os_get_page_size(&os_page_size);\n+         placed_prop->minPlacedMemoryMapAlignment = os_page_size;\n+         break;\n+      }\n+      default:\n+         break;\n+      }\n+   }\n+}\n+\n+uint32_t\n+wrapper_select_memory_type(VkPhysicalDeviceMemoryProperties props,\n+                           VkMemoryPropertyFlags flags) {\n+   int idx;\n+   for (idx = 0; idx < props.memoryTypeCount; idx ++) {\n+      if (props.memoryTypes[idx].propertyFlags & flags) {\n+         break;\n+      }\n+   }\n+   return idx < props.memoryTypeCount ? idx : 0;\n+}\ndiff --git a/src/vulkan/wrapper/wrapper_private.h b/src/vulkan/wrapper/wrapper_private.h\nnew file mode 100644\nindex 00000000000..0809d00d90d\n--- /dev/null\n+++ b/src/vulkan/wrapper/wrapper_private.h\n@@ -0,0 +1,94 @@\n+#include \"vulkan/runtime/vk_instance.h\"\n+#include \"vulkan/runtime/vk_physical_device.h\"\n+#include \"vulkan/runtime/vk_device.h\"\n+#include \"vulkan/runtime/vk_queue.h\"\n+#include \"vulkan/runtime/vk_command_buffer.h\"\n+#include \"vulkan/runtime/vk_log.h\"\n+#include \"vulkan/util/vk_dispatch_table.h\"\n+#include \"vulkan/wsi/wsi_common.h\"\n+#include \"util/hash_table.h\"\n+\n+extern const struct vk_instance_extension_table wrapper_instance_extensions;\n+extern const struct vk_device_extension_table wrapper_device_extensions;\n+extern const struct vk_device_extension_table wrapper_filter_extensions;\n+\n+struct wrapper_instance {\n+   struct vk_instance vk;\n+\n+   VkInstance dispatch_handle;\n+   struct vk_instance_dispatch_table dispatch_table;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_instance, vk.base, VkInstance,\n+                       VK_OBJECT_TYPE_INSTANCE)\n+\n+struct wrapper_physical_device {\n+   struct vk_physical_device vk;\n+\n+   int dma_heap_fd;\n+   VkPhysicalDevice dispatch_handle;\n+   VkPhysicalDeviceMemoryProperties memory_properties;\n+   struct wsi_device wsi_device;\n+   struct wrapper_instance *instance;\n+   struct vk_features backup_supported_features;\n+   struct vk_physical_device_dispatch_table dispatch_table;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_physical_device, vk.base, VkPhysicalDevice,\n+                       VK_OBJECT_TYPE_PHYSICAL_DEVICE)\n+\n+struct wrapper_queue {\n+   struct vk_queue vk;\n+\n+   struct wrapper_device *device;\n+   VkQueue dispatch_handle;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_queue, vk.base, VkQueue,\n+                       VK_OBJECT_TYPE_QUEUE)\n+\n+struct wrapper_device {\n+   struct vk_device vk;\n+\n+   bool import_dmabuf;\n+   VkDevice dispatch_handle;\n+   struct list_head command_buffers;\n+   struct hash_table *memorys;\n+   struct wrapper_physical_device *physical;\n+   struct vk_device_dispatch_table dispatch_table;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_device, vk.base, VkDevice,\n+                       VK_OBJECT_TYPE_DEVICE)\n+\n+struct wrapper_command_buffer {\n+   struct vk_command_buffer vk;\n+\n+   struct wrapper_device *device;\n+   struct list_head link;\n+   VkCommandPool pool;\n+   VkCommandBuffer dispatch_handle;\n+};\n+\n+VK_DEFINE_HANDLE_CASTS(wrapper_command_buffer, vk.base, VkCommandBuffer,\n+                       VK_OBJECT_TYPE_COMMAND_BUFFER)\n+\n+struct wrapper_device_memory {\n+   struct AHardwareBuffer *ahardware_buffer;\n+   int dmabuf_fd;\n+   void *map_address;\n+   size_t map_size;\n+   size_t alloc_size;\n+};\n+\n+VkResult enumerate_physical_device(struct vk_instance *_instance);\n+void destroy_physical_device(struct vk_physical_device *pdevice);\n+\n+void\n+wrapper_setup_device_features(struct wrapper_physical_device *physical_device);\n+\n+uint32_t\n+wrapper_select_memory_type(VkPhysicalDeviceMemoryProperties props,\n+                           VkMemoryPropertyFlags flags);\n+\n+bool wrapper_try_import_dmabuf(struct wrapper_device *device);\ndiff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c\nindex 898bdd7bcdb..a11b6bd64bc 100644\n--- a/src/vulkan/wsi/wsi_common.c\n+++ b/src/vulkan/wsi/wsi_common.c\n@@ -201,6 +201,8 @@ wsi_device_init(struct wsi_device *wsi,\n    WSI_GET_CB(GetPhysicalDeviceFormatProperties2);\n    WSI_GET_CB(GetPhysicalDeviceImageFormatProperties2);\n    WSI_GET_CB(GetSemaphoreFdKHR);\n+   WSI_GET_CB(ImportSemaphoreFdKHR);\n+   WSI_GET_CB(ImportFenceFdKHR);\n    WSI_GET_CB(ResetFences);\n    WSI_GET_CB(QueueSubmit);\n    WSI_GET_CB(WaitForFences);\n@@ -1167,8 +1169,16 @@ wsi_signal_semaphore_for_image(struct vk_device *device,\n                                const struct wsi_image *image,\n                                VkSemaphore _semaphore)\n {\n-   if (device->physical->supported_sync_types == NULL)\n-      return VK_SUCCESS;\n+   if (device->physical->supported_sync_types == NULL) {\n+      const VkImportSemaphoreFdInfoKHR import_fd_info = {\n+         .sType = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,\n+         .semaphore = _semaphore,\n+         .handleType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,\n+         .fd = -1,\n+         .flags = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,\n+      };\n+      return chain->wsi->ImportSemaphoreFdKHR(chain->device, &import_fd_info);\n+   }\n \n    VK_FROM_HANDLE(vk_semaphore, semaphore, _semaphore);\n \n@@ -1203,8 +1213,16 @@ wsi_signal_fence_for_image(struct vk_device *device,\n                            const struct wsi_image *image,\n                            VkFence _fence)\n {\n-   if (device->physical->supported_sync_types == NULL)\n-      return VK_SUCCESS;\n+   if (device->physical->supported_sync_types == NULL) {\n+      const VkImportFenceFdInfoKHR import_fd_info = {\n+         .sType = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,\n+         .fence = _fence,\n+         .handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,\n+         .fd = -1,\n+         .flags = VK_FENCE_IMPORT_TEMPORARY_BIT,\n+      };\n+      return chain->wsi->ImportFenceFdKHR(chain->device, &import_fd_info);\n+   }\n \n    VK_FROM_HANDLE(vk_fence, fence, _fence);\n \ndiff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h\nindex 014cb718b17..2316d3156d0 100644\n--- a/src/vulkan/wsi/wsi_common.h\n+++ b/src/vulkan/wsi/wsi_common.h\n@@ -263,6 +263,8 @@ struct wsi_device {\n    WSI_CB(GetPhysicalDeviceFormatProperties2);\n    WSI_CB(GetPhysicalDeviceImageFormatProperties2);\n    WSI_CB(GetSemaphoreFdKHR);\n+   WSI_CB(ImportSemaphoreFdKHR);\n+   WSI_CB(ImportFenceFdKHR);\n    WSI_CB(ResetFences);\n    WSI_CB(QueueSubmit);\n    WSI_CB(WaitForFences);\n-- \n2.47.0\n\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/03-wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/04-vulkan-x11-termux-x11-support.patch",
    "content": "From 71435ecce42a2438096d6c24b3730fd3686a99ee Mon Sep 17 00:00:00 2001\nFrom: xMeM <haooy@outlook.com>\nDate: Thu, 14 Nov 2024 15:27:49 +0800\nSubject: [PATCH 2/2] vulkan/x11: termux-x11 support\n\nSigned-off-by: xMeM <haooy@outlook.com>\n---\n src/vulkan/wsi/wsi_common.c         | 314 +++++++++++++++++++++++++++-\n src/vulkan/wsi/wsi_common.h         |   7 +\n src/vulkan/wsi/wsi_common_private.h |   8 +\n src/vulkan/wsi/wsi_common_x11.c     |  99 +++++----\n 4 files changed, 390 insertions(+), 38 deletions(-)\n\ndiff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c\nindex a11b6bd64bc..77755e96b93 100644\n--- a/src/vulkan/wsi/wsi_common.c\n+++ b/src/vulkan/wsi/wsi_common.c\n@@ -47,6 +47,10 @@\n #include <unistd.h>\n #endif\n \n+#ifdef __ANDROID__\n+#include <android/hardware_buffer.h>\n+#endif\n+\n uint64_t WSI_DEBUG;\n \n static const struct debug_control debug_control[] = {\n@@ -55,6 +59,7 @@ static const struct debug_control debug_control[] = {\n    { \"noshm\",        WSI_DEBUG_NOSHM },\n    { \"linear\",       WSI_DEBUG_LINEAR },\n    { \"dxgi\",         WSI_DEBUG_DXGI },\n+   { \"blit\",         WSI_DEBUG_BLIT },\n    { NULL, },\n };\n \n@@ -86,6 +91,7 @@ wsi_device_init(struct wsi_device *wsi,\n    wsi->sw = device_options->sw_device || (WSI_DEBUG & WSI_DEBUG_SW);\n    wsi->wants_linear = (WSI_DEBUG & WSI_DEBUG_LINEAR) != 0;\n    wsi->x11.extra_xwayland_image = device_options->extra_xwayland_image;\n+   wsi->needs_blit = (WSI_DEBUG & WSI_DEBUG_BLIT) != 0;\n #define WSI_GET_CB(func) \\\n    PFN_vk##func func = (PFN_vk##func)proc_addr(pdevice, \"vk\" #func)\n    WSI_GET_CB(GetPhysicalDeviceExternalSemaphoreProperties);\n@@ -99,12 +105,19 @@ wsi_device_init(struct wsi_device *wsi,\n    wsi->pci_bus_info.sType =\n       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;\n    wsi->pci_bus_info.pNext = &wsi->drm_info;\n+   VkPhysicalDeviceDriverProperties pddp = {\n+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,\n+      .pNext = &wsi->pci_bus_info,\n+   };\n    VkPhysicalDeviceProperties2 pdp2 = {\n       .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,\n-      .pNext = &wsi->pci_bus_info,\n+      .pNext = &pddp,\n    };\n    GetPhysicalDeviceProperties2(pdevice, &pdp2);\n \n+   if (pddp.driverID == VK_DRIVER_ID_ARM_PROPRIETARY)\n+      wsi->needs_blit = true;\n+\n    wsi->maxImageDimension2D = pdp2.properties.limits.maxImageDimension2D;\n    assert(pdp2.properties.limits.optimalBufferCopyRowPitchAlignment <= UINT32_MAX);\n    wsi->optimalBufferCopyRowPitchAlignment =\n@@ -210,6 +223,10 @@ wsi_device_init(struct wsi_device *wsi,\n    WSI_GET_CB(UnmapMemory);\n    if (wsi->khr_present_wait)\n       WSI_GET_CB(WaitSemaphores);\n+#ifdef __ANDROID__\n+   WSI_GET_CB(GetMemoryAndroidHardwareBufferANDROID);\n+   WSI_GET_CB(GetAndroidHardwareBufferPropertiesANDROID);\n+#endif\n #undef WSI_GET_CB\n \n #ifdef VK_USE_PLATFORM_XCB_KHR\n@@ -366,6 +383,12 @@ get_blit_type(const struct wsi_device *wsi,\n       return wsi_cpu_image_needs_buffer_blit(wsi, cpu_params) ?\n          WSI_SWAPCHAIN_BUFFER_BLIT : WSI_SWAPCHAIN_NO_BLIT;\n    }\n+#ifdef __ANDROID__\n+   case WSI_IMAGE_TYPE_AHB: {\n+      return wsi->needs_blit ? WSI_SWAPCHAIN_IMAGE_BLIT :\n+         WSI_SWAPCHAIN_NO_BLIT;\n+   }\n+#endif\n #ifdef HAVE_LIBDRM\n    case WSI_IMAGE_TYPE_DRM: {\n       const struct wsi_drm_image_params *drm_params =\n@@ -386,6 +409,14 @@ get_blit_type(const struct wsi_device *wsi,\n    }\n }\n \n+#ifdef __ANDROID__\n+static VkResult\n+wsi_configure_ahb_image(const struct wsi_swapchain *chain,\n+                        const VkSwapchainCreateInfoKHR *pCreateInfo,\n+                        const struct wsi_base_image_params *params,\n+                        struct wsi_image_info *info);\n+#endif\n+\n static VkResult\n configure_image(const struct wsi_swapchain *chain,\n                 const VkSwapchainCreateInfoKHR *pCreateInfo,\n@@ -399,6 +430,11 @@ configure_image(const struct wsi_swapchain *chain,\n          container_of(params, const struct wsi_cpu_image_params, base);\n       return wsi_configure_cpu_image(chain, pCreateInfo, cpu_params, info);\n    }\n+#ifdef __ANDROID__\n+   case WSI_IMAGE_TYPE_AHB: {\n+      return wsi_configure_ahb_image(chain, pCreateInfo, params, info);\n+   }\n+#endif\n #ifdef HAVE_LIBDRM\n    case WSI_IMAGE_TYPE_DRM: {\n       const struct wsi_drm_image_params *drm_params =\n@@ -698,6 +734,12 @@ wsi_destroy_image_info(const struct wsi_swapchain *chain,\n       vk_free(&chain->alloc, info->modifier_props);\n       info->modifier_props = NULL;\n    }\n+#ifdef __ANDROID__\n+   if (info->ahb_desc != NULL) {\n+      vk_free(&chain->alloc, info->ahb_desc);\n+      info->ahb_desc = NULL;\n+   }\n+#endif\n }\n \n VkResult\n@@ -760,6 +802,11 @@ wsi_destroy_image(const struct wsi_swapchain *chain,\n {\n    const struct wsi_device *wsi = chain->wsi;\n \n+#ifdef __ANDROID__\n+   if (image->ahb)\n+      AHardwareBuffer_release(image->ahb);\n+#endif\n+\n #ifndef _WIN32\n    if (image->dma_buf_fd >= 0)\n       close(image->dma_buf_fd);\n@@ -2161,6 +2208,162 @@ wsi_create_cpu_linear_image_mem(const struct wsi_swapchain *chain,\n    return VK_SUCCESS;\n }\n \n+#ifdef __ANDROID__\n+static VkResult\n+wsi_create_ahb_image_mem(const struct wsi_swapchain *chain,\n+                         const struct wsi_image_info *info,\n+                         struct wsi_image *image)\n+{\n+   const struct wsi_device *wsi = chain->wsi;\n+   VkAndroidHardwareBufferPropertiesANDROID ahb_props;\n+   VkResult result;\n+\n+   if (AHardwareBuffer_allocate(info->ahb_desc, &image->ahb))\n+      return VK_ERROR_OUT_OF_HOST_MEMORY;\n+\n+   ahb_props = (VkAndroidHardwareBufferPropertiesANDROID) {\n+      .sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,\n+   };\n+\n+   result = wsi->GetAndroidHardwareBufferPropertiesANDROID(\n+      chain->device, image->ahb, &ahb_props);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   const VkMemoryDedicatedAllocateInfo memory_dedicated_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n+      .image = image->image,\n+      .buffer = VK_NULL_HANDLE,\n+   };\n+   VkImportAndroidHardwareBufferInfoANDROID impory_memory_info = {\n+      .sType = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+      .pNext = &memory_dedicated_info,\n+      .buffer = image->ahb,\n+   };\n+   VkMemoryAllocateInfo memory_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .pNext = &impory_memory_info,\n+      .allocationSize = ahb_props.allocationSize,\n+      .memoryTypeIndex =\n+         wsi_select_device_memory_type(wsi, ahb_props.memoryTypeBits),\n+   };\n+\n+   result = wsi->AllocateMemory(chain->device, &memory_info,\n+                                &chain->alloc, &image->memory);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   image->num_planes = 1;\n+   image->drm_modifier = 0;\n+\n+   return VK_SUCCESS;\n+}\n+\n+static VkResult\n+wsi_create_ahb_blit_context(const struct wsi_swapchain *chain,\n+                            const struct wsi_image_info *info,\n+                            struct wsi_image *image)\n+{\n+   assert(chain->blit.type == WSI_SWAPCHAIN_IMAGE_BLIT);\n+\n+   const VkExternalMemoryHandleTypeFlags handle_types =\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;\n+\n+   const struct wsi_device *wsi = chain->wsi;\n+   VkResult result;\n+\n+   const VkExternalMemoryImageCreateInfo image_external_info = {\n+      .sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,\n+      .handleTypes = handle_types,\n+   };\n+   const VkImageCreateInfo image_info = {\n+      .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,\n+      .pNext = &image_external_info,\n+      .flags = 0u,\n+      .extent = info->create.extent,\n+      .format = VK_FORMAT_R8G8B8A8_UNORM,\n+      .imageType = VK_IMAGE_TYPE_2D,\n+      .mipLevels = 1,\n+      .arrayLayers = 1,\n+      .samples = VK_SAMPLE_COUNT_1_BIT,\n+      .tiling = VK_IMAGE_TILING_OPTIMAL,\n+      .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT,\n+      .sharingMode = VK_SHARING_MODE_EXCLUSIVE,\n+      .queueFamilyIndexCount = info->create.queueFamilyIndexCount,\n+      .pQueueFamilyIndices = info->create.pQueueFamilyIndices,\n+      .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED,\n+   };\n+   result = wsi->CreateImage(chain->device, &image_info,\n+                             &chain->alloc, &image->blit.image);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   VkMemoryDedicatedAllocateInfo img_mem_dedicated_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n+      .pNext = NULL,\n+      .image = image->blit.image,\n+      .buffer = VK_NULL_HANDLE,\n+   };\n+   VkExportMemoryAllocateInfo export_info = {\n+      .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,\n+      .pNext = &img_mem_dedicated_info,\n+      .handleTypes = handle_types,\n+   };\n+   VkMemoryAllocateInfo buf_mem_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .pNext = &export_info,\n+      .allocationSize = 0,\n+      .memoryTypeIndex = 0,\n+   };\n+\n+   result = wsi->AllocateMemory(chain->device, &buf_mem_info,\n+                                &chain->alloc, &image->blit.memory);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   result = wsi->BindImageMemory(chain->device, image->blit.image,\n+                                 image->blit.memory, 0);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   VkMemoryGetAndroidHardwareBufferInfoANDROID get_ahb_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,\n+      .pNext = NULL,\n+      .memory = image->blit.memory,\n+   };\n+\n+   result = wsi->GetMemoryAndroidHardwareBufferANDROID(\n+      chain->device, &get_ahb_info, &image->ahb);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   VkMemoryRequirements reqs;\n+   wsi->GetImageMemoryRequirements(chain->device, image->image, &reqs);\n+\n+   const VkMemoryDedicatedAllocateInfo memory_dedicated_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,\n+      .image = image->image,\n+   };\n+   const VkMemoryAllocateInfo memory_info = {\n+      .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,\n+      .pNext = &memory_dedicated_info,\n+      .allocationSize = reqs.size,\n+      .memoryTypeIndex =\n+         wsi_select_device_memory_type(wsi, reqs.memoryTypeBits),\n+   };\n+\n+   result = wsi->AllocateMemory(chain->device, &memory_info,\n+                                &chain->alloc, &image->memory);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   image->num_planes = 1;\n+\n+   return VK_SUCCESS;\n+}\n+\n+#endif\n+\n static VkResult\n wsi_create_cpu_buffer_image_mem(const struct wsi_swapchain *chain,\n                                 const struct wsi_image_info *info,\n@@ -2233,6 +2436,115 @@ wsi_configure_cpu_image(const struct wsi_swapchain *chain,\n    return VK_SUCCESS;\n }\n \n+#ifdef __ANDROID__\n+inline static uint32_t\n+vk_format_to_ahb_format(VkFormat format) {\n+   switch (format) {\n+   case VK_FORMAT_B8G8R8A8_SRGB:\n+   case VK_FORMAT_B8G8R8A8_UNORM:\n+      return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;\n+   case VK_FORMAT_R5G6B5_UNORM_PACK16:\n+      return AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM;\n+   case VK_FORMAT_A2R10G10B10_UNORM_PACK32:\n+      return AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM;\n+   default:\n+      unreachable(\"unsupported format\");\n+   }\n+}\n+#endif\n+\n+#ifdef __ANDROID__\n+static VkResult\n+wsi_configure_ahb_image(const struct wsi_swapchain *chain,\n+                        const VkSwapchainCreateInfoKHR *pCreateInfo,\n+                        const struct wsi_base_image_params *params,\n+                        struct wsi_image_info *info)\n+{\n+   assert(params->image_type == WSI_IMAGE_TYPE_AHB);\n+   assert(chain->blit.type == WSI_SWAPCHAIN_NO_BLIT ||\n+          chain->blit.type == WSI_SWAPCHAIN_IMAGE_BLIT);\n+\n+   VkResult result;\n+\n+   if (chain->blit.type == WSI_SWAPCHAIN_IMAGE_BLIT) {\n+      result = wsi_configure_image(chain, pCreateInfo, 0, info);\n+      if (result != VK_SUCCESS)\n+         return result;\n+\n+      wsi_configure_image_blit_image(chain, info);\n+      info->create_mem = wsi_create_ahb_blit_context;\n+      return VK_SUCCESS;\n+   }\n+\n+   VkExternalMemoryHandleTypeFlags handle_types =\n+      VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;\n+\n+   VkPhysicalDeviceImageFormatInfo2 format_info = {\n+      .sType =\n+         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,\n+      .format = pCreateInfo->imageFormat,\n+      .type = VK_IMAGE_TYPE_2D,\n+      .tiling = VK_IMAGE_TILING_OPTIMAL,\n+      .usage = pCreateInfo->imageUsage,\n+      .flags = info->create.flags,\n+   };\n+   VkPhysicalDeviceExternalImageFormatInfo external_format_info =\n+   {\n+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,\n+      .pNext = NULL,\n+      .handleType = handle_types,\n+   };\n+   __vk_append_struct(&format_info, &external_format_info);\n+\n+   VkImageFormatProperties2 format_props = {\n+      .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,\n+   };\n+   VkExternalImageFormatProperties external_format_props = {\n+      .sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,\n+      .pNext = NULL,\n+   };\n+   __vk_append_struct(&format_props, &external_format_props);\n+\n+   result = chain->wsi->GetPhysicalDeviceImageFormatProperties2(\n+      chain->wsi->pdevice, &format_info, &format_props);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   assert(pCreateInfo->imageExtent.width <= format_props.imageFormatProperties.maxExtent.width &&\n+          pCreateInfo->imageExtent.height <= format_props.imageFormatProperties.maxExtent.height);\n+   assert(external_format_props.externalMemoryProperties.externalMemoryFeatures &\n+          VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT);\n+\n+   result = wsi_configure_image(chain, pCreateInfo, handle_types,\n+                                info);\n+   if (result != VK_SUCCESS)\n+      return result;\n+\n+   info->ahb_desc = vk_alloc(&chain->alloc,\n+                             sizeof(AHardwareBuffer_Desc),\n+                             8,\n+                             VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);\n+   if (!info->ahb_desc) {\n+      wsi_destroy_image_info(chain, info);\n+      return VK_ERROR_OUT_OF_HOST_MEMORY;\n+   }\n+\n+   *info->ahb_desc = (AHardwareBuffer_Desc) {\n+      .width = info->create.extent.width,\n+      .height = info->create.extent.height,\n+      .format = vk_format_to_ahb_format(info->create.format),\n+      .layers = info->create.arrayLayers,\n+      .usage = AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT |\n+               AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE |\n+               AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN,\n+   };\n+   info->create.format = VK_FORMAT_UNDEFINED;\n+   info->create_mem = wsi_create_ahb_image_mem;\n+\n+   return VK_SUCCESS;\n+}\n+#endif\n+\n VKAPI_ATTR VkResult VKAPI_CALL\n wsi_WaitForPresentKHR(VkDevice device, VkSwapchainKHR _swapchain,\n                       uint64_t presentId, uint64_t timeout)\ndiff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h\nindex 2316d3156d0..ffa3a94e74c 100644\n--- a/src/vulkan/wsi/wsi_common.h\n+++ b/src/vulkan/wsi/wsi_common.h\n@@ -179,6 +179,9 @@ struct wsi_device {\n \n    bool sw;\n \n+   bool wants_ahardware_buffer;\n+   bool needs_blit;\n+\n    /* Set to true if the implementation is ok with linear WSI images. */\n    bool wants_linear;\n \n@@ -271,6 +274,10 @@ struct wsi_device {\n    WSI_CB(MapMemory);\n    WSI_CB(UnmapMemory);\n    WSI_CB(WaitSemaphores);\n+#ifdef __ANDROID__\n+   WSI_CB(GetMemoryAndroidHardwareBufferANDROID);\n+   WSI_CB(GetAndroidHardwareBufferPropertiesANDROID);\n+#endif\n #undef WSI_CB\n \n     struct wsi_interface *                  wsi[VK_ICD_WSI_PLATFORM_MAX];\ndiff --git a/src/vulkan/wsi/wsi_common_private.h b/src/vulkan/wsi/wsi_common_private.h\nindex b89e962c3ff..c205c4f62c3 100644\n--- a/src/vulkan/wsi/wsi_common_private.h\n+++ b/src/vulkan/wsi/wsi_common_private.h\n@@ -40,6 +40,7 @@ struct wsi_swapchain;\n #define WSI_DEBUG_NOSHM       (1ull << 2)\n #define WSI_DEBUG_LINEAR      (1ull << 3)\n #define WSI_DEBUG_DXGI        (1ull << 4)\n+#define WSI_DEBUG_BLIT        (1ull << 8)\n \n extern uint64_t WSI_DEBUG;\n \n@@ -47,6 +48,7 @@ enum wsi_image_type {\n    WSI_IMAGE_TYPE_CPU,\n    WSI_IMAGE_TYPE_DRM,\n    WSI_IMAGE_TYPE_DXGI,\n+   WSI_IMAGE_TYPE_AHB,\n };\n \n struct wsi_base_image_params {\n@@ -84,6 +86,9 @@ struct wsi_image_info {\n    VkExternalMemoryImageCreateInfo ext_mem;\n    VkImageFormatListCreateInfo format_list;\n    VkImageDrmFormatModifierListCreateInfoEXT drm_mod_list;\n+#ifdef __ANDROID__\n+   struct AHardwareBuffer_Desc *ahb_desc;\n+#endif\n \n    enum wsi_image_type image_type;\n    bool explicit_sync;\n@@ -165,6 +170,9 @@ struct wsi_image {\n    int dma_buf_fd;\n #endif\n    void *cpu_map;\n+#ifdef __ANDROID__\n+   struct AHardwareBuffer *ahb;\n+#endif\n };\n \n struct wsi_swapchain {\ndiff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c\nindex 0c0c489d893..5ed5d42341e 100644\n--- a/src/vulkan/wsi/wsi_common_x11.c\n+++ b/src/vulkan/wsi/wsi_common_x11.c\n@@ -22,7 +22,6 @@\n  */\n \n #include <X11/Xlib-xcb.h>\n-#include <X11/xshmfence.h>\n #define XK_MISCELLANY\n #define XK_LATIN1\n #include <X11/keysymdef.h>\n@@ -69,6 +68,11 @@\n #include <sys/shm.h>\n #endif\n \n+#ifdef __ANDROID__\n+#include <android/hardware_buffer.h>\n+#include <sys/socket.h>\n+#endif\n+\n #ifndef XCB_PRESENT_OPTION_ASYNC_MAY_TEAR\n #define XCB_PRESENT_OPTION_ASYNC_MAY_TEAR 16\n #endif\n@@ -1057,7 +1061,6 @@ struct x11_image {\n    xcb_pixmap_t                              pixmap;\n    xcb_xfixes_region_t                       update_region; /* long lived XID */\n    xcb_xfixes_region_t                       update_area;   /* the above or None */\n-   struct xshmfence *                        shm_fence;\n    uint32_t                                  sync_fence;\n    xcb_shm_seg_t                             shmseg;\n    int                                       shmid;\n@@ -1402,7 +1405,9 @@ x11_present_to_x11_dri3(struct x11_swapchain *chain, uint32_t image_index,\n       options |= XCB_PRESENT_OPTION_SUBOPTIMAL;\n #endif\n \n-   xshmfence_reset(image->shm_fence);\n+   xcb_void_cookie_t scookie = xcb_sync_reset_fence(chain->conn,\n+      image->sync_fence);\n+   xcb_discard_reply(chain->conn, scookie.sequence);\n \n    if (!chain->base.image_info.explicit_sync) {\n       ++chain->sent_image_count;\n@@ -1771,9 +1776,9 @@ x11_acquire_next_image(struct wsi_swapchain *anv_chain,\n       return result;\n \n    assert(*image_index < chain->base.image_count);\n-   if (chain->images[*image_index].shm_fence &&\n-       !chain->base.image_info.explicit_sync)\n-      xshmfence_await(chain->images[*image_index].shm_fence);\n+   xcb_void_cookie_t cookie = xcb_sync_await_fence(\n+      chain->conn, 1, &chain->images[*image_index].sync_fence);\n+   xcb_discard_reply(chain->conn, cookie.sequence);\n \n    return result;\n }\n@@ -2098,6 +2103,17 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n       /* If the image has a modifier, we must have DRI3 v1.2. */\n       assert(chain->has_dri3_modifiers);\n \n+#ifdef __ANDROID__\n+      int sock_fds[2] = { -1, -1 };\n+      if (image->base.ahb) {\n+         if (socketpair(AF_UNIX, SOCK_STREAM, 0, sock_fds) < 0) {\n+            return VK_ERROR_OUT_OF_HOST_MEMORY;\n+         }\n+         AHardwareBuffer_sendHandleToUnixSocket(image->base.ahb, sock_fds[0]);\n+         image->base.dma_buf_fd = sock_fds[1];\n+         image->base.drm_modifier = 1255;\n+      }\n+#endif\n       /* XCB requires an array of file descriptors but we only have one */\n       int fds[4] = { -1, -1, -1, -1 };\n       for (int i = 0; i < image->base.num_planes; i++) {\n@@ -2128,6 +2144,16 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n                                               chain->depth, bpp,\n                                               image->base.drm_modifier,\n                                               fds);\n+#ifdef __ANDROID__\n+      if (image->base.ahb) {\n+         xcb_flush(chain->conn);\n+         read(sock_fds[0], &image->base.dma_buf_fd, 1);\n+         for (int i = 0; i < ARRAY_SIZE(sock_fds); i++) {\n+            close(sock_fds[i]);\n+         }\n+         image->base.dma_buf_fd = -1;\n+      }\n+#endif\n    } else\n #endif\n    {\n@@ -2140,14 +2166,23 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n          return VK_ERROR_OUT_OF_HOST_MEMORY;\n \n       cookie =\n-         xcb_dri3_pixmap_from_buffer_checked(chain->conn,\n-                                             image->pixmap,\n-                                             chain->window,\n-                                             image->base.sizes[0],\n-                                             pCreateInfo->imageExtent.width,\n-                                             pCreateInfo->imageExtent.height,\n-                                             image->base.row_pitches[0],\n-                                             chain->depth, bpp, fd);\n+         xcb_dri3_pixmap_from_buffers_checked(chain->conn,\n+                                              image->pixmap,\n+                                              chain->window,\n+                                              image->base.num_planes,\n+                                              pCreateInfo->imageExtent.width,\n+                                              pCreateInfo->imageExtent.height,\n+                                              image->base.row_pitches[0],\n+                                              image->base.offsets[0],\n+                                              image->base.row_pitches[1],\n+                                              image->base.offsets[1],\n+                                              image->base.row_pitches[2],\n+                                              image->base.offsets[2],\n+                                              image->base.row_pitches[3],\n+                                              image->base.offsets[3],\n+                                              chain->depth, bpp,\n+                                              1274,\n+                                              &fd);\n    }\n \n    error = xcb_request_check(chain->conn, cookie);\n@@ -2178,31 +2213,16 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,\n #endif\n \n out_fence:\n-   fence_fd = xshmfence_alloc_shm();\n-   if (fence_fd < 0)\n-      goto fail_pixmap;\n-\n-   image->shm_fence = xshmfence_map_shm(fence_fd);\n-   if (image->shm_fence == NULL)\n-      goto fail_shmfence_alloc;\n-\n    image->sync_fence = xcb_generate_id(chain->conn);\n-   xcb_dri3_fence_from_fd(chain->conn,\n-                          image->pixmap,\n-                          image->sync_fence,\n-                          false,\n-                          fence_fd);\n-\n-   xshmfence_trigger(image->shm_fence);\n-\n-   return VK_SUCCESS;\n-\n-fail_shmfence_alloc:\n-   close(fence_fd);\n+   cookie = xcb_sync_create_fence(chain->conn,\n+                         image->pixmap,\n+                         image->sync_fence,\n+                         false);\n+   xcb_discard_reply(chain->conn, cookie.sequence);\n \n-fail_pixmap:\n-   cookie = xcb_free_pixmap(chain->conn, image->pixmap);\n+   cookie = xcb_sync_trigger_fence(chain->conn, image->sync_fence);\n    xcb_discard_reply(chain->conn, cookie.sequence);\n+   return VK_SUCCESS;\n \n fail_image:\n    wsi_destroy_image(&chain->base, &image->base);\n@@ -2220,7 +2240,6 @@ x11_image_finish(struct x11_swapchain *chain,\n    if (!chain->base.wsi->sw || chain->has_mit_shm) {\n       cookie = xcb_sync_destroy_fence(chain->conn, image->sync_fence);\n       xcb_discard_reply(chain->conn, cookie.sequence);\n-      xshmfence_unmap_shm(image->shm_fence);\n \n       cookie = xcb_free_pixmap(chain->conn, image->pixmap);\n       xcb_discard_reply(chain->conn, cookie.sequence);\n@@ -2618,6 +2637,12 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,\n          .alloc_shm = wsi_conn->has_mit_shm ? &alloc_shm : NULL,\n       };\n       image_params = &cpu_image_params.base;\n+#ifdef __ANDROID__\n+   } else if (wsi_device->wants_ahardware_buffer) {\n+      image_params = &(struct wsi_base_image_params){\n+         .image_type = WSI_IMAGE_TYPE_AHB,\n+      };\n+#endif\n    } else {\n       drm_image_params = (struct wsi_drm_image_params) {\n          .base.image_type = WSI_IMAGE_TYPE_DRM,\n-- \n2.47.0\n\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/05-fix-build.patch",
    "content": "diff -uNr 70-mesa-vulkan-wrapper-new/include/android_stub/vndk/hardware_buffer.h 70-mesa-vulkan-wrapper-new.mod/include/android_stub/vndk/hardware_buffer.h\n--- 70-mesa-vulkan-wrapper-new/include/android_stub/vndk/hardware_buffer.h\t2024-10-16 13:57:54.000000000 -0300\n+++ 70-mesa-vulkan-wrapper-new.mod/include/android_stub/vndk/hardware_buffer.h\t2024-12-30 18:05:05.746485985 -0300\n@@ -24,7 +24,7 @@\n \n __BEGIN_DECLS\n \n-const native_handle_t* AHardwareBuffer_getNativeHandle(const AHardwareBuffer* buffer);\n+const __native_handle_t* AHardwareBuffer_getNativeHandle(const AHardwareBuffer* buffer);\n \n enum CreateFromHandleMethod {\n     // enum values chosen to match internal GraphicBuffer::HandleWrapMethod\n@@ -46,7 +46,7 @@\n  * clone registered. The AHardwareBuffer will own the cloned handle but not the original.\n  */\n int AHardwareBuffer_createFromHandle(const AHardwareBuffer_Desc* desc,\n-                                     const native_handle_t* handle, int32_t method,\n+                                     const __native_handle_t* handle, int32_t method,\n                                      AHardwareBuffer** outBuffer);\n \n /**\ndiff -uNr 70-mesa-vulkan-wrapper-new/src/vulkan/wrapper/wrapper_device_memory.c 70-mesa-vulkan-wrapper-new.mod/src/vulkan/wrapper/wrapper_device_memory.c\n--- 70-mesa-vulkan-wrapper-new/src/vulkan/wrapper/wrapper_device_memory.c\t2024-12-30 18:00:22.163506877 -0300\n+++ 70-mesa-vulkan-wrapper-new.mod/src/vulkan/wrapper/wrapper_device_memory.c\t2024-12-30 18:03:52.594491374 -0300\n@@ -14,6 +14,7 @@\n #include <sys/mman.h>\n #include <sys/ioctl.h>\n #include <linux/dma-heap.h>\n+#include <fcntl.h>\n \n static int\n safe_ioctl(int fd, unsigned long request, void *arg)\n@@ -271,7 +272,7 @@\n    assert(memory->dmabuf_fd >= 0 || memory->ahardware_buffer != NULL);\n \n    if (memory->ahardware_buffer) {\n-      const native_handle_t *handle;\n+      const __native_handle_t *handle;\n       const int *handle_fds;\n \n       handle = AHardwareBuffer_getNativeHandle(memory->ahardware_buffer);\ndiff -uNr 70-mesa-vulkan-wrapper-new/src/vulkan/wrapper/wrapper_physical_device.c 70-mesa-vulkan-wrapper-new.mod/src/vulkan/wrapper/wrapper_physical_device.c\n--- 70-mesa-vulkan-wrapper-new/src/vulkan/wrapper/wrapper_physical_device.c\t2024-12-30 18:00:22.163506877 -0300\n+++ 70-mesa-vulkan-wrapper-new.mod/src/vulkan/wrapper/wrapper_physical_device.c\t2024-12-30 18:03:08.098494652 -0300\n@@ -9,6 +9,7 @@\n #include \"vk_util.h\"\n #include \"wsi_common.h\"\n #include \"util/os_misc.h\"\n+#include <fcntl.h>\n \n static VkResult\n wrapper_setup_device_extensions(struct wrapper_physical_device *pdevice) {\n"
  },
  {
    "path": "packages/mesa-vulkan-wrapper-rev9/build.sh",
    "content": "PKG_VER=24.2.5\nPKG_CATEGORY=\"VulkanDriver\"\nPKG_PRETTY_NAME=\"Mesa Android Wrapper (Rev 9)\"\nPKG_DOWNLOADABLE=1\nVK_DRIVER_LIB=\"libvulkan_wrapper.so\"\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem\"\nMESON_ARGS=\"-Dgallium-drivers= -Dvulkan-drivers=wrapper -Dglvnd=disabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=false -Degl=disabled -Dzstd=enabled\"\nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm\"\n"
  },
  {
    "path": "packages/mesa-zink/build.sh",
    "content": "PKG_VER=25.1.4\nPKG_CATEGORY=\"OpenGLDriver\"\nPKG_PRETTY_NAME=\"Mesa Zink Driver\"\n\nSRC_URL=https://archive.mesa3d.org/mesa-$PKG_VER.tar.xz\nLDFLAGS=\"-L$PREFIX/lib -landroid-shmem -lxcb-xfixes\"\nMESON_ARGS=\"-Dgallium-drivers=zink -Dvulkan-drivers= -Dglvnd=enabled -Dplatforms=x11 -Dxmlconfig=enabled -Dllvm=disabled -Dopengl=true -Degl=disabled -Dzstd=enabled\" \nDEPENDENCIES=\"xorgproto libdrm libX11 libxcb libxshmfence Vulkan-Headers Vulkan-Loader zlib zstd libexpat libglvnd libpng libXext libXrandr libxshmfence libXxf86vm android-shmem\"\n"
  },
  {
    "path": "packages/mesa-zink/disable-memfd-create-getrandom.patch",
    "content": "diff --git a/meson.build b/meson.build\nindex 66e14c211d2..7e73daf221a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1354,7 +1354,7 @@ if not ['linux'].contains(host_machine.system())\n   endif\n endif\n \n-foreach h : ['xlocale.h', 'linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n+foreach h : ['linux/futex.h', 'endian.h', 'dlfcn.h', 'sys/shm.h',\n              'cet.h', 'pthread_np.h', 'sys/inotify.h', 'linux/udmabuf.h']\n   if cc.check_header(h)\n     pre_args += '-DHAVE_@0@'.format(h.to_upper().underscorify())\n@@ -1364,11 +1364,9 @@ endforeach\n functions_to_detect = {\n   'strtof': '',\n   'mkostemp': '',\n-  'memfd_create': '',\n   'random_r': '',\n   'flock': '',\n   'strtok_r': '',\n-  'getrandom': '',\n   'qsort_s': '',\n   'posix_fallocate': '',\n   'secure_getenv': '',\n"
  },
  {
    "path": "packages/mesa-zink/force-linux-like-build.patch",
    "content": "diff --git a/include/vulkan/vk_android_native_buffer.h b/include/vulkan/vk_android_native_buffer.h\nindex 21f82ef57a2..5c67746ca44 100644\n--- a/include/vulkan/vk_android_native_buffer.h\n+++ b/include/vulkan/vk_android_native_buffer.h\n@@ -17,7 +17,7 @@\n  * system rather the build target.\n  */\n \n-#if defined(__ANDROID__) || defined(ANDROID)\n+#if 0\n \n #include <cutils/native_handle.h>\n #if ANDROID_API_LEVEL < 28\ndiff --git a/src/util/detect_os.h b/src/util/detect_os.h\nindex 86286dfbe70..49195b3398c 100644\n--- a/src/util/detect_os.h\n+++ b/src/util/detect_os.h\n@@ -25,7 +25,7 @@\n  * also be defined.\n  */\n #if defined(__ANDROID__)\n-#define DETECT_OS_ANDROID 1\n+#define DETECT_OS_ANDROID 0\n #endif\n \n #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n"
  },
  {
    "path": "packages/mesa-zink/install-drivers-without-hardlinks.patch",
    "content": "diff --git a/bin/install_megadrivers.py b/bin/install_megadrivers.py\nindex 216f6999feb..c79e95d1afd 100644\n--- a/bin/install_megadrivers.py\n+++ b/bin/install_megadrivers.py\n@@ -24,7 +24,16 @@\n \n import argparse\n import os\n+import shutil\n+ \n+def link(src, dest):\n+    shutil.copyfile(src, dest)\n \n+def unlink(src):\n+    os.remove(src)\n+\n+os.link = link\n+os.unlink = unlink\n \n def resolve_libdir(libdir):\n     if os.path.isabs(libdir):\n"
  },
  {
    "path": "packages/mesa-zink/lld-undefined-version.patch",
    "content": "`_mesa_glapi_tls_Context` and `_mesa_glapi_tls_Dispatch` is declared as thread_local.\nTheir symbol names will be `__emutls_v._mesa_glapi_tls_Context` and `__emutls_v._mesa_glapi_tls_Dispatch`\nas emulated TLS is enabled by NDK when `__ANDROID_API__` <= 28.\n\n--- a/src/gallium/targets/dri/dri.sym.in\n+++ b/src/gallium/targets/dri/dri.sym.in\n@@ -8,8 +8,8 @@\n                 _mesa_glapi_get_proc_offset;\n                 _mesa_glapi_set_context;\n                 _mesa_glapi_set_dispatch;\n-                _mesa_glapi_tls_Context;\n-                _mesa_glapi_tls_Dispatch;\n+                __emutls_v._mesa_glapi_tls_Context;\n+                __emutls_v._mesa_glapi_tls_Dispatch;\n \n \t\tddebug_screen_create;\n \t\tnoop_screen_create;\n"
  },
  {
    "path": "packages/mesa-zink/wsi-common-no-pthread-cancel.patch",
    "content": "diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c\nindex ff57a259046..4703500f374 100644\n--- a/src/vulkan/wsi/wsi_common_display.c\n+++ b/src/vulkan/wsi/wsi_common_display.c\n@@ -176,6 +176,12 @@ struct wsi_display_sync {\n \n static uint64_t fence_sequence;\n \n+#ifdef __ANDROID__\n+static void thread_signal_handler (int signum) {\n+   pthread_exit (0);\n+}\n+#endif\n+\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_mode, VkDisplayModeKHR)\n ICD_DEFINE_NONDISP_HANDLE_CASTS(wsi_display_connector, VkDisplayKHR)\n \n@@ -1341,7 +1347,9 @@ wsi_display_wait_thread(void *data)\n       .events = POLLIN\n    };\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n    for (;;) {\n       int ret = poll(&pollfd, 1, -1);\n       if (ret > 0) {\n@@ -1369,9 +1377,22 @@ wsi_display_start_wait_thread(struct wsi_display *wsi)\n static void\n wsi_display_stop_wait_thread(struct wsi_display *wsi)\n {\n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    mtx_lock(&wsi->wait_mutex);\n    if (wsi->wait_thread) {\n+#ifndef __ANDROID__\n       pthread_cancel(wsi->wait_thread);\n+#else\n+      pthread_kill(wsi->wait_thread, SIGUSR2);\n+#endif\n       pthread_join(wsi->wait_thread, NULL);\n       wsi->wait_thread = 0;\n    }\n@@ -2215,7 +2236,9 @@ udev_event_listener_thread(void *data)\n \n    int udev_fd = udev_monitor_get_fd(mon);\n \n+#ifndef __ANDROID__\n    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);\n+#endif\n \n    for (;;) {\n       nfds_t nfds = 1;\n@@ -2340,6 +2363,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n    struct wsi_display *wsi =\n       (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY];\n \n+#ifdef __ANDROID__\n+   struct sigaction actions;\n+   memset (&actions, 0, sizeof (actions));\n+   sigemptyset (&actions.sa_mask);\n+   actions.sa_flags = 0;\n+   actions.sa_handler = thread_signal_handler;\n+   sigaction (SIGUSR2, &actions, NULL);\n+#endif\n+\n    if (wsi) {\n       wsi_for_each_connector(connector, wsi) {\n          wsi_for_each_display_mode(mode, connector) {\n@@ -2351,7 +2383,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device,\n       wsi_display_stop_wait_thread(wsi);\n \n       if (wsi->hotplug_thread) {\n+#ifndef __ANDROID__\n          pthread_cancel(wsi->hotplug_thread);\n+#else\n+         pthread_kill(wsi->hotplug_thread, SIGUSR2);\n+#endif\n          pthread_join(wsi->hotplug_thread, NULL);\n       }\n \n"
  },
  {
    "path": "packages/openssl/Configurations-15-android.conf.patch",
    "content": "--- a/Configurations/15-android.conf\n+++ b/Configurations/15-android.conf\n@@ -184,14 +184,14 @@\n         # systems are perfectly capable of executing binaries targeting\n         # Froyo. Keep in mind that in the nutshell Android builds are\n         # about JNI, i.e. shared libraries, not applications.\n-        cflags           => add(sub { android_ndk()->{cflags} }),\n-        cppflags         => add(sub { android_ndk()->{cppflags} }),\n-        cxxflags         => add(sub { android_ndk()->{cflags} }),\n-        bn_ops           => sub { android_ndk()->{bn_ops} },\n+        #cflags           => add(sub { android_ndk()->{cflags} }),\n+        #cppflags         => add(sub { android_ndk()->{cppflags} }),\n+        #cxxflags         => add(sub { android_ndk()->{cflags} }),\n+        #bn_ops           => sub { android_ndk()->{bn_ops} },\n         bin_cflags       => \"-fPIE\",\n         bin_lflags       => \"-pie\",\n         enable           => [ ],\n-        shared_extension => \".so\",\n+        shared_extension => \".so.\\$(SHLIB_VERSION_NUMBER)\",\n     },\n     \"android-arm\" => {\n         ################################################################\n@@ -222,13 +222,13 @@\n         # Newer NDK versions reportedly require additional -latomic.\n         #\n         inherit_from     => [ \"android\" ],\n-        bn_ops           => add(\"RC4_CHAR\"),\n+        bn_ops           => \"BN_LLONG RC4_CHAR\",\n         asm_arch         => 'armv4',\n         perlasm_scheme   => \"void\",\n     },\n     \"android-arm64\" => {\n         inherit_from     => [ \"android\" ],\n-        bn_ops           => add(\"RC4_CHAR\"),\n+        bn_ops           => \"SIXTY_FOUR_BIT_LONG RC4_CHAR\",\n         asm_arch         => 'aarch64',\n         perlasm_scheme   => \"linux64\",\n     },\n@@ -258,14 +258,14 @@\n     \"android-x86\" => {\n         inherit_from     => [ \"android\" ],\n         CFLAGS           => add(picker(release => \"-fomit-frame-pointer\")),\n-        bn_ops           => add(\"RC4_INT\"),\n+        bn_ops           => \"BN_LLONG RC4_INT\",\n         asm_arch         => 'x86',\n         perlasm_scheme   => \"android\",\n         ex_libs          => add(threads(\"-latomic\")),\n     },\n     \"android-x86_64\" => {\n         inherit_from     => [ \"android\" ],\n-        bn_ops           => add(\"RC4_INT\"),\n+        bn_ops           => \"SIXTY_FOUR_BIT_LONG RC4_INT\",\n         asm_arch         => 'x86_64',\n         perlasm_scheme   => \"elf\",\n     },\n"
  },
  {
    "path": "packages/openssl/build.sh",
    "content": "PKG_VER=3.2.2\nSRC_URL=https://github.com/openssl/openssl/releases/download/openssl-$PKG_VER/openssl-$PKG_VER.tar.gz\nCFLAGS=\"-DNO_SYSLOG\"\n\ngetOpenSSLArch()\n{\n\tif [ \"$ARCH\" == \"aarch64\" ]; then\n\t\techo \"arm64\"\n\telif [ \"$ARCH\" == \"x86_64\" ]; then\n\t\techo \"x86_64\"\n\tfi\n}\n\nOPENSSL_FLAGS=\"android-$(getOpenSSLArch) --openssldir=$PREFIX/etc/tls shared zlib-dynamic no-ssl no-hw no-srp no-tests enable-tls1_3\"\n"
  },
  {
    "path": "packages/openssl/include-crypto-rand.h.patch",
    "content": "--- ./include/crypto/rand.h.orig\t2022-01-22 19:24:47.338975179 +0530\n+++ ./include/crypto/rand.h\t2022-01-22 19:25:38.608975159 +0530\n@@ -78,7 +78,7 @@\n  * sockets will be tried in the order listed in case accessing the device\n  * files listed in DEVRANDOM did not return enough randomness.\n  */\n-# define DEVRANDOM_EGD \"/var/run/egd-pool\", \"/dev/egd-pool\", \"/etc/egd-pool\", \"/etc/entropy\"\n+# define DEVRANDOM_EGD \"/data/data/com.micewine.emu/files/usr/var/run/egd-pool\", \"/dev/egd-pool\", \"/data/data/com.micewine.emu/files/usr/etc/egd-pool\", \"/data/data/com.micewine.emu/files/usr/etc/entropy\"\n #endif\n \n void ossl_rand_cleanup_int(void);\n"
  },
  {
    "path": "packages/opus/build.sh",
    "content": "PKG_VER=1.5.2\nSRC_URL=https://github.com/xiph/opus/releases/download/v$PKG_VER/opus-$PKG_VER.tar.gz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --disable-extra-programs\"\n"
  },
  {
    "path": "packages/pcre2/build.sh",
    "content": "PKG_VER=10.44\nSRC_URL=https://github.com/PhilipHazel/pcre2/releases/download/pcre2-$PKG_VER/pcre2-$PKG_VER.tar.bz2\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE --enable-jit --enable-pcre2-16 --enable-pcre2-32\"\nDEPENDENCIES=\"zlib\"\n"
  },
  {
    "path": "packages/pulseaudio/01-pulseaudio-android.patch",
    "content": "diff -uNr 30-pulseaudio/meson.build 30-pulseaudio-mod/meson.build\n--- 30-pulseaudio/meson.build\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/meson.build\t2024-12-15 20:43:42.843655547 -0300\n@@ -12,9 +12,10 @@\n # For tarballs, the first split will do nothing, but for builds in git, we\n # split out suffixes when there are commits since the last tag\n # (e.g.: v11.99.1-3-gad14bdb24 -> v11.99.1)\n+# for some reason when building for MiceWine meson returns nothing for version_str, then hardcode version\n version_split = pa_version_str.split('-')[0].split('.')\n-pa_version_major = version_split[0].split('v')[0]\n-pa_version_minor = version_split[1]\n+pa_version_major = '17'\n+pa_version_minor = '0'\n if version_split.length() > 2\n   pa_version_micro = version_split[2]\n else\n@@ -286,10 +287,6 @@\n   endif\n endif\n \n-if cc.has_header_symbol('pthread.h', 'PTHREAD_PRIO_INHERIT')\n-  cdata.set('HAVE_PTHREAD_PRIO_INHERIT', 1)\n-endif\n-\n # Headers which are usable\n \n check_usable_headers = [\n@@ -381,7 +378,7 @@\n     libintl_dep = cc.find_library('intl')\n   endif\n else\n-  libintl_dep = cc.find_library('intl')\n+  libintl_dep = []\n endif\n \n # Symbols\n@@ -448,6 +445,7 @@\n # Core Dependencies\n \n libm_dep = cc.find_library('m', required : true)\n+sles_dep = cc.find_library('OpenSLES', required : true)\n \n thread_dep = dependency('threads')\n foreach f : [\ndiff -uNr 30-pulseaudio/src/daemon/caps.c 30-pulseaudio-mod/src/daemon/caps.c\n--- 30-pulseaudio/src/daemon/caps.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/daemon/caps.c\t2024-12-15 20:43:42.843655547 -0300\n@@ -36,64 +36,11 @@\n \n #include \"caps.h\"\n \n-/* Glibc <= 2.2 has broken unistd.h */\n-#if defined(__linux__) && (__GLIBC__ <= 2 && __GLIBC_MINOR__ <= 2)\n-int setresgid(gid_t r, gid_t e, gid_t s);\n-int setresuid(uid_t r, uid_t e, uid_t s);\n-#endif\n-\n-/* Drop root rights when called SUID root */\n+/* Disable privilege dropping on Android. */\n void pa_drop_root(void) {\n-\n-#ifdef HAVE_GETUID\n-    uid_t uid;\n-    gid_t gid;\n-\n-    pa_log_debug(\"Cleaning up privileges.\");\n-    uid = getuid();\n-    gid = getgid();\n-\n-#if defined(HAVE_SETRESUID)\n-    pa_assert_se(setresuid(uid, uid, uid) >= 0);\n-    pa_assert_se(setresgid(gid, gid, gid) >= 0);\n-#elif defined(HAVE_SETREUID)\n-    pa_assert_se(setreuid(uid, uid) >= 0);\n-    pa_assert_se(setregid(gid, gid) >= 0);\n-#else\n-    pa_assert_se(setuid(uid) >= 0);\n-    pa_assert_se(seteuid(uid) >= 0);\n-    pa_assert_se(setgid(gid) >= 0);\n-    pa_assert_se(setegid(gid) >= 0);\n-#endif\n-\n-    pa_assert_se(getuid() == uid);\n-    pa_assert_se(geteuid() == uid);\n-    pa_assert_se(getgid() == gid);\n-    pa_assert_se(getegid() == gid);\n-\n-    if (uid != 0)\n-        pa_drop_caps();\n-#endif\n+    return;\n }\n \n void pa_drop_caps(void) {\n-#ifdef HAVE_SYS_CAPABILITY_H\n-#if defined(__linux__)\n-    cap_t caps;\n-    pa_assert_se(caps = cap_init());\n-    pa_assert_se(cap_clear(caps) == 0);\n-    pa_assert_se(cap_set_proc(caps) == 0);\n-    pa_assert_se(cap_free(caps) == 0);\n-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)\n-    /* FreeBSD doesn't have this functionality, even though sys/capability.h is\n-     * available. See https://bugs.freedesktop.org/show_bug.cgi?id=72580 */\n-    pa_log_warn(\"FreeBSD cannot drop extra capabilities, implementation needed.\");\n-#else\n-#error \"Don't know how to do capabilities on your system.  Please send a patch.\"\n-#endif /* __linux__ */\n-#else /* HAVE_SYS_CAPABILITY_H */\n-    pa_log_warn(\"Normally all extra capabilities would be dropped now, but \"\n-                \"that's impossible because PulseAudio was built without \"\n-                \"capabilities support.\");\n-#endif\n+    return;\n }\ndiff -uNr 30-pulseaudio/src/daemon/main.c 30-pulseaudio-mod/src/daemon/main.c\n--- 30-pulseaudio/src/daemon/main.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/daemon/main.c\t2024-12-15 20:43:42.844655547 -0300\n@@ -163,206 +163,11 @@\n }\n \n \n-#if defined(OS_IS_WIN32)\n-\n+// Disable privilege dropping on Android.\n static int change_user(void) {\n-    pa_log_info(\"Overriding system runtime/config base dir to '%s'.\", pa_win32_get_system_appdata());\n-\n-    /* On other platforms, these paths are compiled into PulseAudio. This isn't\n-     * suitable on Windows. Firstly, Windows doesn't follow the FHS or use Unix\n-     * paths and the build system can't handle Windows-style paths properly.\n-     * Secondly, the idiomatic location for a service's state and shared data is\n-     * ProgramData, and the location of special folders is dynamic on Windows.\n-     * Also, this method of handling paths is consistent with how they are\n-     * handled on Windows in other parts of PA. Note that this is only needed\n-     * in system-wide mode since paths in user instances are already handled\n-     * properly.\n-     */\n-\n-    char *run_path = pa_sprintf_malloc(\"%s\" PA_PATH_SEP \"run\", pa_win32_get_system_appdata());\n-    char *lib_path = pa_sprintf_malloc(\"%s\" PA_PATH_SEP \"lib\", pa_win32_get_system_appdata());\n-\n-    /* https://docs.microsoft.com/en-us/windows/win32/secauthz/ace-strings */\n-    /* https://docs.microsoft.com/en-us/windows/win32/secauthz/modifying-the-acls-of-an-object-in-c-- */\n-    /* https://docs.microsoft.com/en-us/windows/win32/api/sddl/nf-sddl-convertstringsecuritydescriptortosecuritydescriptora */\n-    {\n-        mkdir(run_path);\n-        PSECURITY_DESCRIPTOR sd;\n-        if (ConvertStringSecurityDescriptorToSecurityDescriptorA(\n-            \"D:PAI\"                   /* DACL, disable inheritance from parent, enable propagation to children */\n-            \"(A;OICI;FA;;;SY)\"        /* give system full access */\n-            \"(A;OICI;FA;;;CO)\"        /* give owner full access */\n-            \"(A;OICI;FA;;;BA)\"        /* give administrators full access */\n-            \"(A;OICI;0x1200a9;;;WD)\", /* give everyone read/write/execute access */\n-            SDDL_REVISION_1, &sd, NULL\n-        )) {\n-            PACL acl;\n-            BOOL acl_present, acl_default;\n-            if (GetSecurityDescriptorDacl(sd, &acl_present, &acl, &acl_default)) {\n-                if (SetNamedSecurityInfo(run_path, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION, NULL, NULL, acl, NULL) != ERROR_SUCCESS) {\n-                    pa_log_warn(\"Failed to set DACL for runtime dir: failed to apply DACL: error %lu.\", GetLastError());\n-                }\n-                LocalFree(acl);\n-            } else {\n-                pa_log_warn(\"Failed to set DACL for runtime dir: failed to get security descriptor DACL: error %lu.\", GetLastError());\n-            }\n-        } else {\n-            pa_log_warn(\"Failed to set DACL for runtime dir: failed to parse security descriptor: error %lu.\", GetLastError());\n-        }\n-    }\n-    {\n-        mkdir(lib_path);\n-        PSECURITY_DESCRIPTOR sd;\n-        if (ConvertStringSecurityDescriptorToSecurityDescriptorA(\n-            \"D:PAI\"             /* DACL, disable inheritance from parent, enable propagation to children */\n-            \"(A;OICI;FA;;;SY)\"  /* give system full access */\n-            \"(A;OICI;FA;;;CO)\"  /* give owner full access */\n-            \"(A;OICI;FA;;;BA)\", /* give administrators full access */\n-            SDDL_REVISION_1, &sd, NULL\n-        )) {\n-            PACL acl;\n-            BOOL acl_present, acl_default;\n-            if (GetSecurityDescriptorDacl(sd, &acl_present, &acl, &acl_default)) {\n-                if (SetNamedSecurityInfo(lib_path, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION, NULL, NULL, acl, NULL) != ERROR_SUCCESS) {\n-                    pa_log_warn(\"Failed to set DACL for lib dir: failed to apply DACL: error %lu.\", GetLastError());\n-                }\n-                LocalFree(acl);\n-            } else {\n-                pa_log_warn(\"Failed to set DACL for lib dir: failed to get security descriptor DACL: error %lu.\", GetLastError());\n-            }\n-        } else {\n-            pa_log_warn(\"Failed to set DACL for lib dir: failed to parse security descriptor: error %lu.\", GetLastError());\n-        }\n-    }\n-\n-    pa_set_env(\"HOME\", run_path);\n-    if (!getenv(\"PULSE_RUNTIME_PATH\"))\n-        pa_set_env(\"PULSE_RUNTIME_PATH\", run_path);\n-    if (!getenv(\"PULSE_CONFIG_PATH\"))\n-        pa_set_env(\"PULSE_CONFIG_PATH\", lib_path);\n-    if (!getenv(\"PULSE_STATE_PATH\"))\n-        pa_set_env(\"PULSE_STATE_PATH\", lib_path);\n-\n-    pa_xfree(run_path);\n-    pa_xfree(lib_path);\n-\n-    pa_log_info(\"Not changing user for system instance on Windows.\");\n-    return 0;\n-}\n-\n-#elif defined(HAVE_PWD_H) && defined(HAVE_GRP_H)\n-\n-static int change_user(void) {\n-    struct passwd *pw;\n-    struct group * gr;\n-    int r;\n-\n-    /* This function is called only in system-wide mode. It creates a\n-     * runtime dir in /var/run/ with proper UID/GID and drops privs\n-     * afterwards. */\n-\n-    if (!(pw = getpwnam(PA_SYSTEM_USER))) {\n-        pa_log(_(\"Failed to find user '%s'.\"), PA_SYSTEM_USER);\n-        return -1;\n-    }\n-\n-    if (!(gr = getgrnam(PA_SYSTEM_GROUP))) {\n-        pa_log(_(\"Failed to find group '%s'.\"), PA_SYSTEM_GROUP);\n-        return -1;\n-    }\n-\n-    pa_log_info(\"Found user '%s' (UID %lu) and group '%s' (GID %lu).\",\n-                PA_SYSTEM_USER, (unsigned long) pw->pw_uid,\n-                PA_SYSTEM_GROUP, (unsigned long) gr->gr_gid);\n-\n-    if (pw->pw_gid != gr->gr_gid) {\n-        pa_log(_(\"GID of user '%s' and of group '%s' don't match.\"), PA_SYSTEM_USER, PA_SYSTEM_GROUP);\n-        return -1;\n-    }\n-\n-    if (!pa_streq(pw->pw_dir, PA_SYSTEM_RUNTIME_PATH))\n-        pa_log_warn(_(\"Home directory of user '%s' is not '%s', ignoring.\"), PA_SYSTEM_USER, PA_SYSTEM_RUNTIME_PATH);\n-\n-    if (pa_make_secure_dir(PA_SYSTEM_RUNTIME_PATH, 0755, pw->pw_uid, gr->gr_gid, true) < 0) {\n-        pa_log(_(\"Failed to create '%s': %s\"), PA_SYSTEM_RUNTIME_PATH, pa_cstrerror(errno));\n-        return -1;\n-    }\n-\n-    if (pa_make_secure_dir(PA_SYSTEM_STATE_PATH, 0700, pw->pw_uid, gr->gr_gid, true) < 0) {\n-        pa_log(_(\"Failed to create '%s': %s\"), PA_SYSTEM_STATE_PATH, pa_cstrerror(errno));\n-        return -1;\n-    }\n-\n-    /* We don't create the config dir here, because we don't need to write to it */\n-\n-    if (initgroups(PA_SYSTEM_USER, gr->gr_gid) != 0) {\n-        pa_log(_(\"Failed to change group list: %s\"), pa_cstrerror(errno));\n-        return -1;\n-    }\n-\n-#if defined(HAVE_SETRESGID)\n-    r = setresgid(gr->gr_gid, gr->gr_gid, gr->gr_gid);\n-#elif defined(HAVE_SETEGID)\n-    if ((r = setgid(gr->gr_gid)) >= 0)\n-        r = setegid(gr->gr_gid);\n-#elif defined(HAVE_SETREGID)\n-    r = setregid(gr->gr_gid, gr->gr_gid);\n-#else\n-#error \"No API to drop privileges\"\n-#endif\n-\n-    if (r < 0) {\n-        pa_log(_(\"Failed to change GID: %s\"), pa_cstrerror(errno));\n-        return -1;\n-    }\n-\n-#if defined(HAVE_SETRESUID)\n-    r = setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid);\n-#elif defined(HAVE_SETEUID)\n-    if ((r = setuid(pw->pw_uid)) >= 0)\n-        r = seteuid(pw->pw_uid);\n-#elif defined(HAVE_SETREUID)\n-    r = setreuid(pw->pw_uid, pw->pw_uid);\n-#else\n-#error \"No API to drop privileges\"\n-#endif\n-\n-    if (r < 0) {\n-        pa_log(_(\"Failed to change UID: %s\"), pa_cstrerror(errno));\n-        return -1;\n-    }\n-\n-    pa_drop_caps();\n-\n-    pa_set_env(\"USER\", PA_SYSTEM_USER);\n-    pa_set_env(\"USERNAME\", PA_SYSTEM_USER);\n-    pa_set_env(\"LOGNAME\", PA_SYSTEM_USER);\n-    pa_set_env(\"HOME\", PA_SYSTEM_RUNTIME_PATH);\n-\n-    /* Relevant for pa_runtime_path() */\n-    if (!getenv(\"PULSE_RUNTIME_PATH\"))\n-        pa_set_env(\"PULSE_RUNTIME_PATH\", PA_SYSTEM_RUNTIME_PATH);\n-\n-    if (!getenv(\"PULSE_CONFIG_PATH\"))\n-        pa_set_env(\"PULSE_CONFIG_PATH\", PA_SYSTEM_CONFIG_PATH);\n-\n-    if (!getenv(\"PULSE_STATE_PATH\"))\n-        pa_set_env(\"PULSE_STATE_PATH\", PA_SYSTEM_STATE_PATH);\n-\n-    pa_log_info(\"Successfully changed user to \\\"\" PA_SYSTEM_USER \"\\\".\");\n-\n     return 0;\n }\n \n-#else /* HAVE_PWD_H && HAVE_GRP_H */\n-\n-static int change_user(void) {\n-    pa_log(_(\"System wide mode unsupported on this platform.\"));\n-    return -1;\n-}\n-\n-#endif /* HAVE_PWD_H && HAVE_GRP_H */\n-\n #ifdef HAVE_SYS_RESOURCE_H\n \n static int set_one_rlimit(const pa_rlimit *r, int resource, const char *name) {\ndiff -uNr 30-pulseaudio/src/modules/echo-cancel/module-echo-cancel.c 30-pulseaudio-mod/src/modules/echo-cancel/module-echo-cancel.c\n--- 30-pulseaudio/src/modules/echo-cancel/module-echo-cancel.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/modules/echo-cancel/module-echo-cancel.c\t2024-12-15 20:43:42.844655547 -0300\n@@ -2067,18 +2067,18 @@\n     }\n \n     if (u->save_aec) {\n-        pa_log(\"Creating AEC files in /tmp\");\n-        u->captured_file = fopen(\"/tmp/aec_rec.sw\", \"wb\");\n+        pa_log(\"Creating AEC files in /data/data/com.micewine.emu/files/usr/tmp\");\n+        u->captured_file = fopen(\"/data/data/com.micewine.emu/files/usr/tmp/aec_rec.sw\", \"wb\");\n         if (u->captured_file == NULL)\n             perror (\"fopen failed\");\n-        u->played_file = fopen(\"/tmp/aec_play.sw\", \"wb\");\n+        u->played_file = fopen(\"/data/data/com.micewine.emu/files/usr/tmp/aec_play.sw\", \"wb\");\n         if (u->played_file == NULL)\n             perror (\"fopen failed\");\n-        u->canceled_file = fopen(\"/tmp/aec_out.sw\", \"wb\");\n+        u->canceled_file = fopen(\"/data/data/com.micewine.emu/files/usr/tmp/aec_out.sw\", \"wb\");\n         if (u->canceled_file == NULL)\n             perror (\"fopen failed\");\n         if (u->ec->params.drift_compensation) {\n-            u->drift_file = fopen(\"/tmp/aec_drift.txt\", \"w\");\n+            u->drift_file = fopen(\"/data/data/com.micewine.emu/files/usr/tmp/aec_drift.txt\", \"w\");\n             if (u->drift_file == NULL)\n                 perror (\"fopen failed\");\n         }\ndiff -uNr 30-pulseaudio/src/modules/meson.build 30-pulseaudio-mod/src/modules/meson.build\n--- 30-pulseaudio/src/modules/meson.build\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/modules/meson.build\t2024-12-15 20:43:42.844655547 -0300\n@@ -58,6 +58,8 @@\n   [ 'module-virtual-sink', 'module-virtual-sink.c' ],\n   [ 'module-virtual-source', 'module-virtual-source.c' ],\n   [ 'module-volume-restore', 'module-volume-restore.c' ],\n+  [ 'module-sles-sink', 'sles/module-sles-sink.c', [], [], [sles_dep] ],\n+  [ 'module-sles-source', 'sles/module-sles-source.c', [], [], [sles_dep] ],\n ]\n \n if host_machine.system() == 'windows'\ndiff -uNr 30-pulseaudio/src/modules/module-pipe-source.c 30-pulseaudio-mod/src/modules/module-pipe-source.c\n--- 30-pulseaudio/src/modules/module-pipe-source.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/modules/module-pipe-source.c\t2024-12-15 20:43:42.845655547 -0300\n@@ -59,7 +59,7 @@\n         \"channels=<number of channels> \"\n         \"channel_map=<channel map>\");\n \n-#define DEFAULT_FILE_NAME \"/tmp/music.input\"\n+#define DEFAULT_FILE_NAME \"/data/data/com.micewine.emu/files/usr/tmp/music.input\"\n #define DEFAULT_SOURCE_NAME \"fifo_input\"\n \n struct userdata {\ndiff -uNr 30-pulseaudio/src/modules/module-protocol-stub.c 30-pulseaudio-mod/src/modules/module-protocol-stub.c\n--- 30-pulseaudio/src/modules/module-protocol-stub.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/modules/module-protocol-stub.c\t2024-12-15 20:43:42.845655547 -0300\n@@ -303,13 +303,13 @@\n     /* Windows doesn't support getuid(), so we ignore the per-user Esound socket compile flag.\n      * Moreover, Esound Unix sockets haven't been supported on Windows historically. */\n #    if defined(USE_PER_USER_ESOUND_SOCKET) && !defined(OS_IS_WIN32)\n-    u->socket_path = pa_sprintf_malloc(\"/tmp/.esd-%lu/socket\", (unsigned long) getuid());\n+    u->socket_path = pa_sprintf_malloc(\"/data/data/com.micewine.emu/files/usr/tmp/.esd-%lu/socket\", (unsigned long) getuid());\n #    else\n-    u->socket_path = pa_xstrdup(\"/tmp/.esd/socket\");\n+    u->socket_path = pa_xstrdup(\"/data/data/com.micewine.emu/files/usr/tmp/.esd/socket\");\n #    endif\n \n     /* This socket doesn't reside in our own runtime dir but in\n-     * /tmp/.esd/, hence we have to create the dir first */\n+     * /data/data/com.micewine.emu/files/usr/tmp/.esd/, hence we have to create the dir first */\n \n     if (pa_make_secure_parent_dir(u->socket_path, pa_in_system_mode() ? 0755U : 0700U, (uid_t)-1, (gid_t)-1, false) < 0) {\n         pa_log(\"Failed to create socket directory '%s': %s\\n\", u->socket_path, pa_cstrerror(errno));\ndiff -uNr 30-pulseaudio/src/modules/sles/module-sles-sink.c 30-pulseaudio-mod/src/modules/sles/module-sles-sink.c\n--- 30-pulseaudio/src/modules/sles/module-sles-sink.c\t1969-12-31 21:00:00.000000000 -0300\n+++ 30-pulseaudio-mod/src/modules/sles/module-sles-sink.c\t2024-12-15 20:43:59.221654341 -0300\n@@ -0,0 +1,661 @@\n+/***\n+  This file is part of PulseAudio.\n+\n+  Copyright 2004-2008 Lennart Poettering\n+\n+  PulseAudio is free software; you can redistribute it and/or modify\n+  it under the terms of the GNU Lesser General Public License as published\n+  by the Free Software Foundation; either version 2.1 of the License,\n+  or (at your option) any later version.\n+\n+  PulseAudio is distributed in the hope that it will be useful, but\n+  WITHOUT ANY WARRANTY; without even the implied warranty of\n+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+  General Public License for more details.\n+\n+  You should have received a copy of the GNU Lesser General Public License\n+  along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.\n+***/\n+\n+#ifdef HAVE_CONFIG_H\n+#include <config.h>\n+#endif\n+\n+#include <errno.h>\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <unistd.h>\n+\n+#include <pulse/rtclock.h>\n+#include <pulse/timeval.h>\n+#include <pulse/xmalloc.h>\n+\n+#include <pulsecore/core-util.h>\n+#include <pulsecore/log.h>\n+#include <pulsecore/macro.h>\n+#include <pulsecore/modargs.h>\n+#include <pulsecore/module.h>\n+#include <pulsecore/rtpoll.h>\n+#include <pulsecore/sink.h>\n+#include <pulsecore/thread-mq.h>\n+#include <pulsecore/thread.h>\n+\n+#include <SLES/OpenSLES.h>\n+#include <SLES/OpenSLES_Android.h>\n+\n+PA_MODULE_AUTHOR(\"Lennart Poettering, Nathan Martynov, Patrick Gaskin\");\n+PA_MODULE_DESCRIPTION(\"Android OpenSL ES sink\");\n+PA_MODULE_VERSION(PACKAGE_VERSION);\n+PA_MODULE_LOAD_ONCE(false);\n+PA_MODULE_USAGE(\n+    \"sink_name=<name for the sink> \"\n+    \"sink_properties=<properties for the sink> \"\n+    \"latency=<buffer length> \"\n+    \"format=<sample format> \"\n+    \"channels=<number of channels> \"\n+    \"rate=<sample rate> \"\n+    \"channel_map=<channel map> \"\n+);\n+\n+#define DEFAULT_SINK_NAME \"OpenSL ES sink\"\n+\n+enum { SINK_MESSAGE_RENDER = PA_SINK_MESSAGE_MAX };\n+\n+struct userdata {\n+    pa_core *core;\n+    pa_module *module;\n+    pa_sink *sink;\n+\n+    pa_thread *thread;\n+    pa_thread_mq thread_mq;\n+    pa_rtpoll *rtpoll;\n+    pa_rtpoll_item *rtpoll_item;\n+    pa_asyncmsgq *sles_msgq;\n+\n+    pa_usec_t block_usec;\n+\n+    pa_memchunk memchunk;\n+    void *buf;\n+    size_t nbytes;\n+\n+    SLObjectItf EngineObject;\n+    SLObjectItf OutputMixObject;\n+    SLObjectItf PlayerObject;\n+\n+    SLEngineItf EngineItf;\n+    SLPlayItf PlayItf;\n+    SLBufferQueueItf BufferQueueItf;\n+};\n+\n+static const char* const valid_modargs[] = {\n+    \"sink_name\",\n+    \"sink_properties\",\n+    \"latency\",\n+    \"format\",\n+    \"channels\",\n+    \"rate\",\n+    \"channel_map\",\n+    NULL\n+};\n+\n+static void process_render(void *userdata) {\n+    struct userdata* u = userdata;\n+    pa_assert(u);\n+\n+    /* a render message could be queued after a set state message */\n+    if (!PA_SINK_IS_LINKED(u->sink->thread_info.state))\n+        return;\n+\n+    u->memchunk.length = u->nbytes;\n+    pa_sink_render_into(u->sink, &u->memchunk);\n+    (*u->BufferQueueItf)->Enqueue(u->BufferQueueItf, u->buf, u->memchunk.length);\n+}\n+\n+static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *memchunk) {\n+    switch (code) {\n+        case SINK_MESSAGE_RENDER:\n+            process_render(data);\n+            return 0;\n+        case PA_SINK_MESSAGE_GET_LATENCY:\n+            code = PA_SINK_MESSAGE_GET_FIXED_LATENCY; // FIXME: is there a way to get the real latency?\n+            break;\n+    }\n+\n+    return pa_sink_process_msg(o, code, data, offset, memchunk);\n+};\n+\n+static void sles_callback(SLBufferQueueItf bqPlayerBufferQueue, void *userdata) {\n+    struct userdata* u = userdata;\n+    pa_assert(u);\n+    pa_assert_se(pa_asyncmsgq_send(u->sles_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_RENDER, u, 0, NULL) == 0);\n+}\n+\n+// pa_channel_position_to_sl_speaker converts a PulseAudio channel position to\n+// the equivalent OpenSL ES speaker. If the channel does not have a OpenSL ES\n+// equivalent or is PA_CHANNEL_POSITION_INVALID, -1 is returned.\n+//\n+// https://freedesktop.org/software/pulseaudio/doxygen/channelmap_8h.html#af1cbe2738487c74f99e613779bd34bf2\n+// https://www.khronos.org/files/opensl_es_1_0_provisional_specs.pdf#9.2.47\n+static SLuint32 pa_channel_position_to_sl_speaker(enum pa_channel_position x) {\n+    static const SLuint32 pa_channel_position_sl_speaker[] = {\n+        // note: all SL_SPEAKER values != 0, and the empty array elements will be initialized to 0\n+        [PA_CHANNEL_POSITION_MONO]                  = SL_SPEAKER_FRONT_CENTER,\n+        [PA_CHANNEL_POSITION_FRONT_LEFT]            = SL_SPEAKER_FRONT_LEFT,\n+        [PA_CHANNEL_POSITION_FRONT_RIGHT]           = SL_SPEAKER_FRONT_RIGHT,\n+        [PA_CHANNEL_POSITION_FRONT_CENTER]          = SL_SPEAKER_FRONT_CENTER,\n+        [PA_CHANNEL_POSITION_REAR_CENTER]           = SL_SPEAKER_BACK_CENTER,\n+        [PA_CHANNEL_POSITION_REAR_LEFT]             = SL_SPEAKER_BACK_LEFT,\n+        [PA_CHANNEL_POSITION_REAR_RIGHT]            = SL_SPEAKER_BACK_RIGHT,\n+        [PA_CHANNEL_POSITION_LFE]                   = SL_SPEAKER_LOW_FREQUENCY,\n+        [PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER]  = SL_SPEAKER_FRONT_LEFT_OF_CENTER,\n+        [PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER] = SL_SPEAKER_FRONT_RIGHT_OF_CENTER,\n+        [PA_CHANNEL_POSITION_SIDE_LEFT]             = SL_SPEAKER_SIDE_LEFT,\n+        [PA_CHANNEL_POSITION_SIDE_RIGHT]            = SL_SPEAKER_SIDE_RIGHT,\n+        [PA_CHANNEL_POSITION_TOP_CENTER]            = SL_SPEAKER_TOP_CENTER,\n+        [PA_CHANNEL_POSITION_TOP_FRONT_LEFT]        = SL_SPEAKER_TOP_FRONT_LEFT,\n+        [PA_CHANNEL_POSITION_TOP_FRONT_RIGHT]       = SL_SPEAKER_TOP_FRONT_RIGHT,\n+        [PA_CHANNEL_POSITION_TOP_FRONT_CENTER]      = SL_SPEAKER_TOP_FRONT_CENTER,\n+        [PA_CHANNEL_POSITION_TOP_REAR_LEFT]         = SL_SPEAKER_TOP_BACK_LEFT,\n+        [PA_CHANNEL_POSITION_TOP_REAR_RIGHT]        = SL_SPEAKER_TOP_BACK_RIGHT,\n+        [PA_CHANNEL_POSITION_TOP_REAR_CENTER]       = SL_SPEAKER_TOP_BACK_CENTER,\n+    };\n+    pa_assert(x < PA_CHANNEL_POSITION_MAX);\n+    return pa_channel_position_sl_speaker[x] ?: (SLuint32)(-1);\n+}\n+\n+// sl_speaker_to_pa_channel_position converts an OpenSL ES speaker to the\n+// equivalent PulseAudio channel position. If the channel does not have a PA\n+// equivalent or is invalid, PA_CHANNEL_POSITION_INVALID is returned. Note that\n+// this function does not handle the edge case where (SL_SPEAKER_FRONT_CENTER &&\n+// channels == 1) is PA_CHANNEL_POSITION_MONO.\n+//\n+// https://freedesktop.org/software/pulseaudio/doxygen/channelmap_8h.html#af1cbe2738487c74f99e613779bd34bf2\n+// https://www.khronos.org/files/opensl_es_1_0_provisional_specs.pdf#9.2.47\n+static enum pa_channel_position sl_speaker_to_pa_channel_position(SLuint32 x) {\n+    for (enum pa_channel_position pa = 0; pa < PA_CHANNEL_POSITION_MAX; pa++) {\n+        if (pa != PA_CHANNEL_POSITION_MONO && pa_channel_position_to_sl_speaker(pa) == x) {\n+            return pa;\n+        }\n+    }\n+    return -1;\n+}\n+\n+// pa_channel_map_to_sl_channel_mask converts a PulseAudio channel map to an\n+// OpenSL ES channel mask. If an unknown or unsupported channel position is\n+// found, -1 is returned. If map is NULL, 0 is returned.\n+//\n+// https://freedesktop.org/software/pulseaudio/doxygen/channelmap_8h.html#af1cbe2738487c74f99e613779bd34bf2\n+// https://www.khronos.org/files/opensl_es_1_0_provisional_specs.pdf#9.1.8\n+static SLuint32 pa_channel_map_to_sl_channel_mask(pa_channel_map *map) {\n+    SLuint32 mask = 0, cur = 0, last = 0;\n+    if (!map)\n+        return 0;\n+    for (int i = 0; i < map->channels; i++) {\n+        if (map->map[i] == PA_CHANNEL_POSITION_INVALID) {\n+            pa_log(\"Invalid channel found in channel map at position %d.\", i);\n+            return -1;\n+        }\n+        if ((cur = pa_channel_position_to_sl_speaker(map->map[i])) == -1) {\n+            pa_log(\"No OpenSL ES equivalent for %s.\", pa_channel_position_to_string(map->map[i]));;\n+            return -1;\n+        }\n+        if (cur < last)\n+            pa_log(\"Warning: Channel map does not match the OpenSL ES speaker order (%s should be before %s).\", pa_channel_position_to_string(cur), pa_channel_position_to_string(last));\n+        mask |= last = cur;\n+    }\n+    return mask;\n+}\n+\n+// sl_channel_mask_to_pa_channel_map converts an OpenSL ES channel mask to a\n+// PulseAudio channel map by sorting the channels in order. On success, a 0 is\n+// returned. If an unknown channel is present or there are too many channels, -1\n+// is returned and rmap is left untouched.\n+//\n+// https://www.khronos.org/files/opensl_es_1_0_provisional_specs.pdf#9.1.8\n+static int sl_channel_mask_to_pa_channel_map(SLuint32 mask, pa_channel_map *rmap) {\n+    static const SLuint32 speakers[] = {\n+        SL_SPEAKER_FRONT_LEFT, SL_SPEAKER_FRONT_RIGHT, SL_SPEAKER_FRONT_CENTER,\n+        SL_SPEAKER_LOW_FREQUENCY, SL_SPEAKER_BACK_LEFT, SL_SPEAKER_BACK_RIGHT,\n+        SL_SPEAKER_FRONT_LEFT_OF_CENTER, SL_SPEAKER_FRONT_RIGHT_OF_CENTER,\n+        SL_SPEAKER_BACK_CENTER, SL_SPEAKER_SIDE_LEFT, SL_SPEAKER_SIDE_RIGHT,\n+        SL_SPEAKER_TOP_CENTER, SL_SPEAKER_TOP_FRONT_LEFT,\n+        SL_SPEAKER_TOP_FRONT_CENTER, SL_SPEAKER_TOP_FRONT_RIGHT,\n+        SL_SPEAKER_TOP_BACK_LEFT, SL_SPEAKER_TOP_BACK_CENTER,\n+        SL_SPEAKER_TOP_BACK_RIGHT,\n+    };\n+    pa_channel_map map = {0};\n+    pa_assert(rmap);\n+    if (mask == SL_SPEAKER_FRONT_CENTER) {\n+        rmap->channels = 1;\n+        rmap->map[0] = PA_CHANNEL_POSITION_MONO;\n+        return 0;\n+    }\n+    for (size_t i = 0; i < sizeof(speakers)/sizeof(*speakers); i++) {\n+        pa_assert(i == 0 || speakers[i] > speakers[i-1]);\n+        if (mask & speakers[i]) {\n+            mask ^= speakers[i];\n+            pa_assert((map.map[map.channels] = sl_speaker_to_pa_channel_position(speakers[i])) != -1);\n+            if (++map.channels == PA_CHANNELS_MAX) {\n+                pa_log(\"Too many channels in sl mask\");\n+                return -1;\n+            }\n+        }\n+    }\n+    if (mask) {\n+        pa_log(\"Unknown channel in sl mask (left: %u)\", mask);\n+        return -1;\n+    }\n+    *rmap = map;\n+    return 0;\n+}\n+\n+// sl_guess_channel_mask guesses the speakers used for a certain number of\n+// channels. It uses the same logic as Chromium and works correctly on most\n+// devices. If the number of channels is unsupported, -1 is returned.\n+//\n+// https://source.chromium.org/chromium/chromium/src/+/master:media/audio/android/opensles_util.cc;l=23-50;drc=6ae2127739229f68ed7cd466012db4c6e5e6bbcd\n+// https://github.com/google/oboe/blob/52e2163781c8f485f5e67b081c94043a6e8dff15/src/opensles/AudioOutputStreamOpenSLES.cpp#L69-L110\n+// https://www2.iis.fraunhofer.de/AAC/multichannel.html (for testing)\n+// https://www.youtube.com/watch?v=MkVyFZi8ClE (also good for testing)\n+static SLuint32 sl_guess_channel_mask(int channels) {\n+    #define SL_ANDROID_SPEAKER_QUAD (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT | SL_SPEAKER_BACK_LEFT | SL_SPEAKER_BACK_RIGHT)\n+    #define SL_ANDROID_SPEAKER_5DOT1 (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT | SL_SPEAKER_FRONT_CENTER | SL_SPEAKER_LOW_FREQUENCY | SL_SPEAKER_BACK_LEFT | SL_SPEAKER_BACK_RIGHT)\n+    #define SL_ANDROID_SPEAKER_7DOT1 (SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_SIDE_LEFT | SL_SPEAKER_SIDE_RIGHT)\n+    if (channels > 2)\n+        pa_log(\"Warning: Guessing channel layout for > 2 channels, order may be be incorrect.\");\n+    switch (channels) {\n+        case 1: return SL_SPEAKER_FRONT_CENTER;\n+        case 2: return SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;\n+        case 3: return SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT | SL_SPEAKER_FRONT_CENTER;\n+        case 4: return SL_ANDROID_SPEAKER_QUAD;\n+        case 5: return SL_ANDROID_SPEAKER_QUAD | SL_SPEAKER_FRONT_CENTER;\n+        case 6: return SL_ANDROID_SPEAKER_5DOT1;\n+        case 7: return SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_BACK_CENTER;\n+        case 8: return SL_ANDROID_SPEAKER_7DOT1;\n+        default:\n+            pa_log(\"No guess for %d channels.\", channels);\n+            return -1;\n+    }\n+    #undef SL_ANDROID_SPEAKER_7DOT1\n+    #undef SL_ANDROID_SPEAKER_5DOT1\n+    #undef SL_ANDROID_SPEAKER_QUAD\n+}\n+\n+static int pa_sample_spec_to_sl_format(pa_sample_spec *ss, pa_channel_map *map, SLAndroidDataFormat_PCM_EX *sl) {\n+    pa_assert(ss);\n+    pa_assert(sl);\n+\n+    *sl = (SLAndroidDataFormat_PCM_EX){0};\n+\n+    sl->sampleRate = ss->rate * 1000; // Hz to mHz\n+\n+    switch (ss->format) {\n+        case PA_SAMPLE_S16LE: // fallthrough\n+        case PA_SAMPLE_S24LE: // fallthrough\n+        case PA_SAMPLE_S32LE: // fallthrough\n+        case PA_SAMPLE_S16BE: // fallthrough\n+        case PA_SAMPLE_S24BE: // fallthrough\n+        case PA_SAMPLE_S32BE:\n+            sl->formatType     = SL_DATAFORMAT_PCM;\n+            sl->representation = SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT;\n+            break;\n+        case PA_SAMPLE_FLOAT32LE: // fallthrough\n+        case PA_SAMPLE_FLOAT32BE:\n+            sl->formatType     = SL_ANDROID_DATAFORMAT_PCM_EX;\n+            sl->representation = SL_ANDROID_PCM_REPRESENTATION_FLOAT;\n+            break;\n+        default:\n+            pa_log_error(\"Unsupported sample format: only s16/24/32 and f32 formats are supported.\");\n+            return 1;\n+    }\n+    sl->endianness = pa_sample_format_is_le(ss->format)\n+        ? SL_BYTEORDER_LITTLEENDIAN\n+        : SL_BYTEORDER_BIGENDIAN;\n+    sl->bitsPerSample = sl->containerSize = pa_sample_size(ss) * 8;\n+    sl->sampleRate = ss->rate * 1000; // Hz to mHz\n+\n+    if (map) {\n+        pa_assert((sl->numChannels = ss->channels) == map->channels);\n+        if ((sl->channelMask = pa_channel_map_to_sl_channel_mask(map)) == (SLuint32)(-1)) {\n+            pa_log_error(\"Unsupported sample format: no sl equivalent for channel map.\");\n+            return 1;\n+        }\n+    } else {\n+        if ((sl->channelMask = sl_guess_channel_mask((sl->numChannels = ss->channels))) == (SLuint32)(-1)) {\n+            pa_log_error(\"Unsupported sample format: could not guess channel mask for provided number of channels.\");\n+            return 1;\n+        }\n+    }\n+\n+    return 0;\n+}\n+\n+// pa_channel_map_init_sles is pa_channel_map_init from PulseAudio, but modified\n+// to use sl_guess_channel_mask.\n+//\n+// https://github.com/pulseaudio/pulseaudio/blob/7f4d7fcf5f6407913e50604c6195d0d5356195b1/src/pulse/channelmap.c#L165-L395\n+static pa_channel_map *pa_channel_map_init_sles(pa_channel_map *m, unsigned channels) {\n+    pa_assert(m);\n+    pa_assert(pa_channels_valid(channels));\n+    pa_channel_map_init(m);\n+    SLuint32 mask = sl_guess_channel_mask(channels);\n+    if (mask == (SLuint32)(-1))\n+        return NULL;\n+    pa_assert(sl_channel_mask_to_pa_channel_map(mask, m) != -1);\n+    pa_assert(m->channels == channels);\n+    return m;\n+}\n+\n+// pa_channel_map_init_extend_sles is pa_channel_map_init_extend from\n+// PulseAudio, but modified to use pa_channel_map_init_sles.\n+//\n+// https://github.com/pulseaudio/pulseaudio/blob/7f4d7fcf5f6407913e50604c6195d0d5356195b1/src/pulse/channelmap.c#L397-L424\n+static pa_channel_map* pa_channel_map_init_extend_sles(pa_channel_map *m, unsigned channels) {\n+    unsigned c;\n+    pa_assert(m);\n+    pa_assert(pa_channels_valid(channels));\n+    pa_channel_map_init(m);\n+    for (c = channels; c > 0; c--) {\n+        if (pa_channel_map_init_sles(m, c)) {\n+            unsigned i = 0;\n+            for (; c < channels; c++) {\n+                m->map[c] = PA_CHANNEL_POSITION_AUX0 + i;\n+                i++;\n+            }\n+            m->channels = (uint8_t) channels;\n+            return m;\n+        }\n+    }\n+    return NULL;\n+}\n+\n+// pa_modargs_get_sample_spec_and_channel_map_sles is\n+// pa_modargs_get_sample_spec_and_channel_map from PulseAudio, but modified\n+// to use the previous two functions.\n+//\n+// https://github.com/pulseaudio/pulseaudio/blob/7f4d7fcf5f6407913e50604c6195d0d5356195b1/src/pulsecore/modargs.c#L479-L515\n+static int pa_modargs_get_sample_spec_and_channel_map_sles(pa_modargs *ma, pa_sample_spec *rss, pa_channel_map *rmap) {\n+    pa_sample_spec ss;\n+    pa_channel_map map;\n+    pa_assert(rss);\n+    pa_assert(rmap);\n+    ss = *rss;\n+    if (pa_modargs_get_sample_spec(ma, &ss) < 0)\n+        return -1;\n+    map = *rmap;\n+    if (ss.channels != map.channels)\n+        pa_channel_map_init_extend_sles(&map, ss.channels);\n+    if (pa_modargs_get_channel_map(ma, NULL, &map) < 0)\n+        return -1;\n+    if (map.channels != ss.channels) {\n+        if (!pa_modargs_get_value(ma, \"channels\", NULL))\n+            ss.channels = map.channels;\n+        else\n+            return -1;\n+    }\n+    *rmap = map;\n+    *rss = ss;\n+    return 0;\n+}\n+\n+static int pa_init_sles_player(struct userdata *u, pa_sample_spec *ss, pa_channel_map *map) {\n+    pa_assert(u);\n+\n+    // check and convert the sample spec\n+    SLAndroidDataFormat_PCM_EX pcm;\n+    if (pa_sample_spec_to_sl_format(ss, map, &pcm))\n+        return 1;\n+\n+    // common sles error handling\n+    #define CHK(stmt) {                                                        \\\n+        SLresult res = (stmt);                                                 \\\n+        if (res != SL_RESULT_SUCCESS) {                                        \\\n+            pa_log_error(\"Failed to initialize OpenSL ES: error %d at %s:%d\",  \\\n+                res, __FILE__, __LINE__);                                      \\\n+            return 1;                                                          \\\n+        }                                                                      \\\n+    }\n+\n+    // create the engine\n+    CHK(slCreateEngine(&u->EngineObject, 0, NULL, 0, NULL, NULL));\n+    CHK((*u->EngineObject)->Realize(u->EngineObject, SL_BOOLEAN_FALSE));\n+\n+    // create the outputmix\n+    CHK((*u->EngineObject)->GetInterface(u->EngineObject, SL_IID_ENGINE, &(u->EngineItf)));\n+    CHK((*u->EngineItf)->CreateOutputMix(u->EngineItf, &u->OutputMixObject, 0, NULL, NULL));\n+    CHK((*u->OutputMixObject)->Realize(u->OutputMixObject, SL_BOOLEAN_FALSE));\n+\n+    // create the player\n+    CHK(({\n+        SLresult r = (*u->EngineItf)->CreateAudioPlayer(u->EngineItf,\n+            &u->PlayerObject,\n+            &(SLDataSource){\n+                .pLocator = &(SLDataLocator_BufferQueue){\n+                    .locatorType = SL_DATALOCATOR_BUFFERQUEUE,\n+                    .numBuffers  = 8,\n+                },\n+                .pFormat = &pcm,\n+            },\n+            &(SLDataSink){\n+                .pLocator = &(SLDataLocator_OutputMix){\n+                    .locatorType = SL_DATALOCATOR_OUTPUTMIX,\n+                    .outputMix   = u->OutputMixObject,\n+                },\n+                .pFormat = NULL,\n+            },\n+            1,\n+            (SLInterfaceID[]){SL_IID_BUFFERQUEUE},\n+            (SLboolean[]){SL_BOOLEAN_TRUE}\n+        );\n+        if (r == SL_RESULT_CONTENT_UNSUPPORTED)\n+            pa_log(\n+                \"Failed to initialize OpenSL ES; try checking logcat and \"\n+                \"searching for messages with 'libOpenSLES:'\"\n+            );\n+        r;\n+    }));\n+\n+    // realize the player\n+    CHK((*u->PlayerObject)->Realize(u->PlayerObject, SL_BOOLEAN_FALSE));\n+    CHK((*u->PlayerObject)->GetInterface(u->PlayerObject, SL_IID_PLAY, &u->PlayItf));\n+\n+    // register the callback\n+    CHK((*u->PlayerObject)->GetInterface(u->PlayerObject, SL_IID_BUFFERQUEUE, &u->BufferQueueItf));\n+    CHK((*u->BufferQueueItf)->RegisterCallback(u->BufferQueueItf, sles_callback, u));\n+\n+    // cleanup\n+    #undef CHK\n+\n+    return 0;\n+}\n+\n+static void thread_func(void *userdata) {\n+    struct userdata *u = userdata;\n+\n+    pa_assert(u);\n+\n+    pa_log_debug(\"Thread starting up\");\n+    pa_thread_mq_install(&u->thread_mq);\n+\n+    for (;;) {\n+        int ret;\n+\n+        if (PA_UNLIKELY(u->sink->thread_info.rewind_requested))\n+          pa_sink_process_rewind(u->sink, 0);\n+\n+        if ((ret = pa_rtpoll_run(u->rtpoll)) < 0)\n+            goto fail;\n+\n+        if (ret == 0)\n+            goto finish;\n+    }\n+\n+fail:\n+    /* If this was no regular exit from the loop we have to continue\n+     * processing messages until we received PA_MESSAGE_SHUTDOWN */\n+    pa_asyncmsgq_post(u->thread_mq.outq, PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL, NULL);\n+    pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN);\n+\n+finish:\n+    pa_log_debug(\"Thread shutting down\");\n+}\n+\n+static int state_func(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) {\n+    struct userdata *u = s->userdata;\n+    pa_assert(u);\n+\n+    if (PA_SINK_IS_OPENED(s->state) && (state == PA_SINK_SUSPENDED || state == PA_SINK_UNLINKED))\n+        (*u->PlayItf)->SetPlayState(u->PlayItf, SL_PLAYSTATE_STOPPED);\n+    else if ((s->state == PA_SINK_SUSPENDED || s->state == PA_SINK_INIT) && PA_SINK_IS_OPENED(state))\n+        (*u->PlayItf)->SetPlayState(u->PlayItf, SL_PLAYSTATE_PLAYING);\n+    return 0;\n+}\n+\n+int pa__init(pa_module*m) {\n+    struct userdata *u = NULL;\n+    pa_modargs *ma = NULL;\n+    pa_sink_new_data sink_data;\n+    pa_sample_spec ss;\n+    pa_channel_map map;\n+    uint32_t latency = 0;\n+\n+    pa_assert(m);\n+\n+    m->userdata = u = pa_xnew0(struct userdata, 1);\n+    if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {\n+        pa_log(\"Failed to parse module arguments.\");\n+        goto fail;\n+    }\n+\n+    u->core   = m->core;\n+    u->module = m;\n+\n+    u->rtpoll = pa_rtpoll_new();\n+    if (pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll) < 0) {\n+        pa_log(\"pa_thread_mq_init() failed.\");\n+        goto fail;\n+    }\n+    if (!(u->sles_msgq = pa_asyncmsgq_new(0))) {\n+        pa_log(\"pa_asyncmsgq_new() failed.\");\n+        goto fail;\n+    }\n+    u->rtpoll_item = pa_rtpoll_item_new_asyncmsgq_read(u->rtpoll, PA_RTPOLL_EARLY-1, u->sles_msgq);\n+\n+    pa_sink_new_data_init(&sink_data);\n+    sink_data.driver = __FILE__;\n+    sink_data.module = m;\n+\n+    ss  = m->core->default_sample_spec;\n+    map = m->core->default_channel_map;\n+    if (pa_modargs_get_sample_spec_and_channel_map_sles(ma, &ss, &map) < 0) {\n+        pa_log(\"Invalid sample format specification or channel map.\");\n+        goto fail;\n+    }\n+\n+    if (pa_init_sles_player(u, &ss, &map))\n+        goto fail;\n+\n+    pa_sink_new_data_set_name(&sink_data, pa_modargs_get_value(ma, \"sink_name\", DEFAULT_SINK_NAME));\n+    pa_sink_new_data_set_sample_spec(&sink_data, &ss);\n+    pa_sink_new_data_set_channel_map(&sink_data, &map);\n+    pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, \"OpenSL ES Output\");\n+    pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, \"abstract\");\n+\n+    if (pa_modargs_get_proplist(ma, \"sink_properties\", sink_data.proplist, PA_UPDATE_REPLACE) < 0) {\n+        pa_log(\"Invalid properties.\");\n+        pa_sink_new_data_done(&sink_data);\n+        goto fail;\n+    }\n+\n+    if (!(u->sink = pa_sink_new(m->core, &sink_data, 0))) {\n+        pa_log(\"Failed to create sink object.\");\n+        pa_sink_new_data_done(&sink_data);\n+        goto fail;\n+    }\n+    pa_sink_new_data_done(&sink_data);\n+\n+    u->sink->userdata = u;\n+    u->sink->parent.process_msg = sink_process_msg;\n+    u->sink->set_state_in_main_thread = state_func;\n+\n+    pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);\n+    pa_sink_set_rtpoll(u->sink, u->rtpoll);\n+\n+    pa_modargs_get_value_u32(ma, \"latency\", &latency);\n+    u->block_usec = latency\n+        ? PA_USEC_PER_MSEC * latency\n+        : PA_USEC_PER_MSEC * 125;\n+    pa_sink_set_fixed_latency(u->sink, u->block_usec);\n+\n+    u->nbytes = pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec);\n+    u->buf = calloc(1, u->nbytes);\n+    u->memchunk.memblock = pa_memblock_new_fixed(m->core->mempool, u->buf, u->nbytes, false);\n+\n+    if (!(u->thread = pa_thread_new(\"sles-sink\", thread_func, u))) {\n+        pa_log(\"Failed to create thread.\");\n+        goto fail;\n+    }\n+\n+    pa_sink_put(u->sink);\n+    sles_callback(u->BufferQueueItf, u);\n+\n+    pa_modargs_free(ma);\n+\n+    return 0;\n+\n+fail:\n+    if (ma)\n+        pa_modargs_free(ma);\n+    pa__done(m);\n+\n+    return -1;\n+}\n+\n+int pa__get_n_used(pa_module *m) {\n+    struct userdata *u;\n+\n+    pa_assert(m);\n+    pa_assert_se(u = m->userdata);\n+\n+    return pa_sink_linked_by(u->sink);\n+}\n+\n+void pa__done(pa_module *m) {\n+    struct userdata *u;\n+\n+    pa_assert(m);\n+\n+    if (!(u = m->userdata))\n+        return;\n+\n+    if (u->sink)\n+        pa_sink_unlink(u->sink);\n+\n+    if (u->PlayerObject)\n+        (*u->PlayerObject)->Destroy(u->PlayerObject);\n+    if (u->OutputMixObject)\n+        (*u->OutputMixObject)->Destroy(u->OutputMixObject);\n+    if (u->EngineObject)\n+        (*u->EngineObject)->Destroy(u->EngineObject);\n+\n+    if (u->memchunk.memblock)\n+        pa_memblock_unref_fixed(u->memchunk.memblock);\n+    free(u->buf);\n+\n+    if (u->thread) {\n+        pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);\n+        pa_thread_free(u->thread);\n+    }\n+    pa_thread_mq_done(&u->thread_mq);\n+\n+    if (u->sink)\n+        pa_sink_unref(u->sink);\n+    if (u->rtpoll_item)\n+        pa_rtpoll_item_free(u->rtpoll_item);\n+    if (u->sles_msgq)\n+        pa_asyncmsgq_unref(u->sles_msgq);\n+    if (u->rtpoll)\n+        pa_rtpoll_free(u->rtpoll);\n+\n+    pa_xfree(u);\n+}\ndiff -uNr 30-pulseaudio/src/modules/sles/module-sles-source.c 30-pulseaudio-mod/src/modules/sles/module-sles-source.c\n--- 30-pulseaudio/src/modules/sles/module-sles-source.c\t1969-12-31 21:00:00.000000000 -0300\n+++ 30-pulseaudio-mod/src/modules/sles/module-sles-source.c\t2024-12-15 20:43:51.998654873 -0300\n@@ -0,0 +1,435 @@\n+/***\n+  This file is part of PulseAudio.\n+\n+  Copyright 2008 Lennart Poettering\n+\n+  PulseAudio is free software; you can redistribute it and/or modify\n+  it under the terms of the GNU Lesser General Public License as published\n+  by the Free Software Foundation; either version 2.1 of the License,\n+  or (at your option) any later version.\n+\n+  PulseAudio is distributed in the hope that it will be useful, but\n+  WITHOUT ANY WARRANTY; without even the implied warranty of\n+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+  General Public License for more details.\n+\n+  You should have received a copy of the GNU Lesser General Public License\n+  along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.\n+***/\n+\n+#ifdef HAVE_CONFIG_H\n+#include <config.h>\n+#endif\n+\n+#include <errno.h>\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <unistd.h>\n+\n+#include <pulse/rtclock.h>\n+#include <pulse/timeval.h>\n+#include <pulse/xmalloc.h>\n+\n+#include <pulsecore/core-util.h>\n+#include <pulsecore/log.h>\n+#include <pulsecore/modargs.h>\n+#include <pulsecore/module.h>\n+#include <pulsecore/rtpoll.h>\n+#include <pulsecore/source.h>\n+#include <pulsecore/thread-mq.h>\n+#include <pulsecore/thread.h>\n+\n+#include <SLES/OpenSLES.h>\n+#include <SLES/OpenSLES_Android.h>\n+#include <SLES/OpenSLES_AndroidConfiguration.h>\n+\n+PA_MODULE_AUTHOR(\"Lennart Poettering, Patrick Gaskin\");\n+PA_MODULE_DESCRIPTION(\"Android OpenSL ES source\");\n+PA_MODULE_VERSION(PACKAGE_VERSION);\n+PA_MODULE_LOAD_ONCE(false);\n+PA_MODULE_USAGE(\n+    \"source_name=<name for the source> \"\n+    \"source_properties=<properties for the source> \"\n+    \"latency=<buffer length> \"\n+    \"format=<sample format> \"\n+    \"channels=<number of channels> \"\n+    \"rate=<sample rate> \"\n+    \"channel_map=<channel map> \"\n+);\n+\n+#define DEFAULT_SOURCE_NAME \"OpenSL ES source\"\n+\n+enum { SOURCE_MESSAGE_RENDER = PA_SOURCE_MESSAGE_MAX };\n+\n+struct userdata {\n+    pa_core *core;\n+    pa_module *module;\n+    pa_source *source;\n+\n+    pa_thread *thread;\n+    pa_thread_mq thread_mq;\n+    pa_rtpoll *rtpoll;\n+    pa_rtpoll_item *rtpoll_item;\n+    pa_asyncmsgq *sles_msgq;\n+\n+    pa_usec_t block_usec;\n+\n+    pa_memchunk memchunk;\n+    void *buf;\n+    size_t nbytes;\n+\n+    SLObjectItf EngineObject;\n+    SLObjectItf RecorderObject;\n+    SLEngineItf EngineItf;\n+    SLRecordItf RecordItf;\n+    SLAndroidConfigurationItf ConfigurationItf;\n+    SLAndroidSimpleBufferQueueItf BufferQueueItf;\n+};\n+\n+static const char *const valid_modargs[] = {\n+    \"source_name\",\n+    \"source_properties\",\n+    \"latency\",\n+    \"format\",\n+    \"channels\",\n+    \"rate\",\n+    \"channel_map\",\n+    NULL\n+};\n+\n+static void process_render(void *userdata) {\n+    struct userdata *u = userdata;\n+    pa_assert(u);\n+\n+    (*u->RecordItf)->SetRecordState(u->RecordItf, SL_RECORDSTATE_RECORDING);\n+    if (!PA_SOURCE_IS_LINKED(u->source->thread_info.state))\n+        return;\n+\n+    u->memchunk.length = u->nbytes;\n+    (*u->BufferQueueItf)->Enqueue(u->BufferQueueItf, u->buf, u->memchunk.length);\n+    pa_source_post(u->source, &u->memchunk);\n+}\n+\n+static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *memchunk) {\n+    switch (code) {\n+        case SOURCE_MESSAGE_RENDER:\n+            process_render(data);\n+            return 0;\n+        case PA_SINK_MESSAGE_GET_LATENCY:\n+            code = PA_SINK_MESSAGE_GET_FIXED_LATENCY;  // FIXME: is there a way to get the real latency?\n+            break;\n+    }\n+    return pa_source_process_msg(o, code, data, offset, memchunk);\n+};\n+\n+static void sles_callback(SLAndroidSimpleBufferQueueItf recBuffQueueItf, void *userdata) {\n+    struct userdata *u = userdata;\n+    pa_assert(u);\n+    pa_assert_se(pa_asyncmsgq_send(u->sles_msgq, PA_MSGOBJECT(u->source), SOURCE_MESSAGE_RENDER, u, 0, NULL) == 0);\n+}\n+\n+static int pa_sample_spec_to_sl_format(pa_sample_spec *ss, SLAndroidDataFormat_PCM_EX *sl) {\n+    pa_assert(ss);\n+    pa_assert(sl);\n+\n+    *sl = (SLAndroidDataFormat_PCM_EX){0};\n+\n+    switch ((sl->numChannels = ss->channels)) {\n+        case 1:\n+            sl->channelMask = SL_SPEAKER_FRONT_LEFT;\n+            break;\n+        case 2:\n+            sl->channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;\n+            break;\n+        default:\n+            pa_log_error(\"Unsupported sample format: only stereo or mono channels are supported.\");\n+            return 1;\n+    }\n+    sl->sampleRate = ss->rate * 1000; // Hz to mHz\n+\n+    switch (ss->format) {\n+        case PA_SAMPLE_S16LE: // fallthrough\n+        case PA_SAMPLE_S24LE: // fallthrough\n+        case PA_SAMPLE_S32LE: // fallthrough\n+        case PA_SAMPLE_S16BE: // fallthrough\n+        case PA_SAMPLE_S24BE: // fallthrough\n+        case PA_SAMPLE_S32BE:\n+            sl->formatType     = SL_DATAFORMAT_PCM;\n+            sl->representation = SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT;\n+            break;\n+        case PA_SAMPLE_FLOAT32LE: // fallthrough\n+        case PA_SAMPLE_FLOAT32BE:\n+            sl->formatType     = SL_ANDROID_DATAFORMAT_PCM_EX;\n+            sl->representation = SL_ANDROID_PCM_REPRESENTATION_FLOAT;\n+            break;\n+        default:\n+            pa_log_error(\"Unsupported sample format: only s16/24/32 and f32 formats are supported.\");\n+            return 1;\n+    }\n+    sl->endianness = pa_sample_format_is_le(ss->format)\n+        ? SL_BYTEORDER_LITTLEENDIAN\n+        : SL_BYTEORDER_BIGENDIAN;\n+    sl->bitsPerSample = sl->containerSize = pa_sample_size(ss) * 8;\n+\n+    return 0;\n+}\n+\n+static int pa_init_sles_record(struct userdata *u, pa_sample_spec *ss) {\n+    pa_assert(u);\n+\n+    // check and convert the sample spec\n+    SLAndroidDataFormat_PCM_EX pcm;\n+    if (pa_sample_spec_to_sl_format(ss, &pcm))\n+        return 1;\n+\n+    // common sles error handling\n+    #define CHK(stmt) {                                                        \\\n+        SLresult res = (stmt);                                                 \\\n+        if (res != SL_RESULT_SUCCESS) {                                        \\\n+            pa_log_error(\"Failed to initialize OpenSL ES: error %d at %s:%d\",  \\\n+                res, __FILE__, __LINE__);                                      \\\n+            return 1;                                                          \\\n+        }                                                                      \\\n+    }\n+\n+    // create the engine\n+    CHK(slCreateEngine(&u->EngineObject, 0, NULL, 0, NULL, NULL));\n+    CHK(({\n+        SLresult r = (*u->EngineObject)->Realize(u->EngineObject, SL_BOOLEAN_FALSE);\n+        if (r == SL_RESULT_CONTENT_UNSUPPORTED)\n+            pa_log(\n+                \"Failed to initialize OpenSL ES; did you grant Termux the \"\n+                \"RECORD_AUDIO permission (you can use termux-microphone-record \"\n+                \"from Termux:API for this)?\"\n+            );\n+        r;\n+    }));\n+\n+    // create the recorder\n+    CHK((*u->EngineObject)->GetInterface(u->EngineObject, SL_IID_ENGINE, &u->EngineItf));\n+    CHK(({\n+        SLresult r = (*u->EngineItf)->CreateAudioRecorder(u->EngineItf,\n+            &u->RecorderObject,\n+\n+            // source/sink\n+            &(SLDataSource){\n+                .pLocator = &(SLDataLocator_IODevice){\n+                    .locatorType = SL_DATALOCATOR_IODEVICE,\n+                    .deviceType  = SL_IODEVICE_AUDIOINPUT,\n+                    .deviceID    = SL_DEFAULTDEVICEID_AUDIOINPUT,\n+                    .device      = NULL,\n+                },\n+                .pFormat = NULL,\n+            },\n+            &(SLDataSink){\n+                .pLocator = &(SLDataLocator_AndroidSimpleBufferQueue){\n+                    .locatorType = SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE,\n+                    .numBuffers  = 8,\n+                },\n+                .pFormat  = &pcm,\n+            },\n+\n+            // required interfaces\n+            2,\n+            (SLInterfaceID[]){SL_IID_ANDROIDSIMPLEBUFFERQUEUE, SL_IID_ANDROIDCONFIGURATION}, \n+            (SLboolean[])    {SL_BOOLEAN_TRUE,                 SL_BOOLEAN_TRUE}\n+        );\n+        if (r == SL_RESULT_CONTENT_UNSUPPORTED)\n+            pa_log(\n+                \"Failed to initialize OpenSL ES; try checking logcat and \"\n+                \"searching for messages with 'libOpenSLES:'\"\n+            );\n+        r;\n+    }));\n+\n+    // update the configuration\n+    CHK((*u->RecorderObject)->GetInterface(u->RecorderObject, SL_IID_ANDROIDCONFIGURATION, &u->ConfigurationItf));\n+    CHK((*u->ConfigurationItf)->SetConfiguration(u->ConfigurationItf, SL_ANDROID_KEY_RECORDING_PRESET, &(SLuint32){SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION}, sizeof(SLuint32)));\n+\n+    // realize the recorder\n+    CHK((*u->RecorderObject)->Realize(u->RecorderObject, SL_BOOLEAN_FALSE));\n+    CHK((*u->RecorderObject)->GetInterface(u->RecorderObject, SL_IID_RECORD, &u->RecordItf));\n+\n+    // register the callback\n+    CHK((*u->RecorderObject)->GetInterface(u->RecorderObject, SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &u->BufferQueueItf));\n+    CHK((*u->BufferQueueItf)->RegisterCallback(u->BufferQueueItf, sles_callback, u));\n+\n+    // cleanup\n+    #undef CHK\n+\n+    return 0;\n+}\n+\n+static void thread_func(void *userdata) {\n+    struct userdata *u = userdata;\n+    pa_assert(u);\n+\n+    pa_thread_mq_install(&u->thread_mq);\n+    for (;;) {\n+        int ret;\n+        if ((ret = pa_rtpoll_run(u->rtpoll)) < 0) {\n+            pa_asyncmsgq_post(u->thread_mq.outq, PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL, NULL);\n+            pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN);\n+            break;\n+        }\n+        if (ret == 0) {\n+            break;\n+        }\n+    }\n+}\n+\n+static int state_func(pa_source *s, pa_source_state_t state, pa_suspend_cause_t suspend_cause) {\n+    struct userdata *u = s->userdata;\n+    pa_assert(u);\n+\n+    if (PA_SOURCE_IS_OPENED(s->state) && (state == PA_SOURCE_SUSPENDED || state == PA_SOURCE_UNLINKED))\n+        (*u->RecordItf)->SetRecordState(u->RecordItf, SL_RECORDSTATE_STOPPED);\n+    else if ((s->state == PA_SOURCE_SUSPENDED || s->state == PA_SOURCE_INIT) && PA_SOURCE_IS_OPENED(state))\n+        (*u->RecordItf)->SetRecordState(u->RecordItf, SL_RECORDSTATE_RECORDING);\n+    return 0;\n+}\n+\n+int pa__init(pa_module *m) {\n+    struct userdata *u = NULL;\n+    pa_modargs *ma = NULL;\n+    pa_source_new_data source_data;\n+    pa_sample_spec ss;\n+    pa_channel_map map;\n+    uint32_t latency = 0;\n+\n+    pa_assert(m);\n+\n+    m->userdata = u = pa_xnew0(struct userdata, 1);\n+    if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {\n+        pa_log(\"Failed to parse module arguments.\");\n+        goto fail;\n+    }\n+\n+    u->core   = m->core;\n+    u->module = m;\n+\n+    u->rtpoll = pa_rtpoll_new();\n+    if (pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll) < 0) {\n+        pa_log(\"pa_thread_mq_init() failed.\");\n+        goto fail;\n+    }\n+    if (!(u->sles_msgq = pa_asyncmsgq_new(0))) {\n+        pa_log(\"pa_asyncmsgq_new() failed.\");\n+        goto fail;\n+    }\n+    u->rtpoll_item = pa_rtpoll_item_new_asyncmsgq_read(u->rtpoll, PA_RTPOLL_EARLY - 1, u->sles_msgq);\n+\n+    pa_source_new_data_init(&source_data);\n+    source_data.driver = __FILE__;\n+    source_data.module = m;\n+\n+    ss  = m->core->default_sample_spec;\n+    map = m->core->default_channel_map;\n+    if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {\n+        pa_log(\"Invalid sample format specification or channel map.\");\n+        goto fail;\n+    }\n+\n+    if (pa_init_sles_record(u, &ss))\n+        goto fail;\n+\n+    pa_source_new_data_set_name(&source_data, pa_modargs_get_value(ma, \"source_name\", DEFAULT_SOURCE_NAME));\n+    pa_source_new_data_set_sample_spec(&source_data, &ss);\n+    pa_proplist_sets(source_data.proplist, PA_PROP_DEVICE_DESCRIPTION, \"OpenSL ES Input\");\n+    pa_proplist_sets(source_data.proplist, PA_PROP_DEVICE_CLASS,       \"abstract\");\n+\n+    if (pa_modargs_get_proplist(ma, \"source_properties\", source_data.proplist, PA_UPDATE_REPLACE) < 0) {\n+        pa_log(\"Invalid properties.\");\n+        pa_source_new_data_done(&source_data);\n+        goto fail;\n+    }\n+\n+    if (!(u->source = pa_source_new(m->core, &source_data, PA_SOURCE_LATENCY))) {\n+        pa_log(\"Failed to create source.\");\n+        pa_source_new_data_done(&source_data);\n+        goto fail;\n+    }\n+    pa_source_new_data_done(&source_data);\n+\n+    u->source->userdata = u;\n+    u->source->parent.process_msg = source_process_msg;\n+    u->source->set_state_in_main_thread = state_func;\n+\n+    pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);\n+    pa_source_set_rtpoll(u->source, u->rtpoll);\n+\n+    pa_modargs_get_value_u32(ma, \"latency\", &latency);\n+    u->block_usec = latency\n+        ? PA_USEC_PER_MSEC * latency\n+        : PA_USEC_PER_MSEC * 125;\n+    pa_source_set_fixed_latency(u->source, u->block_usec);\n+\n+    u->nbytes = pa_usec_to_bytes(u->block_usec, &u->source->sample_spec);\n+    u->buf = calloc(1, u->nbytes);\n+    u->memchunk.memblock = pa_memblock_new_fixed(m->core->mempool, u->buf, u->nbytes, false);\n+\n+    if (!(u->thread = pa_thread_new(\"sles-source\", thread_func, u))) {\n+        pa_log(\"Failed to create thread.\");\n+        goto fail;\n+    }\n+    pa_source_put(u->source);\n+    sles_callback(u->BufferQueueItf, u);\n+\n+    pa_modargs_free(ma);\n+\n+    return 0;\n+\n+fail:\n+    if (ma)\n+        pa_modargs_free(ma);\n+    pa__done(m);\n+\n+    return -1;\n+}\n+\n+int pa__get_n_used(pa_module *m) {\n+    struct userdata *u;\n+\n+    pa_assert(m);\n+    pa_assert_se(u = m->userdata);\n+\n+    return pa_source_linked_by(u->source);\n+}\n+\n+void pa__done(pa_module *m) {\n+    struct userdata *u;\n+\n+    pa_assert(m);\n+\n+    if (!(u = m->userdata))\n+        return;\n+\n+    if (u->source)\n+        pa_source_unlink(u->source);\n+\n+    if (u->RecorderObject)\n+        (*u->RecorderObject)->Destroy(u->RecorderObject);\n+    if (u->EngineObject)\n+        (*u->EngineObject)->Destroy(u->EngineObject);\n+\n+    if (u->memchunk.memblock)\n+        pa_memblock_unref_fixed(u->memchunk.memblock);\n+    free(u->buf);\n+\n+    if (u->thread) {\n+        pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);\n+        pa_thread_free(u->thread);\n+    }\n+    pa_thread_mq_done(&u->thread_mq);\n+\n+    if (u->source)\n+        pa_source_unref(u->source);\n+    if (u->rtpoll_item)\n+        pa_rtpoll_item_free(u->rtpoll_item);\n+    if (u->sles_msgq)\n+        pa_asyncmsgq_unref(u->sles_msgq);\n+    if (u->rtpoll)\n+        pa_rtpoll_free(u->rtpoll);\n+\n+    pa_xfree(u);\n+}\ndiff -uNr 30-pulseaudio/src/pulsecore/core-util.c 30-pulseaudio-mod/src/pulsecore/core-util.c\n--- 30-pulseaudio/src/pulsecore/core-util.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/pulsecore/core-util.c\t2024-12-15 20:43:42.846655547 -0300\n@@ -1766,7 +1766,7 @@\n      * users, too. Since we need POSIX locking and UNIX sockets in\n      * this directory, we try XDG_RUNTIME_DIR first, and if that isn't\n      * set create a directory in $HOME and link it to a random subdir\n-     * in /tmp, if it was not explicitly configured. */\n+     * in /data/data/com.micewine.emu/files/usr/tmp, if it was not explicitly configured. */\n \n     m = pa_in_system_mode() ? 0755U : 0700U;\n \n@@ -1839,7 +1839,7 @@\n \n #ifdef HAVE_SYMLINK\n             /* Hmm, so the runtime directory didn't exist yet, so let's\n-             * create one in /tmp and symlink that to it */\n+             * create one in /data/data/com.micewine.emu/files/usr/tmp and symlink that to it */\n \n             if (make_random_dir_and_link(0700, k) < 0) {\n \n@@ -3229,8 +3229,8 @@\n     if ((f = pa_fopen_cloexec(PA_MACHINE_ID, \"r\")) ||\n         (f = pa_fopen_cloexec(PA_MACHINE_ID_FALLBACK, \"r\")) ||\n #if !defined(OS_IS_WIN32)\n-        (f = pa_fopen_cloexec(\"/etc/machine-id\", \"r\")) ||\n-        (f = pa_fopen_cloexec(\"/var/lib/dbus/machine-id\", \"r\"))\n+        (f = pa_fopen_cloexec(\"/data/data/com.micewine.emu/files/usr/etc/machine-id\", \"r\")) ||\n+        (f = pa_fopen_cloexec(\"/data/data/com.micewine.emu/files/usr/var/lib/dbus/machine-id\", \"r\"))\n #else\n         false\n #endif\n@@ -3595,7 +3595,7 @@\n         pa_is_path_absolute(t))\n         return t;\n \n-    return \"/tmp\";\n+    return \"/data/data/com.micewine.emu/files/usr/tmp\";\n }\n \n int pa_open_cloexec(const char *fn, int flags, mode_t mode) {\ndiff -uNr 30-pulseaudio/src/pulsecore/esound.h 30-pulseaudio-mod/src/pulsecore/esound.h\n--- 30-pulseaudio/src/pulsecore/esound.h\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/pulsecore/esound.h\t2024-12-15 20:43:42.846655547 -0300\n@@ -23,8 +23,8 @@\n /* Most of the following is blatantly stolen from esound. */\n \n /* path and name of the default EsounD domain socket */\n-#define ESD_UNIX_SOCKET_DIR     \"/tmp/.esd\"\n-#define ESD_UNIX_SOCKET_NAME    \"/tmp/.esd/socket\"\n+#define ESD_UNIX_SOCKET_DIR     \"/data/data/com.micewine.emu/files/usr/tmp/.esd\"\n+#define ESD_UNIX_SOCKET_NAME    \"/data/data/com.micewine.emu/files/usr/tmp/.esd/socket\"\n \n /* length of the audio buffer size */\n #define ESD_BUF_SIZE (4 * 1024)\ndiff -uNr 30-pulseaudio/src/pulsecore/log.c 30-pulseaudio-mod/src/pulsecore/log.c\n--- 30-pulseaudio/src/pulsecore/log.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/pulsecore/log.c\t2024-12-15 20:43:42.846655547 -0300\n@@ -30,6 +30,10 @@\n #include <fcntl.h>\n #include <sys/stat.h>\n \n+#ifdef __ANDROID__\n+#undef HAVE_EXECINFO_H\n+#endif\n+\n #ifdef HAVE_EXECINFO_H\n #include <execinfo.h>\n #endif\ndiff -uNr 30-pulseaudio/src/pulsecore/meson.build 30-pulseaudio-mod/src/pulsecore/meson.build\n--- 30-pulseaudio/src/pulsecore/meson.build\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/pulsecore/meson.build\t2024-12-15 20:43:42.846655547 -0300\n@@ -185,14 +185,7 @@\n foreach simd_kwargs : simd_variants\n \n   if host_machine.cpu_family() == 'arm' and 'neon' in simd_kwargs\n-    if not cc.compiles('''\n-        #include <arm_neon.h>\n-        int main() {\n-            return sizeof(uint8x8_t) + sizeof(int32x4_t) + sizeof(float32x4_t);\n-        }\n-        ''', name : 'neon code')\n-      continue\n-    endif\n+    continue\n   endif\n \n   libpulsecore_simd = simd.check('libpulsecore_simd',\ndiff -uNr 30-pulseaudio/src/pulsecore/shm.c 30-pulseaudio-mod/src/pulsecore/shm.c\n--- 30-pulseaudio/src/pulsecore/shm.c\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/pulsecore/shm.c\t2024-12-15 20:43:42.847655547 -0300\n@@ -67,7 +67,7 @@\n /* On Linux we know that the shared memory blocks are files in\n  * /dev/shm. We can use that information to list all blocks and\n  * cleanup unused ones */\n-#define SHM_PATH \"/dev/shm/\"\n+#define SHM_PATH \"/data/data/com.micewine.emu/files/usr/tmp/\"\n #define SHM_ID_LEN 10\n #elif defined(__sun)\n #define SHM_PATH \"/tmp\"\ndiff -uNr 30-pulseaudio/src/tests/meson.build 30-pulseaudio-mod/src/tests/meson.build\n--- 30-pulseaudio/src/tests/meson.build\t2024-01-12 14:22:09.000000000 -0300\n+++ 30-pulseaudio-mod/src/tests/meson.build\t2024-12-15 20:43:42.847655547 -0300\n@@ -106,8 +106,6 @@\n     default_tests += [\n       [ 'sigbus-test', 'sigbus-test.c',\n         [ check_dep, libpulse_dep, libpulsecommon_dep, libpulsecore_dep ] ],\n-      [ 'usergroup-test', 'usergroup-test.c',\n-        [ check_dep, libpulse_dep, libpulsecommon_dep, libpulsecore_dep ] ],\n     ]\n   endif\n \n"
  },
  {
    "path": "packages/pulseaudio/02-aaudio-sink.patch",
    "content": "diff -uNr pulseaudio/meson.build pulseaudio-aaudio/meson.build\n--- pulseaudio/meson.build\t2025-02-15 15:37:24.487223369 -0300\n+++ pulseaudio-aaudio/meson.build\t2025-02-15 15:38:33.368888460 -0300\n@@ -446,6 +446,7 @@\n \n libm_dep = cc.find_library('m', required : true)\n sles_dep = cc.find_library('OpenSLES', required : true)\n+aaudio_dep = cc.find_library('aaudio', required : true)\n \n thread_dep = dependency('threads')\n foreach f : [\ndiff -uNr pulseaudio/src/modules/aaudio/module-aaudio-sink.c pulseaudio-aaudio/src/modules/aaudio/module-aaudio-sink.c\n--- pulseaudio/src/modules/aaudio/module-aaudio-sink.c\t1969-12-31 21:00:00.000000000 -0300\n+++ pulseaudio-aaudio/src/modules/aaudio/module-aaudio-sink.c\t2025-02-15 15:37:44.518442135 -0300\n@@ -0,0 +1,450 @@\n+/***\n+  This file is part of PulseAudio.\n+\n+  Copyright 2004-2008 Lennart Poettering\n+\n+  PulseAudio is free software; you can redistribute it and/or modify\n+  it under the terms of the GNU Lesser General Public License as published\n+  by the Free Software Foundation; either version 2.1 of the License,\n+  or (at your option) any later version.\n+\n+  PulseAudio is distributed in the hope that it will be useful, but\n+  WITHOUT ANY WARRANTY; without even the implied warranty of\n+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+  General Public License for more details.\n+\n+  You should have received a copy of the GNU Lesser General Public License\n+  along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.\n+***/\n+\n+#ifdef HAVE_CONFIG_H\n+#include <config.h>\n+#endif\n+\n+#include <stdlib.h>\n+#include <stdio.h>\n+#include <errno.h>\n+#include <unistd.h>\n+\n+#include <pulse/rtclock.h>\n+#include <pulse/timeval.h>\n+#include <pulse/xmalloc.h>\n+\n+#include <pulsecore/i18n.h>\n+#include <pulsecore/macro.h>\n+#include <pulsecore/sink.h>\n+#include <pulsecore/module.h>\n+#include <pulsecore/core-util.h>\n+#include <pulsecore/modargs.h>\n+#include <pulsecore/log.h>\n+#include <pulsecore/thread.h>\n+#include <pulsecore/thread-mq.h>\n+#include <pulsecore/rtpoll.h>\n+\n+#include <android/versioning.h>\n+#undef __INTRODUCED_IN\n+#define __INTRODUCED_IN(api_level)\n+#include <aaudio/AAudio.h>\n+\n+PA_MODULE_AUTHOR(\"Tom Yan\");\n+PA_MODULE_DESCRIPTION(\"Android AAudio sink\");\n+PA_MODULE_VERSION(PACKAGE_VERSION);\n+PA_MODULE_LOAD_ONCE(false);\n+PA_MODULE_USAGE(\n+    \"sink_name=<name for the sink> \"\n+    \"sink_properties=<properties for the sink> \"\n+    \"rate=<sampling rate> \"\n+    \"latency=<buffer length> \"\n+    \"pm=<performance mode> \"\n+    \"no_close_hack=<avoid segfault caused by AAudioStream_close()> \"\n+);\n+\n+#define DEFAULT_SINK_NAME \"AAudio sink\"\n+\n+enum {\n+    SINK_MESSAGE_RENDER = PA_SINK_MESSAGE_MAX,\n+    SINK_MESSAGE_OPEN_STREAM\n+};\n+\n+struct userdata {\n+    pa_core *core;\n+    pa_module *module;\n+    pa_sink *sink;\n+\n+    pa_thread *thread;\n+    pa_thread_mq thread_mq;\n+    pa_rtpoll *rtpoll;\n+    pa_rtpoll_item *rtpoll_item;\n+    pa_asyncmsgq *aaudio_msgq;\n+\n+    uint32_t rate;\n+    uint32_t latency;\n+    uint32_t pm;\n+    bool no_close;\n+\n+    pa_memchunk memchunk;\n+    size_t frame_size;\n+\n+    AAudioStreamBuilder *builder;\n+    AAudioStream *stream;\n+    pa_sample_spec ss;\n+};\n+\n+static const char* const valid_modargs[] = {\n+    \"sink_name\",\n+    \"sink_properties\",\n+    \"rate\",\n+    \"latency\",\n+    \"pm\",\n+    \"no_close_hack\",\n+    NULL\n+};\n+\n+static int process_render(struct userdata *u, void *audioData, int64_t numFrames) {\n+    pa_assert(u->sink->thread_info.state != PA_SINK_INIT);\n+\n+    /* a render message could be queued after a set state message */\n+    if (!PA_SINK_IS_LINKED(u->sink->thread_info.state))\n+        return AAUDIO_CALLBACK_RESULT_STOP;\n+\n+    u->memchunk.memblock = pa_memblock_new_fixed(u->core->mempool, audioData, u->frame_size * numFrames, false);\n+    u->memchunk.length = pa_memblock_get_length(u->memchunk.memblock);\n+    pa_sink_render_into_full(u->sink, &u->memchunk);\n+    pa_memblock_unref_fixed(u->memchunk.memblock);\n+\n+    return AAUDIO_CALLBACK_RESULT_CONTINUE;\n+}\n+\n+static aaudio_data_callback_result_t data_callback(AAudioStream *stream, void *userdata, void *audioData, int32_t numFrames) {\n+    struct userdata* u = userdata;\n+\n+    pa_assert(u);\n+\n+    return pa_asyncmsgq_send(u->aaudio_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_RENDER, audioData, numFrames, NULL);\n+}\n+\n+static void error_callback(AAudioStream *stream, void *userdata, aaudio_result_t error) {\n+    struct userdata* u = userdata;\n+\n+    pa_assert(u);\n+\n+    while (u->sink->state == PA_SINK_INIT);\n+\n+    if (error != AAUDIO_ERROR_DISCONNECTED)\n+        pa_log_debug(\"AAudio error: %d\", error);\n+\n+    pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE);\n+    pa_sink_suspend(u->sink, false, PA_SUSPEND_UNAVAILABLE);\n+}\n+\n+#define CHK(stmt) { \\\n+    aaudio_result_t res = stmt; \\\n+    if (res != AAUDIO_OK) { \\\n+        fprintf(stderr, \"error %d at %s:%d\\n\", res, __FILE__, __LINE__); \\\n+        goto fail; \\\n+    } \\\n+}\n+\n+static int pa_open_aaudio_stream(struct userdata *u)\n+{\n+    bool want_float;\n+    aaudio_format_t format;\n+    pa_sample_spec *ss = &u->ss;\n+\n+    CHK(AAudio_createStreamBuilder(&u->builder));\n+    AAudioStreamBuilder_setPerformanceMode(u->builder, AAUDIO_PERFORMANCE_MODE_NONE + u->pm);\n+    AAudioStreamBuilder_setDataCallback(u->builder, data_callback, u);\n+    AAudioStreamBuilder_setErrorCallback(u->builder, error_callback, u);\n+\n+    want_float = ss->format > PA_SAMPLE_S16BE;\n+    ss->format = want_float ? PA_SAMPLE_FLOAT32LE : PA_SAMPLE_S16LE;\n+    format = want_float ? AAUDIO_FORMAT_PCM_FLOAT : AAUDIO_FORMAT_PCM_I16;\n+    AAudioStreamBuilder_setFormat(u->builder, format);\n+\n+    if (u->rate)\n+        AAudioStreamBuilder_setSampleRate(u->builder, u->rate);\n+\n+    AAudioStreamBuilder_setChannelCount(u->builder, ss->channels);\n+\n+    CHK(AAudioStreamBuilder_openStream(u->builder, &u->stream));\n+    CHK(AAudioStreamBuilder_delete(u->builder));\n+\n+    ss->rate = AAudioStream_getSampleRate(u->stream);\n+    u->frame_size = pa_frame_size(ss);\n+\n+    return 0;\n+\n+fail:\n+    return -1;\n+}\n+\n+#undef CHK\n+\n+static pa_usec_t get_latency(struct userdata *u) {\n+    if(!u->latency) {\n+        return PA_USEC_PER_SEC * AAudioStream_getBufferSizeInFrames(u->stream) / u->ss.rate / 2;\n+    } else {\n+        return PA_USEC_PER_MSEC * u->latency;\n+    }\n+}\n+\n+static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *memchunk) {\n+    struct userdata* u = PA_SINK(o)->userdata;\n+\n+    pa_assert(u);\n+\n+    switch (code) {\n+        case SINK_MESSAGE_RENDER:\n+            return process_render(u, data, offset);\n+        case SINK_MESSAGE_OPEN_STREAM:\n+            if (pa_open_aaudio_stream(u) < 0) {\n+                pa_log(\"pa_open_aaudio_stream() failed.\");\n+                return -1;\n+            }\n+            code = PA_SINK_MESSAGE_SET_FIXED_LATENCY;\n+            offset = get_latency(u);\n+            break;\n+    }\n+\n+    return pa_sink_process_msg(o, code, data, offset, memchunk);\n+};\n+\n+static int state_func_main(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) {\n+    struct userdata *u = s->userdata;\n+    uint32_t idx;\n+    pa_sink_input *i;\n+    pa_idxset *inputs;\n+\n+    if (s->state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(state)) {\n+        if (pa_asyncmsgq_send(u->aaudio_msgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_OPEN_STREAM, NULL, 0, NULL) < 0)\n+            return -1;\n+\n+        inputs = pa_idxset_copy(s->inputs, NULL);\n+        PA_IDXSET_FOREACH(i, inputs, idx) {\n+            if (i->state == PA_SINK_INPUT_RUNNING) {\n+                pa_sink_input_cork(i, true);\n+            } else {\n+                pa_idxset_remove_by_index(inputs, idx);\n+            }\n+        }\n+\n+        s->alternate_sample_rate = u->ss.rate;\n+        pa_sink_reconfigure(s, &u->ss, false);\n+        s->default_sample_rate = u->ss.rate;\n+\n+        /* Avoid infinite loop triggered if uncork in this case */\n+        if (s->suspend_cause == PA_SUSPEND_IDLE)\n+            pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE);\n+\n+        PA_IDXSET_FOREACH(i, inputs, idx) pa_sink_input_cork(i, false);\n+        pa_idxset_free(inputs, NULL);\n+    }\n+    return 0;\n+}\n+\n+static int state_func_io(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t suspend_cause) {\n+    struct userdata *u = s->userdata;\n+\n+    if (PA_SINK_IS_OPENED(s->thread_info.state) &&\n+        (state == PA_SINK_SUSPENDED || state == PA_SINK_UNLINKED)) {\n+        if (!u->no_close)\n+            AAudioStream_close(u->stream);\n+        else\n+            AAudioStream_requestStop(u->stream);\n+    } else if (s->thread_info.state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(state)) {\n+        if (AAudioStream_requestStart(u->stream) < 0)\n+            pa_log(\"AAudioStream_requestStart() failed.\");\n+    } else if (s->thread_info.state == PA_SINK_INIT && PA_SINK_IS_LINKED(state)) {\n+        if (PA_SINK_IS_OPENED(state)) {\n+            if (AAudioStream_requestStart(u->stream) < 0)\n+                pa_log(\"AAudioStream_requestStart() failed.\");\n+        } else {\n+            if (!u->no_close)\n+                AAudioStream_close(u->stream);\n+        }\n+    }\n+    return 0;\n+}\n+\n+static void reconfigure_func(pa_sink *s, pa_sample_spec *ss, bool passthrough) {\n+    s->sample_spec.rate = ss->rate;\n+}\n+\n+static void thread_func(void *userdata) {\n+    struct userdata *u = userdata;\n+\n+    pa_assert(u);\n+\n+    pa_log_debug(\"Thread starting up\");\n+    pa_thread_mq_install(&u->thread_mq);\n+\n+    for (;;) {\n+        int ret;\n+\n+        if (PA_UNLIKELY(u->sink->thread_info.rewind_requested))\n+          pa_sink_process_rewind(u->sink, 0);\n+\n+        if ((ret = pa_rtpoll_run(u->rtpoll)) < 0)\n+            goto fail;\n+\n+        if (ret == 0)\n+            goto finish;\n+    }\n+\n+fail:\n+    /* If this was no regular exit from the loop we have to continue\n+     * processing messages until we received PA_MESSAGE_SHUTDOWN */\n+    pa_asyncmsgq_post(u->thread_mq.outq, PA_MSGOBJECT(u->core), PA_CORE_MESSAGE_UNLOAD_MODULE, u->module, 0, NULL, NULL);\n+    pa_asyncmsgq_wait_for(u->thread_mq.inq, PA_MESSAGE_SHUTDOWN);\n+\n+finish:\n+    pa_log_debug(\"Thread shutting down\");\n+}\n+\n+int pa__init(pa_module*m) {\n+    struct userdata *u = NULL;\n+    pa_channel_map map;\n+    pa_modargs *ma = NULL;\n+    pa_sink_new_data data;\n+\n+    pa_assert(m);\n+\n+    m->userdata = u = pa_xnew0(struct userdata, 1);\n+\n+    u->core = m->core;\n+    u->module = m;\n+    u->rtpoll = pa_rtpoll_new();\n+\n+    if (pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll) < 0) {\n+        pa_log(\"pa_thread_mq_init() failed.\");\n+        goto fail;\n+    }\n+\n+    /* The queue linking the AudioTrack thread and our RT thread */\n+    u->aaudio_msgq = pa_asyncmsgq_new(0);\n+    if (!u->aaudio_msgq) {\n+        pa_log(\"pa_asyncmsgq_new() failed.\");\n+        goto fail;\n+    }\n+\n+    /* The msgq from the AudioTrack RT thread should have an even higher\n+     * priority than the normal message queues, to match the guarantee\n+     * all other drivers make: supplying the audio device with data is\n+     * the top priority -- and as long as that is possible we don't do\n+     * anything else */\n+    u->rtpoll_item = pa_rtpoll_item_new_asyncmsgq_read(u->rtpoll, PA_RTPOLL_EARLY-1, u->aaudio_msgq);\n+\n+    if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {\n+        pa_log(\"Failed to parse module arguments.\");\n+        goto fail;\n+    }\n+\n+    u->ss = m->core->default_sample_spec;\n+    map = m->core->default_channel_map;\n+    pa_modargs_get_sample_rate(ma, &u->rate);\n+\n+    pa_modargs_get_value_u32(ma, \"latency\", &u->latency);\n+\n+    u->pm = AAUDIO_PERFORMANCE_MODE_LOW_LATENCY - AAUDIO_PERFORMANCE_MODE_NONE;\n+    pa_modargs_get_value_u32(ma, \"pm\", &u->pm);\n+\n+    pa_modargs_get_value_boolean(ma, \"no_close_hack\", &u->no_close);\n+\n+    if (pa_open_aaudio_stream(u) < 0)\n+        goto fail;\n+\n+    pa_sink_new_data_init(&data);\n+    data.driver = __FILE__;\n+    data.module = m;\n+    pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, \"sink_name\", DEFAULT_SINK_NAME));\n+    pa_sink_new_data_set_sample_spec(&data, &u->ss);\n+    pa_sink_new_data_set_alternate_sample_rate(&data, u->ss.rate);\n+    pa_sink_new_data_set_channel_map(&data, &map);\n+    pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, _(\"AAudio Output\"));\n+    pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, \"abstract\");\n+\n+    if (pa_modargs_get_proplist(ma, \"sink_properties\", data.proplist, PA_UPDATE_REPLACE) < 0) {\n+        pa_log(\"Invalid properties\");\n+        pa_sink_new_data_done(&data);\n+        goto fail;\n+    }\n+\n+    u->sink = pa_sink_new(m->core, &data, 0);\n+    pa_sink_new_data_done(&data);\n+\n+    if (!u->sink) {\n+        pa_log(\"Failed to create sink object.\");\n+        goto fail;\n+    }\n+\n+    u->sink->parent.process_msg = sink_process_msg;\n+    u->sink->set_state_in_main_thread = state_func_main;\n+    u->sink->set_state_in_io_thread = state_func_io;\n+    u->sink->reconfigure = reconfigure_func;\n+    u->sink->userdata = u;\n+\n+    pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);\n+    pa_sink_set_rtpoll(u->sink, u->rtpoll);\n+    pa_sink_set_fixed_latency(u->sink, get_latency(u));\n+\n+    if (!(u->thread = pa_thread_new(\"aaudio-sink\", thread_func, u))) {\n+        pa_log(\"Failed to create thread.\");\n+        goto fail;\n+    }\n+\n+    pa_sink_put(u->sink);\n+\n+    pa_modargs_free(ma);\n+\n+    return 0;\n+\n+fail:\n+    if (ma)\n+        pa_modargs_free(ma);\n+\n+    pa__done(m);\n+\n+    return -1;\n+}\n+\n+int pa__get_n_used(pa_module *m) {\n+    struct userdata *u;\n+\n+    pa_assert(m);\n+    pa_assert_se(u = m->userdata);\n+\n+    return pa_sink_linked_by(u->sink);\n+}\n+\n+void pa__done(pa_module*m) {\n+    struct userdata *u;\n+\n+    pa_assert(m);\n+\n+    if (!(u = m->userdata))\n+        return;\n+\n+    if (u->sink)\n+        pa_sink_unlink(u->sink);\n+\n+    if (u->thread) {\n+        pa_asyncmsgq_send(u->thread_mq.inq, NULL, PA_MESSAGE_SHUTDOWN, NULL, 0, NULL);\n+        pa_thread_free(u->thread);\n+    }\n+\n+    pa_thread_mq_done(&u->thread_mq);\n+\n+    if (u->sink)\n+        pa_sink_unref(u->sink);\n+\n+    if (u->rtpoll_item)\n+        pa_rtpoll_item_free(u->rtpoll_item);\n+\n+    if (u->aaudio_msgq)\n+        pa_asyncmsgq_unref(u->aaudio_msgq);\n+\n+    if (u->rtpoll)\n+        pa_rtpoll_free(u->rtpoll);\n+\n+    pa_xfree(u);\n+}\ndiff -uNr pulseaudio/src/modules/meson.build pulseaudio-aaudio/src/modules/meson.build\n--- pulseaudio/src/modules/meson.build\t2025-02-15 15:37:24.545656377 -0300\n+++ pulseaudio-aaudio/src/modules/meson.build\t2025-02-15 15:37:44.518542565 -0300\n@@ -60,6 +60,7 @@\n   [ 'module-volume-restore', 'module-volume-restore.c' ],\n   [ 'module-sles-sink', 'sles/module-sles-sink.c', [], [], [sles_dep] ],\n   [ 'module-sles-source', 'sles/module-sles-source.c', [], [], [sles_dep] ],\n+  [ 'module-aaudio-sink', 'aaudio/module-aaudio-sink.c', [], [], [aaudio_dep] ],\n ]\n \n if host_machine.system() == 'windows'\n"
  },
  {
    "path": "packages/pulseaudio/build.sh",
    "content": "PKG_VER=v17.0\nSRC_URL=https://github.com/pulseaudio/pulseaudio/archive/refs/tags/$PKG_VER.tar.gz\nMESON_ARGS=\"-Dalsa=disabled -Dx11=disabled -Dgtk=disabled -Dopenssl=disabled -Dgsettings=disabled -Ddoxygen=false -Ddatabase=simple -Dsystemd=disabled -Dudev=disabled -Dgstreamer=disabled -Dglib=disabled -Dman=false -Dbashcompletiondir=false -Dzshcompletiondir=false -Dtests=false\"\nCFLAGS=\"-I$PREFIX/include\"\nCPPFLAGS=\"-I$PREFIX/include\"\nLDFLAGS=\"-L$PREFIX/lib -Wl,--undefined-version\"\nDEPENDENCIES=\"libtool libsndfile\"\n"
  },
  {
    "path": "packages/pulseaudio/post-install.sh",
    "content": "cd $DESTDIR/$PREFIX/lib\nfor lib in pulseaudio/{,modules/}lib*.so*; do\n\tln -v -s -f \"$lib\" \"$(basename \"$lib\")\"\ndone\n"
  },
  {
    "path": "packages/wine/build.sh",
    "content": "PKG_VER=\"10.10-esync-xinput-dinput\"\nPKG_CATEGORY=\"Wine\"\nPKG_PRETTY_NAME=\"Wine ($PKG_VER)\"\nPKG_DOWNLOADABLE=1\n\nBLACKLIST_ARCH=aarch64\n\nGIT_URL=https://github.com/KreitinnSoftware/wine\nGIT_COMMIT=ad2c2468a2cf3c39d8487bb3c08b3c4fb479d350\nHOST_BUILD_CONFIGURE_ARGS=\"--enable-win64 --without-x\"\nHOST_BUILD_FOLDER=\"$INIT_DIR/workdir/$package/wine-tools\"\nHOST_BUILD_MAKE=\"make -j $(nproc) __tooldeps__ nls/all\"\nOVERRIDE_PREFIX=\"$(realpath $PREFIX/../wine)\"\nCONFIGURE_ARGS=\"--enable-archs=i386,x86_64 \\\n\t\t\t\t--host=$TOOLCHAIN_TRIPLE \\\n\t\t\t\t--with-wine-tools=$INIT_DIR/workdir/$package/wine-tools \\\n\t\t\t\t--prefix=$OVERRIDE_PREFIX \\\n\t\t\t\t--without-oss \\\n\t\t\t\t--disable-winemenubuilder \\\n\t\t\t\t--disable-win16 \\\n\t\t\t\t--disable-tests \\\n\t\t\t\t--with-x \\\n\t\t\t\t--x-libraries=$PREFIX/lib \\\n\t\t\t\t--x-includes=$PREFIX/include \\\n\t\t\t\t--with-pulse \\\n\t\t\t\t--with-gstreamer \\\n\t\t\t\t--with-opengl \\\n\t\t\t\t--with-gnutls \\\n\t\t\t\t--with-mingw=gcc \\\n\t\t\t\t--with-xinput \\\n\t\t\t\t--with-xinput2 \\\n\t\t\t\t--enable-nls \\\n\t\t\t\t--without-xshm \\\n\t\t\t\t--without-xxf86vm \\\n\t\t\t\t--without-osmesa \\\n\t\t\t\t--without-usb \\\n\t\t\t\t--without-sdl \\\n\t\t\t\t--without-cups \\\n\t\t\t\t--without-netapi \\\n\t\t\t\t--without-pcap \\\n\t\t\t\t--without-gphoto \\\n\t\t\t\t--without-v4l2 \\\n\t\t\t\t--without-pcsclite \\\n\t\t\t\t--without-wayland \\\n\t\t\t\t--without-opencl \\\n\t\t\t\t--without-dbus \\\n\t\t\t\t--without-sane \\\n\t\t\t\t--without-udev \\\n\t\t\t\t--without-capi\"\n\nDEPENDENCIES=\"libX11 libXext libXcomposite libXrender libXcursor libXrandr libXxf86vm libXinerama libXfixes libXi Vulkan-Headers Vulkan-Loader libglvnd pulseaudio freetype libgnutls gstreamer gst-plugins-base gst-plugins-ugly gst-plugins-good gst-plugins-bad\"\n"
  },
  {
    "path": "packages/wine/post-install.sh",
    "content": "# Get Wine Gecko and Mono Versions\nMONO_VERSION=$(grep -R \"#define MONO_VERSION\" \"../dlls/appwiz.cpl/addons.c\" | cut -d \" \" -f 3)\nMONO_VERSION=${MONO_VERSION:1:-1}\n\nGECKO_VERSION=$(grep -R \"#define GECKO_VERSION\" \"../dlls/appwiz.cpl/addons.c\" | cut -d \" \" -f 3)\nGECKO_VERSION=${GECKO_VERSION:1:-1}\n\n# Download Wine Gecko and Mono and Package Together with Wine\ncurl -LO# \"https://dl.winehq.org/wine/wine-mono/$MONO_VERSION/wine-mono-$MONO_VERSION-x86.tar.xz\"\ncurl -LO# \"https://dl.winehq.org/wine/wine-gecko/$GECKO_VERSION/wine-gecko-$GECKO_VERSION-x86_64.tar.xz\"\ncurl -LO# \"https://dl.winehq.org/wine/wine-gecko/$GECKO_VERSION/wine-gecko-$GECKO_VERSION-x86.tar.xz\"\n\nmkdir -p ../destdir-pkg/$PREFIX\nmkdir -p ../destdir-pkg/$PREFIX/../wine/share/{mono,gecko}\n\ntar -xf \"wine-mono-$MONO_VERSION-x86.tar.xz\" -C ../destdir-pkg/$PREFIX/../wine/share/wine/mono\ntar -xf \"wine-gecko-$GECKO_VERSION-x86.tar.xz\" -C ../destdir-pkg/$PREFIX/../wine/share/wine/gecko\ntar -xf \"wine-gecko-$GECKO_VERSION-x86_64.tar.xz\" -C ../destdir-pkg/$PREFIX/../wine/share/wine/gecko\n\nrm -rf ../destdir-pkg/$PREFIX\n\nrm -f \"wine-mono-$MONO_VERSION-x86.tar.xz\" \"wine-gecko-$GECKO_VERSION-x86.tar.xz\" \"wine-gecko-$GECKO_VERSION-x86_64.tar.xz\"\n"
  },
  {
    "path": "packages/xcb-proto/build.sh",
    "content": "PKG_VER=1.17.0\nSRC_URL=https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\" \"\n"
  },
  {
    "path": "packages/xkbcommon/build.sh",
    "content": "PKG_VER=1.10.0\nSRC_URL=https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-$PKG_VER.tar.gz\nMESON_ARGS=\"-Denable-tools=false -Denable-wayland=false -Denable-bash-completion=false\"\nDEPENDENCIES=\"xorgproto xkeyboard-config libxml2 libxcb\"\n"
  },
  {
    "path": "packages/xkeyboard-config/build.sh",
    "content": "PKG_VER=2.41\nSRC_URL=https://xorg.freedesktop.org/archive/individual/data/xkeyboard-config/xkeyboard-config-$PKG_VER.tar.xz\nMESON_ARGS=\"-Dxkb-base=$PREFIX/share/X11/xkb -Dcompat-rules=true -Dxorg-rules-symlinks=false\"\n"
  },
  {
    "path": "packages/xorg-utils-macros/build.sh",
    "content": "PKG_VER=1.20.1\nSRC_URL=https://xorg.freedesktop.org/releases/individual/util/util-macros-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\" \"\n"
  },
  {
    "path": "packages/xorgproto/build.sh",
    "content": "PKG_VER=2024.1\nSRC_URL=https://xorg.freedesktop.org/archive/individual/proto/xorgproto-2024.1.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\nDEPENDENCIES=\"xorg-utils-macros\"\n"
  },
  {
    "path": "packages/xorgproto/include-x11-Xos_r.h.patch",
    "content": "diff -uNr xorgproto-2019.1/include/X11/Xos_r.h xorgproto-2019.1.mod/include/X11/Xos_r.h\n--- xorgproto-2019.1/include/X11/Xos_r.h\t2019-06-20 06:13:03.000000000 +0300\n+++ xorgproto-2019.1.mod/include/X11/Xos_r.h\t2019-06-29 23:32:10.617173769 +0300\n@@ -248,7 +248,7 @@\n  */\n \n #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \\\n-    defined(__APPLE__) || defined(__DragonFly__)\n+    defined(__APPLE__) || defined(__DragonFly__) || defined(__ANDROID__)\n static __inline__ void _Xpw_copyPasswd(_Xgetpwparams p)\n {\n    memcpy(&(p).pws, (p).pwp, sizeof(struct passwd));\n@@ -261,11 +261,7 @@\n    (p).len = strlen((p).pwp->pw_passwd);\n    strcpy((p).pws.pw_passwd,(p).pwp->pw_passwd);\n \n-   (p).pws.pw_class = (p).pws.pw_passwd + (p).len + 1;\n-   (p).len = strlen((p).pwp->pw_class);\n-   strcpy((p).pws.pw_class, (p).pwp->pw_class);\n-\n-   (p).pws.pw_gecos = (p).pws.pw_class + (p).len + 1;\n+   (p).pws.pw_gecos = (p).pws.pw_passwd + (p).len + 1;\n    (p).len = strlen((p).pwp->pw_gecos);\n    strcpy((p).pws.pw_gecos, (p).pwp->pw_gecos);\n \n"
  },
  {
    "path": "packages/xtrans/build.sh",
    "content": "PKG_VER=1.5.0\nSRC_URL=https://xorg.freedesktop.org/releases/individual/lib/xtrans-$PKG_VER.tar.xz\nCONFIGURE_ARGS=\"--host=$TOOLCHAIN_TRIPLE host_alias=$TOOLCHAIN_TRIPLE\"\n"
  },
  {
    "path": "packages/xtrans/xtrans-1.3.5_Xtransutil.c.patch",
    "content": "diff -uNr xtrans-1.3.5/Xtransutil.c xtrans-1.3.5.mod/Xtransutil.c\n--- xtrans-1.3.5/Xtransutil.c\t2014-09-12 21:32:47.000000000 +0300\n+++ xtrans-1.3.5.mod/Xtransutil.c\t2018-06-15 19:15:52.525720899 +0300\n@@ -478,27 +478,6 @@\n \t}\n \t/* Dir doesn't exist. Try to create it */\n \n-#if !defined(WIN32) && !defined(__CYGWIN__)\n-\t/*\n-\t * 'sticky' bit requested: assume application makes\n-\t * certain security implications. If effective user ID\n-\t * is != 0: fail as we may not be able to meet them.\n-\t */\n-\tif (geteuid() != 0) {\n-\t    if (mode & 01000) {\n-\t\tprmsg(1, \"mkdir: ERROR: euid != 0,\"\n-\t\t      \"directory %s will not be created.\\n\",\n-\t\t      path);\n-#ifdef FAIL_HARD\n-\t\treturn -1;\n-#endif\n-\t    } else {\n-\t\tprmsg(1, \"mkdir: Cannot create %s with root ownership\\n\",\n-\t\t      path);\n-\t    }\n-\t}\n-#endif\n-\n #ifndef WIN32\n \tif (mkdir(path, mode) == 0) {\n \t    if (chmod(path, mode)) {\n@@ -521,14 +500,9 @@\n \n     } else {\n \tif (S_ISDIR(buf.st_mode)) {\n-\t    int updateOwner = 0;\n \t    int updateMode = 0;\n-\t    int updatedOwner = 0;\n \t    int updatedMode = 0;\n \t    int status = 0;\n-\t    /* Check if the directory's ownership is OK. */\n-\t    if (buf.st_uid != 0)\n-\t\tupdateOwner = 1;\n \n \t    /*\n \t     * Check if the directory's mode is OK.  An exact match isn't\n@@ -566,7 +540,7 @@\n \t     * directory's owner and mode.  Otherwise it isn't safe to attempt\n \t     * to do this.\n \t     */\n-\t    if (updateMode || updateOwner) {\n+\t    if (updateMode) {\n \t\tint fd = -1;\n \t\tstruct stat fbuf;\n \t\tif ((fd = open(path, O_RDONLY)) != -1) {\n@@ -588,8 +562,6 @@\n \t\t\tclose(fd);\n \t\t\treturn -1;\n \t\t    }\n-\t\t    if (updateOwner && fchown(fd, 0, 0) == 0)\n-\t\t\tupdatedOwner = 1;\n \t\t    if (updateMode && fchmod(fd, mode) == 0)\n \t\t\tupdatedMode = 1;\n \t\t    close(fd);\n@@ -597,20 +569,6 @@\n \t    }\n #endif\n \n-\t    if (updateOwner && !updatedOwner) {\n-#ifdef FAIL_HARD\n-\t\tif (status & FAIL_IF_NOT_ROOT) {\n-\t\t    prmsg(1, \"mkdir: ERROR: Owner of %s must be set to root\\n\",\n-\t\t\t  path);\n-\t\t    return -1;\n-\t\t}\n-#endif\n-#if !defined(__APPLE_CC__) && !defined(__CYGWIN__)\n-\t\tprmsg(1, \"mkdir: Owner of %s should be set to root\\n\",\n-\t\t      path);\n-#endif\n-\t    }\n-\n \t    if (updateMode && !updatedMode) {\n #ifdef FAIL_HARD\n \t\tif (status & FAIL_IF_NOMODE) {\n"
  },
  {
    "path": "packages/xtrans/xtrans-1.4.0_Xtranslcl.c.patch",
    "content": "--- a/Xtranslcl.c\n+++ b/Xtranslcl.c\n@@ -213,23 +213,23 @@\n #ifndef X11_t\n #define X_STREAMS_DIR\t\"/dev/X\"\n #else\n-#define X_STREAMS_DIR\t\"/tmp/.X11-pipe\"\n+#define X_STREAMS_DIR\t\"/data/data/com.micewine.emu/files/usr/tmp/.X11-pipe\"\n #endif\n \n #define DEV_PTMX\t\"/dev/ptmx\"\n \n #if defined(X11_t)\n \n-#define NAMEDNODENAME \"/tmp/.X11-pipe/X\"\n+#define NAMEDNODENAME \"/data/data/com.micewine.emu/files/usr/tmp/.X11-pipe/X\"\n #endif\n #if defined(XIM_t)\n-#define NAMEDNODENAME \"/tmp/.XIM-pipe/XIM\"\n+#define NAMEDNODENAME \"/data/data/com.micewine.emu/files/usr/tmp/.XIM-pipe/XIM\"\n #endif\n #if defined(FS_t) || defined (FONT_t)\n-#define NAMEDNODENAME\t\"/tmp/.font-pipe/fs\"\n+#define NAMEDNODENAME\t\"/data/data/com.micewine.emu/files/usr/tmp/.font-pipe/fs\"\n #endif\n #if defined(ICE_t)\n-#define NAMEDNODENAME\t\"/tmp/.ICE-pipe/\"\n+#define NAMEDNODENAME\t\"/data/data/com.micewine.emu/files/usr/tmp/.ICE-pipe/\"\n #endif\n \n \n"
  },
  {
    "path": "packages/xtrans/xtrans-1.4.0_Xtranssock.c.patch",
    "content": "diff -uNr xtrans-1.4.0/Xtranssock.c xtrans-1.4.0.mod/Xtranssock.c\n--- xtrans-1.4.0/Xtranssock.c\t2019-03-16 23:30:31.000000000 +0200\n+++ xtrans-1.4.0.mod/Xtranssock.c\t2019-05-19 00:52:00.404623112 +0300\n@@ -200,20 +200,20 @@\n \n \n #if defined(X11_t)\n-#define UNIX_PATH \"/tmp/.X11-unix/X\"\n-#define UNIX_DIR \"/tmp/.X11-unix\"\n+#define UNIX_PATH \"/data/data/com.micewine.emu/files/usr/tmp/.X11-unix/X\"\n+#define UNIX_DIR \"/data/data/com.micewine.emu/files/usr/tmp/.X11-unix\"\n #endif /* X11_t */\n #if defined(XIM_t)\n-#define UNIX_PATH \"/tmp/.XIM-unix/XIM\"\n-#define UNIX_DIR \"/tmp/.XIM-unix\"\n+#define UNIX_PATH \"/data/data/com.micewine.emu/files/usr/tmp/.XIM-unix/XIM\"\n+#define UNIX_DIR \"/data/data/com.micewine.emu/files/usr/tmp/.XIM-unix\"\n #endif /* XIM_t */\n #if defined(FS_t) || defined(FONT_t)\n-#define UNIX_PATH \"/tmp/.font-unix/fs\"\n-#define UNIX_DIR \"/tmp/.font-unix\"\n+#define UNIX_PATH \"/data/data/com.micewine.emu/files/usr/tmp/.font-unix/fs\"\n+#define UNIX_DIR \"/data/data/com.micewine.emu/files/usr/tmp/.font-unix\"\n #endif /* FS_t || FONT_t */\n #if defined(ICE_t)\n-#define UNIX_PATH \"/tmp/.ICE-unix/\"\n-#define UNIX_DIR \"/tmp/.ICE-unix\"\n+#define UNIX_PATH \"/data/data/com.micewine.emu/files/usr/tmp/.ICE-unix/\"\n+#define UNIX_DIR \"/data/data/com.micewine.emu/files/usr/tmp/.ICE-unix\"\n #endif /* ICE_t */\n \n \n"
  },
  {
    "path": "packages/zlib/build.sh",
    "content": "PKG_VER=1.3.1\nSRC_URL=https://github.com/madler/zlib/releases/download/v$PKG_VER/zlib-$PKG_VER.tar.xz\nCFLAGS=\"-fPIC\"\nCMAKE_ARGS=\" \"\n"
  },
  {
    "path": "packages/zlib/force-shared-library.patch",
    "content": "--- zlib-1.3.1/configure\t2024-01-20 23:29:31.000000000 -0300\n+++ zlib-1.3.1.mod/configure\t2024-03-02 16:05:29.852262000 -0300\n@@ -439,20 +439,7 @@\n extern int getchar();\n int hello() {return getchar();}\n EOF\n-if test $shared -eq 1; then\n-  echo Checking for shared library support... | tee -a configure.log\n-  # we must test in two steps (cc then ld), required at least on SunOS 4.x\n-  if try $CC -c $SFLAGS $test.c &&\n-     try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then\n-    echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log\n-  elif test -z \"$old_cc\" -a -z \"$old_cflags\"; then\n-    echo No shared library support. | tee -a configure.log\n-    shared=0;\n-  else\n-    echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log\n-    shared=0;\n-  fi\n-fi\n+\n if test $shared -eq 0; then\n   LDSHARED=\"$CC\"\n   ALL=\"static\"\n"
  },
  {
    "path": "packages/zstd/build.sh",
    "content": "PKG_VER=1.5.6\nSRC_URL=https://github.com/facebook/zstd/archive/v$PKG_VER.tar.gz\nMESON_ARGS=\"-Ddefault_library=both -Dbin_programs=true -Dbin_tests=false -Dbin_contrib=true -Dzlib=enabled -Dlzma=disabled -Dlz4=disabled\"\nDEPENDENCIES=\"zlib\"\n"
  },
  {
    "path": "tools/create-rat-pkg.sh",
    "content": "#!/bin/bash\nshowHelp()\n{\n\techo \"Usage: $0 [package name] [package pretty name] [vulkan driver lib name] [architecture] [version] [category] [destdir-pkg] [output folder]\"\n\techo \"\"\n}\n\nsymlinkToSh() {\n  for folder in $(find $1 -type d); do\n    if [ -d \"$folder\" ]; then\n      cd \"$folder\"\n\n      for file in $(find $PWD -type l); do\n        target=$(readlink $file)\n\n        if [ \"$target\" != \"nul\" ]; then\n          rm \"$file\"\n\n          target=$(echo $target | sed \"s@$WORKDIR@$APP_ROOT_DIR@g\")\n          file=$(echo $file | sed \"s@$WORKDIR@$APP_ROOT_DIR@g\")\n\n          echo \"ln -sf $target $file\" >> $WORKDIR/makeSymlinks.sh\n        fi\n      done\n\n      cd $OLDPWD\n    fi\n  done\n}\n\nif [ $# -lt 8 ]; then\n\tshowHelp\n\texit 0\nfi\n\nexport INIT_DIR=$PWD\nexport APP_ROOT_DIR=/data/data/com.micewine.emu/\n\nexport PACKAGE_NAME=$1\nexport PACKAGE_PRETTY_NAME=$2\nexport PACKAGE_VK_DRIVER_LIB=$3\nexport PACKAGE_ARCHITECTURE=$4\nexport PACKAGE_VERSION=$5\nexport PACKAGE_CATEGORY=$6\nexport DESTDIR_PKG=$7\nexport OUTDIR=$8\n\nif [ \"$9\" != \"0\" ]; then\n  echo \"\"\n  echo \"Creating Package '$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_ARCHITECTURE.rat'...\"\nfi\n\nexport WORKDIR=\"$DESTDIR_PKG\"\n\nif [ -d \"$DESTDIR_PKG/data/\" ]; then\n\tWORKDIR=\"$DESTDIR_PKG/data/data/com.micewine.emu/\"\nfi\n\ncd $WORKDIR\n\necho \"name=$PACKAGE_PRETTY_NAME\" > pkg-header\necho \"category=$PACKAGE_CATEGORY\" >> pkg-header\necho \"version=$PACKAGE_VERSION\" >> pkg-header\necho \"architecture=$PACKAGE_ARCHITECTURE\" >> pkg-header\necho \"vkDriverLib=$PACKAGE_VK_DRIVER_LIB\" >> pkg-header\n\nsymlinkToSh \"files/\"\n\ntar -cJf \"$OUTDIR/$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_ARCHITECTURE.rat\" pkg-header $(ls | grep -v pkg-header)\n"
  },
  {
    "path": "tools/download-external-dependencies.sh",
    "content": "customDxvkDownload() {\n\tif [ -e \"DXVK/$1\" ]; then\n\t\techo \"$1 already downloaded.\"\n\telse\n\t\techo \"Downloading $1...\"\n\n\t\tcd \"DXVK\"\n\n\t\tcurl -# -L -O \"$2\"\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"Error on Downloading $1.\"\n\t\telse\n\t\t\tmkdir -p \"$1\"\n\n\t\t\ttar -xf \"$(basename $2)\"\n\n\t\t\tmv \"dxvk\"*\"/x32\" \"dxvk\"*\"/x64\" \"$1\"\n\n\t\t\trm -rf \"dxvk\"*\n\t\tfi\n\n\t\tcd \"$OLDPWD\"\n\tfi\n}\n\ndxvkDownload() {\n\tif [ -e \"DXVK/DXVK-$1\" ]; then\n\t\techo \"DXVK-$1 already downloaded.\"\n\telse\n\t\techo \"Downloading DXVK-$1...\"\n\n\t\tcd \"DXVK\"\n\n\t\tcurl -# -L -O \"https://github.com/doitsujin/dxvk/releases/download/v$1/dxvk-$1.tar.gz\"\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"Error on Downloading DXVK-$1.\"\n\t\telse\n\t\t\tmkdir -p \"DXVK-$1\"\n\n\t\t\ttar -xf \"dxvk-$1.tar.gz\"\n\n\t\t\tmv \"dxvk\"*\"/x32\" \"dxvk\"*\"/x64\" \"DXVK-$1\"\n\n\t\t\trm -rf \"dxvk\"*\n\t\tfi\n\n\t\tcd \"$OLDPWD\"\n\tfi\n}\n\ndxvkAsyncDownload() {\n\tif [ -e \"DXVK/DXVK-$1-async\" ]; then\n\t\techo \"DXVK-$1-async already downloaded.\"\n\telse\n\t\techo \"Downloading DXVK-$1-async...\"\n\n\t\tcd \"DXVK\"\n\n\t\tcurl -# -L -O \"https://github.com/Sporif/dxvk-async/releases/download/$1/dxvk-async-$1.tar.gz\"\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"Error on Downloading DXVK-$1-async.\"\n\t\telse\n\t\t\tmkdir -p \"DXVK-$1-async\"\n\n\t\t\ttar -xf \"dxvk-async-$1.tar.gz\"\n\n\t\t\tmv \"dxvk\"*\"/x32\" \"dxvk\"*\"/x64\" \"DXVK-$1-async\"\n\n\t\t\trm -rf \"dxvk\"*\n\t\tfi\n\n\t\tcd \"$OLDPWD\"\n\tfi\n}\n\ndxvkGplAsyncDownload() {\n\tif [ -e \"DXVK/DXVK-$1-gplasync\" ]; then\n\t\techo \"DXVK-$1-gplasync already downloaded.\"\n\telse\n\t\techo \"Downloading DXVK-$1-gplasync...\"\n\n\t\tcd \"DXVK\"\n\n\t\tcurl -# -L -O \"https://github.com/KreitinnSoftware/dxvk-gplasync/raw/refs/heads/main/dxvk-gplasync-v$1.tar.gz\"\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"Error on Downloading DXVK-$1-gplasync.\"\n\t\telse\n\t\t\tmkdir -p \"DXVK-$1-gplasync\"\n\n\t\t\ttar -xf \"dxvk-gplasync-v$1.tar.gz\"\n\n\t\t\tmv \"dxvk\"*\"/x32\" \"dxvk\"*\"/x64\" \"DXVK-$1-gplasync\"\n\n\t\t\trm -rf \"dxvk\"*\n\t\tfi\n\n\t\tcd \"$OLDPWD\"\n\tfi\n}\n\nwined3dDownload() {\n\tif [ -e \"WineD3D/WineD3D-($1)\" ]; then\n\t\techo \"WineD3D-$1 already downloaded.\"\n\telse\n\t\techo \"Downloading WineD3D-$1...\"\n\n\t\tcd \"WineD3D\"\n\n\t\tcurl -# -L -O \"https://downloads.fdossena.com/Projects/WineD3D/Builds/WineD3DForWindows_$1.zip\"\n\t\tcurl -# -L -O \"https://downloads.fdossena.com/Projects/WineD3D/Builds/WineD3DForWindows_$1-x86_64.zip\"\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"Error on Downloading WineD3D-($1).\"\n\t\telse\n\t\t\tmkdir -p \"WineD3D-($1)/x64\"\n\t\t\tmkdir -p \"WineD3D-($1)/x32\"\n\n\t\t\t7z x \"WineD3D*$1-x86_64.zip\" -o\"wined3d-x64\" -aoa &> /dev/zero\n\t\t\t7z x \"WineD3D*$1.zip\" -o\"wined3d-x32\" -aoa &> /dev/zero\n\n\t\t\tfor i in $(find \"wined3d-x64\" -name \"*.dll\"); do\n\t\t\t\tcp -f \"$i\" \"WineD3D-($1)/x64\"\n\t\t\tdone\n\n\t\t\tfor i in $(find \"wined3d-x32\" -name \"*.dll\"); do\n\t\t\t\tcp -f \"$i\" \"WineD3D-($1)/x32\"\n\t\t\tdone\n\n\t\t\trm -rf \"wined3d\"* *\".zip\"\n\t\tfi\n\n\t\tcd \"$OLDPWD\"\n\tfi\n}\n\nvkd3dDownload() {\n\tif [ -e \"VKD3D/VKD3D-$1\" ]; then\n\t\techo \"VKD3D-$1 already downloaded.\"\n\telse\n\t\tcd \"VKD3D\"\n\n\t\techo \"Downloading VKD3D-$1...\"\n\n\t\tcurl -# -L -O \"https://github.com/HansKristian-Work/vkd3d-proton/releases/download/v$1/vkd3d-proton-$1.tar.zst\"\n\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"Error on Downloading VKD3D-$1.\"\n\t\telse\n\t\t\tmkdir -p \"VKD3D-$1\"\n\n\t\t\ttar -xf \"vkd3d-proton-$1.tar.zst\"\n\n\t\t\tmv \"vkd3d\"*\"/x64\" \"VKD3D-$1/\"\n\t\t\tmv \"vkd3d\"*\"/x86\" \"VKD3D-$1/x32\"\n\n\t\t\trm -rf \"vkd3d\"*\n\t\tfi\n\n\t\tcd \"$OLDPWD\"\n\tfi\n}\n\nexport INIT_DIR=\"$PWD\"\nexport WORKDIR=\"$PWD/wine-utils/files\"\n\nmkdir -p \"$WORKDIR\"\n\ncd \"$WORKDIR\"\n\nmkdir -p \"home\" \"wine-utils\"\n\ncd \"wine-utils\"\n\nmkdir -p \"DXVK\" \"WineD3D\" \"VKD3D\"\n\nexport DXVK_GPLASYNC_LIST=\"\"\nexport DXVK_ASYNC_LIST=\"\"\nexport DXVK_LIST=\"\"\nexport WINED3D_LIST=\"\"\nexport VKD3D_LIST=\"\"\n\ncase \"$1\" in \"--optional\")\n\tDXVK_GPLASYNC_LIST=\"2.4-1 2.3.1-1 2.3-1 2.2-4 2.1-4\"\n\tDXVK_ASYNC_LIST=\"2.0 1.10.3 1.10.2 1.10.1 1.10 1.9.4 1.9.3 1.9.2 1.9.1 1.9\"\n\tDXVK_LIST=\"2.5.3 2.5.2 2.5.1 2.5 2.4.1 2.4 2.3.1 2.3 2.2 2.1 2.0 1.10.3 1.10.2 1.10.1 1.10 1.9.4 1.9.3 1.9.2 1.9.1 1.9 1.7.2 1.7.1 1.7 1.7.3\"\n\tWINED3D_LIST=\"10.0 10.0-rc3 9.20 9.16 9.3 9.1 9.0 8.15 7.11 3.17\"\n\tVKD3D_LIST=\"2.14.1 2.14 2.13 2.12 2.11.1 2.11 2.10 2.9 2.8\"\n\t;;\n\t*)\n\tDXVK_GPLASYNC_LIST=\"2.4-1\"\n\tDXVK_ASYNC_LIST=\"1.10.3\"\n\tDXVK_LIST=\"2.4.1 1.10.3\"\n\tWINED3D_LIST=\"3.17 10.0\"\n\tVKD3D_LIST=\"2.8\"\nesac\n\n\nfor i in $DXVK_GPLASYNC_LIST; do\n\tdxvkGplAsyncDownload \"$i\"\ndone\n\nfor i in $DXVK_ASYNC_LIST; do\n\tdxvkAsyncDownload \"$i\"\ndone\n\nfor i in $DXVK_LIST; do\n\tdxvkDownload \"$i\"\ndone\n\nfor i in $WINED3D_LIST; do\n\twined3dDownload \"$i\"\ndone\n\nfor i in $VKD3D_LIST; do\n\tvkd3dDownload \"$i\"\ndone\n\ncase \"$1\" in \"--optional\")\n\tcustomDxvkDownload \"DXVK-1.10.6-Sarek\" \"https://github.com/pythonlover02/DXVK-Sarek/releases/download/v1.10.6/dxvk-sarek-v1.10.6.tar.gz\"\n\tcustomDxvkDownload \"DXVK-1.10.6-Sarek-ASync\" \"https://github.com/pythonlover02/DXVK-Sarek/releases/download/v1.10.6/dxvk-sarek-async-v1.10.6.tar.gz\"\nesac\n\ncp -rf \"$INIT_DIR/common/\"* .\n"
  }
]